From 5ad467d0e36cae9b9cbdb35d3d97d6d16ca0e026 Mon Sep 17 00:00:00 2001 From: liumengyi Date: Wed, 10 Jan 2024 10:08:15 +0800 Subject: [PATCH] * Fix bug #43120. --- module/todo/config/form.php | 2 +- module/todo/control.php | 5 +++++ module/todo/tao.php | 3 +-- module/todo/zen.php | 14 +++++++++++--- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/module/todo/config/form.php b/module/todo/config/form.php index 547dee3d6e..34bbe3ae93 100644 --- a/module/todo/config/form.php +++ b/module/todo/config/form.php @@ -35,7 +35,7 @@ $config->todo->batchCreate->form['switchTime'] = array('required' => false, 'typ $config->todo->batchCreate->form['vision'] = array('required' => false, 'type' => 'string', 'default' => $this->config->vision); $config->todo->edit->form = array(); -$config->todo->edit->form['name'] = array('required' => true, 'type' => 'string', 'default' => 'todo'); +$config->todo->edit->form['name'] = array('required' => true, 'type' => 'string', 'default' => ''); $config->todo->edit->form['status'] = array('required' => true, 'type' => 'string'); $config->todo->edit->form['pri'] = array('required' => true, 'type' => 'int'); $config->todo->edit->form['type'] = array('required' => false, 'type' => 'string', 'default' => ''); diff --git a/module/todo/control.php b/module/todo/control.php index 88d4918dda..c3a370a07f 100755 --- a/module/todo/control.php +++ b/module/todo/control.php @@ -126,6 +126,11 @@ class todo extends control { if(!empty($_POST)) { + if($this->post->type != 'custom') + { + if($this->post->type && in_array($this->post->type, $this->config->todo->moduleList)) $this->config->todo->edit->requiredFields = str_replace(',name,', ',', ",{$this->config->todo->edit->requiredFields},"); + $this->config->todo->edit->form['name']['required'] = false; + } $form = form::data($this->config->todo->edit->form); $form = $this->todoZen->addCycleYearConfig($form); diff --git a/module/todo/tao.php b/module/todo/tao.php index 5b78299170..e49c9dbd0c 100644 --- a/module/todo/tao.php +++ b/module/todo/tao.php @@ -116,8 +116,7 @@ class todoTao extends todoModel */ protected function updateRow(int $todoID, object $todo): bool { - $requiredFields = isset($todo->type) && in_array($todo->type, $this->config->todo->moduleList) ? str_replace(',name,', '', ",{$this->config->todo->edit->requiredFields},") : $this->config->todo->edit->requiredFields; - if(isset($todo->type) && in_array($todo->type, $this->config->todo->moduleList)) $requiredFields .= ',objectID'; + $requiredFields = isset($todo->type) && in_array($todo->type, $this->config->todo->moduleList) ? str_replace(',name,', ',objectID,', ",{$this->config->todo->edit->requiredFields},") : $this->config->todo->edit->requiredFields; $this->dao->update(TABLE_TODO)->data($todo) ->autoCheck() ->checkIF($requiredFields, $requiredFields, 'notempty') diff --git a/module/todo/zen.php b/module/todo/zen.php index 4ddd1818ca..061ff53550 100755 --- a/module/todo/zen.php +++ b/module/todo/zen.php @@ -292,11 +292,19 @@ class todoZen extends todo if(isset($object->title)) $todo->name = $object->title; } - if($todo->end < $todo->begin) + $requiredFields = isset($todo->type) && in_array($todo->type, $this->config->todo->moduleList) ? str_replace(',name,', ',', ",{$this->config->todo->edit->requiredFields},") : $this->config->todo->edit->requiredFields; + $requiredFields = trim($requiredFields, ','); + foreach(explode(',', $requiredFields) as $field) { - dao::$errors['end'] = sprintf($this->lang->error->gt, $this->lang->todo->end, $this->lang->todo->begin); - return false; + if(!empty($field) && empty($todo->$field)) dao::$errors[$field] = sprintf($this->lang->error->notempty, $this->lang->todo->$field); } + if($hasObject && !$objectID) + { + dao::$errors[$todo->type] = sprintf($this->lang->error->notempty, $this->lang->todo->name); + unset(dao::$errors['objectID']); + } + if($todo->end < $todo->begin) dao::$errors['end'] = sprintf($this->lang->error->gt, $this->lang->todo->end, $this->lang->todo->begin); + if(dao::isError()) return false; /* Handle cycle configuration item. */ if(!empty($oldTodo->cycle)) $this->handleCycleConfig($todo);