* Fix configurations of stage edit form.

This commit is contained in:
chentao
2023-07-19 17:30:26 +08:00
parent 037be425f7
commit 22196bed07
4 changed files with 45 additions and 32 deletions
+8
View File
@@ -8,10 +8,18 @@ foreach($config->programplan->create->formFields as $field) $config->programplan
if(!isset($config->programplan->edit)) $config->programplan->edit = new stdClass();
$config->programplan->edit->form = array();
$config->programplan->edit->form['parent'] = array('required' => false, 'type' => 'int', 'default' => 0);
$config->programplan->edit->form['name'] = array('required' => true, 'type' => 'string', 'default' => '');
$config->programplan->edit->form['code'] = array('required' => false, 'type' => 'string', 'default' => '');
$config->programplan->edit->form['PM'] = array('required' => false, 'type' => 'string', 'default' => '');
$config->programplan->edit->form['percent'] = array('required' => false, 'type' => 'float', 'default' => 0);
$config->programplan->edit->form['attribute'] = array('required' => false, 'type' => 'string', 'default' => '');
$config->programplan->edit->form['acl'] = array('required' => false, 'type' => 'string', 'default' => '');
$config->programplan->edit->form['begin'] = array('required' => false, 'type' => 'string', 'default' => '0000-00-00');
$config->programplan->edit->form['end'] = array('required' => false, 'type' => 'string', 'default' => '0000-00-00');
$config->programplan->edit->form['realBegan'] = array('required' => false, 'type' => 'string', 'default' => '0000-00-00');
$config->programplan->edit->form['realEnd'] = array('required' => false, 'type' => 'string', 'default' => '0000-00-00');
$config->programplan->edit->form['milestone'] = array('required' => false, 'type' => 'int', 'default' => 0);
$config->programplan->edit->form['output'] = array('required' => false, 'type' => 'array', 'default' => array());
$config->programplan->ajaxCustom = new stdClass();
+1 -2
View File
@@ -159,8 +159,7 @@ class programplan extends control
if($changes) $this->programplanZen->afterEdit($plan, $changes);
$locate = isonlybody() ? 'parent' : inlink('browse', "program=$plan->program&type=lists");
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $locate));
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'callback' => 'loadCurrentPage', 'closeModal' => true));
}
$this->programplanZen->buildEditView($plan);
+2 -27
View File
@@ -406,32 +406,6 @@ class programplanModel extends model
return $returnJson ? json_encode($datas) : $datas;
}
/**
* 获取阶段百分比。
* Get total percent.
*
* @param object $stage
* @param bool $parent
* @access public
* @return int|float
*/
public function getTotalPercent(object $stage, bool $parent = false): int|float
{
/* When parent is equal to true, query the total workload of the subphase. */
$executionID = $parent ? $stage->id : $stage->project;
$plans = $this->programplanTao->getStageList((int)$executionID, (int)$stage->product, $browseType = 'parent');
$totalPercent = 0;
$stageID = $stage->id;
foreach($plans as $id => $stage)
{
if($id == $stageID) continue;
$totalPercent += $stage->percent;
}
return $totalPercent;
}
/**
* 批量查询阶段关联的项目和属性并过滤日期。
* Get product and attribute for stage correlation.
@@ -929,8 +903,9 @@ class programplanModel extends model
$relatedExecutionsID = $this->loadModel('execution')->getRelatedExecutions($planID);
$relatedExecutionsID = !empty($relatedExecutionsID) ? implode(',', array_keys($relatedExecutionsID)) : '0';
/* Pass and unset the arguments after use. */
$plan->relatedExecutionsID = $relatedExecutionsID;
$plan->parentStage = $setCode;
$plan->setCode = $setCode;
$result = $this->programplanTao->updateRow($plan, $oldPlan, $parentStage);
if(!$result) return false;
+34 -3
View File
@@ -20,20 +20,24 @@ class programplanTao extends programplanModel
* @access protected
* @return bool
*/
protected function updateRow(object $plan, object $oldPlan, object|null $parentStage): bool
protected function updateRow(object $plan, object $oldPlan, object|bool $parentStage): bool
{
$requiredFields = $this->config->programplan->edit->requiredFields ?? '';
$getname = '';
if($plan->relatedExecutionsID && $oldPlan->project && $parentStage && $oldPlan->parent) $getname = true;
$relatedExecutionsID = $plan->relatedExecutionsID;
$setCode = $plan->setCode;
unset($plan->relatedExecutionsID, $plan->setCode);
$this->dao->update(TABLE_PROJECT)->data($plan)
->autoCheck()
->batchCheckIF($requiredFields, $requiredFields, 'notempty')
->checkIF($plan->end != '0000-00-00', 'end', 'ge', $plan->begin)
->checkIF(!empty($plan->percent), 'percent', 'float')
->checkIF(!empty($plan->name) && $getname, 'name', 'unique', "id in ({$plan->relatedExecutionsID}) and type in ('sprint','stage') and `project` = {$oldPlan->project} and `deleted` = '0' and `parent` = {$oldPlan->parent}")
->checkIF(!empty($plan->code) and $plan->setCode, 'code', 'unique', "id != {$plan->id} and type in ('sprint','stage','kanban') and `deleted` = '0'")
->checkIF(!empty($plan->name) && $getname, 'name', 'unique', "id in ({$relatedExecutionsID}) and type in ('sprint','stage') and `project` = {$oldPlan->project} and `deleted` = '0' and `parent` = {$oldPlan->parent}")
->checkIF(!empty($plan->code) && $setCode, 'code', 'unique', "id != {$plan->id} and type in ('sprint','stage','kanban') and `deleted` = '0'")
->where('id')->eq($plan->id)
->exec();
@@ -569,4 +573,31 @@ class programplanTao extends programplanModel
$this->dao->insert(TABLE_PROJECTSPEC)->data($spec)->exec();
return !dao::isError();
}
/**
* 获取阶段百分比。
* Get total percent.
*
* @param object $stage
* @param bool $parent
* @access public
* @return int|float
*/
protected function getTotalPercent(object $stage, bool $parent = false): int|float
{
/* When parent is equal to true, query the total workload of the subphase. */
$executionID = $parent ? $stage->id : $stage->project;
$plans = $this->getStageList((int)$executionID, (int)$stage->product, 'parent');
$totalPercent = 0;
$stageID = $stage->id;
foreach($plans as $id => $stage)
{
if($id == $stageID) continue;
$totalPercent += $stage->percent;
}
return $totalPercent;
}
}