This commit is contained in:
2026-07-16 00:54:16 +02:00
parent d3550f9648
commit 64ca845ec5
3 changed files with 104 additions and 11 deletions

View File

@@ -185,6 +185,8 @@
function renderPackGrid(packId) {
var container = document.getElementById('sp-emojis-' + packId);
if (!container) return;
// Preserve scroll position of the inner grid div
var prevScroll = (container.querySelector('.emoji-grid') || {}).scrollTop || 0;
var pack = (window.emojiAdmin.packs || []).find(function(p) { return p.id === packId; });
var currentThumb = pack ? (pack.thumb_url || '') : '';
var packEmojis = (window.emojiAdmin.emojis || []).filter(function(e) { return e.pack_id === packId; });
@@ -197,7 +199,7 @@
var btnBg = isCurrent ? 'rgba(40,167,69,0.18)' : 'rgba(255,200,0,0.15)';
var btnClr = isCurrent ? '#4caf50' : '#ffd700';
var btnBdr = isCurrent ? 'rgba(40,167,69,0.35)' : 'rgba(255,200,0,0.3)';
var btnLbl = isCurrent ? '✓ Current Icon' : '⭐ Set as icon';
var btnLbl = isCurrent ? '\u2713 Current Icon' : '\u2B50 Set as icon';
return '<div class="emoji-card" style="position:relative;">' +
'<button class="emoji-delete" onclick="window.emojiAdmin.deleteEmoji(' + e.id + ')" title="Delete">x</button>' +
stickerEl(e.url, e.name, ' loading="lazy"') +
@@ -207,6 +209,9 @@
'</div>';
}).join('') +
'</div>';
// Restore scroll position
var newGrid = container.querySelector('.emoji-grid');
if (newGrid && prevScroll) newGrid.scrollTop = prevScroll;
}
container.dataset.loaded = '1';
}
@@ -380,13 +385,26 @@
var currentName = pack ? pack.name : '';
var newName = prompt('New pack name:', currentName);
if (!newName || newName.trim() === currentName) return;
newName = newName.trim();
var backfill = confirm('Rename all stickers too? OK = rename sticker names (old_001 -> new_001) and update comments. Cancel = pack label only.');
fetch('/api/v2/admin/sticker-packs/' + id + '/rename', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': csrf, 'X-Requested-With': 'XMLHttpRequest' },
body: JSON.stringify({ name: newName.trim() })
body: JSON.stringify({ name: newName, backfill: backfill })
})
.then(function(r) { return r.json(); })
.then(function(data) { if (data.success) loadAll(); else alert('Rename failed: ' + (data.message || 'Unknown error')); })
.then(function(data) {
if (data.success) {
if (backfill) {
alert('Done! ' + (data.emojiRenamed || 0) + ' sticker(s) renamed, ' + (data.commentRowsUpdated || 0) + ' comment row(s) updated.');
}
loadAll();
} else {
alert('Rename failed: ' + (data.message || 'Unknown error'));
}
})
.catch(function(err) { alert('Error: ' + err.message); });
}