首页新建日程:日历本下拉拉不下来;日程详情浮层只留「编辑」「删除」+ 重复日程三档 #2

Closed
opened 2026-10-25 07:17:16 +00:00 by laoyang · 1 comment
Owner

现象

① 首页新建日程时,日历本拉不下来

在首页「今天的日程」卡片右上角点「新建日程」,弹框里「日历本」那个下拉点不开,
看着「是空的,好像只有一个『工作』什么的」。

② 日程详情弹框是多余的

首页点一个日程会弹出详情,但这个详情跟原来的编辑弹框几乎一模一样
⇒ 详情没有意义。

期望

① 日历本能正常展开、能切换。

② 详情弹框只留两个按钮:「编辑」「删除」。

删除重复日程时要给三档:

  1. 删除当前(这一次)
  2. 删除从现在到以后
  3. 删除全部

编辑重复日程时,也要有这三档。

验收标准

  • 首页新建日程弹框里,日历本按钮点一下菜单真的展开,能选到别的本,选完按钮文字跟着变。
  • 点日程弹出的浮层,底栏只有「编辑」「删除」,没有「详情」。
  • 重复日程点删除出现三档,措辞为「当前 / 从现在到以后 / 全部」。
  • 重复日程点编辑,表单里也有同样三档(不是只有「修改全部」)。
  • 单次日程(非重复)删除时不问范围,直接确认即可。
  • 定位不到"这一次"时(occ 为空)只给「删除全部」,不允许空值误删整条。
## 现象 **① 首页新建日程时,日历本拉不下来** 在首页「今天的日程」卡片右上角点「新建日程」,弹框里「日历本」那个下拉点不开, 看着「是空的,好像只有一个『工作』什么的」。 **② 日程详情弹框是多余的** 首页点一个日程会弹出详情,但这个详情跟原来的编辑弹框几乎一模一样 ⇒ 详情没有意义。 ## 期望 **①** 日历本能正常展开、能切换。 **②** 详情弹框只留两个按钮:**「编辑」「删除」**。 删除重复日程时要给三档: 1. 删除当前(这一次) 2. 删除从现在到以后 3. 删除全部 **编辑**重复日程时,也要有这三档。 ## 验收标准 - 首页新建日程弹框里,日历本按钮点一下菜单真的展开,能选到别的本,选完按钮文字跟着变。 - 点日程弹出的浮层,底栏只有「编辑」「删除」,**没有**「详情」。 - 重复日程点删除出现三档,措辞为「当前 / 从现在到以后 / 全部」。 - 重复日程点编辑,表单里也有同样三档(不是只有「修改全部」)。 - 单次日程(非重复)删除时**不问范围**,直接确认即可。 - 定位不到"这一次"时(occ 为空)只给「删除全部」,**不允许**空值误删整条。
Author
Owner

已实现并部署验证通过(提交 f1b09a2)。以下是根因与验证结果。

① 日历本拉不下来 —— 根因不是缺数据,是交互没加载

「新建日程」那张弹框(templates/calendar/_add_modal.php)被日程页和首页共用同一份模板,
但让下拉展开/收起的整套 JS 只内联在日程页底部(templates/calendar/index.php)。
首页那份没有这份 JS ⇒ 按钮点下去菜单永远是 hidden 状态。
而按钮上显示的是服务端渲染的默认本("工作"),所以看起来就像"只有一个工作"。

修法:抽成 assets/js/cs_picker.js 全站加载,按 [data-cs-picker] 标记初始化,
用 data-cs-ready 做幂等。浮层里 AJAX 换进来的表单也会再补绑一次。

⚠️ 特意没有扫所有 .cs 元素:观影表单的影院下拉有自己的内联绑定,
两边都绑会导致"点一次开两次"。

② 详情浮层

  • 自定义日程不再显示「详情」按钮,底栏只有「编辑」「删除」。
  • 派生条目仍保留「详情」(那是真实链接,不是弹框,性质不同)。
  • 删除重复日程三档措辞:当前 / 从现在到以后 / 全部(按需求原话)。
  • 编辑重复日程同样三档 —— 这需要 occ 一路传进编辑地址(?d=YYYY-MM-DD),
    之前不带就只有"修改全部"一档。已在 fb_entry_json() 统一拼上,三处入口都受益。
  • occ 为空时只给「删除全部」,绝不让空字符串触发整条删除。
  • 单次日程删除不问范围,走普通确认框。

顺带修掉一个上一版没做完整的缺陷

全量套件在「笔记 Markdown 标题」上报红,查下来不是这次改坏的:
上一版只把 ##(h4)调到 17px,而 ###(h5)还在 15.5px(正文 15px,只差 0.5px,肉眼仍是"和正文一样")、
####(h6)在 14.5px(比正文还小)。而那段 CSS 注释自己写的就是"三级都要调大"。

已重排为 h3/h4/h5/h6 = 22 / 20 / 18 / 17,最小一级也 ≥ 正文 + 3px,四级两两不同号。

更值得记的是:v61 A9b、v85 B2、部署静态断言、线上 A4 —— 四条判据全部只量 h4,
而 h4 恰好是唯一修好的那一级。已各加"每一级/最矮的一级"判据,
并用「只把 h6 打回 14.5px ⇒ 老判据仍全绿、只有新判据变红」证明新判据有实际抓取能力。

验证

套件 结果
v93 正向(下拉展开/可选、浮层两颗、三档齐) 28 / 0
v93 反向(3 处注入各自被抓) 通过
v61 笔记块(含新增"每一级"判据) 34 / 0
v61 反向(9 处注入) 9 / 9
v85 标题 12 / 0
v85 静态反向(8 处注入) 8 / 0
全量流水线 通过并已部署

线上文件 md5 与本地逐个一致。

已实现并部署验证通过(提交 `f1b09a2`)。以下是根因与验证结果。 ## ① 日历本拉不下来 —— 根因不是缺数据,是交互没加载 「新建日程」那张弹框(`templates/calendar/_add_modal.php`)被**日程页和首页共用同一份模板**, 但让下拉展开/收起的整套 JS **只内联在日程页底部**(`templates/calendar/index.php`)。 首页那份没有这份 JS ⇒ 按钮点下去菜单永远是 `hidden` 状态。 而按钮上显示的是服务端渲染的**默认本**("工作"),所以看起来就像"只有一个工作"。 **修法**:抽成 `assets/js/cs_picker.js` 全站加载,按 `[data-cs-picker]` 标记初始化, 用 `data-cs-ready` 做幂等。浮层里 AJAX 换进来的表单也会再补绑一次。 ⚠️ 特意**没有**扫所有 `.cs` 元素:观影表单的影院下拉有自己的内联绑定, 两边都绑会导致"点一次开两次"。 ## ② 详情浮层 - 自定义日程不再显示「详情」按钮,底栏只有「编辑」「删除」。 - 派生条目仍保留「详情」(那是真实链接,不是弹框,性质不同)。 - 删除重复日程三档措辞:**当前 / 从现在到以后 / 全部**(按需求原话)。 - 编辑重复日程同样三档 —— 这需要 `occ` 一路传进编辑地址(`?d=YYYY-MM-DD`), 之前不带就只有"修改全部"一档。已在 `fb_entry_json()` 统一拼上,三处入口都受益。 - `occ` 为空时**只给「删除全部」**,绝不让空字符串触发整条删除。 - 单次日程删除不问范围,走普通确认框。 ## 顺带修掉一个上一版没做完整的缺陷 全量套件在「笔记 Markdown 标题」上报红,查下来**不是这次改坏的**: 上一版只把 `##`(h4)调到 17px,而 `###`(h5)还在 15.5px(正文 15px,只差 0.5px,肉眼仍是"和正文一样")、 `####`(h6)在 14.5px(**比正文还小**)。而那段 CSS 注释自己写的就是"三级都要调大"。 已重排为 h3/h4/h5/h6 = **22 / 20 / 18 / 17**,最小一级也 ≥ 正文 + 3px,四级两两不同号。 更值得记的是:v61 A9b、v85 B2、部署静态断言、线上 A4 —— **四条判据全部只量 h4**, 而 h4 恰好是唯一修好的那一级。已各加"每一级/最矮的一级"判据, 并用「只把 h6 打回 14.5px ⇒ 老判据仍全绿、只有新判据变红」证明新判据有实际抓取能力。 ## 验证 | 套件 | 结果 | |---|---| | v93 正向(下拉展开/可选、浮层两颗、三档齐) | 28 / 0 | | v93 反向(3 处注入各自被抓) | 通过 | | v61 笔记块(含新增"每一级"判据) | 34 / 0 | | v61 反向(9 处注入) | 9 / 9 | | v85 标题 | 12 / 0 | | v85 静态反向(8 处注入) | 8 / 0 | | 全量流水线 | 通过并已部署 | 线上文件 md5 与本地逐个一致。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: laoyang/FamilyBook#2