diff --git a/module/bug/config.php b/module/bug/config.php index 2baa693b87..cb7d2b1508 100755 --- a/module/bug/config.php +++ b/module/bug/config.php @@ -91,6 +91,7 @@ $config->bug->actionList['confirm']['text'] = $lang->bug->abbr->confirmed $config->bug->actionList['confirm']['hint'] = $lang->bug->abbr->confirmed; $config->bug->actionList['confirm']['url'] = array('module' => 'bug', 'method' => 'confirm', 'params' => 'bugID={id}'); $config->bug->actionList['confirm']['data-toggle'] = 'modal'; +$config->bug->actionList['confirm']['class'] = 'bug-confirm-btn'; $config->bug->actionList['assignTo']['icon'] = 'hand-right'; $config->bug->actionList['assignTo']['text'] = $lang->bug->assignTo; @@ -103,12 +104,14 @@ $config->bug->actionList['resolve']['text'] = $lang->bug->resolve; $config->bug->actionList['resolve']['hint'] = $lang->bug->resolve; $config->bug->actionList['resolve']['url'] = array('module' => 'bug', 'method' => 'resolve', 'params' => 'bugID={id}'); $config->bug->actionList['resolve']['data-toggle'] = 'modal'; +$config->bug->actionList['resolve']['class'] = 'bug-resolve-btn'; $config->bug->actionList['close']['icon'] = 'off'; $config->bug->actionList['close']['text'] = $lang->bug->close; $config->bug->actionList['close']['hint'] = $lang->bug->close; $config->bug->actionList['close']['url'] = array('module' => 'bug', 'method' => 'close', 'params' => 'bugID={id}'); $config->bug->actionList['close']['data-toggle'] = 'modal'; +$config->bug->actionList['close']['class'] = 'bug-close-btn'; $config->bug->actionList['activate']['icon'] = 'magic'; $config->bug->actionList['activate']['text'] = $lang->bug->activate; diff --git a/module/bug/control.php b/module/bug/control.php index 24c3ab1219..37a4a29ac9 100755 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -67,7 +67,14 @@ class bug extends control $objectID = ($tab == 'project' or $tab == 'execution') ? $this->session->{$tab} : 0; if($tab == 'project' or $tab == 'execution') { - $products = $this->product->getProducts($objectID, $mode, '', false); + if(common::isTutorialMode()) + { + $products = $this->loadModel('tutorial')->getProductPairs(); + } + else + { + $products = $this->product->getProducts($objectID, $mode, '', false); + } } else { diff --git a/module/bug/model.php b/module/bug/model.php index 68e14e0e37..adcad3ec41 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -151,6 +151,8 @@ class bugModel extends model */ public function getByID(int $bugID, bool $setImgSize = false): object|false { + if(common::isTutorialMode()) return $this->loadModel('tutorial')->getBug(); + $bug = $this->bugTao->fetchBugInfo($bugID); if(!$bug) return false; @@ -935,6 +937,8 @@ class bugModel extends model */ public function getExecutionBugs(int $executionID, int $productID = 0, string|int $branchID = 'all', string|array $builds = '0', string $type = '', int $param = 0, string $orderBy = 'id_desc', string $excludeBugs = '', object $pager = null): array { + if(common::isTutorialMode()) return $this->loadModel('tutorial')->getBugs(); + if(strpos($orderBy, 'pri_') !== false) $orderBy = str_replace('pri_', 'priOrder_', $orderBy); if(strpos($orderBy, 'severity_') !== false) $orderBy = str_replace('severity_', 'severityOrder_', $orderBy); diff --git a/module/bug/zen.php b/module/bug/zen.php index 117d7cb7e0..2d672bdc89 100644 --- a/module/bug/zen.php +++ b/module/bug/zen.php @@ -536,7 +536,7 @@ class bugZen extends bug $this->view->executionID = $output['executionID']; } $execution = $this->dao->findById($this->session->execution)->from(TABLE_EXECUTION)->fetch(); - if($execution->type == 'kanban') $this->assignKanbanVars($execution, $output); + if(!empty($execution) && $execution->type == 'kanban') $this->assignKanbanVars($execution, $output); } elseif($this->app->tab == 'project') { diff --git a/module/execution/ui/bug.html.php b/module/execution/ui/bug.html.php index 49355d870e..a8e08581cb 100644 --- a/module/execution/ui/bug.html.php +++ b/module/execution/ui/bug.html.php @@ -33,7 +33,7 @@ if($canExportBug) $exportItem = array if($canCreateBug) $createItem = array ( 'icon' => 'plus', - 'class' => 'primary', + 'class' => 'primary createBug-btn', 'text' => $lang->bug->create, 'data-app' => 'execution', 'url' => $this->createLink('bug', 'create', "productID={$defaultProduct}&branch=0&extras=executionID={$execution->id}") diff --git a/module/tutorial/config/scrumProjectManage.php b/module/tutorial/config/scrumProjectManage.php index 1dc95ea57f..a9d13883c3 100644 --- a/module/tutorial/config/scrumProjectManage.php +++ b/module/tutorial/config/scrumProjectManage.php @@ -599,4 +599,107 @@ $scrumProjectManage->tasks['manageTest']['steps'][] = array( 'desc' => $lang->tutorial->scrumProjectManage->manageTest->step27->desc ); +$scrumProjectManage->tasks['manageBug'] = array(); +$scrumProjectManage->tasks['manageBug']['name'] = 'manageBug'; +$scrumProjectManage->tasks['manageBug']['title'] = $lang->tutorial->scrumProjectManage->manageBug->title; +$scrumProjectManage->tasks['manageBug']['startUrl'] = array('execution', 'task', 'executionID=3'); +$scrumProjectManage->tasks['manageBug']['steps'] = array(); + +$scrumProjectManage->tasks['manageBug']['steps'][] = array( + 'type' => 'clickNavbar', + 'target' => 'qa', + 'page' => 'execution-task', + 'app' => 'execution', + 'title' => $lang->tutorial->scrumProjectManage->manageBug->step1->name, + 'desc' => $lang->tutorial->scrumProjectManage->manageBug->step1->desc +); + +$scrumProjectManage->tasks['manageBug']['steps'][] = array( + 'type' => 'click', + 'target' => '#actionBar a.createBug-btn', + 'page' => 'execution-bug', + 'url' => array('execution', 'bug', 'executionID=3'), + 'title' => $lang->tutorial->scrumProjectManage->manageBug->step2->name, + 'desc' => $lang->tutorial->scrumProjectManage->manageBug->step2->desc +); + +$scrumProjectManage->tasks['manageBug']['steps'][] = array( + 'type' => 'form', + 'page' => 'bug-create', + 'title' => $lang->tutorial->scrumProjectManage->manageBug->step3->name +); + +$scrumProjectManage->tasks['manageBug']['steps'][] = array( + 'type' => 'saveForm', + 'page' => 'bug-create', + 'title' => $lang->tutorial->scrumProjectManage->manageBug->step4->name, + 'desc' => $lang->tutorial->scrumProjectManage->manageBug->step4->desc +); + +$scrumProjectManage->tasks['manageBug']['steps'][] = array( + 'type' => 'click', + 'target' => 'div.dtable-cells div[data-col="actions"][data-row="1"] a.bug-confirm-btn', + 'page' => 'execution-bug', + 'url' => array('execution', 'bug', 'executionID=3'), + 'title' => $lang->tutorial->scrumProjectManage->manageBug->step5->name, + 'desc' => $lang->tutorial->scrumProjectManage->manageBug->step5->desc +); + +$scrumProjectManage->tasks['manageBug']['steps'][] = array( + 'type' => 'form', + 'page' => 'execution-bug', + 'title' => $lang->tutorial->scrumProjectManage->manageBug->step6->name +); + +$scrumProjectManage->tasks['manageBug']['steps'][] = array( + 'type' => 'saveForm', + 'page' => 'execution-bug', + 'title' => $lang->tutorial->scrumProjectManage->manageBug->step7->name, + 'desc' => $lang->tutorial->scrumProjectManage->manageBug->step7->desc +); + +$scrumProjectManage->tasks['manageBug']['steps'][] = array( + 'type' => 'click', + 'target' => 'div.dtable-cells div[data-col="actions"][data-row="1"] a.bug-resolve-btn', + 'page' => 'execution-bug', + 'url' => array('execution', 'bug', 'executionID=3'), + 'title' => $lang->tutorial->scrumProjectManage->manageBug->step8->name, + 'desc' => $lang->tutorial->scrumProjectManage->manageBug->step8->desc +); + +$scrumProjectManage->tasks['manageBug']['steps'][] = array( + 'type' => 'form', + 'page' => 'execution-bug', + 'title' => $lang->tutorial->scrumProjectManage->manageBug->step9->name +); + +$scrumProjectManage->tasks['manageBug']['steps'][] = array( + 'type' => 'saveForm', + 'page' => 'execution-bug', + 'title' => $lang->tutorial->scrumProjectManage->manageBug->step10->name, + 'desc' => $lang->tutorial->scrumProjectManage->manageBug->step10->desc +); + +$scrumProjectManage->tasks['manageBug']['steps'][] = array( + 'type' => 'click', + 'target' => 'div.dtable-cells div[data-col="actions"][data-row="2"] a.bug-close-btn', + 'page' => 'execution-bug', + 'url' => array('execution', 'bug', 'executionID=3'), + 'title' => $lang->tutorial->scrumProjectManage->manageBug->step11->name, + 'desc' => $lang->tutorial->scrumProjectManage->manageBug->step11->desc +); + +$scrumProjectManage->tasks['manageBug']['steps'][] = array( + 'type' => 'form', + 'page' => 'execution-bug', + 'title' => $lang->tutorial->scrumProjectManage->manageBug->step12->name +); + +$scrumProjectManage->tasks['manageBug']['steps'][] = array( + 'type' => 'saveForm', + 'page' => 'execution-bug', + 'title' => $lang->tutorial->scrumProjectManage->manageBug->step13->name, + 'desc' => $lang->tutorial->scrumProjectManage->manageBug->step13->desc +); + $config->tutorial->guides[$scrumProjectManage->name] = $scrumProjectManage; diff --git a/module/tutorial/lang/zh-cn.php b/module/tutorial/lang/zh-cn.php index 7118828d14..d3f2b3dbd3 100644 --- a/module/tutorial/lang/zh-cn.php +++ b/module/tutorial/lang/zh-cn.php @@ -378,8 +378,8 @@ $lang->tutorial->scrumProjectManage->manageBug = new stdClass(); $lang->tutorial->scrumProjectManage->manageBug->title = 'Bug管理'; $lang->tutorial->scrumProjectManage->manageBug->step1 = new stdClass(); -$lang->tutorial->scrumProjectManage->manageBug->step1->name = '点击Bug'; -$lang->tutorial->scrumProjectManage->manageBug->step1->desc = '可以在这里管理Bug'; +$lang->tutorial->scrumProjectManage->manageBug->step1->name = '点击测试'; +$lang->tutorial->scrumProjectManage->manageBug->step1->desc = '可以在这里进行Bug管理'; $lang->tutorial->scrumProjectManage->manageBug->step2 = new stdClass(); $lang->tutorial->scrumProjectManage->manageBug->step2->name = '点击提bug'; diff --git a/module/tutorial/model.php b/module/tutorial/model.php index 4d66033805..dbd30c4156 100644 --- a/module/tutorial/model.php +++ b/module/tutorial/model.php @@ -922,4 +922,109 @@ class tutorialModel extends model $testreports[$testreport->id] = $testreport; return $testreports; } + + /** + * 获取新手模式Bug。 + * Get bug. + * + * @access public + * @return object + */ + public function getBug(): object + { + $bug = new stdClass(); + $bug->id = 1; + $bug->project = 2; + $bug->product = 1; + $bug->injection = 0; + $bug->identify = 0; + $bug->branch = 0; + $bug->module = 0; + $bug->execution = 3; + $bug->plan = 0; + $bug->story = 0; + $bug->storyVersion = 0; + $bug->task = 0; + $bug->toTask = 0; + $bug->toStory = 0; + $bug->title = 'Test bug-active'; + $bug->keywords = ''; + $bug->severity = 3; + $bug->pri = 3; + $bug->type = 'codeerror'; + $bug->os = ''; + $bug->browser = ''; + $bug->hardware = ''; + $bug->found = ''; + $bug->steps = ''; + $bug->status = 'active'; + $bug->subStatus = ''; + $bug->color = ''; + $bug->confirmed = 0; + $bug->activatedCount= 0; + $bug->activatedDate = ''; + $bug->feedbackBy = ''; + $bug->notifyEmail = ''; + $bug->mailto = ''; + $bug->openedBy = ''; + $bug->openedDate = ''; + $bug->openedBuild = '1'; + $bug->assignedTo = 'Test'; + $bug->assignedDate = ''; + $bug->deadline = ''; + $bug->resolvedBy = ''; + $bug->resolution = ''; + $bug->resolvedBuild = ''; + $bug->resolvedDate = ''; + $bug->closedBy = ''; + $bug->closedDate = ''; + $bug->duplicateBug = 0; + $bug->relatedBug = ''; + $bug->case = 0; + $bug->caseVersion = 0; + $bug->feedback = 0; + $bug->result = 0; + $bug->repo = 0; + $bug->mr = 0; + $bug->entry = ''; + $bug->lines = ''; + $bug->v1 = ''; + $bug->v2 = ''; + $bug->repoType = ''; + $bug->issueKey = ''; + $bug->testtask = 0; + $bug->lastEditedBy = ''; + $bug->lastEditedDate= ''; + $bug->deleted = 0; + $bug->priOrder = 3; + $bug->severityOrder = 3; + $bug->isParent = ''; + return $bug; + + } + + /** + * 获取新手模式Bug列表。 + * Get bugs. + * + * @access public + * @return array + */ + public function getBugs(): array + { + $activeBug = $this->getBug(); + $activeBug->id = 1; + $activeBug->status = 'active'; + $activeBug->title = 'Test bug-active'; + + $resolvedBug = $this->getBug(); + $resolvedBug->id = 2; + $resolvedBug->status = 'resolved'; + $resolvedBug->title = 'Test bug-resolved'; + + $bugs = array(); + $bugs[$activeBug->id] = $activeBug; + $bugs[$resolvedBug->id] = $resolvedBug; + return $bugs; + } }