v63:卡片配色 / 日历本靠右 / 地图题图 / 设置页清理 / 公共标签颜色 / 令牌下线
- 卡片右上角按钮改用「来自哪个模块」的主题色:HomeCards 登记表新增 mod 字段 与 module(),首页从登记表取色(原来是模板里硬编码 in_array(['agenda','tasks']) 白名单,新加带按钮的卡片会默默变灰) - 首页日程把日历本放到色块右侧:.ag-ev 改弹性行,「时间+标题」包进 .ag-ev-main(flex:1 1 auto; min-width:0),日历本作右侧兄弟。 原来 display:block 会把日历本顶到第二行,色块一矮就完全看不见 - 旅程地图显示题图:服务端把 media_url(cover_key) 塞进地图数据, 地图卡片左侧 40x40 题图(object-fit:cover),没有题图不留灰框 - 系统设置第一块改叫「系统标语」;删掉「首页上那一行小字」提示、 「不是全家的统一口号」说明、「上次结构升级有步骤失败了」整框; 运行环境删「排错时看这一块」与「亲属连线」那一行(功能与数据未动) - 公共标签:说明文字全删;列表与编辑合并成一行(色块+名字+N人+箭头+编辑); person_groups 加 color 列(Schema addColumn,老库可升);点「编辑」弹框 改名字与颜色、点「完成」提交;下面那个独立编辑列表撤掉。删除挪进弹框 - 个人设置删掉「手动签发接口令牌」整块;settings/api_token 路由保留但挡下提交 (只删界面会留下知道地址就能用的后门);令牌只由登录后自动签发, 设备管理卡保留。apiTokens/apiPlain/apiLabel/apiBase 四个变量一并撤掉
This commit is contained in:
+27
-3
@@ -43,47 +43,71 @@ final class HomeCards
|
||||
public const HEIGHTS = [2, 4, 6, 8];
|
||||
|
||||
/**
|
||||
* 卡片注册表:key => [名字, 说明, 默认宽, 默认高, 详情页路由, 按钮文字, 是否有"显示几条"]
|
||||
* 卡片注册表:key => [名字, 说明, 默认宽, 默认高, 详情页路由, 按钮文字, 是否有"显示几条", 来自哪个模块]
|
||||
*
|
||||
* ⚠️ key 就是模板名(`_card_<key>.php`)与 `data-hc` 的值,三处必须一致。
|
||||
* ⚠️ 新加一张卡片只改这里 + 写一个 `_card_xxx.php`:布局设置页、默认布局、
|
||||
* 首页渲染全部自动出现(`HomeMods` 那条"新增模块的唯一入口"的同一条经验)。
|
||||
*
|
||||
* 🔴 v63(用户 2026-10-19 第 1 条):「卡片右上角的按钮,应该跟这个卡片来自于
|
||||
* 什么模块的主题色一样才对。」⇒ 每张卡片登记它**来自哪个模块**(`mod`),
|
||||
* 右上角按钮的底色就取那个模块的主题色(家庭级、可在设置里改,见 `Module::color`)。
|
||||
* ⚠️ 之前只有日程/任务两张硬编码写死(`in_array($hcKey, ['agenda','tasks'])`),
|
||||
* 那张白名单放在模板里 —— 新加一张带按钮的卡片就忘了加,按钮默默变灰。
|
||||
* 现在登记在这里:**有 route 就该有 mod**,两件事一次改完。
|
||||
* ⚠️ `mod` 只影响按钮配色,不参与权限/路由;认不出的 key 走 `Module::color` 的兜底。
|
||||
*/
|
||||
public const TYPES = [
|
||||
'brief' => [
|
||||
'name' => '概述', 'desc' => '问候、日期、农历、天气,以及今天的数字',
|
||||
'w' => 8, 'h' => 2, 'route' => '', 'more' => '', 'n' => 0,
|
||||
'w' => 8, 'h' => 2, 'route' => '', 'more' => '', 'n' => 0, 'mod' => '',
|
||||
],
|
||||
'agenda' => [
|
||||
'name' => '今天的日程', 'desc' => '按日视图那样排的今天',
|
||||
'w' => 4, 'h' => 8, 'route' => 'calendar', 'more' => '更多日程', 'n' => 0,
|
||||
'mod' => 'calendar',
|
||||
],
|
||||
'tasks' => [
|
||||
'name' => '近期任务', 'desc' => '进行中与待办(含看板与状态)',
|
||||
'w' => 4, 'h' => 8, 'route' => 'tasks', 'more' => '全部任务', 'n' => 0,
|
||||
'mod' => 'tasks',
|
||||
],
|
||||
'memories' => [
|
||||
'name' => '往年的今天', 'desc' => '往年同一天的观影与旅程',
|
||||
'w' => 4, 'h' => 4, 'route' => '', 'more' => '', 'n' => 0,
|
||||
'w' => 4, 'h' => 4, 'route' => '', 'more' => '', 'n' => 0, 'mod' => '',
|
||||
],
|
||||
'days' => [
|
||||
'name' => '纪念日', 'desc' => '接下来 60 天的纪念日与生日',
|
||||
'w' => 4, 'h' => 4, 'route' => 'days', 'more' => '全部纪念日', 'n' => 0,
|
||||
'mod' => 'days',
|
||||
],
|
||||
'movies' => [
|
||||
'name' => '观影', 'desc' => '最近看过的片子',
|
||||
'w' => 4, 'h' => 4, 'route' => 'movies', 'more' => '观影记录', 'n' => 0,
|
||||
'mod' => 'movies',
|
||||
],
|
||||
'books' => [
|
||||
'name' => '读书', 'desc' => '在读与最近加进书架的书',
|
||||
'w' => 4, 'h' => 4, 'route' => 'books', 'more' => '书架', 'n' => 0,
|
||||
'mod' => 'books',
|
||||
],
|
||||
'contacts' => [
|
||||
'name' => '联系人', 'desc' => '名册里的人,可以选显示几个',
|
||||
'w' => 4, 'h' => 4, 'route' => 'people', 'more' => '名册', 'n' => 8,
|
||||
'mod' => 'people',
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* 这张卡片来自哪个模块(没有归属的返回空串 —— 模板据此决定按钮用不用主题色)。
|
||||
*
|
||||
* ⚠️ 别在模板里再写一份白名单:`mod` 是唯一来源。
|
||||
*/
|
||||
public static function module(string $key): string
|
||||
{
|
||||
return (string)(self::TYPES[$key]['mod'] ?? '');
|
||||
}
|
||||
|
||||
/**
|
||||
* 默认布局(第一次打开首页的人看到的样子)。
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user