用户 2026-10-11 反馈六条,逐条定位真根因后修复: ① 纪念日「日期」多出一个控件 —— 只保留最新的那个 两层根因:(a)原生 `input[type=date]` 当初没包在 `.dt-native` 里, v42 那条"AntD 挂上后收起原生框"的选择器根本不命中;(b)更要命的是 `.dt-native` 基类写着 `display: contents` —— 该元素**没有盒子**, 给它 position/width 完全无效 ⇒ 必须把 display 显式改回 block 才收得起来。 ② 编辑纪念日把底层列表页弄没 —— 「修改」原来是整页跳 `days/edit` (套 layout = 一张只有弹框的空白页)。改为 `?embed=1` 只吐弹框那一块, 列表页 JS 取回来替换 `#anNewCard` 并打开 —— 与「新建」同一观感。 内嵌形态标 `$anModalOnly` 以免打 standalone 标记(关闭时不再跳页)。 ③ 拖图裁剪的层被弹框盖住 —— `.crop-overlay` 是 z-index:100 而 `.cal-modal` 是 200 ⇒ 裁剪层被整块盖住。提到 260(与 v41 的 .cn-modal 同一处理)。 ④ 行程弹框里"参与的人"弹不出选人框 —— person_picker.js 只绑定一次, 而弹框表单是 AJAX 片段 ⇒ 里面的 `.pp` 从未被 init。三件事一起: 暴露 `window.fbInitPickers()`(幂等)+ layout 暴露 `window.fbLoadPicker()` (脚本是按需加载的)+ 塞完片段后补调初始化。 ⑤ 日程新建排版/控件/文案 —— 改走观影式 `.mv-grid`(标签对齐 + 冒号); 起止补上 `$dtPlugin='antd'`(试点正式推广到日程);标签「时间范围」→「开始 / 结束」; 删三句提示(结束留空 / 多选提醒 / 全天)。 ⑥ 条目详情浮层(首页日程 / 首页近期任务 / 日程页条目)—— 点条目不再直接跳页,弹浮层显示详情;「详细信息」跳该来源详情页; 「编辑」就地换成该来源的编辑表单(四处 `?embed=1` 片段)。 新增 `templates/_entry_popup.php` + `assets/js/entry_popup.js` + `fb_entry_json()`(三个入口共用一个编码函数)。 验证:php -l 157 文件全过;div 深度 33 组合全配平;片段体检 20 片段无越界; 本地 e2e 1510/0;v43 真机 33/0;v43 反向验证 8/0;v38 36/0;v42 33/0; b31/b32 反向验证 8/0 与 5/0;部署断言本地空跑 RC=0;完整流水线 PUSH_RC=0。
46 lines
2.9 KiB
PHP
46 lines
2.9 KiB
PHP
<?php
|
|
/**
|
|
* 🔴 v43(用户 2026-10-11 第 6 条)——「条目详情浮层」的**空壳**。
|
|
*
|
|
* 用户原话:
|
|
* 「首页上的日程、首页上的近期任务,以及日程里面的日程,点击它们的时候,
|
|
* 都会弹出一个框显示更详细的信息。上面有不同的功能按钮,比如说详细信息,
|
|
* 在日程里面,如果是观影啊、旅程啊,点击详细信息就会进入到观影或者旅程的
|
|
* 那个相关的页面。如果是日程的话,点击详细信息就进到日程的详细页面。
|
|
* 当然还可以直接点击编辑,点击编辑不同的来源就进入不同的编辑页面,
|
|
* 就在当前的页面弹窗,把之前的窗给去掉,然后弹出编辑的那个框来就可以了。」
|
|
*
|
|
* ⇒ 三处入口(首页日程 / 首页近期任务 / 日程页条目)都挂同一个浮层,
|
|
* 内容由 `assets/js/entry_popup.js` 按点击项的 `data-fb-entry` 现填。
|
|
*
|
|
* 两种形态(由 JS 切):
|
|
* ① **详情态**:正文几行「标签:值」;底栏 = 详细信息(跳该来源详情页)+ 编辑
|
|
* ② **编辑态**:正文换成该来源的编辑表单;底栏 = 返回(回详情态)+ 保存
|
|
* (保存走**原生提交** —— 四个来源的 update 路由本来就收普通 POST 并跳转,
|
|
* 不依赖任何页面自带脚本,所以浮层在任何页面都能用)
|
|
*
|
|
* ⚠️ 空壳放在 **layout.php** 里(全站一份):三处入口在不同页面,
|
|
* 放各页面迟早有一个忘了 include —— 那种"某些页面点了没反应"最难查。
|
|
* ⚠️ 面板里**不放任何服务端内容**:同一页一百条日程也只有一个浮层,开销可忽略。
|
|
*/
|
|
?>
|
|
<div class="fb-entry-modal" id="fbEntryModal" role="dialog" aria-modal="true"
|
|
aria-label="条目详情" hidden>
|
|
<div class="cal-modal-panel fb-entry-panel" id="fbEntryPanel">
|
|
<div class="cal-modal-head">
|
|
<b id="fbEntryTitle">详情</b>
|
|
<button type="button" class="cal-modal-x" data-fb-entry-close aria-label="关闭">✕</button>
|
|
</div>
|
|
<div class="cal-modal-body" id="fbEntryBody"></div>
|
|
<div class="cal-modal-foot" id="fbEntryFoot">
|
|
<span class="cal-modal-tip" id="fbEntryTip"></span>
|
|
<?php /* 详情态的两颗 */ ?>
|
|
<a class="btn btn-ghost btn-sm" id="fbEntryDetail" href="#" hidden>详细信息</a>
|
|
<button class="btn btn-sm" type="button" id="fbEntryEdit" hidden>编辑</button>
|
|
<?php /* 编辑态的两颗(默认藏着)—— 「返回」不丢用户填的东西吗?
|
|
⚠️ 会丢。所以措辞用「返回」,并且在有改动时先问一句(见 JS)。 */ ?>
|
|
<button class="btn btn-ghost btn-sm" type="button" id="fbEntryBack" hidden>返回</button>
|
|
<button class="btn btn-sm" type="button" id="fbEntrySave" hidden>保存</button>
|
|
</div>
|
|
</div>
|
|
</div>
|