修复图标显示不出来;标题改XX反馈系统;图标去掉背景色

一、图标显示不出来(根因)
用户上传图标时用的是修复前的代码,数据库里 icon_key 存的是
icons/2026/11/xxx.png —— 没有 local/ 也没有 oss.prefix 前缀。
上一轮我把键校验收紧成「必须带存储前缀」,于是这些键被判非法,
fb_icon_url() 返回空字符串,图标自然显示不出来。
而三个文件其实都真实存在于 OSS 上(13KB / 391KB / 379KB)。

修法两层:
1. fb_icon_key_ok / fb_icon_is_key 兼容历史无前缀形态,
   这些是有效资产,不能因为键格式不规范就让图标消失
2. 数据迁移:把对象复制到 feedlite/icons/… 并把数据库键改成规范形态,
   已对三个软件全部执行并验证(新键 200,大小与源文件一致)

二、标题改为「XX 反馈系统」
- 页头大标题 = 同步日历反馈系统(之前只有「同步日历」)
- 浏览器标签同步改
- 软件名本身含「反馈」时不叠加,避免「轻反馈反馈系统」

三、图标不要背景色
- 去掉色块底衬与圆角投影,直接「图标 + 文字」并排
- 前端 badge、提交页上下文条、邮件头部三处同步
- md 尺寸调到 28px,与 26px 标题文字视觉匹配

验证:三个软件页标题正确、图标全部 200 image/png、
全部页面 200、迁移后新键可读且大小一致。
This commit is contained in:
2026-11-03 08:27:03 +08:00
parent 872baf4153
commit 669ab9e43e
6 changed files with 81 additions and 43 deletions
+6 -6
View File
@@ -191,9 +191,11 @@ if (!function_exists('fb_mail_sw_header')) {
$icon = fb_software_icon($sw);
$name = (string)$sw['name'];
/* 有上传的图标图片就用图片(管理员自己的 logo),没有才用「色块 + 字符」。
/* 有上传的图标图片就用图片(管理员自己的 logo),没有才用字符。
* 一律不加背景色块 —— 图标本身已经能说明是哪个软件,
* 再垫个色块反而糊在一起(与前端 fb_software_badge 保持同一观感)。
* 邮件客户端对 flex 支持参差,这里一律用 table + 内联样式;
* 图片必须给死宽高和 alt,否则 Outlook 里会撑变形。 */
* 图片必须给死宽高,否则 Outlook 里会撑变形。 */
$imgKey = isset($sw['icon_key']) ? trim((string)$sw['icon_key']) : '';
$imgUrl = $imgKey !== '' ? fb_icon_url($imgKey, 60) : '';
@@ -201,11 +203,9 @@ if (!function_exists('fb_mail_sw_header')) {
if ($imgUrl !== '') {
$cell = '<img src="' . fb_mail_esc($imgUrl) . '" alt="' . fb_mail_esc($name) . '"'
. ' width="30" height="30"'
. ' style="width:30px;height:30px;border-radius:8px;display:block;border:0;outline:none;text-decoration:none">';
. ' style="width:30px;height:30px;display:block;border:0;outline:none;text-decoration:none">';
} else {
$cell = '<div style="width:30px;height:30px;background:' . fb_mail_esc($c) . ';'
. 'border-radius:8px;text-align:center;line-height:30px;'
. 'font-size:15px;color:#ffffff;font-weight:700">'
$cell = '<div style="font-size:22px;line-height:30px;text-align:center;color:#1b2430">'
. '<span style="display:inline-block;line-height:30px">' . fb_mail_esc($icon) . '</span></div>';
}