From 1e12da117ffb82e6a889a1e021aec41eb91ea7e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BB=94=E5=93=A5?= Date: Wed, 10 Jan 2018 16:43:17 +0800 Subject: [PATCH] * Finish Task#3576. --- module/project/control.php | 37 ++++++++++++++++++++++++++++-- module/project/js/story.js | 11 +++++++++ module/project/lang/en.php | 1 + module/project/lang/zh-cn.php | 1 + module/project/model.php | 8 +++---- module/project/view/story.html.php | 29 +++++++++++++++++++++-- 6 files changed, 79 insertions(+), 8 deletions(-) diff --git a/module/project/control.php b/module/project/control.php index 8d7d238e11..107aae875d 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -603,16 +603,27 @@ class project extends control /* Count T B C */ $storyIdList = array_keys($stories);; - $storyTasks = $this->loadModel('task')->getStoryTaskCounts($storyIdList,$projectID); - $storyBugs = $this->loadModel('bug')->getStoryBugCounts($storyIdList,$projectID); + $storyTasks = $this->loadModel('task')->getStoryTaskCounts($storyIdList, $projectID); + $storyBugs = $this->loadModel('bug')->getStoryBugCounts($storyIdList, $projectID); $storyCases = $this->loadModel('testcase')->getStoryCaseCounts($storyIdList); + $plans = $this->project->getPlans($productID); + $allPlans = array('' => ''); + if(!empty($plans)) + { + foreach($plans as $productID => $plan) + { + $allPlans = $allPlans + $plan; + } + } + /* Assign. */ $this->view->title = $title; $this->view->position = $position; $this->view->productID = $productID; $this->view->project = $project; $this->view->stories = $stories; + $this->view->allPlans = $allPlans; $this->view->summary = $this->product->summary($stories); $this->view->orderBy = $orderBy; $this->view->type = $type; @@ -2235,4 +2246,26 @@ class project extends control die(js::reload('parent.parent')); } + + /** + * Import stories by plan. + * + * @param int $projectID + * @param int $planID + * + * @access public + * @return void + */ + public function importPlanStories($projectID, $planID) + { + $planStories = $planProducts = array(); + $planStory = $this->loadModel('story')->getPlanStories($planID); + if(!empty($planStory)) + { + $planStories = array_keys($planStory); + foreach($planStory as $story) $planProducts[$story->id] = $story->product; + $this->project->linkStory($projectID, $planStories, $planProducts); + } + die(js::locate(helper::createLink('project', 'story', 'projectID=' . $projectID), 'parent')); + } } diff --git a/module/project/js/story.js b/module/project/js/story.js index f9290a4e9f..c05d3acb30 100644 --- a/module/project/js/story.js +++ b/module/project/js/story.js @@ -24,6 +24,17 @@ $(function() $('#branch' + branchID).addClass('active'); $(document).on('click', "#storyList tbody tr", function(){showCheckedSummary();}); $(document).on('change', "#storyList :checkbox", function(){showCheckedSummary();}); + + $("a[data-toggle='linkStoryByPlan']").click(function(){$('#linkStoryByPlan').modal('show')}) + + $('#toTaskButton').on('click', function () + { + var planID = $('#plan').val(); + if(planID) + { + parent.location.href = createLink('project', 'importPlanStories', 'projectID=' + projectID + '&planID=' + planID); + } + }) }); function showCheckedSummary() diff --git a/module/project/lang/en.php b/module/project/lang/en.php index 8f3a4ca2b7..a6c53cd92f 100644 --- a/module/project/lang/en.php +++ b/module/project/lang/en.php @@ -118,6 +118,7 @@ $lang->project->doc = 'Doc'; $lang->project->manageProducts = 'Link ' . $lang->productCommon; $lang->project->linkStory = 'Linked Story'; $lang->project->linkPlan = 'Linked Plan'; +$lang->project->linkStoryByPlan = 'Linked Story From Plan'; $lang->project->unlinkStoryTasks = 'Unlinked'; $lang->project->linkedProducts = 'Linked Products'; $lang->project->unlinkedProducts = 'Unlinked Products'; diff --git a/module/project/lang/zh-cn.php b/module/project/lang/zh-cn.php index 5d1267724f..fd5fb6cc5f 100644 --- a/module/project/lang/zh-cn.php +++ b/module/project/lang/zh-cn.php @@ -117,6 +117,7 @@ $lang->project->team = '团队成员'; $lang->project->doc = '文档列表'; $lang->project->manageProducts = '关联' . $lang->productCommon; $lang->project->linkStory = '关联需求'; +$lang->project->linkStoryByPlan = '按照计划关联'; $lang->project->linkPlan = '关联计划'; $lang->project->unlinkStoryTasks = '未关联需求任务'; $lang->project->linkedProducts = '已关联'; diff --git a/module/project/model.php b/module/project/model.php index 397d66f1df..29bbb52f03 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -2581,16 +2581,16 @@ class projectModel extends model } /** - * Get plans by projectID. + * Get plans by $productID. * - * @param int|array $projectID + * @param int|array $productID * * @return mixed */ - public function getPlans($projectID) + public function getPlans($productID) { $plans = $this->dao->select('id,title,product')->from(TABLE_PRODUCTPLAN) - ->where('product')->in($projectID) + ->where('product')->in($productID) ->fetchAll(); $productPlans = array(); diff --git a/module/project/view/story.html.php b/module/project/view/story.html.php index d8281ea514..87e47d2962 100644 --- a/module/project/view/story.html.php +++ b/module/project/view/story.html.php @@ -25,7 +25,7 @@
- lang->story->create = $this->lang->project->createStory; @@ -52,7 +52,15 @@ } else { + echo "
"; common::printIcon('project', 'linkStory', "project=$project->id", '', 'button', 'link', '', 'link-story-btn'); + echo "'; + echo "'; + echo '
'; } ?>
@@ -109,7 +117,7 @@ - + id));?> @@ -233,6 +241,23 @@
+ + product->checkedSummary);?> id);?>