* Finish task #110602.

This commit is contained in:
tanghucheng
2024-01-18 11:07:16 +08:00
parent d4682415f4
commit 1a49c4d848
13 changed files with 161 additions and 45 deletions
+2
View File
@@ -227,6 +227,7 @@ class bug extends control
$branchTagOption[$branchInfo->id] = $branchInfo->name . ($branchInfo->status == 'closed' ? ' (' . $this->lang->branch->statusList['closed'] . ')' : '');
}
}
if($this->config->edition == 'ipd') $bugs = $this->loadModel('story')->getAffectObject($bugs, 'bug');
/* Set view. */
$this->view->title = $productName . $this->lang->colon . $this->lang->bug->common;
@@ -935,6 +936,7 @@ class bug extends control
$this->session->set("project", key($projects), 'project');
$this->executeHooks($bugID);
if($this->config->edition == 'ipd') $bug = $this->loadModel('story')->getAffectObject('', 'bug', $bug);
/* Header and positon. */
$this->view->title = "BUG #$bug->id $bug->title - " . $product->name;
+4
View File
@@ -232,6 +232,7 @@ class execution extends control
$this->config->execution->search['onMenuBar'] = 'yes';
if(!$execution->multiple) unset($this->config->execution->search['fields']['execution']);
$this->execution->buildTaskSearchForm($executionID, $this->executions, $queryID, $actionURL, $modules);
if($this->config->edition == 'ipd') $tasks = $this->loadModel('story')->getAffectObject($tasks, 'task');
/* Assign. */
$this->view->tasks = $tasks;
@@ -1150,6 +1151,8 @@ class execution extends control
$tree = $moduleID ? $this->tree->getByID($moduleID) : '';
$showModule = !empty($this->config->datatable->executionBug->showModule) ? $this->config->datatable->executionBug->showModule : '';
if($this->config->edition == 'ipd') $bugs = $this->loadModel('story')->getAffectObject($bugs, 'bug');
/* Assign. */
$this->view->title = $title;
@@ -1244,6 +1247,7 @@ class execution extends control
$moduleTree = $this->tree->getTreeMenu($productID, 'case', 0, array('treeModel', 'createCaseLink'), array('projectID' => $executionID, 'productID' => $productID), $branchID);
}
$tree = $moduleID ? $this->tree->getByID($moduleID) : '';
if($this->config->edition == 'ipd') $cases = $this->loadModel('story')->getAffectObject($cases, 'case');
$this->view->title = $this->lang->execution->testcase;
$this->view->executionID = $executionID;
+44 -40
View File
@@ -709,27 +709,28 @@ $config->group->package->manageStory = new stdclass();
$config->group->package->manageStory->order = 10;
$config->group->package->manageStory->subset = 'story';
$config->group->package->manageStory->privs = array();
$config->group->package->manageStory->privs['story-create'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 0, 'depend' => array(), 'recommend' => array('story-activate', 'story-assignTo', 'story-batchCreate', 'story-change', 'story-close', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relation', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-batchCreate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 1, 'depend' => array('product-browse'), 'recommend' => array('story-create'));
$config->group->package->manageStory->privs['story-edit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 2, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-batchEdit', 'story-change', 'story-close', 'story-create', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-change'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 4, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-submitReview'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 5, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved'));
$config->group->package->manageStory->privs['story-recall'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 6, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-close'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 7, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-batchClose'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 8, 'depend' => array('product-browse'), 'recommend' => array('story-close'));
$config->group->package->manageStory->privs['story-batchChangePlan'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 9, 'depend' => array('product-browse'), 'recommend' => array('story-edit'));
$config->group->package->manageStory->privs['story-batchChangeStage'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 10, 'depend' => array('product-browse'), 'recommend' => array('story-edit'));
$config->group->package->manageStory->privs['story-assignTo'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 11, 'depend' => array('product-browse'), 'recommend' => array('story-activate', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-batchAssignTo'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 12, 'depend' => array('product-browse'), 'recommend' => array('story-edit'));
$config->group->package->manageStory->privs['story-activate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 13, 'depend' => array('story-view'), 'recommend' => array('story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-linkStory'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 14, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-batchChangeBranch'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 15, 'depend' => array('product-browse'), 'recommend' => array('story-edit'));
$config->group->package->manageStory->privs['story-batchChangeModule'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 16, 'depend' => array('product-browse'), 'recommend' => array('story-edit'));
$config->group->package->manageStory->privs['story-processStoryChange'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 17, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-recall', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-linkStories'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 18, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-relieved'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 20, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-submitReview'));
$config->group->package->manageStory->privs['story-batchEdit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 3, 'depend' => array('product-browse'), 'recommend' => array('story-edit'));
$config->group->package->manageStory->privs['story-relation'] = array('edition' => 'max,ipd', 'vision' => 'rnd', 'order' => 19, 'depend' => array('story-view'), 'recommend' => array());
$config->group->package->manageStory->privs['story-create'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 0, 'depend' => array(), 'recommend' => array('story-activate', 'story-assignTo', 'story-batchCreate', 'story-change', 'story-close', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relation', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-batchCreate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 1, 'depend' => array('product-browse'), 'recommend' => array('story-create'));
$config->group->package->manageStory->privs['story-edit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 2, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-batchEdit', 'story-change', 'story-close', 'story-create', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-change'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 4, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-submitReview'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 5, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved'));
$config->group->package->manageStory->privs['story-recall'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 6, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-close'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 7, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-batchClose'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 8, 'depend' => array('product-browse'), 'recommend' => array('story-close'));
$config->group->package->manageStory->privs['story-batchChangePlan'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 9, 'depend' => array('product-browse'), 'recommend' => array('story-edit'));
$config->group->package->manageStory->privs['story-batchChangeStage'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 10, 'depend' => array('product-browse'), 'recommend' => array('story-edit'));
$config->group->package->manageStory->privs['story-assignTo'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 11, 'depend' => array('product-browse'), 'recommend' => array('story-activate', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-batchAssignTo'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 12, 'depend' => array('product-browse'), 'recommend' => array('story-edit'));
$config->group->package->manageStory->privs['story-activate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 13, 'depend' => array('story-view'), 'recommend' => array('story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-linkStory'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 14, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-batchChangeBranch'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 15, 'depend' => array('product-browse'), 'recommend' => array('story-edit'));
$config->group->package->manageStory->privs['story-batchChangeModule'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 16, 'depend' => array('product-browse'), 'recommend' => array('story-edit'));
$config->group->package->manageStory->privs['story-processStoryChange'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 17, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-recall', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-linkStories'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 18, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-relieved', 'story-submitReview'));
$config->group->package->manageStory->privs['story-relieved'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 20, 'depend' => array('story-view'), 'recommend' => array('story-activate', 'story-assignTo', 'story-change', 'story-close', 'story-create', 'story-edit', 'story-linkStories', 'story-linkStory', 'story-processStoryChange', 'story-recall', 'story-submitReview'));
$config->group->package->manageStory->privs['story-batchEdit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 3, 'depend' => array('product-browse'), 'recommend' => array('story-edit'));
$config->group->package->manageStory->privs['story-relation'] = array('edition' => 'max,ipd', 'vision' => 'rnd', 'order' => 19, 'depend' => array('story-view'), 'recommend' => array());
$config->group->package->manageStory->privs['story-confirmdemandretract'] = array('edition' => 'ipd', 'vision' => 'rnd', 'order' => 19, 'depend' => array('story-view'), 'recommend' => array());
$config->group->package->importStory = new stdclass();
$config->group->package->importStory->order = 20;
@@ -1053,6 +1054,7 @@ $config->group->package->manageTask->privs['task-deleteEstimate'] = arra
$config->group->package->manageTask->privs['task-batchChangeModule'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 23, 'depend' => array('execution-task'), 'recommend' => array('task-edit'));
$config->group->package->manageTask->privs['task-batchCancel'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite', 'order' => 11, 'depend' => array('execution-task'), 'recommend' => array('task-cancel'));
$config->group->package->manageTask->privs['task-confirmdesignchange'] = array('edition' => 'max,ipd', 'vision' => 'rnd', 'order' => 19, 'depend' => array('execution-task'), 'recommend' => array('task-edit'));
$config->group->package->manageTask->privs['task-confirmdemandretract'] = array('edition' => 'ipd', 'vision' => 'rnd,or', 'order' => 24, 'depend' => array('execution-task'), 'recommend' => array('task-edit'));
$config->group->package->deleteTask = new stdclass();
$config->group->package->deleteTask->order = 20;
@@ -1769,25 +1771,26 @@ $config->group->package->manageBug = new stdclass();
$config->group->package->manageBug->order = 10;
$config->group->package->manageBug->subset = 'bug';
$config->group->package->manageBug->privs = array();
$config->group->package->manageBug->privs['bug-create'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 0, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchCreate', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-edit', 'bug-linkBugs', 'bug-resolve'));
$config->group->package->manageBug->privs['bug-batchCreate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 1, 'depend' => array(), 'recommend' => array('bug-create'));
$config->group->package->manageBug->privs['bug-batchEdit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 3, 'depend' => array(), 'recommend' => array('bug-edit'));
$config->group->package->manageBug->privs['bug-confirmBug'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 4, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchConfirm', 'bug-close', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve'));
$config->group->package->manageBug->privs['bug-batchConfirm'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 5, 'depend' => array(), 'recommend' => array('bug-confirmBug'));
$config->group->package->manageBug->privs['bug-edit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 2, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchEdit', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-linkBugs', 'bug-resolve'));
$config->group->package->manageBug->privs['bug-assignTo'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 6, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-batchAssignTo', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve'));
$config->group->package->manageBug->privs['bug-batchAssignTo'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 7, 'depend' => array(), 'recommend' => array('bug-assignTo'));
$config->group->package->manageBug->privs['bug-resolve'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 8, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchResolve', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs'));
$config->group->package->manageBug->privs['bug-batchResolve'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 9, 'depend' => array(), 'recommend' => array('bug-resolve'));
$config->group->package->manageBug->privs['bug-batchClose'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 11, 'depend' => array(), 'recommend' => array('bug-close'));
$config->group->package->manageBug->privs['bug-batchActivate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 13, 'depend' => array(), 'recommend' => array('bug-activate'));
$config->group->package->manageBug->privs['bug-activate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 12, 'depend' => array('bug-view'), 'recommend' => array('bug-assignTo', 'bug-batchActivate', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve'));
$config->group->package->manageBug->privs['bug-close'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 10, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchClose', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve'));
$config->group->package->manageBug->privs['bug-confirmStoryChange'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 14, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-close', 'bug-confirmBug', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve'));
$config->group->package->manageBug->privs['bug-linkBugs'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 15, 'depend' => array('bug-edit'), 'recommend' => array());
$config->group->package->manageBug->privs['bug-batchChangeModule'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 16, 'depend' => array(), 'recommend' => array('bug-edit'));
$config->group->package->manageBug->privs['bug-batchChangeBranch'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 17, 'depend' => array(), 'recommend' => array('bug-edit'));
$config->group->package->manageBug->privs['bug-batchChangePlan'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 18, 'depend' => array(), 'recommend' => array('bug-edit'));
$config->group->package->manageBug->privs['bug-create'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 0, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchCreate', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-edit', 'bug-linkBugs', 'bug-resolve'));
$config->group->package->manageBug->privs['bug-batchCreate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 1, 'depend' => array(), 'recommend' => array('bug-create'));
$config->group->package->manageBug->privs['bug-batchEdit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 3, 'depend' => array(), 'recommend' => array('bug-edit'));
$config->group->package->manageBug->privs['bug-confirmBug'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 4, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchConfirm', 'bug-close', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve'));
$config->group->package->manageBug->privs['bug-batchConfirm'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 5, 'depend' => array(), 'recommend' => array('bug-confirmBug'));
$config->group->package->manageBug->privs['bug-edit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 2, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchEdit', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-linkBugs', 'bug-resolve'));
$config->group->package->manageBug->privs['bug-assignTo'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 6, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-batchAssignTo', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve'));
$config->group->package->manageBug->privs['bug-batchAssignTo'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 7, 'depend' => array(), 'recommend' => array('bug-assignTo'));
$config->group->package->manageBug->privs['bug-resolve'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 8, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchResolve', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs'));
$config->group->package->manageBug->privs['bug-batchResolve'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 9, 'depend' => array(), 'recommend' => array('bug-resolve'));
$config->group->package->manageBug->privs['bug-batchClose'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 11, 'depend' => array(), 'recommend' => array('bug-close'));
$config->group->package->manageBug->privs['bug-batchActivate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 13, 'depend' => array(), 'recommend' => array('bug-activate'));
$config->group->package->manageBug->privs['bug-activate'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 12, 'depend' => array('bug-view'), 'recommend' => array('bug-assignTo', 'bug-batchActivate', 'bug-close', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve'));
$config->group->package->manageBug->privs['bug-close'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 10, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-batchClose', 'bug-confirmBug', 'bug-confirmStoryChange', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve'));
$config->group->package->manageBug->privs['bug-confirmStoryChange'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 14, 'depend' => array('bug-view'), 'recommend' => array('bug-activate', 'bug-assignTo', 'bug-close', 'bug-confirmBug', 'bug-create', 'bug-edit', 'bug-linkBugs', 'bug-resolve'));
$config->group->package->manageBug->privs['bug-linkBugs'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 15, 'depend' => array('bug-edit'), 'recommend' => array());
$config->group->package->manageBug->privs['bug-batchChangeModule'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 16, 'depend' => array(), 'recommend' => array('bug-edit'));
$config->group->package->manageBug->privs['bug-batchChangeBranch'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 17, 'depend' => array(), 'recommend' => array('bug-edit'));
$config->group->package->manageBug->privs['bug-batchChangePlan'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 18, 'depend' => array(), 'recommend' => array('bug-edit'));
$config->group->package->manageBug->privs['bug-confirmdemandretract'] = array('edition' => 'ipd', 'vision' => 'rnd,or', 'order' => 19, 'depend' => array(), 'recommend' => array('bug-edit'));
$config->group->package->deleteBug = new stdclass();
$config->group->package->deleteBug->order = 20;
@@ -1834,6 +1837,7 @@ $config->group->package->manageCase->privs['testcase-confirmLibcaseChange'] =
$config->group->package->manageCase->privs['testcase-ignoreLibcaseChange'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 15, 'depend' => array('testcase-view'), 'recommend' => array('testcase-confirmChange', 'testcase-confirmLibcaseChange', 'testcase-confirmStoryChange', 'testcase-create', 'testcase-edit'));
$config->group->package->manageCase->privs['testcase-submit'] = array('edition' => 'max,ipd', 'vision' => 'rnd', 'order' => 4, 'depend' => array('testcase-view'), 'recommend' => array('testcase-confirmChange', 'testcase-confirmLibcaseChange', 'testcase-confirmStoryChange', 'testcase-create', 'testcase-edit', 'testcase-ignoreLibcaseChange', 'testcase-linkBugs', 'testcase-linkCases'));
$config->group->package->manageCase->privs['testcase-updateOrder'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 30, 'depend' => array(), 'recommend' => array());
$config->group->package->manageCase->privs['testcase-confirmdemandretract'] = array('edition' => 'ipd', 'vision' => 'rnd,or', 'order' => 30, 'depend' => array(), 'recommend' => array());
$config->group->package->importCase = new stdclass();
$config->group->package->importCase->order = 25;
+4
View File
@@ -364,6 +364,7 @@ EOF;
$currentMethod = $this->app->rawMethod;
$actionURL = $this->createLink('my', $currentMethod, "mode=story&type=bysearch&param=myQueryID&orderBy={$orderBy}&recTotal={$recTotal}&recPerPage={$recPerPage}&pageID={$pageID}");
$this->my->buildStorySearchForm($queryID, $actionURL, $currentMethod);
if($this->config->edition == 'ipd') $stories = $this->loadModel('story')->getAffectObject($stories, 'story');
/* Assign. */
$this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->story;
@@ -520,6 +521,7 @@ EOF;
$actionURL = $this->createLink('my', $this->app->rawMethod, "mode=task&browseType=bySearch&queryID=myQueryID");
$this->my->buildTaskSearchForm($queryID, $actionURL);
if($this->config->edition == 'ipd') $tasks = $this->loadModel('story')->getAffectObject($tasks, 'task');
/* Assign. */
$this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->task;
@@ -585,6 +587,7 @@ EOF;
$actionURL = $this->createLink('my', $this->app->rawMethod, "mode=bug&browseType=bySearch&queryID=myQueryID");
$this->my->buildBugSearchForm($queryID, $actionURL);
if($this->config->edition == 'ipd') $bugs = $this->loadModel('story')->getAffectObject($bugs, 'bug');
/* assign. */
$this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->bug;
@@ -696,6 +699,7 @@ EOF;
$currentMethod = $this->app->rawMethod;
$actionURL = $this->createLink('my', $currentMethod, "mode=testcase&type=bysearch&param=myQueryID&orderBy={$orderBy}&recTotal={$recTotal}&recPerPage={$recPerPage}&pageID={$pageID}");
$this->my->buildTestcaseSearchForm($queryID, $actionURL, $currentMethod);
if($this->config->edition == 'ipd') $cases = $this->loadModel('story')->getAffectObject($cases, 'case');
/* Assign. */
$this->view->title = $this->lang->my->common . $this->lang->colon . $this->lang->my->myTestCase;
+6 -1
View File
@@ -145,7 +145,12 @@
<td><?php echo zget($lang->bug->resolutionList, $bug->resolution);?></td>
<td class='c-actions'>
<?php
if($canBeChanged)
if(!empty($bug->retractConfirm))
{
$retractObject = join(',', $bug->retractObject);
common::printIcon('bug', 'confirmDemandRetract', "objectID=$bug->id&object=bug&extra=$retractObject", $bug, 'browse', 'search', '', 'iframe', true);
}
else if($canBeChanged)
{
$params = "bugID=$bug->id";
common::printIcon('bug', 'confirmBug', $params, $bug, 'list', 'ok', '', 'iframe', true, '', '', $bug->project);
+6 -1
View File
@@ -100,7 +100,12 @@
<td class='c-stage'><?php echo zget($lang->story->stageList, $story->stage);?></td>
<td class='c-actions'>
<?php
if($canBeChanged)
if(!empty($story->retractConfirm))
{
$retractObject = join(',', $story->retractObject);
common::printIcon('story', 'confirmDemandRetract', "objectID=$story->id&object=story&extra=$retractObject", $story, 'browse', 'search', '', 'iframe', true);
}
else if($canBeChanged)
{
$vars = "story={$story->id}";
echo common::buildIconButton('story', 'change', $vars, $story, 'list', 'alter', '', 'iframe', true);
+6 -1
View File
@@ -138,7 +138,12 @@
<?php
if($canBeChanged)
{
if($task->needConfirm)
if(!empty($task->retractConfirm))
{
$retractObject = join(',', $task->retractObject);
common::printIcon('task', 'confirmDemandRetract', "objectID=$task->id&object=task&extra=$retractObject", $task, 'browse', 'search', '', 'iframe', true);
}
else if($task->needConfirm)
{
$this->lang->task->confirmStoryChange = $this->lang->confirm;
common::printIcon('task', 'confirmStoryChange', "taskid=$task->id", '', 'list', '', 'hiddenwin', '', '', '', '', $task->project);
+6 -1
View File
@@ -112,7 +112,12 @@
<td class='result-testcase <?php echo $case->lastRunResult;?>'><?php echo $case->lastRunResult ? $lang->testcase->resultList[$case->lastRunResult] : $lang->testcase->unexecuted;?></td>
<td class='c-actions'>
<?php
if($canBeChanged)
if(!empty($case->retractConfirm))
{
$retractObject = join(',', $case->retractObject);
common::printIcon('testcase', 'confirmDemandRetract', "objectID=$case->id&object=case&extra=$retractObject", $case, 'browse', 'search', '', 'iframe', true);
}
else if($canBeChanged)
{
$disabled = (isset($case->lastRunResult) and $case->lastRunResult != 'fail') ? 'disabled' : '';
common::printIcon('testcase', 'createBug', "product=$case->product&branch=$case->branch&extra=caseID=$caseID,version=$case->version,runID=$runID", $case, 'list', 'bug', '', "iframe $disabled", 'true', "data-app='qa' data-toggle=''");
+1
View File
@@ -1285,6 +1285,7 @@ class project extends control
$taskList = $taskIdList ? $this->loadModel('task')->getByList($taskIdList) : array();
$showModule = !empty($this->config->datatable->projectBug->showModule) ? $this->config->datatable->projectBug->showModule : '';
if($this->config->edition == 'ipd') $bugs = $this->loadModel('story')->getAffectObject($bugs, 'bug');
/* Assign. */
$this->view->title = $title;
+1 -1
View File
@@ -1435,7 +1435,7 @@ class story extends control
public function view($storyID, $version = 0, $param = 0, $storyType = 'story')
{
$story = $this->story->getById($storyID, $version, true);
if($this->config->edition == 'ipd') $story = $this->story->getAffectObject('', $story->type, $story);
if($this->config->edition == 'ipd' and $story->type == 'story') $story = $this->story->getAffectObject('', $story->type, $story);
$linkModuleName = $this->config->vision == 'lite' ? 'project' : 'product';
if(!$story)
+77
View File
@@ -6991,4 +6991,81 @@ class storyModel extends model
return !dao::isError();
}
/**
* Get affect objects.
*
* @param mixed $objects
* @param string $objectType
* @param string $object
* @access public
* @return void
*/
public function getAffectObject($objects = '', $objectType = '', $objectInfo = '')
{
if(empty($objects) and empty($objectInfo)) return $objects;
if(empty($objects) and $objectInfo) $objects = array($objectInfo->id => $objectInfo);
$objectIDList = array();
$storyIDList = array();
foreach($objects as $object)
{
$objectIDList[] = $object->id;
if($objectType == 'story') $storyIDList[] = $object->id;
if($objectType != 'story') $storyIDList[] = $object->story;
$object->retractConfirm = false;
$object->retractObject = array();
}
/* 获取需要确认的用户需求id。 */
$URs = $this->getStoryRelationByIds($storyIDList, 'story');
$URIds = implode(',', $URs);
if(!$URIds) return $objects;
/* 获取已经撤回的用户需求。*/
$requirements = $this->dao->select('id')->from(TABLE_STORY)
->where('id')->in($URIds)
->andWhere('retractedBy')->ne('')
->fetchPairs('id');
if(!$requirements) return $objects;
/* 获取已经确认过的对象。*/
$actions = $this->dao->select('*')->from(TABLE_ACTION)
->where('objectType')->eq($objectType)
->andWhere('objectID')->in($objectIDList)
->andWhere('action')->eq('confirmedretract')
->fetchPairs('objectID', 'extra');
foreach($actions as $objecyID => $action) $actions[$objecyID] = explode(',', $action);
/* 获取需要进行确认操作的研发需求 => 用户需求。*/
$confirmObjects = array();
foreach($requirements as $requirement)
{
foreach($URs as $storyID => $UR)
{
if (strpos($UR, (string) $requirement) !== false) $confirmObjects[$storyID][$requirement] = $requirement;
}
}
/* 将确认信息插入到objects中并且过滤掉已经确认的用户需求。*/
foreach($objects as $object)
{
$confirmed = array();
if(isset($actions[$object->id])) $confirmed = $actions[$object->id]; // 已经确认的用户需求
if($objectType == 'story' and isset($confirmObjects[$object->id]))
{
$object->retractObject = array_diff($confirmObjects[$object->id], $confirmed);
if($object->retractObject) $object->retractConfirm = true;
}
else if($objectType != 'story' and isset($confirmObjects[$object->story]))
{
$object->retractObject = array_diff($confirmObjects[$object->story], $confirmed);
if($object->retractObject) $object->retractConfirm = true;
}
}
if($objectInfo) return $objects[$objectInfo->id];
return $objects;
}
}
+2
View File
@@ -1003,6 +1003,8 @@ class task extends control
$this->executeHooks($taskID);
if($this->config->edition == 'ipd') $task = $this->loadModel('story')->getAffectObject('', 'task', $task);
$title = "TASK#$task->id $task->name / $execution->name";
$position[] = html::a($this->createLink('execution', 'browse', "executionID=$task->execution"), $execution->name);
$position[] = $this->lang->task->common;
+2
View File
@@ -183,6 +183,7 @@ class testcase extends control
$sceneCount = count($scenes);
$caseCount = 0;
/* Process case for check story changed. */
if($this->config->edition == 'ipd') $cases = $this->loadModel('story')->getAffectObject($cases, 'case');
$cases = $this->loadModel('story')->checkNeedConfirm($cases);
$cases = $this->testcase->appendData($cases);
foreach($cases as $case)
@@ -906,6 +907,7 @@ class testcase extends control
$case->caseFails = $caseFails;
$this->executeHooks($caseID);
if($this->config->edition == 'ipd') $case = $this->loadModel('story')->getAffectObject('', 'case', $case);
$this->view->position[] = $this->lang->testcase->common;
$this->view->position[] = $this->lang->testcase->view;