From a7d0471e566902fcf49eee90f6a45648007a83c4 Mon Sep 17 00:00:00 2001 From: xieqiyu Date: Mon, 2 Sep 2024 15:05:57 +0800 Subject: [PATCH] * [task#126375,doing,3.5h] Add the tutorial of branchManage for product. --- module/branch/model.php | 2 + module/branch/ui/manage.html.php | 2 +- module/product/model.php | 2 +- module/tutorial/config/productManage.php | 359 +++++++++++++++++------ module/tutorial/config/zenguides.php | 3 +- module/tutorial/lang/zh-cn.php | 82 ++++++ module/tutorial/model.php | 47 +++ 7 files changed, 407 insertions(+), 90 deletions(-) diff --git a/module/branch/model.php b/module/branch/model.php index 22fe39d6a7..48ee546b90 100644 --- a/module/branch/model.php +++ b/module/branch/model.php @@ -55,6 +55,8 @@ class branchModel extends model */ public function getList(int $productID, int $executionID = 0, string $browseType = 'active', string $orderBy = 'order', object|null $pager = null, bool $withMainBranch = true): array { + if(common::isTutorialMode()) return $this->loadModel('tutorial')->getBranches(); + $product = $this->loadModel('product')->getById($productID); if(!$product) return array(); diff --git a/module/branch/ui/manage.html.php b/module/branch/ui/manage.html.php index e36643965c..9958f1ab24 100644 --- a/module/branch/ui/manage.html.php +++ b/module/branch/ui/manage.html.php @@ -20,7 +20,7 @@ featureBar $canCreate = hasPriv('branch', 'create'); $canBatchEdit = hasPriv('branch', 'batchEdit'); $canMerge = hasPriv('branch', 'mergeBranch'); -if($canCreate) $createItem = array('icon' => 'plus', 'class' => 'primary', 'text' => $lang->branch->create, 'url' => $this->createLink('branch', 'create', "productID={$product->id}", '', true), 'data-toggle' => 'modal'); +if($canCreate) $createItem = array('icon' => 'plus', 'class' => 'primary branch-create-btn', 'text' => $lang->branch->create, 'url' => $this->createLink('branch', 'create', "productID={$product->id}", '', true), 'data-toggle' => 'modal'); toolbar ( !empty($createItem) ? item(set($createItem)) : null, diff --git a/module/product/model.php b/module/product/model.php index 67b4c0a175..8668566c3d 100755 --- a/module/product/model.php +++ b/module/product/model.php @@ -1453,7 +1453,7 @@ class productModel extends model common::setMenuVars('product', $productID, $params); if(strpos($extra, 'requirement') !== false) unset($this->lang->product->moreSelects['willclose']); - $product = $this->fetchByID($productID); + $product = $this->getByID($productID); if(!$product) return false; /* 设置1.5级导航数据。*/ diff --git a/module/tutorial/config/productManage.php b/module/tutorial/config/productManage.php index 017268b798..adfa53b6b0 100644 --- a/module/tutorial/config/productManage.php +++ b/module/tutorial/config/productManage.php @@ -2,21 +2,22 @@ global $lang; $productManage = new stdClass(); -$productManage->name = 'productManage'; -$productManage->title = $lang->tutorial->productManage->title; -$productManage->icon = 'product text-special'; -$productManage->type = 'basic'; -$productManage->modules = 'product,tree,story,productplan,release'; -$productManage->app = 'product'; -$productManage->tasks = array(); +$productManage->basic = new stdClass(); +$productManage->basic->name = 'productManageBasic'; +$productManage->basic->title = $lang->tutorial->productManage->title; +$productManage->basic->icon = 'product text-special'; +$productManage->basic->type = 'basic'; +$productManage->basic->modules = 'product,tree,story,productplan,release,branch'; +$productManage->basic->app = 'product'; +$productManage->basic->tasks = array(); -$productManage->tasks['addProduct'] = array(); -$productManage->tasks['addProduct']['name'] = 'addProduct'; -$productManage->tasks['addProduct']['title'] = $lang->tutorial->productManage->addProduct->title; -$productManage->tasks['addProduct']['startUrl'] = array('product', 'all'); -$productManage->tasks['addProduct']['steps'] = array(); +$productManage->basic->tasks['addProduct'] = array(); +$productManage->basic->tasks['addProduct']['name'] = 'addProduct'; +$productManage->basic->tasks['addProduct']['title'] = $lang->tutorial->productManage->addProduct->title; +$productManage->basic->tasks['addProduct']['startUrl'] = array('product', 'all'); +$productManage->basic->tasks['addProduct']['steps'] = array(); -$productManage->tasks['addProduct']['steps'][] = array( +$productManage->basic->tasks['addProduct']['steps'][] = array( 'type' => 'click', 'target' => '#actionBar a.create-product-btn', 'page' => 'product-all', @@ -24,26 +25,26 @@ $productManage->tasks['addProduct']['steps'][] = array( 'desc' => $lang->tutorial->productManage->addProduct->step1->desc ); -$productManage->tasks['addProduct']['steps'][] = array( +$productManage->basic->tasks['addProduct']['steps'][] = array( 'type' => 'form', 'page' => 'product-create', 'title' => $lang->tutorial->productManage->addProduct->step2->name ); -$productManage->tasks['addProduct']['steps'][] = array( +$productManage->basic->tasks['addProduct']['steps'][] = array( 'type' => 'saveForm', 'page' => 'product-create', 'title' => $lang->tutorial->productManage->addProduct->step3->name, 'desc' => $lang->tutorial->productManage->addProduct->step3->desc ); -$productManage->tasks['moduleManage'] = array(); -$productManage->tasks['moduleManage']['name'] = 'moduleManage'; -$productManage->tasks['moduleManage']['title'] = $lang->tutorial->productManage->moduleManage->title; -$productManage->tasks['moduleManage']['startUrl'] = array('product', 'all'); -$productManage->tasks['moduleManage']['steps'] = array(); +$productManage->basic->tasks['moduleManage'] = array(); +$productManage->basic->tasks['moduleManage']['name'] = 'moduleManage'; +$productManage->basic->tasks['moduleManage']['title'] = $lang->tutorial->productManage->moduleManage->title; +$productManage->basic->tasks['moduleManage']['startUrl'] = array('product', 'all'); +$productManage->basic->tasks['moduleManage']['steps'] = array(); -$productManage->tasks['moduleManage']['steps'][] = array( +$productManage->basic->tasks['moduleManage']['steps'][] = array( 'type' => 'click', 'target' => '#products div.dtable-body div[data-col="name"][data-row="1"] a', 'page' => 'product-all', @@ -51,7 +52,7 @@ $productManage->tasks['moduleManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->moduleManage->step1->desc ); -$productManage->tasks['moduleManage']['steps'][] = array( +$productManage->basic->tasks['moduleManage']['steps'][] = array( 'type' => 'click', 'target' => '#moduleMenu a[href*="tree"]', 'page' => 'product-browse', @@ -59,26 +60,26 @@ $productManage->tasks['moduleManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->moduleManage->step2->desc ); -$productManage->tasks['moduleManage']['steps'][] = array( +$productManage->basic->tasks['moduleManage']['steps'][] = array( 'type' => 'form', 'page' => 'tree-browse', 'title' => $lang->tutorial->productManage->moduleManage->step3->name ); -$productManage->tasks['moduleManage']['steps'][] = array( +$productManage->basic->tasks['moduleManage']['steps'][] = array( 'type' => 'saveForm', 'page' => 'tree-browse', 'title' => $lang->tutorial->productManage->moduleManage->step4->name, 'desc' => $lang->tutorial->productManage->moduleManage->step4->desc ); -$productManage->tasks['storyManage'] = array(); -$productManage->tasks['storyManage']['name'] = 'storyManage'; -$productManage->tasks['storyManage']['title'] = $lang->tutorial->productManage->storyManage->title; -$productManage->tasks['storyManage']['startUrl'] = array('product', 'dashboard', 'productID=1'); -$productManage->tasks['storyManage']['steps'] = array(); +$productManage->basic->tasks['storyManage'] = array(); +$productManage->basic->tasks['storyManage']['name'] = 'storyManage'; +$productManage->basic->tasks['storyManage']['title'] = $lang->tutorial->productManage->storyManage->title; +$productManage->basic->tasks['storyManage']['startUrl'] = array('product', 'dashboard', 'productID=1'); +$productManage->basic->tasks['storyManage']['steps'] = array(); -$productManage->tasks['storyManage']['steps'][] = array( +$productManage->basic->tasks['storyManage']['steps'][] = array( 'type' => 'clickNavbar', 'target' => 'epic', 'page' => 'product-dashboard', @@ -86,7 +87,7 @@ $productManage->tasks['storyManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->storyManage->step1->desc ); -$productManage->tasks['storyManage']['steps'][] = array( +$productManage->basic->tasks['storyManage']['steps'][] = array( 'type' => 'click', 'target' => '#actionBar a.create-story-btn', 'page' => 'product-browse', @@ -94,20 +95,20 @@ $productManage->tasks['storyManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->storyManage->step2->desc ); -$productManage->tasks['storyManage']['steps'][] = array( +$productManage->basic->tasks['storyManage']['steps'][] = array( 'type' => 'form', 'page' => 'story-create', 'title' => $lang->tutorial->productManage->storyManage->step3->name ); -$productManage->tasks['storyManage']['steps'][] = array( +$productManage->basic->tasks['storyManage']['steps'][] = array( 'type' => 'saveForm', 'page' => 'story-create', 'title' => $lang->tutorial->productManage->storyManage->step4->name, 'desc' => $lang->tutorial->productManage->storyManage->step4->desc ); -$productManage->tasks['storyManage']['steps'][] = array( +$productManage->basic->tasks['storyManage']['steps'][] = array( 'type' => 'click', 'target' => 'div.dtable div[data-col="actions"][data-row="1"] a.epic-createRequirement-btn', 'page' => 'product-browse', @@ -116,21 +117,21 @@ $productManage->tasks['storyManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->storyManage->step5->desc ); -$productManage->tasks['storyManage']['steps'][] = array( +$productManage->basic->tasks['storyManage']['steps'][] = array( 'type' => 'form', 'target' => 'div.panel-body div.form-batch-container', 'page' => 'requirement-batchCreate', 'title' => $lang->tutorial->productManage->storyManage->step6->name ); -$productManage->tasks['storyManage']['steps'][] = array( +$productManage->basic->tasks['storyManage']['steps'][] = array( 'type' => 'saveForm', 'page' => 'requirement-batchCreate', 'title' => $lang->tutorial->productManage->storyManage->step7->name, 'desc' => $lang->tutorial->productManage->storyManage->step7->desc ); -$productManage->tasks['storyManage']['steps'][] = array( +$productManage->basic->tasks['storyManage']['steps'][] = array( 'type' => 'click', 'target' => 'div.dtable div[data-col="actions"][data-row="2"] a.requirement-createStory-btn', 'page' => 'product-browse', @@ -139,21 +140,21 @@ $productManage->tasks['storyManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->storyManage->step8->desc ); -$productManage->tasks['storyManage']['steps'][] = array( +$productManage->basic->tasks['storyManage']['steps'][] = array( 'type' => 'form', 'target' => 'div.panel-body div.form-batch-container', 'page' => 'story-batchCreate', 'title' => $lang->tutorial->productManage->storyManage->step9->name ); -$productManage->tasks['storyManage']['steps'][] = array( +$productManage->basic->tasks['storyManage']['steps'][] = array( 'type' => 'saveForm', 'page' => 'story-batchCreate', 'title' => $lang->tutorial->productManage->storyManage->step10->name, 'desc' => $lang->tutorial->productManage->storyManage->step10->desc ); -$productManage->tasks['storyManage']['steps'][] = array( +$productManage->basic->tasks['storyManage']['steps'][] = array( 'type' => 'click', 'target' => 'div.dtable div[data-col="actions"][data-row="4"] a.story-review-btn', 'page' => 'product-browse', @@ -162,20 +163,20 @@ $productManage->tasks['storyManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->storyManage->step11->desc ); -$productManage->tasks['storyManage']['steps'][] = array( +$productManage->basic->tasks['storyManage']['steps'][] = array( 'type' => 'form', 'page' => 'story-review', 'title' => $lang->tutorial->productManage->storyManage->step12->name ); -$productManage->tasks['storyManage']['steps'][] = array( +$productManage->basic->tasks['storyManage']['steps'][] = array( 'type' => 'saveForm', 'page' => 'story-review', 'title' => $lang->tutorial->productManage->storyManage->step13->name, 'desc' => $lang->tutorial->productManage->storyManage->step13->desc ); -$productManage->tasks['storyManage']['steps'][] = array( +$productManage->basic->tasks['storyManage']['steps'][] = array( 'type' => 'click', 'target' => 'div.dtable div[data-col="actions"][data-row="3"] a.story-change-btn', 'page' => 'product-browse', @@ -184,20 +185,20 @@ $productManage->tasks['storyManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->storyManage->step14->desc ); -$productManage->tasks['storyManage']['steps'][] = array( +$productManage->basic->tasks['storyManage']['steps'][] = array( 'type' => 'form', 'page' => 'story-change', 'title' => $lang->tutorial->productManage->storyManage->step15->name ); -$productManage->tasks['storyManage']['steps'][] = array( +$productManage->basic->tasks['storyManage']['steps'][] = array( 'type' => 'saveForm', 'page' => 'story-change', 'title' => $lang->tutorial->productManage->storyManage->step16->name, 'desc' => $lang->tutorial->productManage->storyManage->step16->desc ); -$productManage->tasks['storyManage']['steps'][] = array( +$productManage->basic->tasks['storyManage']['steps'][] = array( 'type' => 'clickNavbar', 'target' => 'track', 'page' => 'product-browse', @@ -206,13 +207,13 @@ $productManage->tasks['storyManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->storyManage->step17->desc ); -$productManage->tasks['planManage'] = array(); -$productManage->tasks['planManage']['name'] = 'planManage'; -$productManage->tasks['planManage']['title'] = $lang->tutorial->productManage->planManage->title; -$productManage->tasks['planManage']['startUrl'] = array('product', 'browse', 'productID=1&branch=&browseType=all¶m=0&storyType=epic'); -$productManage->tasks['planManage']['steps'] = array(); +$productManage->basic->tasks['planManage'] = array(); +$productManage->basic->tasks['planManage']['name'] = 'planManage'; +$productManage->basic->tasks['planManage']['title'] = $lang->tutorial->productManage->planManage->title; +$productManage->basic->tasks['planManage']['startUrl'] = array('product', 'browse', 'productID=1&branch=&browseType=all¶m=0&storyType=epic'); +$productManage->basic->tasks['planManage']['steps'] = array(); -$productManage->tasks['planManage']['steps'][] = array( +$productManage->basic->tasks['planManage']['steps'][] = array( 'type' => 'clickNavbar', 'target' => 'plan', 'page' => 'product-browse', @@ -220,7 +221,7 @@ $productManage->tasks['planManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->planManage->step1->desc ); -$productManage->tasks['planManage']['steps'][] = array( +$productManage->basic->tasks['planManage']['steps'][] = array( 'type' => 'click', 'target' => '#actionBar a.plan-create-btn', 'page' => 'productplan-browse', @@ -229,20 +230,20 @@ $productManage->tasks['planManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->planManage->step2->desc ); -$productManage->tasks['planManage']['steps'][] = array( +$productManage->basic->tasks['planManage']['steps'][] = array( 'type' => 'form', 'page' => 'productplan-create', 'title' => $lang->tutorial->productManage->planManage->step3->name ); -$productManage->tasks['planManage']['steps'][] = array( +$productManage->basic->tasks['planManage']['steps'][] = array( 'type' => 'saveForm', 'page' => 'productplan-create', 'title' => $lang->tutorial->productManage->planManage->step4->name, 'desc' => $lang->tutorial->productManage->planManage->step4->desc ); -$productManage->tasks['planManage']['steps'][] = array( +$productManage->basic->tasks['planManage']['steps'][] = array( 'type' => 'click', 'target' => 'div.dtable div[data-col="title"][data-row="1"] a', 'page' => 'productplan-browse', @@ -251,7 +252,7 @@ $productManage->tasks['planManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->planManage->step5->desc ); -$productManage->tasks['planManage']['steps'][] = array( +$productManage->basic->tasks['planManage']['steps'][] = array( 'type' => 'click', 'target' => '#stories button.linkStory-btn', 'page' => 'productplan-view', @@ -259,14 +260,14 @@ $productManage->tasks['planManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->planManage->step6->desc ); -$productManage->tasks['planManage']['steps'][] = array( +$productManage->basic->tasks['planManage']['steps'][] = array( 'type' => 'selectRow', 'target' => 'div.dtable div[data-col="id"][data-row="2"]', 'page' => 'productplan-view', 'title' => $lang->tutorial->productManage->planManage->step7->name ); -$productManage->tasks['planManage']['steps'][] = array( +$productManage->basic->tasks['planManage']['steps'][] = array( 'type' => 'click', 'target' => 'div.dtable-footer button.linkObjectBtn', 'page' => 'productplan-view', @@ -274,7 +275,7 @@ $productManage->tasks['planManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->planManage->step8->desc ); -$productManage->tasks['planManage']['steps'][] = array( +$productManage->basic->tasks['planManage']['steps'][] = array( 'type' => 'click', 'target' => 'li[data-key="bugs"] a', 'page' => 'productplan-view', @@ -282,7 +283,7 @@ $productManage->tasks['planManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->planManage->step9->desc ); -$productManage->tasks['planManage']['steps'][] = array( +$productManage->basic->tasks['planManage']['steps'][] = array( 'type' => 'click', 'target' => '#bugs button.linkBug-btn', 'page' => 'productplan-view', @@ -291,14 +292,14 @@ $productManage->tasks['planManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->planManage->step10->desc ); -$productManage->tasks['planManage']['steps'][] = array( +$productManage->basic->tasks['planManage']['steps'][] = array( 'type' => 'selectRow', 'target' => 'div.dtable div[data-col="id"][data-row="1"]', 'page' => 'productplan-view', 'title' => $lang->tutorial->productManage->planManage->step11->name ); -$productManage->tasks['planManage']['steps'][] = array( +$productManage->basic->tasks['planManage']['steps'][] = array( 'type' => 'click', 'target' => 'div.dtable-footer button.linkObjectBtn', 'page' => 'productplan-view', @@ -306,13 +307,13 @@ $productManage->tasks['planManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->planManage->step12->desc ); -$productManage->tasks['releaseManage'] = array(); -$productManage->tasks['releaseManage']['name'] = 'releaseManage'; -$productManage->tasks['releaseManage']['title'] = $lang->tutorial->productManage->releaseManage->title; -$productManage->tasks['releaseManage']['startUrl'] = array('product', 'browse', 'productID=1&branch=&browseType=all¶m=0&storyType=epic'); -$productManage->tasks['releaseManage']['steps'] = array(); +$productManage->basic->tasks['releaseManage'] = array(); +$productManage->basic->tasks['releaseManage']['name'] = 'releaseManage'; +$productManage->basic->tasks['releaseManage']['title'] = $lang->tutorial->productManage->releaseManage->title; +$productManage->basic->tasks['releaseManage']['startUrl'] = array('product', 'browse', 'productID=1&branch=&browseType=all¶m=0&storyType=epic'); +$productManage->basic->tasks['releaseManage']['steps'] = array(); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'clickNavbar', 'target' => 'release', 'page' => 'product-browse', @@ -320,7 +321,7 @@ $productManage->tasks['releaseManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->releaseManage->step1->desc ); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'click', 'target' => '#actionBar a', 'page' => 'release-browse', @@ -329,20 +330,20 @@ $productManage->tasks['releaseManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->releaseManage->step2->desc ); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'form', 'page' => 'release-create', 'title' => $lang->tutorial->productManage->releaseManage->step3->name ); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'saveForm', 'page' => 'release-create', 'title' => $lang->tutorial->productManage->releaseManage->step4->name, 'desc' => $lang->tutorial->productManage->releaseManage->step4->desc ); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'click', 'target' => 'div.dtable div[data-col="name"][data-row="1"] a', 'page' => 'release-browse', @@ -351,7 +352,7 @@ $productManage->tasks['releaseManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->releaseManage->step5->desc ); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'click', 'target' => '#finishedStory button.linkStory-btn', 'page' => 'release-view', @@ -359,14 +360,14 @@ $productManage->tasks['releaseManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->releaseManage->step6->desc ); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'selectRow', 'target' => 'div.dtable div[data-col="id"][data-row="1"]', 'page' => 'release-view', 'title' => $lang->tutorial->productManage->releaseManage->step7->name ); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'click', 'target' => 'div.dtable-footer button.linkObjectBtn', 'page' => 'release-view', @@ -374,7 +375,7 @@ $productManage->tasks['releaseManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->releaseManage->step8->desc ); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'click', 'target' => 'li[data-key="resolvedBug"] a', 'page' => 'release-view', @@ -382,7 +383,7 @@ $productManage->tasks['releaseManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->releaseManage->step9->desc ); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'click', 'target' => '#resolvedBug button.linkBug-btn', 'page' => 'release-view', @@ -390,14 +391,14 @@ $productManage->tasks['releaseManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->releaseManage->step10->desc ); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'selectRow', 'target' => 'div.dtable div[data-col="id"][data-row="1"]', 'page' => 'release-view', 'title' => $lang->tutorial->productManage->releaseManage->step11->name ); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'click', 'target' => 'div.dtable-footer button.linkObjectBtn', 'page' => 'release-view', @@ -405,7 +406,7 @@ $productManage->tasks['releaseManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->releaseManage->step12->desc ); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'click', 'target' => 'li[data-key="leftBug"] a', 'page' => 'release-view', @@ -413,7 +414,7 @@ $productManage->tasks['releaseManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->releaseManage->step13->desc ); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'click', 'target' => '#leftBug button.leftBug-btn', 'page' => 'release-view', @@ -421,14 +422,14 @@ $productManage->tasks['releaseManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->releaseManage->step14->desc ); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'selectRow', 'target' => 'div.dtable div[data-col="id"][data-row="1"]', 'page' => 'release-view', 'title' => $lang->tutorial->productManage->releaseManage->step15->name ); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'click', 'target' => 'div.dtable-footer button.linkObjectBtn', 'page' => 'release-view', @@ -436,7 +437,7 @@ $productManage->tasks['releaseManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->releaseManage->step16->desc ); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'click', 'target' => 'div.detail-header a.publish-btn', 'page' => 'release-view', @@ -444,15 +445,199 @@ $productManage->tasks['releaseManage']['steps'][] = array( 'desc' => $lang->tutorial->productManage->releaseManage->step17->desc ); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'form', 'page' => 'release-view', 'title' => $lang->tutorial->productManage->releaseManage->step18->name ); -$productManage->tasks['releaseManage']['steps'][] = array( +$productManage->basic->tasks['releaseManage']['steps'][] = array( 'type' => 'saveForm', 'page' => 'release-view', 'title' => $lang->tutorial->productManage->releaseManage->step19->name, 'desc' => $lang->tutorial->productManage->releaseManage->step19->desc ); + +$productManage->advance = new stdClass(); +$productManage->advance->name = 'productManageAdvance'; +$productManage->advance->title = $lang->tutorial->productManage->title; +$productManage->advance->icon = 'product text-special'; +$productManage->advance->type = 'advance'; +$productManage->advance->modules = 'product,tree,story,productplan,release'; +$productManage->advance->app = 'product'; +$productManage->advance->tasks = array(); + +$productManage->advance->tasks['lineManage'] = array(); +$productManage->advance->tasks['lineManage']['name'] = 'lineManage'; +$productManage->advance->tasks['lineManage']['title'] = $lang->tutorial->productManage->lineManage->title; +$productManage->advance->tasks['lineManage']['startUrl'] = array('product', 'all'); +$productManage->advance->tasks['lineManage']['steps'] = array(); + +$productManage->advance->tasks['lineManage']['steps'][] = array( + 'type' => 'openApp', + 'app' => 'product', + 'title' => $lang->tutorial->productManage->lineManage->step1->name, + 'desc' => $lang->tutorial->productManage->lineManage->step1->desc +); + +$productManage->advance->tasks['lineManage']['steps'][] = array( + 'type' => 'click', + 'target' => '#actionBar button[data-id="manageLineModal"]', + 'page' => 'product-all', + 'title' => $lang->tutorial->productManage->lineManage->step2->name, + 'desc' => $lang->tutorial->productManage->lineManage->step2->desc +); + +$productManage->advance->tasks['lineManage']['steps'][] = array( + 'type' => 'form', + 'page' => 'product-all', + 'title' => $lang->tutorial->productManage->lineManage->step3->name +); + +$productManage->advance->tasks['lineManage']['steps'][] = array( + 'type' => 'saveForm', + 'page' => 'product-all', + 'title' => $lang->tutorial->productManage->lineManage->step4->name, + 'desc' => $lang->tutorial->productManage->lineManage->step4->desc +); + +$productManage->advance->tasks['addProduct'] = $productManage->basic->tasks['addProduct']; +$productManage->advance->tasks['moduleManage'] = $productManage->basic->tasks['moduleManage']; +$productManage->advance->tasks['storyManage'] = $productManage->basic->tasks['storyManage']; +$productManage->advance->tasks['planManage'] = $productManage->basic->tasks['planManage']; +$productManage->advance->tasks['releaseManage'] = $productManage->basic->tasks['releaseManage']; + +$productManage->advance->tasks['branchManage'] = array(); +$productManage->advance->tasks['branchManage']['name'] = 'branchManage'; +$productManage->advance->tasks['branchManage']['title'] = $lang->tutorial->productManage->branchManage->title; +$productManage->advance->tasks['branchManage']['startUrl'] = array('product', 'all'); +$productManage->advance->tasks['branchManage']['steps'] = array(); + +$productManage->advance->tasks['branchManage']['steps'][] = array( + 'type' => 'openApp', + 'app' => 'product', + 'title' => $lang->tutorial->productManage->branchManage->step1->name, + 'desc' => $lang->tutorial->productManage->branchManage->step1->desc +); + +$productManage->advance->tasks['branchManage']['steps'][] = array( + 'type' => 'click', + 'target' => '#actionBar a.create-product-btn', + 'page' => 'product-all', + 'title' => $lang->tutorial->productManage->branchManage->step2->name, + 'desc' => $lang->tutorial->productManage->branchManage->step2->desc +); + +$productManage->advance->tasks['branchManage']['steps'][] = array( + 'type' => 'form', + 'page' => 'product-create', + 'title' => $lang->tutorial->productManage->branchManage->step3->name +); + +$productManage->advance->tasks['branchManage']['steps'][] = array( + 'type' => 'saveForm', + 'page' => 'product-create', + 'title' => $lang->tutorial->productManage->branchManage->step4->name +); + +$productManage->advance->tasks['branchManage']['steps'][] = array( + 'type' => 'clickNavbar', + 'target' => 'settings', + 'page' => 'product-browse', + 'url' => array('product', 'browse', 'productID=1'), + 'title' => $lang->tutorial->productManage->branchManage->step5->name, + 'desc' => $lang->tutorial->productManage->branchManage->step5->desc +); + +$productManage->advance->tasks['branchManage']['steps'][] = array( + 'type' => 'clickMainNavbar', + 'target' => 'branch', + 'page' => 'product-view', + 'url' => array('product', 'view', 'productID=1'), + 'title' => $lang->tutorial->productManage->branchManage->step6->name, + 'desc' => $lang->tutorial->productManage->branchManage->step6->desc +); + +$productManage->advance->tasks['branchManage']['steps'][] = array( + 'type' => 'click', + 'target' => '#actionBar a.branch-create-btn', + 'page' => 'branch-manage', + 'url' => array('branch', 'manage', 'productID=1'), + 'title' => $lang->tutorial->productManage->branchManage->step7->name, + 'desc' => $lang->tutorial->productManage->branchManage->step7->desc +); + +$productManage->advance->tasks['branchManage']['steps'][] = array( + 'type' => 'form', + 'target' => '#createBranchForm', + 'page' => 'branch-manage', + 'title' => $lang->tutorial->productManage->branchManage->step8->name +); + +$productManage->advance->tasks['branchManage']['steps'][] = array( + 'type' => 'saveForm', + 'target' => '#createBranchForm button[type="submit"]', + 'page' => 'branch-manage', + 'title' => $lang->tutorial->productManage->branchManage->step9->name, + 'desc' => $lang->tutorial->productManage->branchManage->step9->desc +); + +$productManage->advance->tasks['branchManage']['steps'][] = array( + 'type' => 'selectRow', + 'target' => 'div.dtable div[data-row="1"][data-type="checkID"]', + 'page' => 'branch-manage', + 'url' => array('branch', 'manage', 'productID=1'), + 'title' => $lang->tutorial->productManage->branchManage->step10->name +); + +$productManage->advance->tasks['branchManage']['steps'][] = array( + 'type' => 'click', + 'target' => 'div.dtable-footer #mergeBranch', + 'page' => 'branch-manage', + 'title' => $lang->tutorial->productManage->branchManage->step11->name +); + +$productManage->advance->tasks['branchManage']['steps'][] = array( + 'type' => 'form', + 'target' => '#mergeForm', + 'page' => 'branch-manage', + 'title' => $lang->tutorial->productManage->branchManage->step12->name +); + +$productManage->advance->tasks['branchManage']['steps'][] = array( + 'type' => 'saveForm', + 'target' => '#mergeForm button[type="submit"]', + 'page' => 'branch-manage', + 'title' => $lang->tutorial->productManage->branchManage->step13->name, + 'desc' => $lang->tutorial->productManage->branchManage->step13->desc +); + +$productManage->advance->tasks['branchManage']['steps'][] = array( + 'type' => 'clickNavbar', + 'target' => 'story', + 'page' => 'branch-manage', + 'url' => array('branch', 'manage', 'productID=1'), + 'title' => $lang->tutorial->productManage->branchManage->step14->name, + 'desc' => $lang->tutorial->productManage->branchManage->step14->desc +); + +$productManage->advance->tasks['branchManage']['steps'][] = array( + 'type' => 'click', + 'target' => '#actionBar a.create-story-btn', + 'page' => 'product-browse', + 'title' => $lang->tutorial->productManage->branchManage->step15->name, + 'desc' => $lang->tutorial->productManage->branchManage->step15->desc +); + +$productManage->advance->tasks['branchManage']['steps'][] = array( + 'type' => 'form', + 'page' => 'story-create', + 'title' => $lang->tutorial->productManage->branchManage->step16->name +); + +$productManage->advance->tasks['branchManage']['steps'][] = array( + 'type' => 'saveForm', + 'page' => 'story-create', + 'title' => $lang->tutorial->productManage->branchManage->step17->name, + 'desc' => $lang->tutorial->productManage->branchManage->step17->desc +); diff --git a/module/tutorial/config/zenguides.php b/module/tutorial/config/zenguides.php index 0c2d957903..46e75f26c5 100644 --- a/module/tutorial/config/zenguides.php +++ b/module/tutorial/config/zenguides.php @@ -5,7 +5,7 @@ $config->tutorial->guides = array(); /* Basic tutorial. */ $config->tutorial->guides[$accountManage->name] = $accountManage; -$config->tutorial->guides[$productManage->name] = $productManage; +$config->tutorial->guides[$productManage->basic->name] = $productManage->basic; $config->tutorial->guides[$scrumProjectManage->basic->name] = $scrumProjectManage->basic; $config->tutorial->guides[$waterfallProjectManage->basic->name] = $waterfallProjectManage->basic; $config->tutorial->guides[$kanbanProjectManage->basic->name] = $kanbanProjectManage->basic; @@ -14,6 +14,7 @@ $config->tutorial->guides[$testManage->name] = $testManage; /* Advance tutorial. */ $config->tutorial->guides[$programManage->name] = $programManage; +$config->tutorial->guides[$productManage->advance->name] = $productManage->advance; $config->tutorial->guides[$scrumProjectManage->advance->name] = $scrumProjectManage->advance; $config->tutorial->guides[$waterfallProjectManage->advance->name] = $waterfallProjectManage->advance; $config->tutorial->guides[$kanbanProjectManage->advance->name] = $kanbanProjectManage->advance; diff --git a/module/tutorial/lang/zh-cn.php b/module/tutorial/lang/zh-cn.php index 9e002effab..32cef80443 100644 --- a/module/tutorial/lang/zh-cn.php +++ b/module/tutorial/lang/zh-cn.php @@ -1291,6 +1291,88 @@ $lang->tutorial->productManage->releaseManage->step19 = new stdClass(); $lang->tutorial->productManage->releaseManage->step19->name = '保存表单'; $lang->tutorial->productManage->releaseManage->step19->desc = '保存后,需求会根据发布状态改变阶段'; +$lang->tutorial->productManage->lineManage = new stdClass(); +$lang->tutorial->productManage->lineManage->title = '产品线管理'; + +$lang->tutorial->productManage->lineManage->step1 = new stdClass(); +$lang->tutorial->productManage->lineManage->step1->name = '点击产品'; +$lang->tutorial->productManage->lineManage->step1->desc = '您可以在这里对产品进行维护管理'; + +$lang->tutorial->productManage->lineManage->step2 = new stdClass(); +$lang->tutorial->productManage->lineManage->step2->name = '点击产品线按钮'; +$lang->tutorial->productManage->lineManage->step2->desc = '点击维护产品线'; + +$lang->tutorial->productManage->lineManage->step3 = new stdClass(); +$lang->tutorial->productManage->lineManage->step3->name = '填写表单'; + +$lang->tutorial->productManage->lineManage->step4 = new stdClass(); +$lang->tutorial->productManage->lineManage->step4->name = '保存表单'; +$lang->tutorial->productManage->lineManage->step4->desc = '保存后在维护产品时可以选择对应的产品线'; + +$lang->tutorial->productManage->branchManage = new stdClass(); +$lang->tutorial->productManage->branchManage->title = '多分支/平台管理'; + +$lang->tutorial->productManage->branchManage->step1 = new stdClass(); +$lang->tutorial->productManage->branchManage->step1->name = '点击产品'; +$lang->tutorial->productManage->branchManage->step1->desc = '您可以在这里对产品进行维护管理'; + +$lang->tutorial->productManage->branchManage->step2 = new stdClass(); +$lang->tutorial->productManage->branchManage->step2->name = '点击添加产品'; +$lang->tutorial->productManage->branchManage->step2->desc = '点击添加产品'; + +$lang->tutorial->productManage->branchManage->step3 = new stdClass(); +$lang->tutorial->productManage->branchManage->step3->name = '填写表单'; + +$lang->tutorial->productManage->branchManage->step4 = new stdClass(); +$lang->tutorial->productManage->branchManage->step4->name = '保存表单'; + +$lang->tutorial->productManage->branchManage->step5 = new stdClass(); +$lang->tutorial->productManage->branchManage->step5->name = '点击设置'; +$lang->tutorial->productManage->branchManage->step5->desc = '点击维护产品的信息'; + +$lang->tutorial->productManage->branchManage->step6 = new stdClass(); +$lang->tutorial->productManage->branchManage->step6->name = '点击分支'; +$lang->tutorial->productManage->branchManage->step6->desc = '点击维护产品分支'; + +$lang->tutorial->productManage->branchManage->step7 = new stdClass(); +$lang->tutorial->productManage->branchManage->step7->name = '点击新建分支'; +$lang->tutorial->productManage->branchManage->step7->desc = '点击为产品添加新的分支'; + +$lang->tutorial->productManage->branchManage->step8 = new stdClass(); +$lang->tutorial->productManage->branchManage->step8->name = '填写表单'; + +$lang->tutorial->productManage->branchManage->step9 = new stdClass(); +$lang->tutorial->productManage->branchManage->step9->name = '保存表单'; +$lang->tutorial->productManage->branchManage->step9->desc = '保存后在分支列表查看分支'; + +$lang->tutorial->productManage->branchManage->step10 = new stdClass(); +$lang->tutorial->productManage->branchManage->step10->name = '勾选分支'; + +$lang->tutorial->productManage->branchManage->step11 = new stdClass(); +$lang->tutorial->productManage->branchManage->step11->name = '点击合并'; + +$lang->tutorial->productManage->branchManage->step12 = new stdClass(); +$lang->tutorial->productManage->branchManage->step12->name = '选择分支'; + +$lang->tutorial->productManage->branchManage->step13 = new stdClass(); +$lang->tutorial->productManage->branchManage->step13->name = '保存表单'; +$lang->tutorial->productManage->branchManage->step13->desc = '保存后分支下面对应的发布、计划、版本、模块、需求、Bug、用例都合并到新的分支下'; + +$lang->tutorial->productManage->branchManage->step14 = new stdClass(); +$lang->tutorial->productManage->branchManage->step14->name = '点击研发需求'; +$lang->tutorial->productManage->branchManage->step14->desc = '您可以在这里管理产品的研发需求'; + +$lang->tutorial->productManage->branchManage->step15 = new stdClass(); +$lang->tutorial->productManage->branchManage->step15->name = '点击提研发需求'; +$lang->tutorial->productManage->branchManage->step15->desc = '点击创建孪生需求'; + +$lang->tutorial->productManage->branchManage->step16 = new stdClass(); +$lang->tutorial->productManage->branchManage->step16->name = '填写表单'; + +$lang->tutorial->productManage->branchManage->step17 = new stdClass(); +$lang->tutorial->productManage->branchManage->step17->name = '保存表单'; +$lang->tutorial->productManage->branchManage->step17->desc = '保存后每个分支会建立一个需求,需求间互为孪生关系。孪生需求间除产品、分支、模块、计划、阶段字段外均保持同步,在需求详情页可以解除孪生关系。'; + $lang->tutorial->programManage = new stdClass(); $lang->tutorial->programManage->title = '项目集管理教程'; diff --git a/module/tutorial/model.php b/module/tutorial/model.php index f87ccf9194..e982638e68 100644 --- a/module/tutorial/model.php +++ b/module/tutorial/model.php @@ -91,6 +91,15 @@ class tutorialModel extends model $product->plans = array('1' => 'Test plan'); $product->totalEpics = 0; $product->totalRequirements = 0; + $product->feedback = 0; + $product->ticket = 0; + + list($guide, $guideTask, $guideStepIndex) = empty($_SERVER['HTTP_X_ZIN_TUTORIAL']) ? array('', '', '') : explode('-', $_SERVER['HTTP_X_ZIN_TUTORIAL']); + if($guide == 'productManageAdvance' && $guideTask == 'branchManage') + { + $product->type = 'branch'; + $product->name = 'Test branch product'; + } return $product; } @@ -1735,4 +1744,42 @@ class tutorialModel extends model return array(1 => $program); } + + /** + * 获取新手模式分支列表。 + * Get branches. + * + * @access public + * @return array + */ + public function getBranches(): array + { + $this->loadModel('branch'); + + $main = new stdClass(); + $main->id = 0; + $main->product = 1; + $main->name = $this->lang->branch->main; + $main->default = 1; + $main->status = 'active'; + $main->desc = $this->lang->branch->defaultBranch; + $main->createdDate = helper::today(); + $main->closedDate = ''; + $main->order = 0; + $main->deleted = 0; + + $branch = new stdClass(); + $branch->id = 1; + $branch->product = 1; + $branch->name = 'Test branch'; + $branch->default = 0; + $branch->status = 'active'; + $branch->desc = ''; + $branch->createdDate = helper::today(); + $branch->closedDate = ''; + $branch->order = 1; + $branch->deleted = 0; + + return array($main, $branch); + } }