From e81e6900e2a8c4c767e38b91ec11fce9e8ecdd14 Mon Sep 17 00:00:00 2001 From: laoyang Date: Tue, 29 Sep 2026 21:45:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=BF=E5=9D=97=E7=AE=A1=E7=90=86=E9=A1=B5?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=8B=96=E6=8B=BD=E6=8E=92=E5=BA=8F=EF=BC=88?= =?UTF-8?q?group=5Freorder=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 板块列表与网站列表同款的拖拽交互:按住行首手柄拖动,实时重排预览, 松手即保存(Ajax 动作 group_reorder,整组归一化为 index * SORT_STEP) - 板块没有分组维度,group_reorder 不带 group_id、不做归属校验 (apply_sort_order 不传 $groupId 时按给定 id 顺序整组重写) - admin.js 的拖拽排序从「只认网站列表」泛化为「所有带 data-sortable 的 tbody」:落库 action / group_id / 落库地址都改由 tbody 的 data-* 提供, 网站列表行为不变(仍从 #sites-tabs 读地址、带 group_id) - 新增板块仍排最后(MAX + SORT_STEP,上一轮已实现);板块上移/下移按钮 保留作无 JS 回退;页面顶部补说明文案 - 验证:HTTP e2e 新增 S12 系列 18 条(结构 / 拖拽落库 / 前台同步 / 新增排最后 / 上移回退),72/72;jsdom 新增板块页 19 项,26+19 全绿; 反向验证:函数层 4 变体 + HTTP 层 7 变体(新增 G:group_reorder 失效) + jsdom 4 变体全部精确报红、基准全绿;全量既有回归 193/193 --- admin/actions.php | 14 ++++++++++++++ admin/index.php | 18 +++++++++++++----- assets/js/admin.js | 28 +++++++++++++++++----------- 3 files changed, 44 insertions(+), 16 deletions(-) diff --git a/admin/actions.php b/admin/actions.php index 535f3ac..5de9c9e 100644 --- a/admin/actions.php +++ b/admin/actions.php @@ -210,6 +210,20 @@ try { move_sort('groups', post_id(), (string)($_POST['dir'] ?? 'up'), null); break; } + case 'group_reorder': { + // 拖拽排序落库:板块没有分组维度(全表一套顺序),无需归属校验 —— + // apply_sort_order() 不带 $groupId 时按给定 id 顺序整组重写。 + // 表单字段 `order` = 逗号分隔的 group id(按新顺序)。 + $ids = []; + foreach (explode(',', (string)($_POST['order'] ?? '')) as $one) { + $one = (int)trim($one); + if ($one > 0) { $ids[] = $one; } + } + $n = apply_sort_order('groups', $ids); + $ajax = ['count' => $n]; + if (!$isAjax) { flash('已保存排序(' . $n . ' 项)'); } + break; + } /* ---------- 搜索引擎 ---------- */ case 'engine_save': { diff --git a/admin/index.php b/admin/index.php index cf13eb9..4493dee 100644 --- a/admin/index.php +++ b/admin/index.php @@ -191,7 +191,7 @@ if ($p === 'sites'): data-group-id="">
- + @@ -251,11 +251,18 @@ elseif ($p === 'groups'): ?>
-
简称(展示)名称网址显示微调操作
- - +

板块列表()

+

+ 板块的先后顺序就是它们在前台出现的顺序:按住某一行拖动即可调整,松手即保存; + 也可以用每行右侧的 ↑ ↓ 微调(不支持拖拽的环境用)。 + 新添加的板块一律排在最后,直到你手动把它拖到别处。 +

+
名称展示方式网站数显示排序操作
+ + query('SELECT COUNT(*) FROM sites WHERE group_id=' . (int)$g['id'])->fetchColumn(); ?> - + + @@ -272,6 +279,7 @@ elseif ($p === 'groups'): ?>
名称展示方式网站数显示微调操作
+