diff --git a/templates/MetaLab-2026/static/css/posts.css b/templates/MetaLab-2026/static/css/posts.css index c81e37d..50cc688 100644 --- a/templates/MetaLab-2026/static/css/posts.css +++ b/templates/MetaLab-2026/static/css/posts.css @@ -927,6 +927,17 @@ color: #9ca3af; } +.fav-active-tag { + font-size: 11px; + color: #f59e0b; + background: #fef3c7; + padding: 1px 6px; + border-radius: 4px; + font-weight: 500; + flex-shrink: 0; + margin-right: 4px; +} + .fav-folder-opt-count { font-size: 12px; color: #9ca3af; diff --git a/templates/MetaLab-2026/static/js/post-favorite.js b/templates/MetaLab-2026/static/js/post-favorite.js index 838eb26..dec708d 100644 --- a/templates/MetaLab-2026/static/js/post-favorite.js +++ b/templates/MetaLab-2026/static/js/post-favorite.js @@ -47,6 +47,7 @@ var isActive = currentFolderId === f.id; html += '
' + '' + escapeHtml(f.name) + (f.is_default ? ' (默认)' : '') + '' + + (isActive ? '已收藏' : '') + '' + (f.item_count || 0) + ' 篇' + '
'; }); @@ -110,6 +111,11 @@ updateBtn(true); if (favCountEl) favCountEl.textContent = (parseInt(favCountEl.textContent) || 0) + 1; hideModal(); + } else if (d.message && d.message.indexOf('已在此收藏夹中') !== -1) { + // 后端返回已收藏,直接关闭弹窗(兜底) + currentFolderId = folderId; + updateBtn(true); + hideModal(); } else { alert(d.message || '操作失败'); } @@ -119,7 +125,7 @@ function removeFromFolder(folderId) { if (loading) return; - showConfirm('确认', '确定取消收藏吗?').then(function(ok) { + showConfirm('确认取消收藏', '确定移出该收藏夹吗?').then(function(ok) { if (!ok) return; loading = true; api('DELETE', '/api/folders/' + folderId + '/posts/' + postId) @@ -194,7 +200,7 @@ if (!option) return; var folderId = parseInt(option.getAttribute('data-id')); if (isNaN(folderId)) return; - if (currentFolderId === folderId) { + if (option.classList.contains('active')) { removeFromFolder(folderId); } else { addToFolder(folderId); diff --git a/templates/shared/static/js/utils.js b/templates/shared/static/js/utils.js index b6a03f2..d8071cb 100644 --- a/templates/shared/static/js/utils.js +++ b/templates/shared/static/js/utils.js @@ -127,7 +127,7 @@ function showConfirm(title, message) { var overlay = document.createElement('div'); setStyles(overlay, { position: 'fixed', inset: '0', background: 'rgba(0,0,0,0.4)', - zIndex: '9998', display: 'flex', alignItems: 'center', justifyContent: 'center' + zIndex: '10000', display: 'flex', alignItems: 'center', justifyContent: 'center' }); // 弹窗容器 @@ -209,7 +209,7 @@ function showPrompt(message, defaultValue) { var overlay = document.createElement('div'); setStyles(overlay, { position: 'fixed', inset: '0', background: 'rgba(0,0,0,0.4)', - zIndex: '9998', display: 'flex', alignItems: 'center', justifyContent: 'center' + zIndex: '10000', display: 'flex', alignItems: 'center', justifyContent: 'center' }); // 弹窗容器