From 18ca3cbb99f7695df62fad5d347e8f7d9c77600b Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Fri, 4 Jun 2021 17:18:49 +0800 Subject: [PATCH 1/3] * Finish task#38910. --- module/testtask/view/browse.html.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/testtask/view/browse.html.php b/module/testtask/view/browse.html.php index a2beb118cd..47294aecae 100644 --- a/module/testtask/view/browse.html.php +++ b/module/testtask/view/browse.html.php @@ -105,9 +105,9 @@ $status = $this->session->testTaskVersionStatus; echo '
'; common::printIcon('testtask', 'cases', "taskID=$task->id", $task, 'list', 'sitemap'); common::printIcon('testtask', 'linkCase', "taskID=$task->id&type=all¶m=myQueryID", $task, 'list', 'link'); - common::printIcon('testreport', 'browse', "objectID=$task->product&objectType=product&extra=$task->id", $task, 'list','flag'); + common::printIcon('testreport', 'browse', "objectID=$task->product&objectType=product&extra=$task->id", $task, 'list', 'flag'); echo '
'; - common::printIcon('testtask', 'view', "taskID=$task->id", '', 'list', 'list-alt','','iframe',true, "data-width='90%'"); + common::printIcon('testtask', 'view', "taskID=$task->id", '', 'list', 'list-alt', '', 'iframe', true, "data-width='90%'"); common::printIcon('testtask', 'edit', "taskID=$task->id", $task, 'list'); if(common::hasPriv('testtask', 'delete', $task)) { From 7c1e69e3e0d03f134ce2d479f694b34dbd659a85 Mon Sep 17 00:00:00 2001 From: hufangzhou <746775970@qq.com> Date: Fri, 4 Jun 2021 17:25:07 +0800 Subject: [PATCH 2/3] * Finish task #38901, task #38899. --- module/story/model.php | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/module/story/model.php b/module/story/model.php index 8deb4be27d..9c59455c2d 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -1192,6 +1192,7 @@ class storyModel extends model $story = fixer::input('post') ->setDefault('lastEditedBy', $this->app->user->account) ->setDefault('lastEditedDate', $now) + ->setDefault('status', $oldStory->status) ->setIF($this->post->result == 'revert', 'version', $this->post->preVersion) ->setIF($this->post->result == 'revert', 'status', 'active') ->removeIF($this->post->result != 'reject', 'closedReason, duplicateStory, childStories') @@ -1209,10 +1210,10 @@ class storyModel extends model /* Update the story status by review rules. */ $reviewerList = $this->dao->select('reviewer,result')->from(TABLE_STORYREVIEW)->where('story')->eq($storyID)->andWhere('version')->eq($oldStory->version)->fetchPairs('reviewer', 'result'); - $reviewedBy = explode(',', trim($story->reviewedBy, ',')); + $reviewedBy = explode(',', trim($story->reviewedBy, ',')); if(!array_diff(array_keys($reviewerList), $reviewedBy)) { - $story->status = $this->setStatusByReviewRules($reviewerList); + $story->status = $this->setStatusByReviewRules($reviewerList) ? $story->status : $oldStory->status; if($story->status == 'closed') { $story->closedBy = $this->app->user->account; @@ -1261,28 +1262,32 @@ class storyModel extends model $actions = array(); $this->loadModel('action'); - $oldStories = $this->getByList($storyIdList); + $oldStories = $this->getByList($storyIdList); + $hasResult = $this->dao->select('story,version,result')->from(TABLE_STORYREVIEW)->where('story')->in($storyIdList)->andWhere('reviewer')->eq($this->app->user->account)->andWhere('result')->ne('')->orderBy('version')->fetchAll('story'); + $reviewerList = $this->dao->select('story,reviewer,result,version')->from(TABLE_STORYREVIEW)->where('story')->in($storyIdList)->orderBy('version')->fetchGroup('story', 'reviewer'); foreach($storyIdList as $storyID) { $oldStory = $oldStories[$storyID]; if($oldStory->status != 'draft' and $oldStory->status != 'changed') continue; - $hasResult = $this->dao->select('result')->from(TABLE_STORYREVIEW)->where('story')->eq($storyID)->andWhere('version')->eq($oldStory->version)->andWhere('reviewer')->eq($this->app->user->account)->fetch('result'); - if($hasResult) continue; + if(isset($hasResult[$storyID])) continue; $story = new stdClass(); $story->reviewedDate = $now; $story->lastEditedBy = $this->app->user->account; $story->lastEditedDate = $now; $story->reviewedBy = $oldStory->reviewedBy . ',' . $this->app->user->account; + $story->status = $oldStory->status; $this->dao->update(TABLE_STORYREVIEW)->set('result')->eq($result)->set('reviewDate')->eq($now)->where('story')->eq($storyID)->andWhere('version')->eq($oldStory->version)->andWhere('reviewer')->eq($this->app->user->account)->exec(); /* Update the story status by review rules. */ - $reviewerList = $this->dao->select('reviewer,result')->from(TABLE_STORYREVIEW)->where('story')->eq($storyID)->andWhere('version')->eq($oldStory->version)->fetchPairs('reviewer', 'result'); - $reviewedBy = explode(',', trim($story->reviewedBy, ',')); - if(!array_diff(array_keys($reviewerList), $reviewedBy)) + $reviewedBy = explode(',', trim($story->reviewedBy, ',')); + if(!array_diff(array_keys($reviewerList[$storyID]), $reviewedBy)) { - $status = $this->setStatusByReviewRules($reviewerList); + $reviewerPairs = array(); + foreach($reviewerList[$storyID] as $reviewer => $reviewInfo) $reviewerPairs[$reviewer] = $reviewInfo->result; + $reviewerPairs[$this->app->user->account] = $result; + $status = $this->setStatusByReviewRules($reviewerPairs); $story->status = $status ? $status : $oldStory->status; if($story->status == 'closed') { @@ -4229,6 +4234,7 @@ class storyModel extends model */ public function setStatusByReviewRules($reviewerList) { + $status = ''; $passCount = 0; $rejectCount = 0; $reviewRule = $this->config->story->reviewRules; From d83af0420def89c783fbd53ef4671f277b1959e6 Mon Sep 17 00:00:00 2001 From: hufangzhou <746775970@qq.com> Date: Fri, 4 Jun 2021 17:28:48 +0800 Subject: [PATCH 3/3] * Finish task #38898. --- module/story/model.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/story/model.php b/module/story/model.php index 9c59455c2d..707c9b0fe7 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -409,8 +409,8 @@ class storyModel extends model $story->category = $stories->category[$i]; $story->pri = $stories->pri[$i]; $story->estimate = $stories->estimate[$i]; - $story->status = ($this->app->openApp == project || $this->app->openApp == execution ||($stories->needReview[$i] == 0 and !$forceReview)) ? 'active' : 'draft'; - $story->stage = ($this->app->openApp == project || $this->app->openApp == execution) ? 'projected' : 'wait'; + $story->status = ($this->app->openApp == project or $this->app->openApp == execution or ($stories->needReview[$i] == 0 and !$forceReview)) ? 'active' : 'draft'; + $story->stage = ($this->app->openApp == project or $this->app->openApp == execution) ? 'projected' : 'wait'; $story->keywords = $stories->keywords[$i]; $story->sourceNote = $stories->sourceNote[$i]; $story->product = $productID;