feat: 关于本站对齐站点公告,增加全部与管理入口
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,8 +1,11 @@
|
||||
import type { Metadata } from "next";
|
||||
import { cookies } from "next/headers";
|
||||
import Link from "next/link";
|
||||
import { Megaphone } from "lucide-react";
|
||||
import { fetchAnnouncementsPage, fetchOverview, type Announcement } from "@/lib/api";
|
||||
import { getPublicSettingsCached } from "@/lib/serverData";
|
||||
import { authCookieHeader } from "@/lib/cookies";
|
||||
import { getMeCached, getPublicSettingsCached } from "@/lib/serverData";
|
||||
import { isAdminOrAbove } from "@/lib/roles";
|
||||
import { formatDate } from "@/lib/format";
|
||||
import Pagination from "@/components/Pagination";
|
||||
import {
|
||||
@@ -114,19 +117,24 @@ export default async function AnnouncementsListPage({ searchParams }: PageProps)
|
||||
error = e instanceof Error ? e.message : "加载公告失败";
|
||||
}
|
||||
|
||||
const [overview, settings] = await Promise.all([
|
||||
const cookie = authCookieHeader(await cookies());
|
||||
const [overview, settings, me] = await Promise.all([
|
||||
fetchOverview().catch(() => null),
|
||||
getPublicSettingsCached(),
|
||||
getMeCached(cookie || undefined),
|
||||
]);
|
||||
const sidebarPages = overview?.sidebar_pages ?? [];
|
||||
const siteLead = settings.site_description?.trim() || undefined;
|
||||
const canManagePages = !!me.user && isAdminOrAbove(me.user.role);
|
||||
|
||||
// 首页置顶条目作头图;其余走列表行(置顶已在头图时不再重复)
|
||||
const featured = page === 1 ? announcements.find((a) => a.pinned) : undefined;
|
||||
const rest = featured ? announcements.filter((a) => a.id !== featured.id) : announcements;
|
||||
|
||||
const left = <SiteDocIdentity kind="announcements" lead={siteLead} />;
|
||||
const right = <SiteDocPageNav pages={sidebarPages} title="关于本站" />;
|
||||
const right = (
|
||||
<SiteDocPageNav pages={sidebarPages} title="关于本站" canManage={canManagePages} />
|
||||
);
|
||||
|
||||
return (
|
||||
<SiteDocShell
|
||||
@@ -140,7 +148,9 @@ export default async function AnnouncementsListPage({ searchParams }: PageProps)
|
||||
]}
|
||||
/>
|
||||
}
|
||||
mobileExtras={<SiteDocPageNav pages={sidebarPages} title="关于本站" />}
|
||||
mobileExtras={
|
||||
<SiteDocPageNav pages={sidebarPages} title="关于本站" canManage={canManagePages} />
|
||||
}
|
||||
>
|
||||
<header className="mb-5">
|
||||
<h1
|
||||
|
||||
Reference in New Issue
Block a user