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:
@@ -286,6 +286,66 @@
|
||||
require __DIR__ . '/days/form.php';
|
||||
unset($anModalOnly, $anOpen, $anModal, $anEmbed, $anShell,
|
||||
$editing, $people, $kindsFull, $kinds);
|
||||
} elseif ($hcAddKey === 'agenda') {
|
||||
/* 🔴 v82(用户 2026-10-23):「日程,没有新建日程按钮……」
|
||||
⇒ 首页「今天的日程」卡片右上角一颗「新建日程」,点开的是**与日程页同一张**
|
||||
弹框(`templates/calendar/_add_modal.php`,v82 从 calendar/index.php 抽出来的)。
|
||||
⚠️ `$calCtx['back'] = 'home'` 是这个分支**唯一**与日程页不同的地方:
|
||||
提交完回首页(`calendar/event_add` 里认这个白名单值),
|
||||
用户不用离开首页就能看见刚建的那条。
|
||||
⚠️ `ym`/`anchor` 用"今天"——首页卡片本来就只显示今天,
|
||||
新建的日程默认落在今天才符合直觉(日程页那边才用页面锚点)。 */
|
||||
$calCanNew = true; // 进到这里已经过了 Auth::canWrite()
|
||||
$calWritable = (array)($hcAddData['writable'] ?? []);
|
||||
$calCtx = [
|
||||
'ym' => date('Y-m'),
|
||||
'view' => 'day', // 首页日程卡就是"日视图那样"
|
||||
'anchor' => date('Y-m-d'),
|
||||
'new_at' => '',
|
||||
'back' => 'home',
|
||||
];
|
||||
require __DIR__ . '/calendar/_add_modal.php';
|
||||
/* ⚠️ 🔴 v82 再修:这段 unset 清单**必须与片段真实赋过的名字一致**。
|
||||
第一版抄的是模块页的老变量名(`$writable/$ym/$view/$anchor/$newAt`)——
|
||||
那是片段改用 `$cal*` 前缀**之前**的清单,抄过来有两个问题:
|
||||
① 那五个名字**片段已经不再赋值**,unset 它们等于**误杀宿主** ——
|
||||
首页后面还有别的卡片在用(尤其 `$writable`);
|
||||
② 片段真正留下的 `$cal*` 反而没清干净。
|
||||
⇒ 现在按片段的真实输出逐个清:`$calCanNew/$calWritable/$calCtx`
|
||||
三个入参 + 片段内部那 7 个 `$cal*` + `_event_fields.php` 那 8 个。
|
||||
⚠️ 加新变量时**先回片段末尾那段清单对一遍**再往这里抄。 */
|
||||
unset($calCanNew, $calWritable, $calCtx,
|
||||
$calYm, $calView, $calAnchor, $calNewAt, $calBack, $calThisYm, $calBooks,
|
||||
$firstCal, $hasPersonal, $defDay, $defHM, $defEndH, $evFields,
|
||||
$evAllDay, $evMvStyle,
|
||||
/* ⚠️ 片段自己会设 `$fbAddModalAttr`(按 `$calBack` 判定);
|
||||
外层循环每轮也要设它,不清掉会让第二轮拿到上一轮的值。 */
|
||||
$fbAddModalAttr);
|
||||
} elseif ($hcAddKey === 'contacts') {
|
||||
/* 🔴 v82(用户 2026-10-23):「名册,也没有新增成员这个按钮。」
|
||||
⇒ 首页「联系人」卡片右上角一颗「新增成员」,点开的是**与名册页同一张**
|
||||
表单(`templates/people/form.php` 新加的弹框形态)。
|
||||
⚠️ 这套开关(`$pfModalOnly` / `$pfModal` / `$pfOpen`)是 v82 才加到
|
||||
people/form.php 的,之前那页只能整页打开 —— 所以这里**必须**逐个给全,
|
||||
漏一个就会退回"整页表单塞进卡片里"那种坏形态。
|
||||
⚠️ `$person = null` + `$isEdit = false` 是新增态的判据(模板第一行按
|
||||
`$person['id']` 算 $isEdit),不要靠"不传"来默认。 */
|
||||
$pfModalOnly = true;
|
||||
$pfModal = true;
|
||||
$pfOpen = false;
|
||||
$person = null;
|
||||
$errors = [];
|
||||
$canEditAll = true;
|
||||
$isSelf = false;
|
||||
$jobRows = [[]]; // 工作经历先给一行空白(与 people/new 一致)
|
||||
$myNote = '';
|
||||
$myTags = [];
|
||||
$tagChoices = (array)($hcAddData['tagChoices'] ?? []);
|
||||
$myNick = '';
|
||||
$contacts = [];
|
||||
require __DIR__ . '/people/form.php';
|
||||
unset($pfModalOnly, $pfModal, $pfOpen, $person, $errors, $canEditAll, $isSelf,
|
||||
$jobRows, $myNote, $myTags, $tagChoices, $myNick, $contacts);
|
||||
}
|
||||
unset($fbAddModalAttr);
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user