+
+
+ custom->flow?> +
+
+ +
+ +
+ + + diff --git a/module/story/model.php b/module/story/model.php index 8c6bc48855..0505c63f8f 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -3630,59 +3630,70 @@ class storyModel extends model */ public function getTracks($productID = 0, $branch = 0, $pager = null) { - $sourcePageID = $pager->pageID; - $requirements = $this->getProductStories($productID, $branch, 0, 'all', 'requirement', 'id_desc', true, '', $pager); - if($pager->pageID != $sourcePageID) - { - $requirements = array(); - $pager->pageID = $sourcePageID; - } + $tracks = array(); + $sourcePageID = $pager->pageID; + $excludeStories = false; - foreach($requirements as $requirement) + if($this->config->URAndSR) { - $stories = $this->getRelation($requirement->id, 'requirement'); - $stories = empty($stories) ? array() : $stories; - foreach($stories as $id => $title) + $requirements = $this->getProductStories($productID, $branch, 0, 'all', 'requirement', 'id_desc', true, '', $pager); + if($pager->pageID != $sourcePageID) { - $stories[$id] = new stdclass(); - $stories[$id]->title = $title; - $stories[$id]->cases = $this->loadModel('testcase')->getStoryCases($id); - $stories[$id]->bugs = $this->loadModel('bug')->getStoryBugs($id); - $stories[$id]->tasks = $this->loadModel('task')->getStoryTasks($id); - if(isset($this->config->maxVersion)) - { - $stories[$id]->designs = $this->dao->select('id, name')->from(TABLE_DESIGN)->where('story')->eq($id)->fetchAll('id'); - $stories[$id]->revisions = $this->dao->select('BID, extra')->from(TABLE_RELATION) - ->where('AType')->eq('design') - ->andWhere('BType')->eq('commit') - ->andWhere('AID')->in(array_keys($stories[$id]->designs)) - ->fetchPairs(); - } + $requirements = array(); + $pager->pageID = $sourcePageID; } - $requirement->track = $stories; + foreach($requirements as $requirement) + { + $stories = $this->getRelation($requirement->id, 'requirement'); + $stories = empty($stories) ? array() : $stories; + foreach($stories as $id => $title) + { + $stories[$id] = new stdclass(); + $stories[$id]->title = $title; + $stories[$id]->cases = $this->loadModel('testcase')->getStoryCases($id); + $stories[$id]->bugs = $this->loadModel('bug')->getStoryBugs($id); + $stories[$id]->tasks = $this->loadModel('task')->getStoryTasks($id); + if(isset($this->config->maxVersion)) + { + $stories[$id]->designs = $this->dao->select('id, name')->from(TABLE_DESIGN)->where('story')->eq($id)->fetchAll('id'); + $stories[$id]->revisions = $this->dao->select('BID, extra')->from(TABLE_RELATION) + ->where('AType')->eq('design') + ->andWhere('BType')->eq('commit') + ->andWhere('AID')->in(array_keys($stories[$id]->designs)) + ->fetchPairs(); + } + } + + $requirement->track = $stories; + } + + $tracks = $requirements; + + /* Get no requirements story. */ + $excludeStories = $this->dao->select('BID')->from(TABLE_RELATION) + ->where('AType')->eq('requirement') + ->andWhere('BType')->eq('story') + ->andWhere('relation')->eq('subdivideinto') + ->andWhere('product')->eq($productID) + ->fetchPairs('BID', 'BID'); + $stories = $this->getProductStories($productID, 0, 0, 'all', 'story', 'id_desc', true, $excludeStories); + if($stories) $pager->recTotal += 1; + } + else + { + $stories = $this->getProductStories($productID, 0, 0, 'all', 'story', 'id_desc', true, $excludeStories, $pager); } - /* Get no requirements story. */ - $subdividedStories = $this->dao->select('BID')->from(TABLE_RELATION) - ->where('AType')->eq('requirement') - ->andWhere('BType')->eq('story') - ->andWhere('relation')->eq('subdivideinto') - ->andWhere('product')->eq($productID) - ->fetchPairs('BID', 'BID'); - - $stories = $this->getProductStories($productID, 0, 0, 'all', 'story', 'id_desc', true, $subdividedStories); - if($stories) $pager->recTotal += 1; - - if(count($requirements) < $pager->recPerPage) + if(count($tracks) < $pager->recPerPage) { foreach($stories as $id => $story) { $stories[$id] = new stdclass(); - $stories[$id]->title = $story->title; - $stories[$id]->cases = $this->loadModel('testcase')->getStoryCases($id); - $stories[$id]->bugs = $this->loadModel('bug')->getStoryBugs($id); - $stories[$id]->tasks = $this->loadModel('task')->getStoryTasks($id); + $stories[$id]->title = $story->title; + $stories[$id]->cases = $this->loadModel('testcase')->getStoryCases($id); + $stories[$id]->bugs = $this->loadModel('bug')->getStoryBugs($id); + $stories[$id]->tasks = $this->loadModel('task')->getStoryTasks($id); if(isset($this->config->maxVersion)) { $stories[$id]->designs = $this->dao->select('id, name')->from(TABLE_DESIGN)->where('story')->eq($id)->fetchAll('id'); @@ -3694,10 +3705,10 @@ class storyModel extends model } } - $requirements['noRequirement'] = $stories; + $tracks['noRequirement'] = $stories; } - return $requirements; + return $tracks; } /** diff --git a/module/story/view/create.html.php b/module/story/view/create.html.php index 1ba89b88e9..af4f63611d 100644 --- a/module/story/view/create.html.php +++ b/module/story/view/create.html.php @@ -122,7 +122,7 @@ - + config->URAndSR):?> story->requirement;?> diff --git a/module/story/view/track.html.php b/module/story/view/track.html.php index f58bb53ee4..8ec9a00f8a 100644 --- a/module/story/view/track.html.php +++ b/module/story/view/track.html.php @@ -24,6 +24,7 @@ + URAndSR):?> + maxVersion)):?> @@ -55,12 +57,14 @@ track;?> + URAndSR):?> + $story):?> diff --git a/module/story/view/view.html.php b/module/story/view/view.html.php index 9280aea0d7..544a3fa3cd 100644 --- a/module/story/view/view.html.php +++ b/module/story/view/view.html.php @@ -398,13 +398,16 @@
+ config->URAndSR):?>
    story->unlink . $linkLang, '', "class='btn btn-info' id='unlinkStory'");?>
+ type == 'story'):?> -
+
    tasks as $projectTasks) From 431e3b7ef744a0b74fd93c104cc8b5d6f3214aff Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Wed, 3 Mar 2021 09:27:54 +0800 Subject: [PATCH 15/16] * Fix error. --- module/projectstory/control.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/module/projectstory/control.php b/module/projectstory/control.php index 44fcdb98b4..75bdb67c28 100644 --- a/module/projectstory/control.php +++ b/module/projectstory/control.php @@ -88,7 +88,8 @@ class projectStory extends control */ public function view($storyID) { - echo $this->fetch('story', 'view', "storyID=$storyID"); + $story = $this->loadModel('story')->getByID($storyID); + echo $this->fetch('story', 'view', "storyID=$storyID&version=$story->version¶m=" . $this->session->PRJ); } /** From 8070ae60b7fe3da08c30757ec8d659d855824513 Mon Sep 17 00:00:00 2001 From: hufangzhou <746775970@qq.com> Date: Wed, 3 Mar 2021 09:32:20 +0800 Subject: [PATCH 16/16] * Finish task #36349. --- module/todo/config.php | 2 ++ module/todo/model.php | 10 +++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/module/todo/config.php b/module/todo/config.php index 9f3d7b925e..c14dcd2da6 100644 --- a/module/todo/config.php +++ b/module/todo/config.php @@ -26,3 +26,5 @@ $config->todo->list->customBatchEditFields = 'pri,desc,beginAndEnd,status'; $config->todo->custom = new stdclass(); $config->todo->custom->batchCreateFields = 'type,pri,desc,beginAndEnd'; $config->todo->custom->batchEditFields = 'pri,beginAndEnd,status'; + +$config->todo->moduleList = array('bug', 'task', 'story', 'issue', 'risk', 'review', 'testtask', 'feedback'); diff --git a/module/todo/model.php b/module/todo/model.php index 78f8116157..0ad17ce375 100644 --- a/module/todo/model.php +++ b/module/todo/model.php @@ -22,7 +22,7 @@ class todoModel extends model public function create($date, $account) { $objectType = $this->post->type; - $hasObject = in_array($objectType, array('bug', 'task', 'story', 'issue', 'risk', 'review', 'testtask', 'feedback')); + $hasObject = in_array($objectType, $this->config->todo->moduleList); if($hasObject && $objectType) $idvalue = $this->post->uid ? $this->post->$objectType : $this->post->idvalue; $todo = fixer::input('post') @@ -34,7 +34,7 @@ class todoModel extends model ->setIF($this->post->begin == false, 'begin', '2400') ->setIF($this->post->begin == false or $this->post->end == false, 'end', '2400') ->stripTags($this->config->todo->editor->create['id'], $this->config->allowedTags) - ->remove('bug, task, story, issue, risk, review, testtask, uid, feedback') + ->remove(implode(',', $this->config->todo->moduleList) . ',uid') ->get(); if($todo->end < $todo->begin) @@ -171,10 +171,10 @@ class todoModel extends model public function update($todoID) { $oldTodo = $this->dao->findById((int)$todoID)->from(TABLE_TODO)->fetch(); - if(in_array($oldTodo->type, array('bug', 'task', 'story', 'issue', 'risk', 'review', 'testtask', 'feedback'))) $oldTodo->name = ''; + if(in_array($oldTodo->type, $this->config->todo->moduleList)) $oldTodo->name = ''; $objectType = $this->post->type; - $hasObject = in_array($objectType, array('bug', 'task', 'story', 'issue', 'risk', 'review', 'testtask', 'feedback')); + $hasObject = in_array($objectType, $this->config->todo->moduleList); if($hasObject && $objectType) $idvalue = $this->post->uid ? $this->post->$objectType : $this->post->idvalue; $todo = fixer::input('post') ->cleanInt('pri, begin, end, private') @@ -186,7 +186,7 @@ class todoModel extends model ->setIF($this->post->end == false, 'end', '2400') ->setDefault('private', 0) ->stripTags($this->config->todo->editor->edit['id'], $this->config->allowedTags) - ->remove('bug, task, story, feedback, issue, risk, review, testtask, feedback, uid') + ->remove(implode(',', $this->config->todo->moduleList) . 'uid') ->get(); if($todo->end < $todo->begin)
> app->rawModule == 'projectstory'): ?> story->story;?> story->tasks;?>
story->statusList, $requirement->status);?> story->noRequirement : html::a($this->createLink($module, 'view', "storyID=$requirement->id"), $requirement->title, '', "title=$requirement->title data-group='$openGroup'");?>