feat(admin): fully align the ban page with the reference theme
- submenu page title becomes 处理举报及禁封申诉 (menu title 举报&禁封申诉) - replicate the reference pagenavi: first/prev/numbered/next/last links with displaying-num (每页 20 共N) and paging-input (第X页共Y页) - report process form is now status-only like the reference theme: 被举报用户/举报信息/被举报用户禁封信息/处理说明 blocks, with a 点击此处 link to the restrictions tab (prefilled user_id) instead of an enforcement select - replicate reference row details (举报用户/举报内容, 正在处理 state, 此用户已解封 auto-close for stale appeals, 当前用户已解封 notice) and the table-box/preview-item style block - drop now-unused ReportCenter::get_report_row
This commit is contained in:
@@ -57,8 +57,7 @@ test('report processing delegates actions to the shared ReportCenter entry', ()
|
||||
assert.ok(reportOps.includes(action), `missing action option: ${action}`)
|
||||
}
|
||||
assert.match(reportOps, /get_user_restriction_state/)
|
||||
assert.match(reportCenter, /public function get_report_row\(/)
|
||||
assert.match(usersMenus, /\$svc->apply_action\(/)
|
||||
assert.ok(!usersMenus.includes('$svc->apply_action('), 'native page follows the reference theme flow (status-only update)')
|
||||
})
|
||||
|
||||
test('restriction class supports lifting and kicks sessions on ban', () => {
|
||||
@@ -105,12 +104,12 @@ test('admin report notification links to the real page', () => {
|
||||
test('native ban page mirrors the reference theme layout', () => {
|
||||
const tickets = read('src/Admin/Native/UsersMenusTickets.php')
|
||||
|
||||
// 菜单与页面标题对齐参考主题
|
||||
assert.ok(usersMenus.includes(`__('举报&禁封申诉', 'aksrt'),\n __('举报&禁封申诉', 'aksrt')`), 'submenu title should be 举报&禁封申诉')
|
||||
// 菜单与页面标题对齐参考主题(page title=处理举报及禁封申诉,menu title=举报&禁封申诉)
|
||||
assert.ok(usersMenus.includes(`__('处理举报及禁封申诉', 'aksrt'),\n __('举报&禁封申诉', 'aksrt')`), 'submenu titles should match the reference theme')
|
||||
assert.ok(usersMenus.includes('用户禁封申诉及用户举报管理'), 'page heading should match the reference theme')
|
||||
|
||||
// 类型筛选按钮组 + 状态 subsubsub + 搜索
|
||||
for (const label of [`__('禁封申诉', 'aksrt')`, `__('用户举报', 'aksrt')`, `__('待处理', 'aksrt')`, `__('已批准', 'aksrt')`, `__('已拒绝', 'aksrt')`, `__('搜索记录', 'aksrt')`]) {
|
||||
for (const label of [`__('禁封申诉', 'aksrt')`, `__('用户举报', 'aksrt')`, `__('待处理', 'aksrt')`, `__('已批准', 'aksrt')`, `__('已拒绝', 'aksrt')`, `__('搜索记录', 'aksrt')`, `__('查看全部', 'aksrt')`]) {
|
||||
assert.ok(tickets.includes(label), `missing reference-theme label: ${label}`)
|
||||
}
|
||||
|
||||
@@ -121,22 +120,25 @@ test('native ban page mirrors the reference theme layout', () => {
|
||||
assert.match(tickets, /orderby-but/)
|
||||
assert.match(tickets, /dashicons-arrow-up/)
|
||||
|
||||
// 行内处理表单对齐参考主题
|
||||
for (const label of [`__('立即处理', 'aksrt')`, `__('申诉通过(解封该用户)', 'aksrt')`, `__('申诉拒绝(保持原禁封状态)', 'aksrt')`, `__('此处内容会反馈给举报人', 'aksrt')`, `__('确认提交', 'aksrt')`, `__('用户状态正常', 'aksrt')`, `__('暂无申请记录', 'aksrt')`]) {
|
||||
// 行渲染与处理表单对齐参考主题
|
||||
for (const label of [`__('立即处理', 'aksrt')`, `__('正在处理', 'aksrt')`, `__('被举报用户', 'aksrt')`, `__('被举报用户禁封信息', 'aksrt')`, `__('申诉用户', 'aksrt')`, `__('禁封信息', 'aksrt')`, `__('申诉信息', 'aksrt')`, `__('处理方式', 'aksrt')`, `__('处理留言', 'aksrt')`, `__('申诉通过(解封该用户)', 'aksrt')`, `__('申诉拒绝(保持原禁封状态)', 'aksrt')`, `__('此处内容会反馈给举报人', 'aksrt')`, `__('确认提交', 'aksrt')`, `__('用户状态正常', 'aksrt')`, `__('当前用户已解封', 'aksrt')`, `__('此用户已解封', 'aksrt')`, `__('暂无申请记录', 'aksrt')`]) {
|
||||
assert.ok(tickets.includes(label), `missing process form label: ${label}`)
|
||||
}
|
||||
|
||||
// 分页(每页 20 条,与参考主题一致)
|
||||
// 分页对齐参考主题 zibpay_admin_pagenavi(每页 20 条)
|
||||
assert.match(tickets, /TICKETS_PER_PAGE = 20/)
|
||||
assert.match(usersMenus, /private function pagination\(int \$pages, int \$page_num\): void/)
|
||||
assert.match(usersMenus, /paginate_links\(/)
|
||||
assert.match(tickets, /ticket_pagenavi\(int \$total_count, int \$per_page\)/)
|
||||
for (const label of ['前往第一页', '前往上一页', '前往下一页', '前往最后一页', 'displaying-num', 'paging-input', 'total-pages']) {
|
||||
assert.ok(tickets.includes(label), `missing pagenavi part: ${label}`)
|
||||
}
|
||||
|
||||
// 旧的三 tab 结构已收敛
|
||||
// 旧的三 tab 结构已收敛;举报处理表单不包含处罚下拉(对齐参考主题)
|
||||
assert.ok(!usersMenus.includes('tab=reports'), 'old reports tab is gone')
|
||||
assert.ok(!usersMenus.includes('tab=appeals'), 'old appeals tab is gone')
|
||||
assert.ok(!usersMenus.includes('render_reports_tab'))
|
||||
assert.ok(!usersMenus.includes('render_appeals_tab'))
|
||||
assert.match(usersMenus, /use UsersMenusTickets;/)
|
||||
assert.ok(!tickets.includes('name="action_taken"'), 'report process form should be status-only like the reference theme')
|
||||
})
|
||||
|
||||
test('comments expose a report entry for other users when reporting is enabled', () => {
|
||||
|
||||
Reference in New Issue
Block a user