Merge branch '15.0.beta3' of https://gitlab.zcorp.cc/easycorp/zentaopms into 15.0.beta3

This commit is contained in:
tianshujie98
2021-06-04 17:30:43 +08:00
2 changed files with 19 additions and 13 deletions
+17 -11
View File
@@ -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;
@@ -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;
+2 -2
View File
@@ -105,9 +105,9 @@ $status = $this->session->testTaskVersionStatus;
echo '<div id="action-divider">';
common::printIcon('testtask', 'cases', "taskID=$task->id", $task, 'list', 'sitemap');
common::printIcon('testtask', 'linkCase', "taskID=$task->id&type=all&param=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 '</div>';
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))
{