diff options
Diffstat (limited to 'internal/admin')
| -rw-r--r-- | internal/admin/static/admin.css | 48 | ||||
| -rw-r--r-- | internal/admin/static/dropeditor.js | 2 | ||||
| -rw-r--r-- | internal/admin/static/editor.js | 4 | ||||
| -rw-r--r-- | internal/admin/static/hazardeditor.js | 2 | ||||
| -rw-r--r-- | internal/admin/static/intereditor.js | 2 | ||||
| -rw-r--r-- | internal/admin/static/moduleeditor.js | 2 | ||||
| -rw-r--r-- | internal/admin/static/talktree.js | 12 | ||||
| -rw-r--r-- | internal/admin/static/techeditor.js | 2 | ||||
| -rw-r--r-- | internal/admin/static/triggerseditor.js | 2 | ||||
| -rw-r--r-- | internal/admin/templates/duplicate-rooms.html | 2 |
10 files changed, 45 insertions, 33 deletions
diff --git a/internal/admin/static/admin.css b/internal/admin/static/admin.css index efe5abc..c500aad 100644 --- a/internal/admin/static/admin.css +++ b/internal/admin/static/admin.css @@ -1,4 +1,4 @@ -:root{--bg:#1a1a2e;--panel:#16213e;--text:#e0e0e0;--accent:#0f3460;--border:#2a2a4a;--hover:#1a3a6e;--danger:#c0392b;--success:#27ae60;--warn:#f39c12;--input-bg:#0d1b36;--input-border:#3a3a6a} +:root{--bg:#1a1a2e;--panel:#16213e;--text:#e0e0e0;--accent:#0f3460;--border:#2a2a4a;--hover:#1a3a6e;--danger:#c0392b;--success:#27ae60;--warn:#f39c12;--input-bg:#0d1b36;--input-border:#3a3a6a;--cond:#136b3a;--cond-light:#5fd668;--cond-bd:rgba(19,107,58,.3);--cond-bg:rgba(19,107,58,.1);--act:#9e6307;--act-light:#f5b041;--act-bd:rgba(158,99,7,.3);--act-bg:rgba(158,99,7,.1)} *{box-sizing:border-box;margin:0;padding:0} input[type=number]{-moz-appearance:textfield} input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0} @@ -89,8 +89,8 @@ body{font-family:monospace;background:var(--bg);color:var(--text);display:flex;f .talk-opt-text{color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .talk-opt-goto{color:#8cf;font-weight:bold;white-space:nowrap;min-width:30px} .talk-opt-tag{display:inline-block;padding:1px 6px;font-size:9px;border-radius:2px;line-height:1.4;flex-shrink:0;cursor:pointer;border:1px solid transparent} -.talk-opt-tag-cond{background:rgba(100,160,255,.2);color:#6af} -.talk-opt-tag-act{background:rgba(232,196,124,.2);color:#e8c47c} +.talk-opt-tag-cond{background:var(--cond-bg);color:var(--cond-light)} +.talk-opt-tag-act{background:var(--act-bg);color:var(--act-light)} .talk-opt-del{padding:0 4px;font-size:10px;line-height:1.4;border:none;border-radius:2px;background:var(--danger);color:#fff;cursor:pointer;flex-shrink:0} .talk-add-btn{display:inline-block;margin-top:4px;padding:3px 10px;font-size:10px;background:var(--accent);color:var(--text);border:1px solid #1a5a8e;border-radius:3px;cursor:pointer;font-family:monospace} .talk-children{margin-top:0} @@ -117,14 +117,22 @@ body{font-family:monospace;background:var(--bg);color:var(--text);display:flex;f .talk-kv-del{font-size:9px;padding:0 4px;line-height:1.4;border:none;border-radius:2px;background:var(--danger);color:#fff;cursor:pointer;font-family:monospace;flex-shrink:0} .talk-action-block{margin-top:3px;padding:6px;background:rgba(255,255,255,.02);border:1px solid var(--border);border-radius:4px} .talk-action-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:3px 8px} -.talk-add-cond-btn{font-size:9px;padding:1px 6px;line-height:1.4;border:1px solid rgba(100,160,255,.25);border-radius:2px;background:transparent;color:#6af;cursor:pointer;font-family:monospace;margin-bottom:6px} -.talk-add-act-btn{font-size:9px;padding:1px 6px;line-height:1.4;border:1px solid rgba(232,196,124,.25);border-radius:2px;background:transparent;color:#e8c47c;cursor:pointer;font-family:monospace;margin-bottom:6px} +.talk-add-cond-btn{font-size:9px;padding:1px 6px;line-height:1.4;border:1px solid var(--cond-bd);border-radius:3px;background:var(--cond);color:#fff;cursor:pointer;font-family:monospace;margin-bottom:6px} +.talk-add-cond-btn:hover{filter:brightness(1.15)} +.talk-add-act-btn{font-size:9px;padding:1px 6px;line-height:1.4;border:1px solid var(--act-bd);border-radius:3px;background:var(--act);color:#fff;cursor:pointer;font-family:monospace;margin-bottom:6px} +.talk-add-act-btn:hover{filter:brightness(1.15)} -.talk-cond-card{border:1px solid rgba(100,160,255,.25);border-radius:5px;margin-bottom:6px;overflow:hidden} -.talk-cond-card-header{display:flex;align-items:center;justify-content:space-between;padding:6px 8px;background:rgba(100,160,255,.08);border-bottom:1px solid rgba(100,160,255,.15);font-size:10px;color:#aaa;text-transform:uppercase;letter-spacing:.3px} +.talk-cond-card{border:1px solid var(--border);border-radius:5px;margin-bottom:6px;overflow:hidden} +.talk-cond-card.cond{border-color:var(--cond-bd)} +.talk-cond-card.act{border-color:var(--act-bd)} +.talk-cond-card-header{display:flex;align-items:center;justify-content:space-between;padding:6px 8px;background:rgba(255,255,255,.03);border-bottom:1px solid var(--border);font-size:10px;color:#aaa;text-transform:uppercase;letter-spacing:.3px} +.talk-cond-card.cond>.talk-cond-card-header{background:var(--cond-bg);border-bottom-color:var(--cond-bd);color:var(--cond-light)} +.talk-cond-card.act>.talk-cond-card-header{background:var(--act-bg);border-bottom-color:var(--act-bd);color:var(--act-light)} .talk-cond-card-body{padding:6px 8px} .talk-cond-card-body .talk-action-block{margin-top:0;border:none;padding:0;border-radius:0;background:transparent} -.talk-cond-card-sep{border-top:1px solid rgba(100,160,255,.12);margin:1px 0 4px 0} +.talk-cond-card-sep{border-top:1px solid var(--border);margin:1px 0 4px 0} +.talk-cond-card.cond .talk-cond-card-sep{border-top-color:var(--cond-bd)} +.talk-cond-card.act .talk-cond-card-sep{border-top-color:var(--act-bd)} .talk-cond-mode-row{display:flex;align-items:center;gap:6px;margin-bottom:4px} .talk-cond-mode-row .talk-prop-label{font-size:9px;color:#888;text-transform:uppercase;letter-spacing:.3px} @@ -370,7 +378,7 @@ g.ud-hover:hover text{font-weight:bold} /* --- Structured condition & action editors (intereditor.js) --- */ -.ie-cond{background:rgba(100,160,255,.04);border:1px solid rgba(100,160,255,.12);border-radius:5px;padding:8px;margin-bottom:4px} +.ie-cond{background:var(--cond-bg);border:1px solid var(--cond-bd);border-radius:5px;padding:8px;margin-bottom:4px} .ie-cond-root{padding:0} .ie-cond-modebar{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap} .ie-cond-modesel{font-size:11px;padding:2px 4px;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:3px;font-family:monospace} @@ -378,7 +386,7 @@ g.ud-hover:hover text{font-weight:bold} .ie-cond-not{accent-color:var(--danger);margin:0} .ie-cond-children{display:flex;flex-direction:column;gap:4px} .ie-cond-leaf{display:flex;align-items:center;gap:6px;padding:4px 6px;background:var(--bg);border:1px solid var(--border);border-radius:3px} -.ie-cond-leaf-label{font-size:10px;color:#6af;text-transform:uppercase;letter-spacing:.3px;font-weight:bold;white-space:nowrap;min-width:70px} +.ie-cond-leaf-label{font-size:10px;color:var(--cond-light);text-transform:uppercase;letter-spacing:.3px;font-weight:bold;white-space:nowrap;min-width:70px} .ie-cond-leaf input[type="text"], .ie-cond-leaf input[type="number"], .ie-cond-val{font-size:11px;padding:3px 6px;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:3px;font-family:monospace;flex:1;min-width:80px} @@ -389,12 +397,16 @@ g.ud-hover:hover text{font-weight:bold} .ie-cond-addbar{display:grid;grid-template-columns:repeat(auto-fit,minmax(max(100%/5,110px),1fr));gap:4px;margin-top:4px} .ie-add-btn{font-size:10px!important;padding:2px 6px!important;background:var(--accent)!important;color:var(--text)!important;border:1px solid #1a5a8e!important;font-family:monospace!important;border-radius:3px!important;cursor:pointer;white-space:nowrap} .ie-add-btn:hover{background:#1a5a8e!important;color:#fff!important} -.ie-cond-addbar .ie-add-btn,.ie-step-addbar .ie-add-btn,.ie-step-addbar-bottom .ie-add-btn,.ie-act-addbar .ie-add-btn{width:100%;min-width:0} +.ie-cond-addbar .ie-add-btn,.ie-cond-empty-bar .ie-add-btn{background:var(--cond)!important;color:#fff!important;border-color:var(--cond-bd)!important} +.ie-cond-addbar .ie-add-btn:hover,.ie-cond-empty-bar .ie-add-btn:hover{filter:brightness(1.15)!important} +.ie-act-addbar .ie-add-btn,.ie-step-addbar .ie-add-btn,.ie-step-addbar-bottom .ie-add-btn,.ie-act-kv .ie-add-btn{background:var(--act)!important;color:#fff!important;border-color:var(--act-bd)!important} +.ie-act-addbar .ie-add-btn:hover,.ie-step-addbar .ie-add-btn:hover,.ie-step-addbar-bottom .ie-add-btn:hover,.ie-act-kv .ie-add-btn:hover{filter:brightness(1.15)!important} +.ie-cond-addbar .ie-add-btn,.ie-step-addbar .ie-add-btn,.ie-step-addbar-bottom .ie-add-btn,.ie-act-addbar .ie-add-btn,.ie-cond-empty-bar .ie-add-btn{width:100%;min-width:0} /* Action editor */ -.ie-act-root{background:rgba(100,160,255,.04);border:1px solid rgba(100,160,255,.12);border-radius:5px;padding:8px;display:flex;flex-direction:column;gap:6px} +.ie-act-root{background:var(--act-bg);border:1px solid var(--act-bd);border-radius:5px;padding:8px;display:flex;flex-direction:column;gap:6px} .ie-act-row{display:flex;align-items:center;gap:6px} -.ie-act-label{font-size:10px;color:#6af;text-transform:uppercase;letter-spacing:.3px;font-weight:bold;white-space:nowrap;min-width:90px} +.ie-act-label{font-size:10px;color:var(--act-light);text-transform:uppercase;letter-spacing:.3px;font-weight:bold;white-space:nowrap;min-width:90px} .ie-act-input{font-size:11px;padding:3px 6px;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:3px;font-family:monospace} .ie-act-rm{flex-shrink:0} .ie-act-kv{background:var(--bg);border:1px solid var(--border);border-radius:3px;padding:6px} @@ -425,17 +437,17 @@ g.ud-hover:hover text{font-weight:bold} /* ── Step list: boxed steps with right-justified move/remove controls ── */ .ie-inter-steps{margin-top:4px} .ie-step-list{display:flex;flex-direction:column;gap:4px} -.ie-step-row{background:rgba(100,160,255,.03);border:1px solid rgba(100,160,255,.1);border-radius:6px;padding:8px;display:flex;flex-direction:column;gap:4px} +.ie-step-row{background:var(--act-bg);border:1px solid var(--act-bd);border-radius:6px;padding:8px;display:flex;flex-direction:column;gap:4px} .ie-step-header{display:flex;align-items:center;gap:6px;flex-wrap:wrap} -.ie-step-label{font-size:10px;color:#6af;text-transform:uppercase;letter-spacing:.3px;font-weight:bold;white-space:nowrap} -.ie-step-addmore{color:#6af;border:1px solid rgba(100,160,255,.25);background:transparent;font-size:10px;padding:1px 6px;border-radius:3px;cursor:pointer;font-family:monospace;line-height:1} -.ie-step-addmore:hover{background:rgba(100,160,255,.1)} +.ie-step-label{font-size:10px;color:var(--act-light);text-transform:uppercase;letter-spacing:.3px;font-weight:bold;white-space:nowrap} +.ie-step-addmore{color:var(--act-light);border:1px solid var(--act-bd);background:transparent;font-size:10px;padding:1px 6px;border-radius:3px;cursor:pointer;font-family:monospace;line-height:1} +.ie-step-addmore:hover{background:var(--act-bg)} .ie-step-addmore::after{content:"+"} .ie-step-row.show-addbar .ie-step-addmore::after{content:"-"} .ie-step-spacer{flex:1} .ie-step-up,.ie-step-dn{padding:2px 6px;font-size:9px} .ie-step-cond-panel{margin:2px 0} -.ie-cond-title{font-size:10px;color:#6af;text-transform:uppercase;letter-spacing:.3px;font-weight:bold;margin-bottom:2px} +.ie-cond-title{font-size:10px;color:var(--cond-light);text-transform:uppercase;letter-spacing:.3px;font-weight:bold;margin-bottom:2px} .ie-step-effects{margin:2px 0} .ie-step-messages{margin:2px 0} .ie-step-addbar{display:none;flex-wrap:wrap;gap:4px;margin-top:2px} diff --git a/internal/admin/static/dropeditor.js b/internal/admin/static/dropeditor.js index a6537e9..566d696 100644 --- a/internal/admin/static/dropeditor.js +++ b/internal/admin/static/dropeditor.js @@ -76,7 +76,7 @@ function renderDropEditor(id, data) { html += '<div class="btn-row">'; html += '<button class="btn btn-primary" onclick="saveDrop()">Save</button>'; html += '<button class="btn" onclick="duplicateDrop()">Duplicate</button>'; - html += '<button class="btn btn-danger" onclick="deleteDrop()">Delete</button>'; + html += '<button class="btn btn-danger" onclick="deleteDrop()">Remove</button>'; html += '<button class="btn btn-sm" style="margin-left:auto" onclick="createNewDir()">New Directory</button>'; html += '</div>'; diff --git a/internal/admin/static/editor.js b/internal/admin/static/editor.js index 1bd6872..d5fb5c7 100644 --- a/internal/admin/static/editor.js +++ b/internal/admin/static/editor.js @@ -140,7 +140,7 @@ function renderEditor(id, data) { html += '<div class="btn-row">'; html += '<button class="btn btn-primary" onclick="saveItem(\'' + esc(id) + '\')">Save</button>'; - html += '<button class="btn btn-danger" onclick="deleteItem(\'' + esc(id) + '\')">Delete</button>'; + html += '<button class="btn btn-danger" onclick="deleteItem(\'' + esc(id) + '\')">Remove</button>'; html += '</div>'; $('#editorMain').innerHTML = html; @@ -359,7 +359,7 @@ function showItemContextMenu(e, id) { addBtn('Rename', '', function() { startInlineItemRename(id); }); addBtn('Duplicate', '', function() { duplicateFromMenu(id); }); - addBtn('Delete', 'danger', function() { deleteItem(id); }); + addBtn('Remove', 'danger', function() { deleteItem(id); }); document.body.appendChild(overlay); document.body.appendChild(menu); diff --git a/internal/admin/static/hazardeditor.js b/internal/admin/static/hazardeditor.js index c4eb0b5..10def4b 100644 --- a/internal/admin/static/hazardeditor.js +++ b/internal/admin/static/hazardeditor.js @@ -100,7 +100,7 @@ function renderHazardEditor(id, data) { html += '<div class="btn-row">'; html += '<button class="btn btn-primary" onclick="saveHazard()">Save</button>'; html += '<button class="btn" onclick="duplicateHazard()">Duplicate</button>'; - html += '<button class="btn btn-danger" onclick="deleteHazard()">Delete</button>'; + html += '<button class="btn btn-danger" onclick="deleteHazard()">Remove</button>'; html += '<button class="btn btn-sm" style="margin-left:auto" onclick="createNewDir()">New Directory</button>'; html += '</div>'; diff --git a/internal/admin/static/intereditor.js b/internal/admin/static/intereditor.js index 152aef3..b6047b5 100644 --- a/internal/admin/static/intereditor.js +++ b/internal/admin/static/intereditor.js @@ -1336,7 +1336,7 @@ function ie_renderArraySection(ctx) { h += '<button class="btn btn-sm ie-add-btn" onclick="ie_addRootConditionGroup(\'' + escAttr(sec.path) + '\',' + idx + ',\'entry\')">+ Add Condition</button>'; } h += '<span class="ie-inter-header-spacer"></span>'; - h += '<button class="btn btn-sm btn-danger ie-inter-remove" onclick="' + ctx.showRemove(idx) + '">Remove Trigger</button>'; + h += '<button class="btn btn-sm btn-danger ie-inter-remove" onclick="' + ctx.showRemove(idx) + '">Remove</button>'; h += '</div>'; h += '<div class="ie-inter-panel" style="display:' + (condExists ? 'block' : 'none') + '">'; diff --git a/internal/admin/static/moduleeditor.js b/internal/admin/static/moduleeditor.js index ac632e8..739fc2e 100644 --- a/internal/admin/static/moduleeditor.js +++ b/internal/admin/static/moduleeditor.js @@ -101,7 +101,7 @@ function renderModuleEditor(id, data) { html += '<div class="btn-row">'; html += '<button class="btn btn-primary" onclick="saveModule()">Save</button>'; html += '<button class="btn" onclick="duplicateModule()">Duplicate</button>'; - html += '<button class="btn btn-danger" onclick="deleteModule()">Delete</button>'; + html += '<button class="btn btn-danger" onclick="deleteModule()">Remove</button>'; html += '<button class="btn btn-sm" style="margin-left:auto" onclick="createNewDir()">New Directory</button>'; html += '</div>'; diff --git a/internal/admin/static/talktree.js b/internal/admin/static/talktree.js index ef6efd0..b8c7106 100644 --- a/internal/admin/static/talktree.js +++ b/internal/admin/static/talktree.js @@ -368,7 +368,7 @@ h += '<span class="talk-node-key">' + esc(key) + '</span>'; h += '<span class="talk-node-preview">' + esc((getNodePreview(node) || '').substring(0, 60)) + '</span>'; h += '<span class="talk-node-spacer"></span>'; - h += '<button class="talk-node-btn talk-node-del" data-action="delete-node" data-nk="' + escAttr(key) + '">Delete</button>'; + h += '<button class="talk-node-btn talk-node-del" data-action="delete-node" data-nk="' + escAttr(key) + '">Remove</button>'; h += '</div>'; h += '<div class="talk-node-body">'; h += renderNodeBody(key, node, nodes); @@ -398,7 +398,7 @@ html += '<span class="talk-node-key">' + esc(rootKey) + '</span>'; html += '<span class="talk-node-preview">' + esc((previewText || '').substring(0, 60)) + '</span>'; html += '<span class="talk-node-spacer"></span>'; - html += '<button class="talk-node-btn talk-node-del" data-action="delete-node" data-nk="' + escAttr(rootKey) + '">Delete</button>'; + html += '<button class="talk-node-btn talk-node-del" data-action="delete-node" data-nk="' + escAttr(rootKey) + '">Remove</button>'; html += '</div>'; html += '<div class="talk-node-body">'; @@ -440,7 +440,7 @@ // Node condition (via intereditor) if (hasCond) { - html += '<div class="talk-cond-card">'; + html += '<div class="talk-cond-card cond">'; html += '<div class="talk-cond-card-header">' + 'Condition (for this node)' + '<button class="talk-section-remove" data-action="remove-node-cond" data-nk="' + escAttr(nodeKey) + '">Remove</button>' + @@ -463,7 +463,7 @@ // Node action (via intereditor) if (hasAct) { - html += '<div class="talk-cond-card" style="margin-top:4px">'; + html += '<div class="talk-cond-card act" style="margin-top:4px">'; html += '<div class="talk-cond-card-header">' + 'Action (at the start of this node)' + '<button class="talk-section-remove" data-action="remove-node-act" data-nk="' + escAttr(nodeKey) + '">Remove</button></div>'; @@ -551,7 +551,7 @@ // Option condition detail if (opt.condition && typeof opt.condition === 'object' && !Array.isArray(opt.condition)) { html += '<div class="talk-opt-detail" style="display:block;margin-left:18px">'; - html += '<div class="talk-cond-card" style="margin-top:2px">'; + html += '<div class="talk-cond-card cond" style="margin-top:2px">'; html += '<div class="talk-cond-card-header">Condition (for this option to show up)' + '<button class="talk-section-remove" data-action="remove-opt-cond" data-nk="' + escAttr(nodeKey) + '" data-oi="' + idx + '">Remove</button></div>'; html += '<div class="talk-cond-card-body">'; @@ -564,7 +564,7 @@ // Option action detail if (opt.action) { html += '<div class="talk-opt-detail" style="display:block;margin-left:18px">'; - html += '<div class="talk-cond-card" style="margin-top:2px">'; + html += '<div class="talk-cond-card act" style="margin-top:2px">'; html += '<div class="talk-cond-card-header">' + 'Action (when this option is chosen)' + '<button class="talk-section-remove" data-action="remove-opt-act" data-nk="' + escAttr(nodeKey) + '" data-oi="' + idx + '">Remove</button></div>'; diff --git a/internal/admin/static/techeditor.js b/internal/admin/static/techeditor.js index 8e18a7a..c9d7c24 100644 --- a/internal/admin/static/techeditor.js +++ b/internal/admin/static/techeditor.js @@ -90,7 +90,7 @@ function renderTechEditor(id, data) { html += '<div class="btn-row">'; html += '<button class="btn btn-primary" onclick="saveTech()">Save</button>'; html += '<button class="btn" onclick="duplicateTech()">Duplicate</button>'; - html += '<button class="btn btn-danger" onclick="deleteTech()">Delete</button>'; + html += '<button class="btn btn-danger" onclick="deleteTech()">Remove</button>'; html += '<button class="btn btn-sm" style="margin-left:auto" onclick="createNewDir()">New Directory</button>'; html += '</div>'; diff --git a/internal/admin/static/triggerseditor.js b/internal/admin/static/triggerseditor.js index 03018a9..0312a41 100644 --- a/internal/admin/static/triggerseditor.js +++ b/internal/admin/static/triggerseditor.js @@ -170,7 +170,7 @@ function renderTriggerEditor(id, data) { html += '<div class="btn-row">'; html += '<button class="btn btn-primary" onclick="saveTrigger()">Save</button>'; - html += '<button class="btn" style="margin-left:auto" onclick="deleteTrigger()">Delete</button>'; + html += '<button class="btn" style="margin-left:auto" onclick="deleteTrigger()">Remove</button>'; html += '</div>'; $('#editorMain').innerHTML = html; diff --git a/internal/admin/templates/duplicate-rooms.html b/internal/admin/templates/duplicate-rooms.html index 9533460..0d70176 100644 --- a/internal/admin/templates/duplicate-rooms.html +++ b/internal/admin/templates/duplicate-rooms.html @@ -50,7 +50,7 @@ function checkDups() { var short = p.replace(/^.*\/data\/rooms\//, ''); html += '<div class="dup-row">'; html += '<span class="dup-path"><code>' + esc(short) + '</code></span>'; - html += '<button class="btn btn-sm btn-danger" onclick="deleteDupFile(\'' + escAttr(p) + '\')">Delete</button>'; + html += '<button class="btn btn-sm btn-danger" onclick="deleteDupFile(\'' + escAttr(p) + '\')">Remove</button>'; html += '<input type="number" id="rename-' + escAttr(d.id) + '-' + idx + '" placeholder="new ID" style="width:80px">'; html += '<button class="btn btn-sm btn-primary" onclick="renameDupFile(\'' + escAttr(p) + '\',\'rename-' + escAttr(d.id) + '-' + idx + '\')">Rename</button>'; html += '</div>'; |
