后台三处列表/详情:标题顶头独占一行,标签下移(与前台统一)
用户:「管理后台的待审核和全部问题那个列表里面也是一样的。
标题应该顶头,然后在标题下面另起一行,写上来自于哪一个软件、
它的状态是什么、它是什么分类。点到一个具体的反馈里面也是一样的,
标题顶头,然后把同步日历、bug、待处理往下一行。管理后台也是全部按照这种方式去处理。」
改三处:
1. fb_admin_pending_row(待审核列表)
prow-top(标签在前+标题)→ prow-head(标题独占一行)+ prow-tags(软件/分类/状态)
2. 全部问题列表
item-top → item-head + item-tags
🔴 同时补上软件名(fb_software_chip)—— 后台是跨软件视图,
前台某个软件内部不需要显示软件名(满页同一个),后台必须显示。
3. 后台详情页头部
item-top → item-head + item-tags,标题字号 19px 略大于列表
样式新增 .prow-head / .prow-tags(.prow-top 保留给操作日志,
日志条目只有「动作+编号」,单行反而合适)。
验证(真实渲染 + 浏览器测量,不登录后台、不动数据):
待审核行 标题 top=87 left=222 / 标签 top=119 left=222 → 标签在下方、左对齐 0px 偏差
全部问题 标题 top=318 left=223 / 标签 top=351 left=223 → 同上
详情头 标题 top=541 left=228 / 标签 top=575 left=228 → 同上
另外静态检查:三处的 head 段内均无状态标签,tags 段内均含软件/分类/状态。
前台 5 个路由 200,未受影响。
This commit is contained in:
@@ -754,11 +754,20 @@ fb_layout_head('管理后台', ['robots' => 'noindex,nofollow']);
|
|||||||
<div class="list">
|
<div class="list">
|
||||||
<?php foreach ($rows as $t): ?>
|
<?php foreach ($rows as $t): ?>
|
||||||
<div class="item" style="cursor:default">
|
<div class="item" style="cursor:default">
|
||||||
<div class="item-top">
|
<?php
|
||||||
<span class="badge cat"><?php echo e(fb_category_label($t['category'])); ?></span>
|
/* 标题顶头独占一行,标签(软件 / 分类 / 状态)另起一行。
|
||||||
<span class="badge st st-<?php echo e($t['status']); ?>"><?php echo e(fb_status_label($t['status'])); ?></span>
|
* 后台是跨软件视图,所以这里必须带软件名 —— 前台某个软件内部
|
||||||
|
* 不需要显示软件名(满页都是同一个),后台需要。 */
|
||||||
|
$aSw = !empty($t['software_id']) ? fb_software((int)$t['software_id']) : null;
|
||||||
|
?>
|
||||||
|
<div class="item-head">
|
||||||
<a class="item-title" href="admin.php?tab=thread&id=<?php echo (int)$t['id']; ?>"><?php echo e($t['title']); ?></a>
|
<a class="item-title" href="admin.php?tab=thread&id=<?php echo (int)$t['id']; ?>"><?php echo e($t['title']); ?></a>
|
||||||
<span class="item-id">#<?php echo (int)$t['id']; ?></span>
|
<span class="item-id">#<?php echo (int)$t['id']; ?></span>
|
||||||
|
</div>
|
||||||
|
<div class="item-tags">
|
||||||
|
<?php if ($aSw): ?><?php echo fb_software_chip($aSw); ?><?php endif; ?>
|
||||||
|
<span class="badge cat"><?php echo e(fb_category_label($t['category'])); ?></span>
|
||||||
|
<span class="badge st st-<?php echo e($t['status']); ?>"><?php echo e(fb_status_label($t['status'])); ?></span>
|
||||||
<?php if ((int)$t['visible'] !== 1): ?><span class="badge st st-closed">未公开</span><?php endif; ?>
|
<?php if ((int)$t['visible'] !== 1): ?><span class="badge st st-closed">未公开</span><?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
<p class="item-ex"><?php echo e(fb_excerpt((string)$t['body'], 120)); ?></p>
|
<p class="item-ex"><?php echo e(fb_excerpt((string)$t['body'], 120)); ?></p>
|
||||||
@@ -797,16 +806,21 @@ fb_layout_head('管理后台', ['robots' => 'noindex,nofollow']);
|
|||||||
<div class="crumbs"><a href="admin.php?tab=all">← 返回全部问题</a></div>
|
<div class="crumbs"><a href="admin.php?tab=all">← 返回全部问题</a></div>
|
||||||
|
|
||||||
<div class="card-form" style="margin:0 0 16px">
|
<div class="card-form" style="margin:0 0 16px">
|
||||||
<div class="item-top">
|
<?php
|
||||||
<?php
|
$dSw = !empty($t['software_id']) ? fb_software((int)$t['software_id']) : null;
|
||||||
$dSw = !empty($t['software_id']) ? fb_software((int)$t['software_id']) : null;
|
$dCat = !empty($t['category_id']) ? fb_category((int)$t['category_id']) : null;
|
||||||
$dCat = !empty($t['category_id']) ? fb_category((int)$t['category_id']) : null;
|
?>
|
||||||
?>
|
<?php /* 标题顶头独占一行,标签另起一行 —— 与列表页、前台详情页统一。
|
||||||
|
用户 2026-11-03:「点到一个具体的反馈里面也是一样的,标题顶头,
|
||||||
|
然后把同步日历、bug、待处理往下一行,标签写到下面去。」 */ ?>
|
||||||
|
<div class="item-head">
|
||||||
|
<span class="item-title" style="font-size:19px"><?php echo e($t['title']); ?></span>
|
||||||
|
<span class="item-id">#<?php echo (int)$t['id']; ?></span>
|
||||||
|
</div>
|
||||||
|
<div class="item-tags">
|
||||||
<?php if ($dSw): ?><?php echo fb_software_chip($dSw); ?><?php endif; ?>
|
<?php if ($dSw): ?><?php echo fb_software_chip($dSw); ?><?php endif; ?>
|
||||||
<?php if ($dCat): ?><span class="badge cat"><?php echo e((string)$dCat['name']); ?></span><?php endif; ?>
|
<?php if ($dCat): ?><span class="badge cat"><?php echo e((string)$dCat['name']); ?></span><?php endif; ?>
|
||||||
<span class="badge st st-<?php echo e($t['status']); ?>"><?php echo e(fb_status_label($t['status'])); ?></span>
|
<span class="badge st st-<?php echo e($t['status']); ?>"><?php echo e(fb_status_label($t['status'])); ?></span>
|
||||||
<span class="item-title"><?php echo e($t['title']); ?></span>
|
|
||||||
<span class="item-id">#<?php echo (int)$t['id']; ?></span>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="item-ex" style="white-space:normal"><?php echo nl2br(e($t['body'])); ?></div>
|
<div class="item-ex" style="white-space:normal"><?php echo nl2br(e($t['body'])); ?></div>
|
||||||
<?php if (!empty($atts['main'])) { echo fb_attach_render($atts['main']); } ?>
|
<?php if (!empty($atts['main'])) { echo fb_attach_render($atts['main']); } ?>
|
||||||
@@ -1450,14 +1464,19 @@ function fb_admin_pending_row(array $t) {
|
|||||||
<div class="prow">
|
<div class="prow">
|
||||||
<div class="prow-main">
|
<div class="prow-main">
|
||||||
<?php $cSw = !empty($t['software_id']) ? fb_software((int)$t['software_id']) : null; ?>
|
<?php $cSw = !empty($t['software_id']) ? fb_software((int)$t['software_id']) : null; ?>
|
||||||
<div class="prow-top">
|
<?php /* 标题顶头独占一行,标签(软件/分类/状态)另起一行放下面。
|
||||||
|
用户 2026-11-03:后台待审核、全部问题、详情页全都按这个方式处理 ——
|
||||||
|
标签放在标题前面会把标题挤到右边。 */ ?>
|
||||||
|
<div class="prow-head">
|
||||||
|
<a class="prow-title" href="<?php echo e($url); ?>"><?php echo e($t['title']); ?></a>
|
||||||
|
<span class="item-id" title="问题编号">#<?php echo (int)$t['id']; ?></span>
|
||||||
|
</div>
|
||||||
|
<div class="prow-tags">
|
||||||
<?php if ($cSw): ?><?php echo fb_software_chip($cSw); ?><?php endif; ?>
|
<?php if ($cSw): ?><?php echo fb_software_chip($cSw); ?><?php endif; ?>
|
||||||
<?php if (!empty($t['category_id'])): ?>
|
<?php if (!empty($t['category_id'])): ?>
|
||||||
<span class="badge cat"><?php echo e(fb_category_label((int)$t['category_id'])); ?></span>
|
<span class="badge cat"><?php echo e(fb_category_label((int)$t['category_id'])); ?></span>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<span class="badge st st-<?php echo e($t['status']); ?>"><?php echo e(fb_status_label($t['status'])); ?></span>
|
<span class="badge st st-<?php echo e($t['status']); ?>"><?php echo e(fb_status_label($t['status'])); ?></span>
|
||||||
<a class="prow-title" href="<?php echo e($url); ?>"><?php echo e($t['title']); ?></a>
|
|
||||||
<span class="item-id" title="问题编号">#<?php echo (int)$t['id']; ?></span>
|
|
||||||
</div>
|
</div>
|
||||||
<p class="prow-ex"><?php echo e(fb_excerpt((string)$t['body'], 120)); ?></p>
|
<p class="prow-ex"><?php echo e(fb_excerpt((string)$t['body'], 120)); ?></p>
|
||||||
<div class="prow-meta">
|
<div class="prow-meta">
|
||||||
|
|||||||
+6
-1
@@ -548,10 +548,15 @@ main.wrap{padding-top:24px; padding-bottom:40px; min-height:60vh}
|
|||||||
}
|
}
|
||||||
.prow:hover{border-color:var(--line-strong)}
|
.prow:hover{border-color:var(--line-strong)}
|
||||||
.prow-main{flex:1; min-width:0}
|
.prow-main{flex:1; min-width:0}
|
||||||
|
/* 后台待审核条目:标题顶头独占一行 → 标签行 → 摘要 → 作者信息
|
||||||
|
* ⚠️ .prow-top 仍被「操作日志」那处复用(日志条目只有动作+编号,单行更合适),
|
||||||
|
* 所以这里保留它,另外新增 .prow-head / .prow-tags 给反馈条目用。 */
|
||||||
.prow-top{display:flex; align-items:center; flex-wrap:wrap; gap:8px}
|
.prow-top{display:flex; align-items:center; flex-wrap:wrap; gap:8px}
|
||||||
|
.prow-head{display:flex; align-items:flex-start; gap:8px}
|
||||||
|
.prow-tags{display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin-top:7px}
|
||||||
.prow-title{
|
.prow-title{
|
||||||
font-weight:600; font-size:15.5px; color:var(--fg);
|
font-weight:600; font-size:15.5px; color:var(--fg);
|
||||||
flex:1; min-width:160px; word-break:break-word;
|
flex:1; min-width:0; word-break:break-word; line-height:1.45;
|
||||||
}
|
}
|
||||||
.prow-title:hover{color:var(--brand); text-decoration:underline}
|
.prow-title:hover{color:var(--brand); text-decoration:underline}
|
||||||
.prow-ex{
|
.prow-ex{
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ if (!defined('FB_ROOT')) {
|
|||||||
define('FB_ROOT', dirname(__DIR__));
|
define('FB_ROOT', dirname(__DIR__));
|
||||||
// 静态资源版本号:改 assets/ 下的 css/js 后把这个数字 +1,
|
// 静态资源版本号:改 assets/ 下的 css/js 后把这个数字 +1,
|
||||||
// 让浏览器与 CDN 缓存失效。全站只此一处,别再往页面里写死数字。
|
// 让浏览器与 CDN 缓存失效。全站只此一处,别再往页面里写死数字。
|
||||||
if (!defined('FB_ASSET_V')) { define('FB_ASSET_V', 31); }
|
if (!defined('FB_ASSET_V')) { define('FB_ASSET_V', 37); }
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ------------------------------------------------------------------
|
/* ------------------------------------------------------------------
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ if (!defined('FB_ROOT')) {
|
|||||||
define('FB_ROOT', dirname(__DIR__));
|
define('FB_ROOT', dirname(__DIR__));
|
||||||
// 静态资源版本号:改 assets/ 下的 css/js 后把这个数字 +1,
|
// 静态资源版本号:改 assets/ 下的 css/js 后把这个数字 +1,
|
||||||
// 让浏览器与 CDN 缓存失效。全站只此一处,别再往页面里写死数字。
|
// 让浏览器与 CDN 缓存失效。全站只此一处,别再往页面里写死数字。
|
||||||
if (!defined('FB_ASSET_V')) { define('FB_ASSET_V', 36); }
|
if (!defined('FB_ASSET_V')) { define('FB_ASSET_V', 37); }
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ------------------------------------------------------------------
|
/* ------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user