v82: 首页卡片补「新建日程 / 新增成员」+ 两处红线
用户原话:「日程,没有新建日程按钮,名册,也没有新增成员这个按钮。 另外,首页上的日程,红色线不对,变短了左侧缺了一块。在日程模块中, 那个红线左侧是不是还有一个红点?如果有,去掉。」 首页卡片就地操作(不用进模块): - HomeCards.php 的 agenda/contacts 补 add + add_modal 元数据 - templates/calendar/_add_modal.php:从 calendar/index.php 抽出的 「新建日程」弹框片段(首页与日程页共用;片段自读变量一律加 cal 前缀, 避免 require 共享作用域覆盖宿主变量) - templates/people/form.php:加弹框形态(pfModalOnly / pfModal), 弹框形态下「取消」走 data-fb-add-close - index.php:首页 agenda/contacts 两个 $homeAddModals 分支; calendar/event_add 支持 back=home 白名单跳转(不采信任意 POST 字符串) 红线(左端缺一块 / 多余红点): - .ag-now 原来写 left: var(--ag-gutter,50px),但 v80 起它已经在 .ag-lines 内部(那层自己已有同样缩进)⇒ 左沿跑到 100px、比车道多 出一整份刻度宽。改成 left: 0 - .tg-now::before 整条删除(日程模块页那个 8px 红点) 涉及共用件(HomeCards/index.php),已跑全量:e2e 1572/0、 v82 正向 20/0、v82 反向 15/0、流水线全绿并已部署。
This commit is contained in:
@@ -965,6 +965,32 @@ switch ($r) {
|
||||
'kindsFull' => Anniversary::kindsFull($familyId),
|
||||
'people' => Person::roster($familyId, $me, 'member', ''),
|
||||
];
|
||||
} elseif ($hcKey === 'agenda' && !isset($homeAddModals['agenda'])) {
|
||||
/* 🔴 v82(用户 2026-10-23):「日程,没有新建日程按钮」——
|
||||
首页「今天的日程」卡片要能就地新建日程。
|
||||
⚠️ 这里给的 `writable` 必须与 `calendar/index.php` 算的**同一口径**:
|
||||
`Calendar::mine()` 取我可见的本 → 再按 `Calendar::canWrite()` 过一道。
|
||||
少走 canWrite 的话,只读共享本会出现在下拉里,选了就被服务端拒。
|
||||
⚠️ 顺手 `ensurePersonalBook()`:与日程页同一条幂等补本 ——
|
||||
老用户库里的"我自己的日程本"是 `seedDefaults()` 之后才有的,
|
||||
不补的话首页这张弹框的默认本可能落到**观影本**上,
|
||||
用户直接点"加上"就建出一条观影记录(v24 第 21 批真事故)。 */
|
||||
Calendar::ensurePersonalBook($familyId, $me);
|
||||
$agCals = Calendar::mine($familyId, $me);
|
||||
$homeAddModals['agenda'] = [
|
||||
'writable' => array_values(array_filter(
|
||||
$agCals,
|
||||
static fn($c) => Calendar::canWrite($c, $me)
|
||||
)),
|
||||
];
|
||||
} elseif ($hcKey === 'contacts' && !isset($homeAddModals['contacts'])) {
|
||||
/* 🔴 v82(用户 2026-10-23):「名册,也没有新增成员这个按钮」——
|
||||
首页「联系人」卡片要能就地新增成员。
|
||||
⚠️ 只给标签候选(表单要用),**不给名册**:新增态不需要选人,
|
||||
白跑一次 roster 查询(1000+ 人)没有意义。 */
|
||||
$homeAddModals['contacts'] = [
|
||||
'tagChoices' => PersonTag::choices($familyId, $me),
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5727,6 +5753,16 @@ $want = array_keys($want);
|
||||
flash('err', '有附件没有保存:' . implode(';', $warns));
|
||||
}
|
||||
flash('ok', '日程已加上。');
|
||||
/* 🔴 v82(用户 2026-10-23):「首页上的日程,……首页卡片上要有新建按钮」——
|
||||
从**首页**那张弹框提交的,回首页(卡片上立刻能看到刚建的那条)。
|
||||
⚠️ 默认仍回日程模块 —— 从日程页新建时,用户接着要看的是日历本身上
|
||||
刚加的那一格,跳去首页反而看不到。
|
||||
⚠️ 白名单取值(只认 'home'),绝不把 POST 字符串直接当跳转地址
|
||||
(开放重定向)—— 与 v81 的 `days/create`、`movies/create` 同一条约定。
|
||||
⚠️ 放在 AJAX 分支**之后**:AJAX 那条路自己早 exit 了,走不到这里。 */
|
||||
if ((string)($_POST['back'] ?? '') === 'home') {
|
||||
redirect('home');
|
||||
}
|
||||
redirect('calendar', ['ym' => substr($startsAt, 0, 7)]);
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user