将 Markdown 编辑器替换为 TipTap WYSIWYG,新增帖子修订记录与 diff 展示;首页支持最新/回复排序与本地缓存;后台可配置编辑时限与锁定帖子;侧边栏整合板块导航并优化 Feed 布局。 Co-authored-by: Cursor <cursoragent@cursor.com>
2 lines
2.8 KiB
JavaScript
2 lines
2.8 KiB
JavaScript
import{r as a,j as s}from"./react-vendor-CFzzFOsg.js";import{d as _,a as c,S as N,B as x,n}from"./index-L-Mx2Hle.js";import{I as v}from"./input-CIPYpxcv.js";import{am as y}from"./ui-vendor-DGgNN2YO.js";function F(){const{ready:r}=_(),[d,l]=a.useState(null),[j,p]=a.useState(!0),[f,o]=a.useState(!1),[m,h]=a.useState("24"),[g,u]=a.useState(!1);a.useEffect(()=>{r&&c.adminSettings().then(e=>{l(e),h(String(e.post_edit_window_hours??24))}).finally(()=>p(!1))},[r]);const w=async()=>{const e=parseInt(m,10);if(Number.isNaN(e)||e<0){n.warning("请输入有效的小时数(0 表示不限)");return}u(!0);try{const i=await c.adminUpdateForumSettings({post_edit_window_hours:e});n.success(i.message),l(t=>t&&{...t,post_edit_window_hours:i.post_edit_window_hours})}catch(i){n.error(i instanceof Error?i.message:"保存失败")}finally{u(!1)}},S=async()=>{o(!0);try{const e=await c.adminBackup();n.success(e.message),window.location.href=e.download}catch(e){n.error(e instanceof Error?e.message:"备份失败")}finally{o(!1)}};return!r||j?s.jsx("div",{className:"flex justify-center py-16",children:s.jsx(N,{size:"lg"})}):d?s.jsxs("div",{className:"admin-page",children:[s.jsxs("div",{className:"admin-page-head",children:[s.jsx("h1",{children:"系统设置"}),s.jsx("p",{children:"数据目录、敏感词配置与数据库备份"})]}),s.jsxs("div",{className:"admin-card",children:[s.jsx("div",{className:"admin-card-head",children:"论坛规则"}),s.jsx("p",{className:"admin-card-desc",children:"设置普通用户发布后可编辑帖子的时限。超过时限后仅管理员可编辑。设为 0 表示不限时。"}),s.jsxs("div",{className:"admin-form-row",children:[s.jsx("label",{htmlFor:"edit-window-hours",children:"编辑时限(小时)"}),s.jsx(v,{id:"edit-window-hours",type:"number",min:0,value:m,onChange:e=>h(e.target.value),className:"max-w-[120px]"}),s.jsx(x,{onClick:w,loading:g,children:"保存"})]})]}),s.jsxs("div",{className:"admin-card",children:[s.jsx("div",{className:"admin-card-head",children:"运行信息"}),s.jsxs("dl",{className:"admin-dl",children:[s.jsx("dt",{children:"数据目录"}),s.jsx("dd",{children:s.jsx("code",{children:d.data_dir})}),s.jsx("dt",{children:"数据库路径"}),s.jsx("dd",{children:s.jsx("code",{children:d.db_path})}),s.jsx("dt",{children:"敏感词配置"}),s.jsx("dd",{children:s.jsx("code",{children:d.filter_path})}),s.jsx("dt",{children:"监听端口"}),s.jsx("dd",{children:d.port})]})]}),s.jsxs("div",{className:"admin-card",children:[s.jsx("div",{className:"admin-card-head",children:"数据备份"}),s.jsxs("p",{className:"admin-card-desc",children:["导出当前 SQLite 数据库副本,文件名格式为 ",s.jsx("code",{children:"jiang13_backup_YYYYMMDD_HHMMSS.db"})]}),s.jsxs(x,{onClick:S,loading:f,children:[s.jsx(y,{size:16}),"立即备份并下载"]})]})]}):null}export{F as default};
|