diff --git a/module/project/control.php b/module/project/control.php index 2b7ea57c3e..9f860c21ab 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -1027,7 +1027,6 @@ class project extends control $this->view->qdUsers = $this->user->getPairs('noclosed|nodeleted|qdfirst', $project->QD); $this->view->rdUsers = $this->user->getPairs('noclosed|nodeleted|devfirst', $project->RD); $this->view->groups = $this->loadModel('group')->getPairs(); - $this->view->plans = $this->project->getPlans($linkedProducts); $this->view->allProducts = $allProducts; $this->view->linkedProducts = $linkedProducts; $this->view->branchGroups = $this->loadModel('branch')->getByProducts(array_keys($linkedProducts)); diff --git a/module/project/js/common.js b/module/project/js/common.js index 19e2e708a4..45ee462d6c 100644 --- a/module/project/js/common.js +++ b/module/project/js/common.js @@ -163,21 +163,22 @@ function loadBranches(product) function loadPlans(product, branchID) { + if($('#plansBox').size() == 0) return false; + var productID = $(product).val(); var branchID = typeof(branchID) == 'undefined' ? 0 : branchID; + var index = $(product).attr('id').replace('products', ''); if(productID != 0) { if(typeof(planID) == 'undefined') planID = 0; planID = $("select#plans" + productID).val() != '' ? $("select#plans" + productID).val() : planID; - $("div#plan" + productID).remove(); - $(product).data("last", productID); $.get(createLink('product', 'ajaxGetPlans', "productID=" + productID + '&branch=' + branchID + '&planID=' + planID + '&fieldID&needCreate=&expired=' + (config.currentMethod == 'create' ? 'unexpired' : '')), function(data) { if(data) { - $("#plansBox .row").append('
' + data + '
'); - $("#plan" + $(product).val()).width($(product).closest('.col-sm-3').width()).find('select').attr('name', 'plans[' + productID + ']').attr('id', 'plans' + productID); + if($("div#plan" + index).size() == 0) $("#plansBox .row").append('
'); + $("div#plan" + index).width($(product).closest('.col-sm-3').width()).html(data).find('select').attr('name', 'plans[' + productID + ']').attr('id', 'plans' + productID); } }); } diff --git a/module/project/model.php b/module/project/model.php index c2c55e8837..79414bed9c 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -1150,7 +1150,7 @@ class projectModel extends model */ public function updateProducts($projectID) { - $deletedProducts = $this->dao->select('product')->from(TABLE_PROJECTPRODUCT)->where('project')->eq((int)$projectID)->fetchPairs('product', 'product'); + $oldProjectProducts = $this->dao->select('*')->from(TABLE_PROJECTPRODUCT)->where('project')->eq((int)$projectID)->fetchAll('product'); $this->dao->delete()->from(TABLE_PROJECTPRODUCT)->where('project')->eq((int)$projectID)->exec(); if(!isset($_POST['products'])) return; $products = $_POST['products']; @@ -1158,25 +1158,23 @@ class projectModel extends model $plans = isset($_POST['plans']) ? $_POST['plans'] : array();; $existedProducts = array(); - $addedProducts = array(); foreach($products as $i => $productID) { if(empty($productID)) continue; if(isset($existedProducts[$productID])) continue; - if(isset($deletedProducts[$productID])) + + $oldPlan = 0; + if(isset($oldProjectProducts[$productID])) { - unset($deletedProducts[$productID]); - } - else - { - $addedProducts[$productID] = $productID; + $oldProjectProduct = $oldProjectProducts[$productID]; + $oldPlan = $oldProjectProduct->plan; } $data = new stdclass(); $data->project = $projectID; $data->product = $productID; $data->branch = isset($branches[$i]) ? $branches[$i] : 0; - $data->plan = isset($plans[$productID]) ? $plans[$productID] : 0; + $data->plan = isset($plans[$productID]) ? $plans[$productID] : $oldPlan; $this->dao->insert(TABLE_PROJECTPRODUCT)->data($data)->exec(); $existedProducts[$productID] = true; } diff --git a/module/project/view/edit.html.php b/module/project/view/edit.html.php index b534a7e58e..f0a5225456 100644 --- a/module/project/view/edit.html.php +++ b/module/project/view/edit.html.php @@ -131,18 +131,6 @@ - config->global->flow == 'onlyTask') echo "class='hidden'";?>> - project->linkPlan;?> - -
- $plan):?> -
- plan, "class='form-control'");?> -
- -
- - project->desc;?> desc), "rows='6' class='form-control'");?>