v62:纪念日列表修正 / 分类图标与设置菜单 / 首页卡片体系

- 纪念日列表:display:flex 从 td 移到内层 div(写在 td 上会破坏表格列算法,
  表现为关联人列与其它列高度不一致);行内列序按表头对齐;
  改完再点「新建」不再带出上次修改的数据;文案改为「与我相关」「来自名册」;
  别人记的、把我挂成关联人的条目一并显示(split() 返回 hiddenIds,
  路由层据此过滤「接下来的日子」,与两张表同一套可见性)
- 分类图标:新增 app/AnnivIcon.php(17 个行内 SVG 图标 + 同 key 的 emoji
  供日历纯文本处使用,内网无 CDN 不用 FontAwesome);去掉「看日历」按钮;
  设置按钮改为菜单,第一项进 days/settings 独立页;分类可自选图标,
  列表徽标与日历条目都按分类显示
- 首页卡片:新增 app/HomeCards.php 与 templates/home_cards.php;
  8 格宽 × 高 2/4/6/8;首页拆成 templates/home/_card_*.php 共 8 个片段;
  home/cards 可改尺寸、调顺序、开关
This commit is contained in:
2026-10-19 12:51:17 +08:00
parent ad7f43af68
commit 9a66068c33
21 changed files with 2172 additions and 685 deletions
+13 -13
View File
@@ -428,9 +428,14 @@ $fbCityN = count(\App\Geo::CITIES);
② 导航条上的模块(勾选 + 排序)
③ 模块主题色(改色)
同一串模块名出现两遍、颜色又另起一张 —— 用户看得累、改起来要点三次保存。
⇒ 现在合成**一张表**:一行一个模块,四列 = 导航 / 首页 / 颜色 / 顺序。
⇒ 现在合成**一张表**:一行一个模块,四列 = 顺序 / 模块 / 导航 / 颜色。
提交走 `settings/modules_save`(它内部把三个 save 依次调一遍,见 index.php 的说明)。
⚠️ v62:**「首页」那一列撤掉了** —— 首页上摆什么改由「首页卡片」自己管
(每张卡片可设宽高/顺序/开关,还包括联系人、往年的今天这两张不是模块的卡片),
这张表只留"导航里有没有它 + 它是什么颜色 + 排第几"。
所以路由那边只有表单真的带了 `home[]` 才写 HomeMods,否则会把老数据清空。
⚠️ 颜色那一列的权限**没有变**:它仍是家庭一份、只有管理员能改;
非管理员那一列显示成只读色块(看得到、改不了)。
⚠️ 拖动排序仍搬整行(行自带 order[]),▲▼ 是没 JS 时的兜底 —— 两条路都在。 */
@@ -447,14 +452,16 @@ foreach ($plMAll as $k) { if (!in_array($k, $plMOrder, true)) { $plMOrder[] = $k
<div class="card card-pad" id="modules" style="margin-top:20px">
<h2 class="section-title">
模块设置
<span class="hint">导航 / 首页 / 颜色 / 顺序,一页改完</span>
<span class="hint">导航 / 颜色 / 顺序,一页改完</span>
</h2>
<p class="small muted" style="margin:0 0 16px">
模块越来越多,但每个人关心的不一样 —— 这里一行一个模块:
<b>导航</b>管"顶栏上有没有它",<b>首页</b>管"打开首页看不看得到",
<b>颜色</b>是进到那个模块后顶栏高亮的色(<b>全家共用一套</b>),
<b>顺序</b>用拖动手柄或 ▲▼ 调。
<br>关掉的模块<b>不会丢数据</b>,只是从顶栏 / 首页收起来,别处仍能进。
<b>导航</b>管"顶栏上有没有它",<b>颜色</b>是进到那个模块后顶栏高亮的色
(<b>全家共用一套</b>),<b>顺序</b>用拖动手柄或 ▲▼ 调。
<br>关掉的模块<b>不会丢数据</b>,只是从顶栏收起来,别处仍能进。
<br>🔴 首页上摆什么,**已经改成「卡片」自己管**(每张卡片可以设宽高与顺序,
还包括联系人、往年的今天这两张不是模块的卡片)——
<a href="<?= e(url('home/cards')) ?>">去「首页卡片」摆</a>。
</p>
<form method="post" action="<?= e(url('settings/modules_save')) ?>" id="modulesForm">
@@ -466,7 +473,6 @@ foreach ($plMAll as $k) { if (!in_array($k, $plMOrder, true)) { $plMOrder[] = $k
<th class="mod-th-order">顺序</th>
<th class="mod-th-name">模块</th>
<th class="mod-th-on">导航</th>
<th class="mod-th-on">首页</th>
<th class="mod-th-color">颜色</th>
</tr>
</thead>
@@ -495,12 +501,6 @@ foreach ($plMAll as $k) { if (!in_array($k, $plMOrder, true)) { $plMOrder[] = $k
<?= in_array($k, $plMNav, true) ? 'checked' : '' ?>>
</label>
</td>
<td class="mod-td-on">
<label class="mod-chk" title="显示在首页">
<input type="checkbox" name="home[]" value="<?= e($k) ?>"
<?= in_array($k, $plMHome, true) ? 'checked' : '' ?>>
</label>
</td>
<td class="mod-td-color">
<?php if ($plMIsAdmin): ?>
<input type="color" class="color-picker" name="c[<?= e($k) ?>]"