diff --git a/app/Task.php b/app/Task.php index 6696d24..d3af753 100644 --- a/app/Task.php +++ b/app/Task.php @@ -788,6 +788,16 @@ final class Task $sets[] = 'category_id = ?'; $args[] = self::categoryIdOf($familyId, (int)($d['category_id'] ?? 0)); } + /* 🔴 #83(用户 2026-11-05):「分类和重复,也就是循环,都需要加上。」 + ⇒ 面板里改成可编辑之后,得有一条能只写 repeat_rule 的路径。 + ⚠️ 空串 = 不循环,存 NULL(与 `Task::update()` 的 `?: null` 同一口径)。 + ⚠️ 白名单校验:只接受 `REPEAT` 里有的键,其余一律当"不循环"。 + 不校验的话,前端传个乱值会进库,`repeatWord()` 那边就显示成空白。 */ + if (array_key_exists('repeat_rule', $d)) { + $sets[] = 'repeat_rule = ?'; + $rr = trim((string)($d['repeat_rule'] ?? '')); + $args[] = ($rr !== '' && isset(self::REPEAT[$rr])) ? $rr : null; + } /* 🔴 #78(用户 2026-11-05):「现在在首页上点一个任务,直接就是编辑页面啊。 所以不需要再加一个编辑按钮了。」 ⇒ 删掉「编辑」按钮后,标题/备注也得能在这里改。 diff --git a/index.php b/index.php index 4cd0dcb..a90d841 100644 --- a/index.php +++ b/index.php @@ -7367,6 +7367,11 @@ $want = array_keys($want); if (array_key_exists('category_id', $_POST)) { $sd['category_id'] = (int)$_POST['category_id']; } + /* #83:循环(重复规则)。与上面几个同一套 `array_key_exists` 语义 —— + 表单没带这个字段就**不动**(保留原值),带了才更新(空串 = 不循环)。 */ + if (array_key_exists('repeat_rule', $_POST)) { + $sd['repeat_rule'] = trim((string)$_POST['repeat_rule']); + } /* 🔴 #78(用户 2026-11-05):「现在在首页上点一个任务,直接就是编辑页面啊。 所以不需要再加一个编辑按钮了。」 ⇒ 既然要删掉「编辑」按钮,标题和备注必须能在这里改。