后台管理界面:软件/分类/状态可配,反馈可改挂归属 (#1)
## 新增 lib/admin_taxonomy.php - 软件:增删改、排序、启停;新增时自动预置 Bug/功能建议/其他 三个分类 - 分类:在选定软件下增删改、排序、启停 - 状态:改名、改「给用户看的话」、排序、启停;标识不可改(历史数据靠它对应) - 反馈改挂:th_move,可把反馈移到别的软件/分类,跨软件的非法分类会被拒 ## 安全与边界 - 所有动作走 CSRF 校验(沿用现有机制) - 不能删最后一个软件 / 没有分类的软件至少要留一个启用分类 - 有反馈挂着的软件或分类不能删,提示改为停用(停用后前台消失、数据保留) - th_move 加入 fb_admin_is_taxonomy_act 白名单,否则会被「问题不存在」静默吞掉 ## admin.php 接线 - 引入模块 + 动作分发 + tab 白名单加 taxonomy/statuses + 导航两项 - 前置检查放行不依赖 $t 的动作(否则新增软件报「问题不存在」) - 全部问题列表:加软件筛选、分类跟着软件走;修掉三处仍在用旧 fb_statuses()/fb_categories() 的遍历(那会渲染出错) - 详情页加「归属」表单,软件徽章可显示 ## 其他文件 - api.php:状态/分类改数据库;新增 ?sw= / ?software_id= / ?cid= 过滤, 老的 ?category=<slug> 仍可用(在所属软件内解析) - thread.php:详情页显示软件与分类徽章 - config.example.php:移除 categories / statuses,改由数据库管理 ## 修掉两个真实 bug 1. 移除配置后出厂分类兜底只剩 4 个,漏了「同步问题」—— 建库后核对数量才发现 2. th_move 不在白名单,POST 后返回 200 却静默不生效 验证:后台 e2e 29/29;改挂与联动 13/13;PHP 8.5 全部入口 0 弃用; 19 个 PHP 文件语法全过。
This commit is contained in:
+7
-2
@@ -42,7 +42,7 @@ if (!fb_thread_public($thread)) {
|
||||
exit;
|
||||
}
|
||||
|
||||
$statuses = fb_statuses();
|
||||
$statuses = fb_status_keys();
|
||||
$err = '';
|
||||
$atts = [];
|
||||
$form = ['name' => '', 'email' => '', 'body' => '', 'captcha' => ''];
|
||||
@@ -156,7 +156,12 @@ fb_layout_head(fb_excerpt($thread['title'], 50));
|
||||
|
||||
<article class="subject">
|
||||
<div class="item-top">
|
||||
<span class="badge cat"><?php echo e(fb_category_label($thread['category'])); ?></span>
|
||||
<?php
|
||||
$thSw = !empty($thread['software_id']) ? fb_software((int)$thread['software_id']) : null;
|
||||
$thCat = !empty($thread['category_id']) ? fb_category((int)$thread['category_id']) : null;
|
||||
?>
|
||||
<?php if ($thSw): ?><span class="badge sw"><?php echo e((string)$thSw['name']); ?></span><?php endif; ?>
|
||||
<?php if ($thCat): ?><span class="badge cat"><?php echo e((string)$thCat['name']); ?></span><?php endif; ?>
|
||||
<span class="badge st st-<?php echo e($thread['status']); ?>"><?php echo e(fb_status_label($thread['status'])); ?></span>
|
||||
<h1 class="subject-title"><?php echo e($thread['title']); ?></h1>
|
||||
<span class="item-id" title="问题编号">#<?php echo (int)$id; ?></span>
|
||||
|
||||
Reference in New Issue
Block a user