diff --git a/module/project/control.php b/module/project/control.php index 96fecd0142..9ff215b663 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -234,6 +234,7 @@ class project extends control { $selectedProgram = $this->loadModel('program')->getByID($selectedProgramID); if($selectedProgram->budget) $availableBudget = $this->program->getBudgetLeft($selectedProgram); + if(isset($selectedProgram)) $allProducts = $this->program->getProductPairs($selectedProgram->id, 'assign', 'noclosed'); } if(!empty($objectID)) @@ -255,9 +256,16 @@ class project extends control $data['selectedProgramBegin'] = $selectedProgram->begin; $data['selectedProgramEnd'] = $selectedProgram->end; $data['budgetUnit'] = $selectedProgram->budgetUnit; - $data['selectedProgramParent'] = $selectedProgram->parent; + $allProducts = array(0 => '') + $allProducts; + //Finish task #64882.Get the path of the currently selected program. + $data['selectedProgramPath'] = explode(',', $selectedProgram->path); + //Get the products that can be linked with the currently selected program. + $data['allProducts'] = html::select("products[0]", $allProducts, '', "class='form-control chosen' onchange='loadBranches(this)'"); + $data['plans'] = html::select('plans[][][]', '', '', 'class=\'form-control chosen\' multiple'); } - if(!empty($objectID)) $data['parent'] = $object->parent; + + //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; diff --git a/module/project/js/create.js b/module/project/js/create.js index 8ce560267e..498ab562f4 100644 --- a/module/project/js/create.js +++ b/module/project/js/create.js @@ -109,7 +109,7 @@ $(function() /** * Set parent program. * - * @param $parentProgram + * @param int $parentProgram * @access public * @return void */ @@ -126,13 +126,25 @@ function setParentProgram(parentProgram) $.get(createLink('project', 'ajaxGetObjectInfo', 'objectType=program&objectID=' + lastSelectedID + "&selectedProgramID=" + parentProgram), function(data) { var data = JSON.parse(data); - selectedParent = parentProgram != 0 ? data.selectedProgramParent : 0; - lastSelectedParent = lastSelectedID != 0 ? data.parent : 0; + selectedParent = parentProgram != 0 ? data.selectedProgramPath[1] : 0; + lastSelectedParent = lastSelectedID != 0 ? data.objectPath[1] : 0; + $('#budget').val(''); if(selectedParent != lastSelectedParent) { - location.href = createLink('project', 'create', 'model=' + model + '&programID=' + parentProgram); - return; + /* Hide product and plan dropdown controls. */ + $('#productsBox .row .col-sm-4:not(:last)').remove(); + $('#productsBox .row .col-sm-4:last select').remove(); + $('#productsBox .row .col-sm-4:last .chosen-container').remove(); + var select = data.allProducts; + $('#productsBox .row .col-sm-4 .input-group').prepend(select) + $('#productsBox .row .col-sm-4 .input-group select').chosen(); + + $('#plansBox .col-sm-4:not(:last)').remove(); + $('#plansBox .col-sm-4').children().remove(); + var planSelect = data.plans; + $('#plansBox .col-sm-4').prepend(planSelect); + $('#plansBox .col-sm-4 select').chosen(); } budgetOverrunTips(); outOfDateTip();