Finish task #46674.

This commit is contained in:
zhouxin
2021-12-30 05:50:50 +00:00
parent 378b77cec7
commit 05a75e7039
7 changed files with 104 additions and 1 deletions
+34
View File
@@ -129,3 +129,37 @@ $config->project->removePriv['project'] = array('index', 'browse', 'kanban', '
$config->project->removePriv['bug'] = array('batchChangePlan');
$config->project->removePriv['doc'] = array('catalog', 'index');
$config->project->removePriv['auditplan'] = array('delete');
$config->project->checkList = new stdclass();
$config->project->checkList->scrum = new stdclass();
$config->project->checkList->scrum->execution = defined('TABLE_EXECUTION') ? TABLE_EXECUTION : '';
$config->project->checkList->scrum->bug = defined('TABLE_BUG') ? TABLE_BUG : '';
$config->project->checkList->scrum->case = defined('TABLE_CASE') ? TABLE_CASE : '';
$config->project->checkList->scrum->issue = defined('TABLE_ISSUE') ? TABLE_ISSUE : '';
$config->project->checkList->scrum->risk = defined('TABLE_RISK') ? TABLE_RISK : '';
$config->project->checkList->scrum->testtask = defined('TABLE_TESTTASK') ? TABLE_TESTTASK : '';
$config->project->checkList->scrum->doc = defined('TABLE_DOC') ? TABLE_DOC : '';
$config->project->checkList->scrum->build = defined('TABLE_BUILD') ? TABLE_BUILD : '';
$config->project->checkList->scrum->projectrelease = defined('TABLE_RELEASE') ? TABLE_RELEASE : '';
$config->project->checkList->scrum->meeting = defined('TABLE_MEETING') ? TABLE_MEETING : '';
$config->project->checkList->waterfall = new stdclass();
$config->project->checkList->waterfall->stage = defined('TABLE_EXECUTION') ? TABLE_EXECUTION : '';
$config->project->checkList->waterfall->design = defined('TABLE_DESIGN') ? TABLE_DESIGN : '';
$config->project->checkList->waterfall->doc = defined('TABLE_DOC') ? TABLE_DOC : '';
$config->project->checkList->waterfall->bug = defined('TABLE_BUG') ? TABLE_BUG : '';
$config->project->checkList->waterfall->case = defined('TABLE_CASE') ? TABLE_CASE : '';
$config->project->checkList->waterfall->build = defined('TABLE_BUILD') ? TABLE_BUILD : '';
$config->project->checkList->waterfall->projectrelease = defined('TABLE_RELEASE') ? TABLE_RELEASE : '';
$config->project->checkList->waterfall->testtask = defined('TABLE_TESTTASK') ? TABLE_TESTTASK : '';
$config->project->checkList->waterfall->review = defined('TABLE_REVIEW') ? TABLE_REVIEW : '';
$config->project->checkList->waterfall->build = defined('TABLE_BUILD') ? TABLE_BUILD : '';
$config->project->checkList->waterfall->researchplan = defined('TABLE_RESEARCHPLAN') ? TABLE_RESEARCHPLAN : '';
$config->project->checkList->waterfall->issue = defined('TABLE_ISSUE') ? TABLE_ISSUE : '';
$config->project->checkList->waterfall->risk = defined('TABLE_RISK') ? TABLE_RISK : '';
$config->project->checkList->waterfall->opportunity = defined('TABLE_OPPORTUNITY') ? TABLE_OPPORTUNITY : '';
$config->project->checkList->waterfall->auditplan = defined('TABLE_AUDITPLAN') ? TABLE_AUDITPLAN : '';
$config->project->checkList->waterfall->gapanalysis = defined('TABLE_GAPANALYSIS') ? TABLE_GAPANALYSIS : '';
$config->project->checkList->waterfall->meeting = defined('TABLE_MEETING') ? TABLE_MEETING : '';
+5
View File
@@ -593,6 +593,9 @@ class project extends control
}
}
$canChangeModel = $this->project->checkCanChangeModel($projectID, $project->model);
$disableModel = $canChangeModel == true ? '' : 'disabled';
$this->view->title = $this->lang->project->edit;
$this->view->position[] = $this->lang->project->edit;
@@ -617,6 +620,8 @@ class project extends control
$this->view->parentProgram = $this->program->getByID($project->parent);
$this->view->availableBudget = $this->program->getBudgetLeft($parentProject) + (float)$project->budget;
$this->view->budgetUnitList = $this->project->getBudgetUnitList();
$this->view->model = $project->model;
$this->view->disableModel = $disableModel;
$this->display();
}
+2
View File
@@ -271,6 +271,8 @@ $lang->project->childLongTime = "子项目中有长期项目,父项
$lang->project->readjustTime = '重新调整项目起止时间';
$lang->project->notAllowRemoveProducts = "该产品中的需求与项目进行了关联或者项目下的{$lang->execution->common}关联了该产品,请取消关联后再操作。";
$lang->project->ge = "『%s』应当不小于实际开始时间『%s』。";
$lang->project->kanban = "看板";
$lang->project->kanbanTitle = "看板项目管理";
$lang->project->programTitle['0'] = '不显示';
$lang->project->programTitle['base'] = '只显示一级项目集';
+2
View File
@@ -271,6 +271,8 @@ $lang->project->childLongTime = "子項目中有長期項目,父項
$lang->project->readjustTime = '重新調整項目起止時間';
$lang->project->notAllowRemoveProducts = "該產品中的需求與項目進行了關聯或者項目下的{$lang->execution->common}關聯了該產品,請取消關聯後再操作。";
$lang->project->ge = "『%s』應當不小於實際開始時間『%s』。";
$lang->project->kanban = "看板";
$lang->project->kanbanTitle = "看板项目管理";
$lang->project->programTitle['0'] = '不顯示';
$lang->project->programTitle['base'] = '只顯示一級項目集';
+50
View File
@@ -2086,4 +2086,54 @@ class projectModel extends model
if(!$this->common->isOpenMethod($moduleName, $methodName) and !commonModel::hasPriv($moduleName, $methodName)) $this->common->deny($moduleName, $methodName, false);
common::setMenuVars('project', $objectID);
}
/**
* Check if the project model can be changed.
*
* @param int $projectID
* @param string $model
* @access public
* @return bool
*/
public function checkCanChangeModel($projectID, $model)
{
$checkList = $this->config->project->checkList->$model;
foreach($checkList as $table)
{
$object = '';
if($table == '') continue;
if($table == TABLE_EXECUTION and $model == 'scrum')
{
$object = $this->fetchByProject($table, $projectID, 'sprint');
}
elseif($table == TABLE_EXECUTION and $model == 'waterfall')
{
$object = $this->fetchByProject($table, $projectID, 'stage');
}
else
{
$object = $this->fetchByProject($table, $projectID);
}
if(!empty($object)) return false;
}
return true;
}
/**
* Get the objects under the project.
*
* @param constant $table
* @param int $projectID
* @param string $type
* @access public
* @return object
*/
public function fetchByProject($table, $projectID, $type = '')
{
$result = $this->dao->select('*')->from($table)
->where('project')->eq($projectID)
->beginIF(!empty($type))->andWhere('type')->eq($type)->fi()
->fetch();
return $result;
}
}
+7
View File
@@ -29,6 +29,13 @@
<p><?php echo $lang->project->waterfallTitle; ?></p>
</div>
</div>
<div class='col-xs-6'>
<div class='project-type text-center'>
<?php echo html::a($this->createLink("project", "create", "model=kanban&programID=$programID&copyProjectID=0&extra=productID=$productID,branchID=$branchID"), "<img class='project-type-img' data-type='waterfall' src='{$config->webRoot}theme/default/images/main/waterfall.png'>", '', "data-app='project' class='createButton'")?>
<h3><?php echo $lang->project->kanban; ?></h3>
<p><?php echo $lang->project->kanbanTitle; ?></p>
</div>
</div>
</div>
</div>
</div>
+4 -1
View File
@@ -34,6 +34,10 @@
</div>
<form class='form-indicator main-form form-ajax' method='post' target='hiddenwin' id='dataform'>
<table class='table table-form'>
<tr>
<th><?php echo $lang->project->model;?></th>
<td><?php echo html::select('model', $lang->project->modelList, $model, "class='form-control chosen' required $disableModel");?></td>
</tr>
<tr>
<th class='w-120px'><?php echo $lang->program->parent;?></th>
<?php
@@ -183,7 +187,6 @@
<tr>
<td colspan='4' class='text-center form-actions'>
<?php
echo html::hidden('model', $project->model);
echo html::submitButton();
if(!isonlybody()) echo html::backButton();
?>