@@ -70,6 +48,16 @@ $todayMarks = $todayMarks ?? ['tags' => [], 'line' => ''];
`$me = Auth::check()` 把模板里的 $me 覆盖成布尔值,链接就变成 id=0
("补充亲属关系"点进去是空白页)。所以这里显式用 $meId。 */ ?>
-
-
-
-
-
-
-
- = e($hbPart) ?>,= e((string)$meName) ?>
-
-
- = e((string)($todayLabel ?? date('n 月 j 日'))) ?>
- = e((string)($weekday ?? '')) ?>
-
- = e((string)$lunarShort) ?>
-
-
-
-
-
- = e((string)$mk['word']) ?>
-
-
-
-
-
-
-
-
-
= e((string)($weather['icon'] ?? '')) ?>
-
-
= e((string)($weather['temp'] ?? '')) ?>
-
= e((string)($weather['text'] ?? '')) ?>
-
-
- = $weather['wdir'] !== '' ? e((string)$weather['wdir']) . ' ' : '' ?>= e((string)$weather['wind']) ?>
-
-
-
-
-
= e((string)$weather['place']) ?>
-
-
-
-
-
-
-
-= $endH) { $endH = min(24, $nowHNow + 2); }
- if ($endH <= $startH) { $endH = min(24, $startH + 2); }
-}
-/* 红线位置:**分钟级**(与日程页同一算法)。见上面 v44 那条 —— 原来是 `date('G')`
- (整小时),所以"7:44 的红线停在 7:00"。 */
-$nowMinutes = ((int)date('G')) * 60 + (int)date('i');
-$nowPos = (($nowMinutes / 60) - $startH) / max(1, ($endH - $startH)); // 红线位置(0~1)
-$showNow = $nowPos >= 0 && $nowPos <= 1;
-
-/* 🔴 v30 第 2/4 条:首页日程也用**和日程模块同一套冲突分列**。
- ⇒ 复用 App\Calendar::conflictLanes(算法借鉴 SyncCalendar 的 TimelineUtil):
- 两条撞车就左右各半、三条就三分 —— 首页与日历页看到的是同一个布局。
- ⚠️ 必须**先按时间排序**再分列(lanes 是按传入顺序返回的):
- `$todayEvents` 从路由出来已是"全天在前、其余按时刻"升序,这里再稳一次。
- ⚠️ 入参只挑**有时间**的那些(全天日程不进时间网格)。 */
-usort($timed, static function (array $a, array $b): int {
- return strcmp((string)($a['time'] ?? ''), (string)($b['time'] ?? ''));
-});
-$laneInfo = \App\Calendar::conflictLanes($timed);
-foreach ($timed as $i => &$evRef) {
- [$l, $w] = $laneInfo[$i] ?? [0.0, 1.0];
- $evRef['left'] = round($l * 100, 4);
- $evRef['width'] = round($w * 100, 4);
-}
-unset($evRef);
-?>
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0) { $evEdit = url('calendar/event', ['id' => $evRef, 'embed' => 1]); }
- elseif ($evKind === 'movie' && $evRef > 0) { $evEdit = url('movies/edit', ['id' => $evRef, 'embed' => 1]); }
- elseif ($evKind === 'task' && $evRef > 0) { $evEdit = url('tasks/edit', ['id' => $evRef]); }
- elseif ($evKind === 'anniv' && $evRef > 0) { $evEdit = url('days/edit', ['id' => $evRef, 'embed' => 1]); }
- ?>
-
'>
-
- 全天
- = e((string)$ev['title']) ?>
- = e((string)$ev['calname']) ?>
-
-
-
-
-
-
-
-
- = sprintf('%02d:00', $h) ?>
-
-
-
-
-
-
-
-
-
-
-
- 0) { $evEdit = url('calendar/event', ['id' => $evRef, 'embed' => 1]); }
- elseif ($evKind === 'movie' && $evRef > 0) { $evEdit = url('movies/edit', ['id' => $evRef, 'embed' => 1]); }
- elseif ($evKind === 'task' && $evRef > 0) { $evEdit = url('tasks/edit', ['id' => $evRef]); }
- elseif ($evKind === 'anniv' && $evRef > 0) { $evEdit = url('days/edit', ['id' => $evRef, 'embed' => 1]); }
- ?>
-
'
- style="background: = e((string)$ev['color']) ?>;
- top: = number_format($topPct, 2) ?>%;
- height: = number_format($hPct, 2) ?>%;
-
- left: calc(46px + = (float)($ev['left'] ?? 0) ?>% + 2px);
- width: calc(= (float)($ev['width'] ?? 100) ?>% - 4px);"
- title="= e((string)$ev['title']) ?>"
- data-cal="= (int)$ev['cal'] ?>">
- = e((string)$ev['time']) ?>
- = e((string)$ev['title']) ?>
- = e((string)$ev['calname']) ?>
-
-
-
-
-
-
-
-
-
-
-
-
+ ⇒ 放在卡片网格**之前**:往年的今天是网格里的一张卡片,位置由用户摆,
+ 只有"在网格前面"才能保证永远在它上面。
+ ⚠️ 没有通知时整块不渲染 —— 首页是"每天第一眼看的地方",不要用一个空盒子占一屏。 */ ?>
@@ -564,43 +120,58 @@ unset($evRef);
-
+
-
-
-
- 往年的今天
- = e(date('n 月 j 日')) ?>
-
-
-
+
-
往年的这一天还没有记录
- 日子还长,等有了第一次,明年这时候就会自己冒出来。
+
首页卡片都被关掉了
+ 到
首页卡片 里重新勾几张出来。
-
-
+
-
+ ⚠️ 改完**不摘掉这一行**:用户点完正想看自己刚完成什么,立刻消失会让人怀疑
+ "是不是点到删除了"。刷新时由服务端决定它还在不在。
+ ⚠️ 这一段是**页面级**的(不属于某张卡片):任务卡片被关掉后它也跟着没用,
+ 但留着无害 —— 别为了"省几行"把它挪进卡片模板里,那样卡片一换模板就丢功能。 */ ?>
+
+
diff --git a/templates/settings/me.php b/templates/settings/me.php
index 55edcfb..5b25310 100644
--- a/templates/settings/me.php
+++ b/templates/settings/me.php
@@ -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
模块设置
- 导航 / 首页 / 颜色 / 顺序,一页改完
+ 导航 / 颜色 / 顺序,一页改完
模块越来越多,但每个人关心的不一样 —— 这里一行一个模块:
- 导航管"顶栏上有没有它",首页管"打开首页看不看得到",
- 颜色是进到那个模块后顶栏高亮的色(全家共用一套),
- 顺序用拖动手柄或 ▲▼ 调。
-
关掉的模块不会丢数据,只是从顶栏 / 首页收起来,别处仍能进。
+ 导航管"顶栏上有没有它",颜色是进到那个模块后顶栏高亮的色
+ (全家共用一套),顺序用拖动手柄或 ▲▼ 调。
+
关掉的模块不会丢数据,只是从顶栏收起来,别处仍能进。
+
🔴 首页上摆什么,**已经改成「卡片」自己管**(每张卡片可以设宽高与顺序,
+ 还包括联系人、往年的今天这两张不是模块的卡片)——
+ 去「首页卡片」摆。