diff --git a/module/program/js/common.js b/module/program/js/common.js index 9dc44667a3..702467fb4e 100644 --- a/module/program/js/common.js +++ b/module/program/js/common.js @@ -305,7 +305,7 @@ function setBudgetTipsAndAclList(parentID) if(parentID != 0) { - $.get(createLink('project', 'ajaxGetObjectInfo', "objectType=program&objectID=" + parentID + "&selectedProgramID=" + selectedProgramID), function(data) + $.get(createLink('project', 'ajaxGetProjectFormInfo', "objectType=program&objectID=" + parentID + "&selectedProgramID=" + selectedProgramID), function(data) { var data = JSON.parse(data); parentProgram = programList[parentID]; @@ -351,7 +351,7 @@ function compareChildDate() var programEnd = new Date(end); var programBegin = new Date(begin); - $.get(createLink('project', 'ajaxGetObjectInfo', 'objectType=program&objectID=' + programID + '&selectedProgramID=' + selectedProgramID), function(data) + $.get(createLink('project', 'ajaxGetProjectFormInfo', 'objectType=program&objectID=' + programID + '&selectedProgramID=' + selectedProgramID), function(data) { var childInfo = JSON.parse(data); if(childInfo.maxChildEnd == '' || childInfo.minChildBegin == '') return; @@ -404,7 +404,7 @@ function outOfDateTip() } if(typeof(programID) == 'undefined') programID = 0; - $.get(createLink('project', 'ajaxGetObjectInfo', 'objectType=program&objectID=' + programID + "&selectedProgramID=" + selectedProgramID), function(data) + $.get(createLink('project', 'ajaxGetProjectFormInfo', 'objectType=program&objectID=' + programID + "&selectedProgramID=" + selectedProgramID), function(data) { var dateTip = ''; var data = JSON.parse(data); @@ -451,7 +451,7 @@ function budgetOverrunTips() } if(typeof(programID) == 'undefined') programID = 0; - $.get(createLink('project', 'ajaxGetObjectInfo', 'objectType=program&objectID=' + programID + "&selectedProgramID=" + selectedProgramID), function(data) + $.get(createLink('project', 'ajaxGetProjectFormInfo', 'objectType=program&objectID=' + programID + "&selectedProgramID=" + selectedProgramID), function(data) { var data = JSON.parse(data); diff --git a/module/project/control.php b/module/project/control.php index 94474bf9aa..043e0799a7 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -206,52 +206,65 @@ class project extends control } /** - * 获取项目选中项目或项目集对象的信息 - * Ajax: Get selected object's information. + * 选中项目或项目集时,获取项目表单数据:创建或编辑。 + * Ajax: Get selected object's form information: create or edit. * - * @param string $objectType + * @param string $objectType project|program * @param string $objectID * @param string $selectedProgramID - * * @access public * @return void */ - public function ajaxGetObjectInfo(string $objectType, string $objectID, string $selectedProgramID) + public function ajaxGetProjectFormInfo(string $objectType, string $objectID, string $selectedProgramID) { - /* Get the available budget for the program. */ + $objectID = (int)$objectID; + $selectedProgramID = (int)$selectedProgramID; + $projectFormInfo = array(); + + /* 如果选择项目集,获取项目集相关信息。*/ + /* If selectedProgramID exist, get the info for the program. */ if($selectedProgramID) { - $selectedProgramID = (int)$selectedProgramID; - $selectedProgram = $this->loadModel('program')->getByID($selectedProgramID); + $selectedProgram = $this->loadModel('program')->getByID($selectedProgramID); + if($selectedProgram->budget) $availableBudget = $this->program->getBudgetLeft($selectedProgram); + + $projectFormInfo['selectedProgramBegin'] = $selectedProgram->begin; + $projectFormInfo['selectedProgramEnd'] = $selectedProgram->end; + $projectFormInfo['budgetUnit'] = $selectedProgram->budgetUnit; + $projectFormInfo['selectedProgramPath'] = explode(',', $selectedProgram->path); } + /* 获取可用预算和项目集时间段。*/ /* Get the available budget and program time range. */ if(!empty($objectID)) { - $objectID = (int)$objectID; - $object = $objectType == 'project' ? $this->project->getByID($objectID) : $this->loadModel('program')->getByID($objectID); + /* 获取最后选中的最后项目集。*/ + /* Get the path of the last selected program. */ + $object = $objectType == 'project' ? $this->project->getByID($objectID) : $this->loadModel('program')->getByID($objectID); + $projectFormInfo['objectPath'] = explode(',', $object->path); if(isset($availableBudget)) $availableBudget = $object->parent == $selectedProgramID ? $availableBudget + (int)$object->budget : $availableBudget; if($objectType == 'program') { - $minChildBegin = $this->project->getProgramMinBegin($objectID); - $maxChildEnd = $this->project->getProgramMaxEnd($objectID); + $progranChildDate = $this->project->getProgramDate($objectID); + $projectFormInfo['minChildBegin'] = isset($progranChildDate) ? $progranChildDate['minChildBegin'] : ''; + $projectFormInfo['maxChildEnd'] = isset($progranChildDate) ? $progranChildDate['maxChildEnd'] : ''; } } - /* Build the selected drop-down data. */ - $data = array(); - $data = $this->projectZen->buildSelectForm($selectedProgramID, $selectedProgram, $objectType); + if($objectType == 'program') + { + $withProgram = $this->config->systemMode == 'ALM' ? true : false; + $allProducts = array('') + $this->program->getProductPairs($selectedProgramID, 'all', 'noclosed', '', 0, $withProgram); + $projectFormInfo['allProducts'] = html::select('products[]', $allProducts, '', "class='form-control chosen' onchange='loadBranches(this)'"); + $projectFormInfo['plans'] = html::select('plans[][][]', '', '', 'class=\'form-control chosen\' multiple'); + } - /* Finish task #64882.Get the path of the last selected program. */ - if(!empty($objectID)) $data['objectPath'] = explode(',', $object->path); - if(isset($availableBudget)) $data['availableBudget'] = $availableBudget; - if(isset($minChildBegin)) $data['minChildBegin'] = $minChildBegin; - if(isset($maxChildEnd)) $data['maxChildEnd'] = $maxChildEnd; + if(isset($availableBudget)) $projectFormInfo['availableBudget'] = $availableBudget; - echo json_encode($data); + echo json_encode($projectFormInfo); } /** diff --git a/module/project/doc/project.txt b/module/project/doc/project.txt index e745310444..5aaa742c8a 100644 --- a/module/project/doc/project.txt +++ b/module/project/doc/project.txt @@ -4,7 +4,7 @@ ajaxGetDropMenu ajaxRetrieveCloneableProject ajaxGetRemoveMemberTips ajaxGetLinkedProducts -ajaxGetObjectInfo +ajaxGetProjectFormInfo index browse kanban diff --git a/module/project/js/common.js b/module/project/js/common.js index 649d442331..6035fe70fb 100644 --- a/module/project/js/common.js +++ b/module/project/js/common.js @@ -225,7 +225,7 @@ function budgetOverrunTips() } if(typeof(projectID) == 'undefined') projectID = 0; - $.get(createLink('project', 'ajaxGetObjectInfo', 'objectType=project&objectID=' + projectID + "&selectedProgramID=" + selectedProgramID), function(data) + $.get(createLink('project', 'ajaxGetProjectFormInfo', 'objectType=project&objectID=' + projectID + "&selectedProgramID=" + selectedProgramID), function(data) { var data = JSON.parse(data); if(typeof(data.availableBudget) == 'undefined') return; @@ -270,7 +270,7 @@ function outOfDateTip(currentID) if(typeof(projectID) == 'undefined') projectID = 0; projectID = currentID ? $('#projectIdList\\['+ currentID + '\\]').val() : projectID; - $.get(createLink('project', 'ajaxGetObjectInfo', 'objectType=project&objectID=' + projectID + '&selectedProgramID=' + selectedProgramID), function(data) + $.get(createLink('project', 'ajaxGetProjectFormInfo', 'objectType=project&objectID=' + projectID + '&selectedProgramID=' + selectedProgramID), function(data) { var data = JSON.parse(data); var parentEnd = new Date(data.selectedProgramEnd); diff --git a/module/project/js/create.js b/module/project/js/create.js index 1d515d2f84..46fd40a844 100644 --- a/module/project/js/create.js +++ b/module/project/js/create.js @@ -150,7 +150,7 @@ function setParentProgram(parentProgram) if(parentProgram == 0) $('#budgetBox').find('input').removeAttr("placeholder"); - $.get(createLink('project', 'ajaxGetObjectInfo', 'objectType=program&objectID=' + lastSelectedID + "&selectedProgramID=" + parentProgram), function(data) + $.get(createLink('project', 'ajaxGetProjectFormInfo', 'objectType=program&objectID=' + lastSelectedID + "&selectedProgramID=" + parentProgram), function(data) { var data = JSON.parse(data); selectedParent = parentProgram != 0 ? data.selectedProgramPath[1] : 0; diff --git a/module/project/js/edit.js b/module/project/js/edit.js index 7ef50793ec..6bb5f89ebf 100644 --- a/module/project/js/edit.js +++ b/module/project/js/edit.js @@ -7,7 +7,7 @@ $(function() setAclList(programID); - $.get(createLink('project', 'ajaxGetObjectInfo', 'objectType=program&objectID=' + lastSelectedID + "&selectedProgramID=" + programID), function(data) + $.get(createLink('project', 'ajaxGetProjectFormInfo', 'objectType=program&objectID=' + lastSelectedID + "&selectedProgramID=" + programID), function(data) { var data = JSON.parse(data); selectedParent = programID != 0 ? data.selectedProgramPath[1] : 0; diff --git a/module/project/zen.php b/module/project/zen.php index 3747d82f0f..a2f31c0557 100644 --- a/module/project/zen.php +++ b/module/project/zen.php @@ -953,38 +953,6 @@ class projectZen extends project } } - /** - * 构建项目集下拉列表数据 - * build Select Form for program - * - * @param int $selectedProgramID - * @param object $selectedProgram - * @param string $objectType - * - * @access protected - * @return array - */ - protected function buildSelectForm(int $selectedProgramID, object $selectedProgram, string $objectType): array - { - if(isset($selectedProgram)) - { - $data['selectedProgramBegin'] = $selectedProgram->begin; - $data['selectedProgramEnd'] = $selectedProgram->end; - $data['budgetUnit'] = $selectedProgram->budgetUnit; - $data['selectedProgramPath'] = explode(',', $selectedProgram->path); - } - - if($objectType == 'program') - { - $withProgram = $this->config->systemMode == 'ALM'; - $allProducts = array(0 => '') + $this->program->getProductPairs($selectedProgramID, 'all', 'noclosed', '', 0, $withProgram); - $data['allProducts'] = html::select("products[]", $allProducts, '', "class='form-control chosen' onchange='loadBranches(this)'"); - $data['plans'] = html::select('plans[][][]', '', '', 'class=\'form-control chosen\' multiple'); - } - - return $data; - } - /** * 处理项目列表展示数据。 * Process project list display data.