From 4f66ea35fd54bb00c8abdf036488a380fda43394 Mon Sep 17 00:00:00 2001 From: Dave Kempe Date: Wed, 11 Mar 2026 20:58:54 +1100 Subject: [PATCH] Add clone button for address book entries (#56) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Clone opens the entry form in create mode pre-populated with the source entry's settings and a "-copy" name suffix. Credentials are not copied (security by design) — user re-enters or uses prompt. Useful for duplicating similar entries (e.g. same config, different host) and as a workaround for rename (clone + delete original). --- static/addressbook.html | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/static/addressbook.html b/static/addressbook.html index 345d5ed..3b2cd20 100644 --- a/static/addressbook.html +++ b/static/addressbook.html @@ -844,7 +844,7 @@ var html = '' + ''; - if (isAdmin) html += ''; + if (isAdmin) html += ''; html += ''; entries.forEach(function(e) { @@ -872,6 +872,7 @@ html += ''; if (isAdmin) { html += ''; + html += ''; html += ''; } html += ''; @@ -1023,6 +1024,27 @@ return; } + // Clone entry + if (btn.getAttribute('data-clone-entry')) { + var name = btn.getAttribute('data-clone-entry'); + var scope = btn.getAttribute('data-scope'); + var folder = btn.getAttribute('data-folder'); + var entry = currentEntries.find(function(e) { return e.name === name; }); + if (!entry) return; + // Open as new entry, pre-populated with cloned data + openEditEntry(name, scope, folder, entry.session_type); + // Switch to create mode: enable name field, clear edit mode, set copy name + entryEditMode = null; + document.getElementById('entry-modal-title').textContent = 'Clone: ' + name; + var nameField = document.getElementById('em-name'); + nameField.disabled = false; + nameField.value = name + '-copy'; + entryTypeSelect.disabled = false; + // Hide move-to-folder (not relevant for new entries) + document.getElementById('em-move-section').style.display = 'none'; + return; + } + // Edit entry if (btn.getAttribute('data-edit-entry')) { openEditEntry(
NameTypeHostUser