laoyang
4ccbcc3360
v45 第 45 批:日程「重复到」换最新控件 + CalDAV 双向同步
用户 2026-10-12 两条:
1. 新建日程里「重复到」的那个日历选择框,改成最新控件。
- templates/calendar/_event_fields.php:裸 <input type=date> 换成
.dt-input.dt-antd-single[data-antd-date=1](AntD 纯日期 DatePicker),
复用既有 mountAntdDate,不新写挂载逻辑。
- 值载体仍是 name=rep_until 的原生框(包在 .dt-native 里),
服务端契约与 Repeat::build($_POST) 一字不改。
2. CalDAV 从「只读」改成「双向同步」。
用户给了一台可用的参照服务器(群晖 DAViCal)要求「完全按参照返回」;
抓参照 + 复刻 Thunderbird / SyncCalendar 的真实请求序列后确认:
参照是可写的,而只读会让两个客户端都判「不可用」。
- dav.php:放行 PUT(新建 201+ETag / 更新 204+ETag / If-Match 不符 412)、
DELETE(204)、MKCALENDAR(201+Location),仍逐本判权;
OPTIONS 的 Allow 与 DAV 头照参照补齐(DAV 头两行,注意 PHP header 追加);
current-user-privilege-set 按实际可写性给,并排除系统派生本(农历等)。
- app/CalDav.php:资源名统一用 UID(原自定义本用 id、派生本用 uid 两种混着,
一开写就表现为「客户端 PUT 到 UID 名、服务端 href 是 id 名 ⇒ 写进去读不回」);
补 owner / getctag / getcontenttype / calendar-description;新增 ctagSeedOf。
- app/Ics.php:修一个一直存在的真 bug —— 导出 RRULE 漏了 `RRULE:` 前缀
(库里存的是去前缀的值),导致所有导出/同步出去的重复日程都变成单次。
- templates/home.php:首页红线补 data-now-min(给探针做零容差判据用)。
验证:本地 e2e 1510/0、TB 探针 35/0、DAV 诊断 28/0、
v43 真机 33/0 + 反向 9/0、v44 真机 41/0 + API 63/0 + 反向 19/0、
v45 重复到 10/0 + 反向 2/0、v45 DAV 双向 24/0 + 反向 5/0;
全流水线 PUSH_RC=0(含部署静态断言第 45 批形态)。
2026-10-12 21:40:53 +08:00
..
2026-09-30 20:22:46 +08:00
2026-09-30 00:49:53 +08:00
2026-09-30 13:24:26 +08:00
2026-10-07 11:35:31 +08:00
2026-10-12 15:31:03 +08:00
2026-10-12 15:31:03 +08:00
2026-10-12 15:31:03 +08:00
2026-10-03 08:18:05 +08:00
2026-10-06 17:33:48 +08:00
2026-10-02 09:28:07 +08:00
2026-10-03 08:18:05 +08:00
2026-10-05 10:58:17 +08:00
2026-10-05 10:58:17 +08:00
2026-10-05 10:58:17 +08:00
2026-10-03 15:01:38 +08:00
2026-10-12 21:40:53 +08:00
2026-10-12 00:24:20 +08:00
2026-10-11 10:12:11 +08:00
2026-10-06 20:41:04 +08:00
2026-10-01 00:12:04 +08:00
2026-10-06 17:33:48 +08:00
2026-10-04 08:56:40 +08:00
2026-09-30 00:49:53 +08:00
2026-09-30 00:49:53 +08:00
2026-10-03 20:23:22 +08:00
2026-10-05 13:26:49 +08:00
2026-09-30 00:49:53 +08:00
2026-10-05 16:45:10 +08:00
2026-10-12 15:31:03 +08:00
2026-10-04 19:43:00 +08:00
2026-10-07 05:52:40 +08:00
2026-10-05 10:58:17 +08:00
2026-10-12 21:40:53 +08:00
2026-10-05 10:58:17 +08:00
2026-10-03 08:18:05 +08:00
2026-10-07 15:31:26 +08:00
2026-09-30 09:44:55 +08:00
2026-10-08 02:20:19 +08:00
2026-10-07 18:22:55 +08:00
2026-10-09 20:23:09 +08:00
2026-10-01 00:12:04 +08:00
2026-10-11 10:12:11 +08:00
2026-10-08 02:20:19 +08:00
2026-10-07 05:52:40 +08:00
2026-09-30 13:24:26 +08:00
2026-10-05 16:45:10 +08:00
2026-10-08 10:54:43 +08:00
2026-10-09 07:25:08 +08:00
2026-10-04 08:56:40 +08:00
2026-09-30 13:24:26 +08:00
2026-10-03 19:27:14 +08:00
2026-10-03 19:27:14 +08:00
2026-10-04 08:56:40 +08:00
2026-10-08 02:20:19 +08:00
2026-10-08 02:20:19 +08:00
2026-10-03 11:30:48 +08:00
2026-10-07 11:35:31 +08:00
2026-10-02 22:08:13 +08:00
2026-10-03 11:30:48 +08:00
2026-10-03 15:01:38 +08:00
2026-10-12 16:28:29 +08:00
2026-09-30 00:49:53 +08:00
2026-10-06 03:14:18 +08:00
2026-10-12 15:31:03 +08:00
2026-10-11 10:12:11 +08:00
2026-10-02 09:28:07 +08:00
2026-09-30 11:06:22 +08:00
2026-10-06 17:33:48 +08:00
2026-10-05 16:45:10 +08:00
2026-10-10 22:13:20 +08:00
2026-10-08 10:54:43 +08:00
2026-10-08 10:54:43 +08:00