feat(admin): 完善站点设置、内容回收站与后台菜单分组

新增站点设置与内容管理(含已删除恢复/清除),用户页改用独有运营指标,并按概览/内容/成员与经济/站点重组侧栏。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-16 05:56:27 +08:00
parent be47b38370
commit dd7bd010b8
25 changed files with 2193 additions and 323 deletions

View File

@@ -37,18 +37,23 @@ const jetbrainsMono = JetBrains_Mono({
display: "swap",
});
export const metadata: Metadata = {
title: {
default: "姜十三论坛 · J13 FORUM",
template: "%s · 姜十三论坛",
},
description: "姜十三论坛 - 技术分享与讨论社区",
openGraph: {
title: "姜十三论坛 · J13 FORUM",
description: "姜十三论坛 - 技术分享与讨论社区",
type: "website",
},
};
export async function generateMetadata(): Promise<Metadata> {
const settings = await getPublicSettingsCached();
const name = settings.site_name || "姜十三论坛";
const desc = settings.site_description || "姜十三论坛 - 技术分享与讨论社区";
return {
title: {
default: `${name} · J13 FORUM`,
template: `%s · ${name}`,
},
description: desc,
openGraph: {
title: `${name} · J13 FORUM`,
description: desc,
type: "website",
},
};
}
export default async function RootLayout({
children,
@@ -64,7 +69,8 @@ export default async function RootLayout({
// 无 access cookie 即按游客渲染;客户端 Header 在 CSRF 可读时再静默校正一次。
// 站点主题色(公开设置):派生浅/暗两套 accent CSS 变量后随首屏 HTML 内联,
// 覆盖 globals.css 默认令牌——无主题闪动(FOUC),后端不可用时降级为默认靛蓝
const { accent } = await getPublicSettingsCached();
const settings = await getPublicSettingsCached();
const accent = settings.accent;
const accentCSS = accentStyleCSS(accent || "");
let user: User | null = null;
@@ -101,6 +107,8 @@ export default async function RootLayout({
initialUnread={unread}
initialChatUnread={chatUnread}
initialTheme={theme}
siteName={settings.site_name}
allowRegister={settings.allow_register}
/>
<main
id="main"
@@ -109,7 +117,7 @@ export default async function RootLayout({
>
{children}
</main>
<Footer />
<Footer siteName={settings.site_name} />
<Toaster />
<TipHost />
<AccountGuard />