From 809c8d5eb290419ceede43f7a9a3a9d57cd430b6 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 16 Mar 2018 15:51:14 +0800 Subject: [PATCH] * finish task #3727. --- module/product/control.php | 5 +++-- module/project/control.php | 10 ++++------ module/project/js/common.js | 21 ++++++++++++++------- module/project/js/create.js | 13 +++++++++++++ module/project/model.php | 11 ++++------- module/project/view/create.html.php | 1 + module/project/view/edit.html.php | 2 +- module/project/view/view.html.php | 15 +++++++++++++++ 8 files changed, 55 insertions(+), 23 deletions(-) diff --git a/module/product/control.php b/module/product/control.php index 2bc9c36732..099549b3a9 100644 --- a/module/product/control.php +++ b/module/product/control.php @@ -548,12 +548,13 @@ class product extends control * @param int $productID * @param int $planID * @param bool $needCreate + * @param string $expired * @access public * @return void */ - public function ajaxGetPlans($productID, $branch = 0, $planID = 0, $fieldID = '', $needCreate = false) + public function ajaxGetPlans($productID, $branch = 0, $planID = 0, $fieldID = '', $needCreate = false, $expired = '') { - $plans = $this->loadModel('productplan')->getPairs($productID, $branch); + $plans = $this->loadModel('productplan')->getPairs($productID, $branch, $expired); $field = $fieldID ? "plans[$fieldID]" : 'plan'; $output = html::select($field, $plans, $planID, "class='form-control chosen'"); if(count($plans) == 1 and $needCreate) diff --git a/module/project/control.php b/module/project/control.php index 49b9820e30..2b7ea57c3e 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -604,14 +604,11 @@ class project extends control $storyBugs = $this->loadModel('bug')->getStoryBugCounts($storyIdList, $projectID); $storyCases = $this->loadModel('testcase')->getStoryCaseCounts($storyIdList); - $plans = $this->project->getPlans($productID); + $plans = $this->project->getPlans($products); $allPlans = array('' => ''); if(!empty($plans)) { - foreach($plans as $productID => $plan) - { - $allPlans = $allPlans + $plan; - } + foreach($plans as $productID => $plan) $allPlans += $plan; } /* Assign. */ @@ -1030,7 +1027,7 @@ 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(array_keys($linkedProducts)); + $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)); @@ -1294,6 +1291,7 @@ class project extends control $this->view->project = $project; $this->view->products = $products; $this->view->branchGroups = $this->loadModel('branch')->getByProducts(array_keys($products)); + $this->view->planGroups = $this->project->getPlans($products); $this->view->groups = $this->loadModel('group')->getPairs(); $this->view->actions = $this->loadModel('action')->getList('project', $projectID); $this->view->users = $this->loadModel('user')->getPairs('noletter'); diff --git a/module/project/js/common.js b/module/project/js/common.js index b27ac9b066..19e2e708a4 100644 --- a/module/project/js/common.js +++ b/module/project/js/common.js @@ -154,23 +154,30 @@ function loadBranches(product) if(data) { $inputgroup.append(data); - $inputgroup.find('select:last').attr('name', 'branch[' + index + ']').attr('id', 'branch' + index).css('width', '80px'); + $inputgroup.find('select:last').attr('name', 'branch[' + index + ']').attr('id', 'branch' + index).css('width', '80px').attr('onchange', "loadPlans('#products" + index + "', this.value)"); } }); + loadPlans(product); +} + +function loadPlans(product, branchID) +{ var productID = $(product).val(); + var branchID = typeof(branchID) == 'undefined' ? 0 : branchID; - if(productID == 0 || productID != $(product).data('last')) $("#plan" + $(product).data('last')).remove(); - - if(productID != 0 && $("#plan" + productID).length == 0) + 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), function(data) + $.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()).find('select').attr('name', 'plans[' + productID + ']').attr('id', 'plans' + productID); + $("#plansBox .row").append('
' + data + '
'); + $("#plan" + $(product).val()).width($(product).closest('.col-sm-3').width()).find('select').attr('name', 'plans[' + productID + ']').attr('id', 'plans' + productID); } }); } diff --git a/module/project/js/create.js b/module/project/js/create.js index cec75c4dff..baf7ef6a32 100644 --- a/module/project/js/create.js +++ b/module/project/js/create.js @@ -23,6 +23,19 @@ $(function() { $("input:radio[name='delta']").attr("checked", false); }) + + if(typeof(currentPlanID) == 'undefined') + { + $('#productsBox select[id^="products"]').each(function() + { + var branchID = 0; + if($(this).closest('.input-group').find('select[id^="branch"]').size() > 0) + { + var branchID = $(this).closest('.input-group').find('select[id^="branch"]').val(); + } + loadPlans($(this), branchID); + }); + } }); function showTypeTips() diff --git a/module/project/model.php b/module/project/model.php index dd04b26655..c2c55e8837 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -2616,16 +2616,13 @@ class projectModel extends model * * @return mixed */ - public function getPlans($productID) + public function getPlans($products) { - $plans = $this->dao->select('id,title,product')->from(TABLE_PRODUCTPLAN) - ->where('product')->in($productID) - ->fetchAll(); - + $this->loadModel('productplan'); $productPlans = array(); - foreach ($plans as $plan) + foreach($products as $productID => $product) { - $productPlans[$plan->product][$plan->id] = $plan->title; + $productPlans[$productID] = $this->productplan->getPairs($product->id, $product->branch); } return $productPlans; } diff --git a/module/project/view/create.html.php b/module/project/view/create.html.php index 0b823d15e1..a1cf9b7f85 100644 --- a/module/project/view/create.html.php +++ b/module/project/view/create.html.php @@ -119,6 +119,7 @@ begin)):?>
product . "]", $productPlan, $plan->id, "class='form-control'");?> + id)?>
diff --git a/module/project/view/edit.html.php b/module/project/view/edit.html.php index 220cdaa3ca..b534a7e58e 100644 --- a/module/project/view/edit.html.php +++ b/module/project/view/edit.html.php @@ -117,7 +117,7 @@
id, "class='form-control chosen' onchange='loadBranches(this)' data-last='" . $product->id . "'");?> - type != 'normal' and isset($branchGroups[$product->id])) echo html::select("branch[$i]", $branchGroups[$product->id], $product->branch, "class='form-control' style='width:80px'")?> + type != 'normal' and isset($branchGroups[$product->id])) echo html::select("branch[$i]", $branchGroups[$product->id], $product->branch, "class='form-control' style='width:80px' onchange=\"loadPlans('#products{$i}', this.value)\"")?>
diff --git a/module/project/view/view.html.php b/module/project/view/view.html.php index bf9b78efa8..4efdb06fc6 100644 --- a/module/project/view/view.html.php +++ b/module/project/view/view.html.php @@ -138,6 +138,21 @@ ?> + + project->linkPlan;?> + + $product) + { + if(isset($planGroups[$productID][$product->plan])) + { + echo html::a($this->createLink('productplan', 'view', "planID={$product->id}"), $product->name . '/' . $planGroups[$productID][$product->plan]); + } + echo '
'; + } + ?> + + project->acl;?>