feat(forum): add quick publish, captcha and hidden content

Port the reference inline quick-publish composer to the forum home:
title/body inputs, image upload, plate/topic/access/hidden-content
dropdowns and save/publish actions. Wire the site captcha into forum
publishing through a new `forum_post` scene (admin + REST gate), and
turn the hidden-content box into the theme's own visibility shortcodes
(login/comment/vip/payshow) so the existing gate renderer unlocks them.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
kate522andClaude Fable 5 committed 2026-11-11 16:37:31 +08:00
1 parent 5d3358d844
commit 7a59c65252
11 files changed
+204 -20

No files matched your search

+15
View File
@@ -134,6 +134,21 @@
syncHidden('post_status', status.dataset.forumStatus)
return
}
const hideType = event.target.closest('[data-forum-hide-type]')
if (hideType) {
root.querySelectorAll('[data-forum-hide-type]').forEach((item) => item.classList.toggle('active', item === hideType))
syncHidden('hide_type', hideType.dataset.forumHideType)
return
}
const topic = event.target.closest('[data-forum-topic],[data-forum-topic-none]')
if (topic) {
const name = topic.dataset.forumTopic || ''
root.querySelectorAll('[data-forum-topic],[data-forum-topic-none]').forEach((item) => item.classList.toggle('active', item === topic))
syncHidden('topics', name)
const label = root.querySelector('[name="topics"]')
if (label) label.lastChild.textContent = name || '话题'
return
}
const pick = event.target.closest('[data-forum-cover-pick]')
if (pick) {
root.querySelector('[data-forum-cover-file]')?.click()