diff --git a/frontend/src/core/pagetype/form/panel/ActivitySection.vue b/frontend/src/core/pagetype/form/panel/ActivitySection.vue
index 91706fea7..ec55e86d9 100644
--- a/frontend/src/core/pagetype/form/panel/ActivitySection.vue
+++ b/frontend/src/core/pagetype/form/panel/ActivitySection.vue
@@ -327,13 +327,34 @@ function buildTimelineItems() {
})
}
- // 8. Info logs
+ // 8. Info logs — Rename/Merge/Restore 前端翻译,Info/Label/Edit 直接使用
for (const i of info.info_logs || []) {
- items.push({
- creation: i.creation,
- content: `${i.owner} ${i.content || ''}`,
- icon: 'tabler:info-circle',
- })
+ const isSelf = i.owner === currentUser.value
+ const ownerHtml = `${i.owner}`
+ // 从后端 content 的 标签提取数据值(old/new 名称)
+ const vals = [...(i.content || '').matchAll(/(.*?)<\/strong>/g)].map(m => `${m[1]}`)
+
+ let content = `${ownerHtml} ${i.content || ''}`
+ let icon = 'tabler:info-circle'
+
+ if (i.comment_type === 'Rename' && vals.length === 2) {
+ content = isSelf
+ ? t('You renamed from {0} to {1}', vals)
+ : t('{0} renamed from {1} to {2}', [ownerHtml, ...vals])
+ icon = 'tabler:edit'
+ } else if (i.comment_type === 'Merge' && vals.length === 2) {
+ content = isSelf
+ ? t('You merged {0} into {1}', vals)
+ : t('{0} merged {1} into {2}', [ownerHtml, ...vals])
+ icon = 'tabler:merge'
+ } else if (i.comment_type === 'Restore' && vals.length === 2) {
+ content = isSelf
+ ? t('You restored {0} as {1}', vals)
+ : t('{0} restored {1} as {2}', [ownerHtml, ...vals])
+ icon = 'tabler:refresh'
+ }
+
+ items.push({ creation: i.creation, content, icon })
}
// 9. Workflow logs
diff --git a/jingrow/core/pagetype/deleted_page/deleted_page.py b/jingrow/core/pagetype/deleted_page/deleted_page.py
index 962689f5d..27a0ce219 100644
--- a/jingrow/core/pagetype/deleted_page/deleted_page.py
+++ b/jingrow/core/pagetype/deleted_page/deleted_page.py
@@ -58,7 +58,7 @@ def restore(name, alert=True):
pg.set(workflow_state_fieldname, None)
pg.insert()
- pg.add_comment("Edit", _("restored {0} as {1}").format(deleted.deleted_name, pg.name))
+ pg.add_comment("Restore", _("restored {0} as {1}").format(deleted.deleted_name, pg.name))
deleted.new_name = pg.name
deleted.restored = 1
diff --git a/jingrow/desk/form/load.py b/jingrow/desk/form/load.py
index 14ab82030..2cbf18e74 100644
--- a/jingrow/desk/form/load.py
+++ b/jingrow/desk/form/load.py
@@ -170,7 +170,7 @@ def add_comments(pg, docinfo):
docinfo.assignment_logs.append(c)
case "Attachment" | "Attachment Removed":
docinfo.attachment_logs.append(c)
- case "Info" | "Edit" | "Label":
+ case "Info" | "Edit" | "Label" | "Rename" | "Merge" | "Restore":
docinfo.info_logs.append(c)
case "Like":
docinfo.like_logs.append(c)
diff --git a/jingrow/locale/zh.po b/jingrow/locale/zh.po
index 06bd9393f..3d4750e01 100644
--- a/jingrow/locale/zh.po
+++ b/jingrow/locale/zh.po
@@ -30515,6 +30515,12 @@ msgstr "地图标记"
msgid "merged {0} into {1}"
msgstr "将{0}合并至{1}"
+msgid "You merged {0} into {1}"
+msgstr "您将{0}合并至{1}"
+
+msgid "{0} merged {1} into {2}"
+msgstr "{0}将{1}合并至{2}"
+
#: jingrow/website/pagetype/blog_post/templates/blog_post.html:25
#: jingrow/website/pagetype/blog_post/templates/blog_post_row.html:36
msgid "min read"
@@ -30797,6 +30803,12 @@ msgstr "已移除{0}的行"
msgid "renamed from {0} to {1}"
msgstr "从{0}重命名为{1}"
+msgid "You renamed from {0} to {1}"
+msgstr "您从{0}重命名为{1}"
+
+msgid "{0} renamed from {1} to {2}"
+msgstr "{0}从{1}重命名为{2}"
+
#. Option for the 'Icon' (Select) field in PageType 'Workflow State'
#: jingrow/workflow/pagetype/workflow_state/workflow_state.json
msgid "repeat"
@@ -30837,6 +30849,12 @@ msgstr "响应"
msgid "restored {0} as {1}"
msgstr "已恢复{0}为{1}"
+msgid "You restored {0} as {1}"
+msgstr "您已恢复{0}为{1}"
+
+msgid "{0} restored {1} as {2}"
+msgstr "{0}已恢复{1}为{2}"
+
#. Option for the 'Icon' (Select) field in PageType 'Workflow State'
#: jingrow/workflow/pagetype/workflow_state/workflow_state.json
msgid "retweet"
diff --git a/jingrow/model/rename_page.py b/jingrow/model/rename_page.py
index 42717e399..9d811235c 100644
--- a/jingrow/model/rename_page.py
+++ b/jingrow/model/rename_page.py
@@ -210,9 +210,9 @@ def rename_page(
rename_password(pagetype, old, new)
if merge:
- new_page.add_comment("Edit", _("merged {0} into {1}").format(jingrow.bold(old), jingrow.bold(new)))
+ new_page.add_comment("Merge", _("merged {0} into {1}").format(jingrow.bold(old), jingrow.bold(new)))
else:
- new_page.add_comment("Edit", _("renamed from {0} to {1}").format(jingrow.bold(old), jingrow.bold(new)))
+ new_page.add_comment("Rename", _("renamed from {0} to {1}").format(jingrow.bold(old), jingrow.bold(new)))
if merge:
jingrow.delete_page(pagetype, old)
diff --git a/jingrow/model/rename_pg.py b/jingrow/model/rename_pg.py
index dbb032aef..22c3643fa 100644
--- a/jingrow/model/rename_pg.py
+++ b/jingrow/model/rename_pg.py
@@ -210,9 +210,9 @@ def rename_pg(
rename_password(pagetype, old, new)
if merge:
- new_pg.add_comment("Edit", _("merged {0} into {1}").format(jingrow.bold(old), jingrow.bold(new)))
+ new_pg.add_comment("Merge", _("merged {0} into {1}").format(jingrow.bold(old), jingrow.bold(new)))
else:
- new_pg.add_comment("Edit", _("renamed from {0} to {1}").format(jingrow.bold(old), jingrow.bold(new)))
+ new_pg.add_comment("Rename", _("renamed from {0} to {1}").format(jingrow.bold(old), jingrow.bold(new)))
if merge:
jingrow.delete_pg(pagetype, old)