diff --git a/module/block/control.php b/module/block/control.php index 69caa6f361..85f762e629 100644 --- a/module/block/control.php +++ b/module/block/control.php @@ -167,7 +167,7 @@ class block extends control { $this->app->loadClass('pager', $static = true); $pager = pager::init(0, $this->params->num, 1); - $this->view->projectStats = $this->loadModel('project')->getProjectStats($status = 'undone', $productID = 0, $itemCounts = 30, $orderBy = 'code', $pager); + $this->view->projectStats = $this->loadModel('project')->getProjectStats($status = 'undone', $productID = 0, $branch = 0, $itemCounts = 30, $orderBy = 'code', $pager); $this->display(); } diff --git a/module/build/control.php b/module/build/control.php index e2287f485a..5eeb1f6454 100644 --- a/module/build/control.php +++ b/module/build/control.php @@ -338,15 +338,8 @@ class build extends control $this->config->product->search['params']['plan']['values'] = $this->loadModel('productplan')->getForProducts(array($build->product => $build->product)); $this->config->product->search['params']['module']['values'] = $this->tree->getOptionMenu($build->product, $viewType = 'story', $startModuleID = 0); $this->config->product->search['params']['status'] = array('operator' => '=', 'control' => 'select', 'values' => $this->lang->story->statusList); - if($product->type == 'normal') - { - unset($this->config->product->search['fields']['branch']); - unset($this->config->product->search['params']['branch']); - } - else - { - $this->config->product->search['params']['branch']['values'] = array('' => '') + $this->loadModel('branch')->getPairs($product->id, 'noempty'); - } + unset($this->config->product->search['fields']['branch']); + unset($this->config->product->search['params']['branch']); $this->loadModel('search')->setSearchParams($this->config->product->search); if($browseType == 'bySearch') diff --git a/module/common/lang/menuOrder.php b/module/common/lang/menuOrder.php index b263388432..b638ec8494 100644 --- a/module/common/lang/menuOrder.php +++ b/module/common/lang/menuOrder.php @@ -38,12 +38,12 @@ $lang->product->menuOrder[35] = 'project'; $lang->product->menuOrder[40] = 'branch'; $lang->product->menuOrder[45] = 'module'; $lang->product->menuOrder[50] = 'view'; -$lang->product->menuOrder[55] = 'order'; -$lang->product->menuOrder[60] = 'create'; -$lang->product->menuOrder[65] = 'all'; +$lang->product->menuOrder[55] = 'create'; +$lang->product->menuOrder[60] = 'all'; $lang->story->menuOrder = $lang->product->menuOrder; $lang->productplan->menuOrder = $lang->product->menuOrder; $lang->release->menuOrder = $lang->product->menuOrder; +$lang->branch->menuOrder = $lang->product->menuOrder; /* project menu order. */ $lang->project->menuOrder[5] = 'task'; diff --git a/module/product/control.php b/module/product/control.php index 3196173e3e..17e4b5e274 100644 --- a/module/product/control.php +++ b/module/product/control.php @@ -84,7 +84,7 @@ class product extends control $this->product->setMenu($this->products, $productID, $branch); $this->app->loadLang('my'); - $this->view->projectStats = $this->loadModel('project')->getProjectStats($status, $productID); + $this->view->projectStats = $this->loadModel('project')->getProjectStats($status, $productID, $branch); $this->view->title = $this->products[$productID] . $this->lang->colon . $this->lang->product->project; $this->view->position[] = $this->products[$productID]; diff --git a/module/product/model.php b/module/product/model.php index 8b55a908a7..ea331a96be 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -689,6 +689,10 @@ class productModel extends model { $link = helper::createLink($module, $method, "status=all&productID=%s" . ($branch ? "&branch=%s" : '')); } + elseif($module == 'product' && ($method == 'dynamic' or $method == 'roadmap' or $method == 'doc' or $method == 'view')) + { + $link = helper::createLink($module, $method, "productID=%s"); + } elseif($module == 'product' && $method == 'index') { $link = helper::createLink($module, $method, "locate=no&productID=%s"); @@ -709,7 +713,7 @@ class productModel extends model } else if($module == 'tree') { - $link = helper::createLink($module, $method, "productID=%s&type=$extra"); + $link = helper::createLink($module, $method, "productID=%s&type=$extra¤tModuleID=0" . ($branch ? "&branch=%s" : '')); } return $link; } diff --git a/module/productplan/control.php b/module/productplan/control.php index 63ba6c8dc4..b1beadb547 100644 --- a/module/productplan/control.php +++ b/module/productplan/control.php @@ -281,20 +281,13 @@ class productplan extends control $storyStatusList = $this->lang->story->statusList; unset($storyStatusList['closed']); $this->config->product->search['params']['status'] = array('operator' => '=', 'control' => 'select', 'values' => $storyStatusList); - if($this->view->product->type == 'normal') - { - unset($this->config->product->search['fields']['branch']); - unset($this->config->product->search['params']['branch']); - } - else - { - $this->config->product->search['params']['branch']['values'] = array('' => '') + $this->loadModel('branch')->getPairs($this->view->product->id, 'noempty'); - } + unset($this->config->product->search['fields']['branch']); + unset($this->config->product->search['params']['branch']); $this->loadModel('search')->setSearchParams($this->config->product->search); if($browseType == 'bySearch') { - $allStories = $this->story->getBySearch($plan->product, $queryID, 'id'); + $allStories = $this->story->getBySearch($plan->product, $queryID, 'id', $pager = null, $projectID = '', $plan->branch); foreach($allStories as $key => $story) { if($story->status == 'closed') unset($allStories[$key]); diff --git a/module/project/control.php b/module/project/control.php index 89c0ac2a00..2ca557778d 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -51,7 +51,7 @@ class project extends control $this->app->loadLang('my'); $this->view->title = $this->lang->project->allProject; $this->view->position[] = $this->lang->project->allProject; - $this->view->projectStats = $this->project->getProjectStats($status == 'byproduct' ? 'all' : $status, $productID, 30, $orderBy, $pager); + $this->view->projectStats = $this->project->getProjectStats($status == 'byproduct' ? 'all' : $status, $productID, 0, 30, $orderBy, $pager); $this->view->products = array(0 => $this->lang->product->select) + $this->loadModel('product')->getPairs(); $this->view->productID = $productID; $this->view->projectID = $projectID; diff --git a/module/project/model.php b/module/project/model.php index 10d6775a0f..c054a2cef1 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -561,7 +561,7 @@ class projectModel extends model ->andWhere('t2.deleted')->eq(0) ->andWhere('t2.iscat')->eq(0) ->beginIF($status == 'undone')->andWhere('t2.status')->ne('done')->fi() - ->beginIF($branch != 0)->andWhere('t1.branch')->eq($branch)->fi() + ->beginIF($branch)->andWhere('t1.branch')->eq($branch)->fi() ->beginIF($status == 'isdoing')->andWhere('t2.status')->ne('done')->andWhere('t2.status')->ne('suspended')->fi() ->beginIF($status != 'all' and $status != 'isdoing' and $status != 'undone')->andWhere('status')->in($status)->fi() ->orderBy('order_desc') @@ -629,10 +629,10 @@ class projectModel extends model * @access public * @return void */ - public function getProjectStats($status = 'undone', $productID = 0, $itemCounts = 30, $orderBy = 'order_desc', $pager = null) + public function getProjectStats($status = 'undone', $productID = 0, $branch = 0, $itemCounts = 30, $orderBy = 'order_desc', $pager = null) { /* Init vars. */ - $projects = $this->getList($status, 0, $productID); + $projects = $this->getList($status, 0, $productID, $branch); foreach($projects as $projectID => $project) { if(!$this->checkPriv($project)) unset($projects[$projectID]); diff --git a/module/release/control.php b/module/release/control.php index 38b41cb0ce..2af608199d 100644 --- a/module/release/control.php +++ b/module/release/control.php @@ -347,20 +347,13 @@ class release extends control $this->config->product->search['params']['plan']['values'] = $this->loadModel('productplan')->getForProducts(array($release->product => $release->product)); $this->config->product->search['params']['module']['values'] = $this->tree->getOptionMenu($release->product, $viewType = 'story', $startModuleID = 0); $this->config->product->search['params']['status'] = array('operator' => '=', 'control' => 'select', 'values' => $this->lang->story->statusList); - if($this->session->currentProductType == 'normal') - { - unset($this->config->product->search['fields']['branch']); - unset($this->config->product->search['params']['branch']); - } - else - { - $this->config->product->search['params']['branch']['values'] = array('' => '') + $this->loadModel('branch')->getPairs($release->product, 'noempty'); - } + unset($this->config->product->search['fields']['branch']); + unset($this->config->product->search['params']['branch']); $this->loadModel('search')->setSearchParams($this->config->product->search); if($browseType == 'bySearch') { - $allStories = $this->story->getBySearch($release->product, $queryID, 'id', null, $build->project ? $build->project : ''); + $allStories = $this->story->getBySearch($release->product, $queryID, 'id', null, $build->project ? $build->project : '', $release->branch); } else { diff --git a/module/story/model.php b/module/story/model.php index d1b8d3dc79..beb599cab5 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -1152,7 +1152,7 @@ class storyModel extends model * @access public * @return array */ - public function getBySearch($productID, $queryID, $orderBy, $pager = null, $projectID = '') + public function getBySearch($productID, $queryID, $orderBy, $pager = null, $projectID = '', $branch = 0) { if($projectID != '') { @@ -1188,6 +1188,10 @@ class storyModel extends model $storyQuery .= " AND `branch`" . helper::dbIN($branches); $storyQuery .= " AND `status` != 'draft'"; } + elseif($branch) + { + $storyQuery .= " AND `branch`" . helper::dbIN("0,$branch"); + } return $this->getBySQL($queryProductID, $storyQuery, $orderBy, $pager); } diff --git a/module/task/js/batchcreate.js b/module/task/js/batchcreate.js index 8a1bf523dc..a3ffedbdc1 100755 --- a/module/task/js/batchcreate.js +++ b/module/task/js/batchcreate.js @@ -4,7 +4,7 @@ delete defaultChosenOptions.width; /* Get select of stories.*/ function setStories(moduleID, projectID, num) { - link = createLink('story', 'ajaxGetProjectStories', 'projectID=' + projectID + '&productID=0&moduleID=' + moduleID + '&storyID=0&num=' + num + '&type=short'); + link = createLink('story', 'ajaxGetProjectStories', 'projectID=' + projectID + '&productID=0&branch=0&moduleID=' + moduleID + '&storyID=0&num=' + num + '&type=short'); $.get(link, function(stories) { var storyID = $('#story' + num).val(); diff --git a/module/task/js/create.js b/module/task/js/create.js index 7c88027138..f4c51d78d4 100644 --- a/module/task/js/create.js +++ b/module/task/js/create.js @@ -111,7 +111,7 @@ function loadModuleRelated() /* Get select of stories.*/ function setStories(moduleID, projectID) { - link = createLink('story', 'ajaxGetProjectStories', 'projectID=' + projectID + '&productID=0&moduleID=' + moduleID); + link = createLink('story', 'ajaxGetProjectStories', 'projectID=' + projectID + '&productID=0&branch=0&moduleID=' + moduleID); $.get(link, function(stories) { var storyID = $('#story').val(); diff --git a/module/task/js/edit.js b/module/task/js/edit.js index dd69da2101..b5273ce752 100644 --- a/module/task/js/edit.js +++ b/module/task/js/edit.js @@ -48,7 +48,7 @@ function loadModuleMenu(projectID) */ function loadProjectStories(projectID) { - link = createLink('story', 'ajaxGetProjectStories', 'projectID=' + projectID + '&productID=0&moduleID=0&storyID=' + oldStoryID); + link = createLink('story', 'ajaxGetProjectStories', 'projectID=' + projectID + '&productID=0&branch=0&moduleID=0&storyID=' + oldStoryID); $('#storyIdBox').load(link, function(){$('#story').chosen(defaultChosenOptions);}); } diff --git a/module/tree/control.php b/module/tree/control.php index e85a9de756..35ce6d4614 100644 --- a/module/tree/control.php +++ b/module/tree/control.php @@ -55,7 +55,7 @@ class tree extends control if($viewType == 'story') { $this->lang->set('menugroup.tree', 'product'); - $this->product->setMenu($this->product->getPairs(), $rootID, 'story'); + $this->product->setMenu($this->product->getPairs(), $rootID, $branch, 'story'); $this->lang->tree->menu = $this->lang->product->menu; $this->lang->tree->menuOrder = $this->lang->product->menuOrder; diff --git a/module/tree/model.php b/module/tree/model.php index e4139a365c..405262c912 100644 --- a/module/tree/model.php +++ b/module/tree/model.php @@ -856,8 +856,7 @@ class treeModel extends model ->where('root')->eq((int)$rootID) ->andWhere('parent')->eq((int)$moduleID) ->andWhere('type')->eq($type) - ->beginIF(empty($branch))->andWhere("branch")->eq(0)->fi() - ->beginIF(!empty($branch))->andWhere("branch")->eq($branch)->fi() + ->andWhere("branch")->eq((int)$branch) ->orderBy('`order`') ->fetchAll(); } @@ -868,8 +867,7 @@ class treeModel extends model ->where('root')->eq((int)$rootID) ->andWhere('parent')->eq((int)$moduleID) ->andWhere('type')->in($type) - ->beginIF(empty($branch))->andWhere("branch")->eq(0)->fi() - ->beginIF(!empty($branch))->andWhere("branch")->eq($branch)->fi() + ->andWhere("branch")->eq((int)$branch) ->orderBy('type desc,`order`') ->fetchAll(); }