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'
});
// 弹窗容器