* Refactor design::edit method.

This commit is contained in:
tianshujie
2023-12-14 16:47:37 +08:00
parent 4f4e950dc9
commit a4d2d8a059
3 changed files with 44 additions and 49 deletions
+8
View File
@@ -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);
+12 -18
View File
@@ -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();
+24 -31
View File
@@ -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);
}
/**