From 92122e610372e4666778d228307405edee5632cb Mon Sep 17 00:00:00 2001 From: liumengyi Date: Fri, 30 Jun 2023 10:17:04 +0800 Subject: [PATCH] * Refactor ui of caselib::batchCreateCase. --- module/caselib/config/form.php | 9 ++ module/caselib/control.php | 6 +- module/caselib/model.php | 30 ++---- module/caselib/ui/batchcreatecase.html.php | 113 +++++++++++++++++++++ 4 files changed, 135 insertions(+), 23 deletions(-) create mode 100644 module/caselib/ui/batchcreatecase.html.php diff --git a/module/caselib/config/form.php b/module/caselib/config/form.php index f8a84ad63d..bd1a2dda65 100644 --- a/module/caselib/config/form.php +++ b/module/caselib/config/form.php @@ -12,3 +12,12 @@ $app->loadModuleConfig('testcase'); $config->caselib->testcase = new stdclass(); $config->caselib->testcase->form = new stdclass(); $config->caselib->testcase->form->create = $config->testcase->form->create; + +$config->caselib->testcase->form->batchCreate = common::formConfig('caselib', 'batchCreateCase'); +$config->caselib->testcase->form->batchCreate['module'] = array('required' => false, 'type' => 'int', 'default' => 0); +$config->caselib->testcase->form->batchCreate['title'] = array('required' => true, 'type' => 'string', 'default' => '', 'base' => true); +$config->caselib->testcase->form->batchCreate['type'] = array('required' => false, 'type' => 'string', 'default' => ''); +$config->caselib->testcase->form->batchCreate['pri'] = array('required' => false, 'type' => 'int', 'default' => 3); +$config->caselib->testcase->form->batchCreate['precondition'] = array('required' => false, 'type' => 'string', 'default' => ''); +$config->caselib->testcase->form->batchCreate['keywords'] = array('required' => false, 'type' => 'string', 'default' => ''); +$config->caselib->testcase->form->batchCreate['stage'] = array('required' => false, 'type' => 'string', 'default' => '', 'filter' => 'join'); diff --git a/module/caselib/control.php b/module/caselib/control.php index 2c7d933417..f2cd4f3c69 100644 --- a/module/caselib/control.php +++ b/module/caselib/control.php @@ -324,9 +324,9 @@ class caselib extends control if(!empty($_POST)) { $caseID = $this->caselib->batchCreateCase($libID); - if(dao::isError()) return print(js::error(dao::getError())); - if(isonlybody()) return print(js::closeModal('parent.parent', 'this')); - return print(js::locate($this->createLink('caselib', 'browse', "libID=$libID&browseType=byModule¶m=$moduleID"), 'parent')); + if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); + if(isonlybody()) return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'closeModal' => true)); + return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'load' => $this->createLink('caselib', 'browse', "libID={$libID}&browseType=byModule¶m={$moduleID}"), 'closeModal' => true)); } $libraries = $this->caselib->getLibraries(); diff --git a/module/caselib/model.php b/module/caselib/model.php index 12322f1b0b..a3b514c908 100644 --- a/module/caselib/model.php +++ b/module/caselib/model.php @@ -544,21 +544,14 @@ class caselibModel extends model foreach($cases->title as $i => $title) { - if(!empty($cases->title[$i]) and empty($cases->type[$i])) return print(js::alert(sprintf($this->lang->error->notempty, $this->lang->testcase->type))); - } - - $module = 0; - $type = ''; - $pri = 3; - foreach($cases->title as $i => $title) - { - $module = $cases->module[$i] == 'ditto' ? $module : $cases->module[$i]; - $type = $cases->type[$i] == 'ditto' ? $type : $cases->type[$i]; - $pri = $cases->pri[$i] == 'ditto' ? $pri : $cases->pri[$i]; - $cases->module[$i] = (int)$module; - $cases->type[$i] = $type; - $cases->pri[$i] = $pri; + if(empty($title)) continue; + foreach(explode(',', $this->config->testcase->create->requiredFields) as $field) + { + $field = trim($field); + if($field && empty($cases->{$field}[$i])) dao::$errors["{$field}[{$i}]"][] = sprintf($this->lang->error->notempty, $this->lang->testcase->{$field}); + } } + if(dao::isError()) return false; $forceNotReview = $this->testcase->forceNotReview(); foreach($cases->title as $i => $title) @@ -570,8 +563,8 @@ class caselibModel extends model $data[$i]->module = $cases->module[$i]; $data[$i]->type = $cases->type[$i]; $data[$i]->pri = $cases->pri[$i]; - $data[$i]->stage = empty($cases->stage[$i]) ? '' : implode(',', $cases->stage[$i]); - $data[$i]->color = $cases->color[$i]; + $data[$i]->stage = $cases->stage[$i]; + $data[$i]->color = !empty($cases->color[$i]) ? $cases->color[$i] : ''; $data[$i]->title = $cases->title[$i]; $data[$i]->precondition = $cases->precondition[$i]; $data[$i]->keywords = $cases->keywords[$i]; @@ -587,10 +580,7 @@ class caselibModel extends model ->batchCheck($this->config->testcase->create->requiredFields, 'notempty') ->exec(); - if(dao::isError()) - { - return helper::end(js::error(dao::getError())); - } + if(dao::isError()) return false; $caseID = $this->dao->lastInsertID(); $actionID = $this->action->create('case', $caseID, 'Opened'); diff --git a/module/caselib/ui/batchcreatecase.html.php b/module/caselib/ui/batchcreatecase.html.php new file mode 100644 index 0000000000..1d7cbc5b81 --- /dev/null +++ b/module/caselib/ui/batchcreatecase.html.php @@ -0,0 +1,113 @@ + + * @package caselib + * @link https://www.zentao.net + */ +namespace zin; + +/* Field of id. */ +$items[] = array +( + 'name' => 'id', + 'label' => $lang->idAB, + 'control' => 'index', + 'width' => '32px', +); + +/* Field of module. */ +$items[] = array +( + 'name' => 'module', + 'label' => $lang->testcase->module, + 'hidden' => zget($visibleFields, 'module', true, false), + 'control' => 'select', + 'items' => $moduleOptionMenu, + 'value' => $currentModuleID, + 'width' => '200px', + 'required' => strpos($config->testcase->create->requiredFields, 'module') !== false, + 'ditto' => true, +); + +/* Field of type. */ +$items[] = array +( + 'name' => 'type', + 'label' => $lang->testcase->type, + 'control' => 'select', + 'items' => $lang->testcase->typeList, + 'value' => 1, + 'width' => '160px', + 'required' => true, + 'ditto' => true, +); + +/* Field of stage. */ +$items[] = array +( + 'name' => 'stage', + 'label' => $lang->testcase->stage, + 'control' => array( + 'type' => 'select', + 'items' => $lang->testcase->stageList, + 'value' => '', + 'multiple' => true, + 'required' => strpos($config->testcase->create->requiredFields, 'stage') !== false, + ), + 'required' => strpos($config->testcase->create->requiredFields, 'stage') !== false, + 'width' => '160px', +); + +/* Field of title. */ +$items[] = array +( + 'name' => 'title', + 'label' => $lang->testcase->title, + 'width' => '240px', + 'required' => true, +); + +/* Field of pri. */ +$items[] = array +( + 'name' => 'pri', + 'label' => $lang->testcase->pri, + 'control' => 'select', + 'items' => $lang->testcase->priList, + 'value' => 3, + 'width' => '80px', + 'required' => strpos($config->testcase->create->requiredFields, 'pri') !== false, + 'ditto' => true, +); + +/* Field of precondition. */ +$items[] = array +( + 'name' => 'precondition', + 'label' => $lang->testcase->precondition, + 'width' => '200px', + 'required' => strpos($config->testcase->create->requiredFields, 'precondition') !== false, +); + +/* Field of keywords. */ +$items[] = array +( + 'name' => 'keywords', + 'label' => $lang->testcase->keywords, + 'width' => '200px', + 'required' => strpos($config->testcase->create->requiredFields, 'keywords') !== false, +); + +formBatchPanel +( + set::title($lang->testcase->batchCreate), + set::pasteField('title'), + set::items($items), +); + +render(); +