diff --git a/module/design/config/form.php b/module/design/config/form.php index e641587c42..05a7e2da2c 100644 --- a/module/design/config/form.php +++ b/module/design/config/form.php @@ -24,3 +24,11 @@ $config->design->form->batchcreate['desc'] = array('type' => 'string', $config->design->form->batchcreate['version'] = array('type' => 'int', 'required' => false, 'default' => 1); $config->design->form->batchcreate['createdBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account); $config->design->form->batchcreate['createdDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now); + +$config->design->form->edit['name'] = array('type' => 'string', 'required' => true, 'default' => '', 'filter' => 'trim'); +$config->design->form->edit['type'] = array('type' => 'string', 'required' => true, 'default' => ''); +$config->design->form->edit['product'] = array('type' => 'int', 'required' => false, 'default' => 0); +$config->design->form->edit['story'] = array('type' => 'int', 'required' => false, 'default' => 0); +$config->design->form->edit['desc'] = array('type' => 'string', 'required' => false, 'default' => '', 'control' => 'editor'); +$config->design->form->edit['editedBy'] = array('type' => 'string', 'required' => false, 'default' => $app->user->account); +$config->design->form->edit['editedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now); diff --git a/module/design/control.php b/module/design/control.php index d45d6d6106..c3c1d32eb9 100755 --- a/module/design/control.php +++ b/module/design/control.php @@ -227,6 +227,7 @@ class design extends control } /** + * 编辑一个设计。 * Edit a design. * * @param int $designID @@ -237,18 +238,14 @@ class design extends control { $design = $this->design->getByID($designID); $design = $this->design->getAffectedScope($design); - $this->commonAction($design->project, (int)$design->product, $designID); + $this->commonAction((int)$design->project, (int)$design->product, $designID); if($_POST) { - $changes = $this->design->update($designID); + $designData = form::data()->get(); + $changes = $this->design->update($designID, $designData); - if(dao::isError()) - { - $response['result'] = 'fail'; - $response['message'] = dao::getError(); - return $this->send($response); - } + if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); if(!empty($changes)) { @@ -256,21 +253,18 @@ class design extends control $this->action->logHistory($actionID, $changes); } - $response['result'] = 'success'; - $response['message'] = $this->lang->saveSuccess; - $response['load'] = $this->createLink('design', 'view', "id={$designID}"); - return $this->send($response); + return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'load' => $this->createLink('design', 'view', "id={$designID}"))); } $products = $this->product->getProductPairsByProject($design->project); $productIdList = $design->product ? $design->product : array_keys($products); - $project = $this->loadModel('project')->getByID($design->project); + $project = $this->loadModel('project')->getByID((int)$design->project); - $this->view->title = $this->lang->design->common . $this->lang->colon . $this->lang->design->edit; - $this->view->design = $design; - $this->view->project = $project; - $this->view->stories = $this->loadModel('story')->getProductStoryPairs($productIdList); - $this->view->users = $this->loadModel('user')->getPairs('noclosed'); + $this->view->title = $this->lang->design->common . $this->lang->colon . $this->lang->design->edit; + $this->view->design = $design; + $this->view->project = $project; + $this->view->stories = $this->loadModel('story')->getProductStoryPairs($productIdList); + $this->view->users = $this->loadModel('user')->getPairs('noclosed'); $this->view->typeList = $project->model == 'waterfall' ? $this->lang->design->typeList : $this->lang->design->plusTypeList; $this->display(); diff --git a/module/design/model.php b/module/design/model.php index 83667fbc7b..3104a0da68 100755 --- a/module/design/model.php +++ b/module/design/model.php @@ -79,50 +79,43 @@ class designModel extends model } /** + * 编辑一个设计。 * Update a design. * - * @param int $designID + * @param int $designID + * @param object $design * @access public - * @return bool + * @return bool|array */ - public function update($designID = 0) + public function update(int $designID = 0, object $design = null): bool|array { $oldDesign = $this->getByID($designID); - $design = fixer::input('post') - ->add('editedBy', $this->app->user->account) - ->add('editedDate', helper::now()) - ->stripTags($this->config->design->editor->edit['id'], $this->config->allowedTags) - ->remove('file,files,labels,children,toList') - ->get(); + if(!$oldDesign) return false; - $design = $this->loadModel('file')->processImgURL($design, 'desc', $this->post->uid); - $this->dao->update(TABLE_DESIGN)->data($design)->autoCheck()->batchCheck('name,type', 'notempty')->where('id')->eq($designID)->exec(); + $design = $this->loadModel('file')->processImgURL($design, 'desc', (string)$this->post->uid); + $this->dao->update(TABLE_DESIGN)->data($design)->autoCheck()->batchCheck($this->config->design->edit->requiredFields, 'notempty')->where('id')->eq($designID)->exec(); - if(!dao::isError()) + if(dao::isError()) return false; + + $this->file->updateObjectID($this->post->uid, $designID, 'design'); + $files = $this->file->saveUpload('design', $designID); + $designChanged = ($oldDesign->name != $design->name || $oldDesign->desc != $design->desc || !empty($files)); + if($designChanged) { - $this->file->updateObjectID($this->post->uid, $designID, 'design'); - $files = $this->file->saveUpload('design', $designID); - $designChanged = ($oldDesign->name != $design->name || $oldDesign->desc != $design->desc || !empty($files)); + $version = $oldDesign->version + 1; - if($designChanged) - { - $design = $this->getByID($designID); - $version = $design->version + 1; - $spec = new stdclass(); - $spec->design = $designID; - $spec->version = $version; - $spec->name = $design->name; - $spec->desc = $design->desc; - $spec->files = empty($files) ? '' : implode(',', array_keys($files)); - $this->dao->insert(TABLE_DESIGNSPEC)->data($spec)->exec(); + $spec = new stdclass(); + $spec->design = $designID; + $spec->version = $version; + $spec->name = $design->name; + $spec->desc = $design->desc; + $spec->files = empty($files) ? '' : implode(',', array_keys($files)); + $this->dao->insert(TABLE_DESIGNSPEC)->data($spec)->exec(); - $this->dao->update(TABLE_DESIGN)->set('version')->eq($version)->where('id')->eq($designID)->exec(); - } - - return common::createChanges($oldDesign, $design); + $this->dao->update(TABLE_DESIGN)->set('version')->eq($version)->where('id')->eq($designID)->exec(); } - return false; + return common::createChanges($oldDesign, $design); } /**