* add new version and upgrade.

This commit is contained in:
王怡栋
2021-09-08 16:00:42 +08:00
parent 6fa640e5c6
commit d2403a6b8e
36 changed files with 191 additions and 114 deletions

View File

@@ -1 +1 @@
15.4
15.5

View File

@@ -16,7 +16,7 @@ if(!class_exists('config')){class config{}}
if(!function_exists('getWebRoot')){function getWebRoot(){}}
/* 基本设置。Basic settings. */
$config->version = '15.4'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it.
$config->version = '15.5'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it.
$config->charset = 'UTF-8'; // ZenTaoPHP的编码。 The encoding of ZenTaoPHP.
$config->cookieLife = time() + 2592000; // Cookie的生存时间。The cookie life time.
$config->timezone = 'Asia/Shanghai'; // 时区设置。 The time zone setting, for more see http://www.php.net/manual/en/timezones.php.

View File

@@ -268,8 +268,8 @@ $lang->action->label->hangup = '掛起了';
$lang->action->label->run = '執行了';
$lang->action->label->estimated = '估算了';
$lang->action->label->reviewpassed = '確認通過';
$lang->action->label->reviewrejected = '拒';
$lang->action->label->clarifyreviewed = '有待明確';
$lang->action->label->reviewrejected = '拒';
$lang->action->label->reviewclarified = '有待明確';
$lang->action->label->commitsummary = '提交培訓總結';
$lang->action->label->updatetrainee = '更新培訓人員';
@@ -483,7 +483,7 @@ $lang->action->label->testtask = '測試單|testtask|view|caseID=%s';
$lang->action->label->testsuite = '測試套件|testsuite|view|suiteID=%s';
$lang->action->label->caselib = '用例庫|caselib|view|libID=%s';
$lang->action->label->todo = '待辦|todo|view|todoID=%s';
$lang->action->label->doclib = '文檔庫|doc|objectLibs|type=%s&objectID=%s&libID=%s&docID=&version=&appendLib=%s';
$lang->action->label->doclib = '文檔庫|doc|tablecontents|type=%s&objectID=%s&libID=%s';
$lang->action->label->doc = '文檔|doc|view|docID=%s';
$lang->action->label->user = '用戶|user|view|account=%s';
$lang->action->label->testreport = '報告|testreport|view|report=%s';

View File

@@ -396,6 +396,7 @@ $lang->bug->featureBar['browse']['unclosed'] = $lang->bug->unclosed;
$lang->bug->featureBar['browse']['openedbyme'] = $lang->bug->openedByMe;
$lang->bug->featureBar['browse']['assigntome'] = $lang->bug->assignToMe;
$lang->bug->featureBar['browse']['resolvedbyme'] = $lang->bug->resolvedByMe;
$lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featureBar['browse']['more'] = $lang->more;

View File

@@ -400,6 +400,7 @@ $lang->bug->featureBar['browse']['toclosed'] = $lang->bug->toClosed;
$lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featureBar['browse']['more'] = $lang->more;
$lang->bug->moreSelects['unconfirmed'] = $lang->bug->unconfirmed;
$lang->bug->moreSelects['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->moreSelects['longlifebugs'] = $lang->bug->longLifeBugs;

View File

@@ -400,6 +400,7 @@ $lang->bug->featureBar['browse']['toclosed'] = $lang->bug->toClosed;
$lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featureBar['browse']['more'] = $lang->more;
$lang->bug->moreSelects['unconfirmed'] = $lang->bug->unconfirmed;
$lang->bug->moreSelects['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->moreSelects['longlifebugs'] = $lang->bug->longLifeBugs;

View File

@@ -38,8 +38,8 @@ $lang->profile = 'Profile';
$lang->changePassword = 'Password';
$lang->unfoldMenu = 'Unfold';
$lang->collapseMenu = 'Collapse';
$lang->tutorialAB = 'Tutorial';
$lang->preference = 'Preference';
$lang->tutorialAB = 'Tutorial';
$lang->runInfo = "<div class='row'><div class='u-1 a-center' id='debugbar'>Time %s MS, Memory %s KB, Query %s. </div></div>";
$lang->agreement = "I have read and agreed to the terms and conditions of <a href='http://zpl.pub/page/zplv12.html' target='_blank'> Z PUBLIC LICENSE 1.2 </a>. <span class='text-danger'>Without authorization, I should not remove, hide or cover any logos/links of ZenTao.</span>";
$lang->designedByAIUX = "<a href='https://api.zentao.net/goto.php?item=aiux' class='link-aiux' target='_blank'><i class='icon icon-aiux'></i> AIUX</a>";
@@ -245,6 +245,7 @@ $lang->devops->compile = 'Compile';
$lang->devops->mr = 'Merge Request';
$lang->devops->repo = 'Repo';
$lang->devops->rules = 'Rule';
$lang->devops->settings = 'Setting Merge Request';
$lang->admin->system = 'System';
$lang->admin->entry = 'Application';

View File

@@ -38,8 +38,8 @@ $lang->profile = '個人檔案';
$lang->changePassword = '修改密碼';
$lang->unfoldMenu = '展開導航';
$lang->collapseMenu = '收起導航';
$lang->tutorialAB = '新手引導';
$lang->preference = '個性化設置';
$lang->tutorialAB = '新手引導';
$lang->runInfo = "<div class='row'><div class='u-1 a-center' id='debugbar'>時間: %s 毫秒, 內存: %s KB, 查詢: %s. </div></div>";
$lang->agreement = "已閲讀並同意<a href='http://zpl.pub/page/zplv12.html' target='_blank'>《Z PUBLIC LICENSE授權協議1.2》</a>。<span class='text-danger'>未經許可,不得去除、隱藏或遮掩禪道軟件的任何標誌及連結。</span>";
$lang->designedByAIUX = "<a href='https://api.zentao.net/goto.php?item=aiux' class='link-aiux' target='_blank'><i class='icon icon-aiux'></i> 艾體驗設計</a>";
@@ -242,8 +242,10 @@ $lang->testcase->testsuite = '套件';
$lang->testcase->caselib = '用例庫';
$lang->devops->compile = '構建';
$lang->devops->mr = '合併請求';
$lang->devops->repo = '版本庫';
$lang->devops->rules = '指令';
$lang->devops->settings = '合併請求設置';
$lang->admin->system = '系統';
$lang->admin->entry = '應用';
@@ -289,6 +291,18 @@ $lang->exportFileTypeList['html'] = 'html';
$lang->exportTypeList['all'] = '全部記錄';
$lang->exportTypeList['selected'] = '選中記錄';
$lang->createObjects['todo'] = '待辦';
$lang->createObjects['effort'] = '日誌';
$lang->createObjects['bug'] = 'Bug';
$lang->createObjects['story'] = '需求';
$lang->createObjects['task'] = '任務';
$lang->createObjects['testcase'] = '用例';
$lang->createObjects['execution'] = $lang->execution->common;
$lang->createObjects['project'] = '項目';
$lang->createObjects['product'] = '產品';
$lang->createObjects['program'] = '項目集';
$lang->createObjects['doc'] = '文檔';
/* 語言 */
$lang->lang = 'Language';

View File

@@ -195,6 +195,7 @@ $lang->doc->noOpenedDoc = '您還沒有創建任何文檔。';
$lang->doc->noCollectedDoc = '您還沒有收藏任何文檔。';
$lang->doc->errorEmptyLib = '文檔庫暫無數據。';
$lang->doc->confirmUpdateContent = '檢查到您有未保存的文檔內容,是否繼續編輯?';
$lang->doc->selectLibType = '請選擇文檔庫類型';
$lang->doc->noticeAcl['lib']['product']['default'] = '有所選產品訪問權限的用戶可以訪問。';
$lang->doc->noticeAcl['lib']['product']['custom'] = '有所選產品訪問權限或白名單裡的用戶可以訪問。';

View File

@@ -316,6 +316,7 @@ if($config->systemMode == 'new') $lang->execution->copyTeamTitle = "Choose a
$lang->execution->confirmDelete = "Do you want to delete the {$lang->executionCommon}[%s]?";
$lang->execution->confirmUnlinkMember = "Do you want to unlink this User from {$lang->executionCommon}?";
$lang->execution->confirmUnlinkStory = "Do you want to unlink this Story from {$lang->executionCommon}?";
$lang->execution->confirmSyncStories = "After modifying the project, synchronize the execution related {$lang->SRCommon} to the new project?";
$lang->execution->confirmUnlinkExecutionStory = "Do you want to unlink this Story from the execution?";
$lang->execution->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked to the {$lang->executionCommon} of the execution. Remove it from the {$lang->executionCommon}, then try again.";
$lang->execution->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";

View File

@@ -316,6 +316,7 @@ if($config->systemMode == 'new') $lang->execution->copyTeamTitle = "選擇
$lang->execution->confirmDelete = "您確定刪除{$lang->executionCommon}[%s]嗎?";
$lang->execution->confirmUnlinkMember = "您確定從該{$lang->executionCommon}中移除該用戶嗎?";
$lang->execution->confirmUnlinkStory = "您確定從該{$lang->executionCommon}中移除該{$lang->SRCommon}嗎?";
$lang->execution->confirmSyncStories = "修改所屬項目後,執行關聯的{$lang->SRCommon}是否同步到新項目中?";
$lang->execution->confirmUnlinkExecutionStory = "您確定從該項目中移除該{$lang->SRCommon}嗎?";
$lang->execution->notAllowedUnlinkStory = "{$lang->SRCommon}已經與項目下{$lang->executionCommon}相關聯,請從{$lang->executionCommon}中移除後再操作。";
$lang->execution->notAllowRemoveProducts = "{$lang->productCommon}中的{$lang->SRCommon}已與該{$lang->executionCommon}進行了關聯,請取消關聯後再操作。";

View File

@@ -4,6 +4,7 @@ $lang->gitlab->common = 'GitLab';
$lang->gitlab->browse = 'GitLab Browse';
$lang->gitlab->create = 'Create GitLab';
$lang->gitlab->edit = 'Edit GitLab';
$lang->gitlab->view = 'View GitLab';
$lang->gitlab->bindUser = 'Bind User';
$lang->gitlab->webhook = 'webhook';
$lang->gitlab->bindProduct = 'Import Product';

View File

@@ -4,6 +4,7 @@ $lang->gitlab->common = 'GitLab';
$lang->gitlab->browse = '瀏覽GitLab';
$lang->gitlab->create = '添加GitLab';
$lang->gitlab->edit = '編輯GitLab';
$lang->gitlab->view = '查看GitLab';
$lang->gitlab->bindUser = '綁定用戶';
$lang->gitlab->webhook = 'webhook';
$lang->gitlab->bindProduct = '關聯產品';
@@ -40,6 +41,7 @@ $lang->gitlab->placeholder->token = "請填寫具有admin權限賬戶的access t
$lang->gitlab->noImportableIssues = "目前沒有可供導入的issue。";
$lang->gitlab->tokenError = "當前token非管理員權限。";
$lang->gitlab->tokenLimit = "GitLab Token權限不足。請更換為有管理員權限的GitLab Token。";
$lang->gitlab->hostError = "無效的GitLab服務地址。";
$lang->gitlab->bindUserError = "不能重複綁定用戶 %s";
$lang->gitlab->importIssueError = "未選擇該issue所屬的執行。";

View File

@@ -1143,6 +1143,7 @@ $lang->resource->gitlab = new stdclass();
$lang->resource->gitlab->browse = 'browse';
$lang->resource->gitlab->create = 'create';
$lang->resource->gitlab->edit = 'edit';
$lang->resource->gitlab->view = 'view';
$lang->resource->gitlab->importIssue = 'importIssue';
$lang->resource->gitlab->delete = 'delete';
$lang->resource->gitlab->bindUser = 'bindUser';
@@ -1153,7 +1154,8 @@ $lang->resource->gitlab->bindProduct = 'bindProduct';
$lang->gitlab->methodOrder[5] = 'browse';
$lang->gitlab->methodOrder[10] = 'create';
$lang->gitlab->methodOrder[15] = 'edit';
$lang->gitlab->methodOrder[20] = 'importIssue';
$lang->gitlab->methodOrder[20] = 'view';
$lang->gitlab->methodOrder[25] = 'importIssue';
$lang->gitlab->methodOrder[30] = 'delete';
$lang->gitlab->methodOrder[35] = 'bindUser';
//$lang->gitlab->methodOrder[45] = 'webhook';

View File

@@ -34,7 +34,10 @@ $lang->group->dynamic = '可查看動態';
$lang->group->noticeVisit = '空代表沒有訪問限制';
$lang->group->noneProgram = "暫時沒有項目集";
$lang->group->noneProduct = "暫時沒有{$lang->productCommon}";
$lang->group->noneProject = "暫時沒有{$lang->executionCommon}";
global $config;
if($config->systemMode == 'new') $lang->group->noneProject = '暫時沒有項目';
if($config->systemMode == 'classic') $lang->group->noneProject = "暫時沒有{$lang->executionCommon}";
$lang->group->id = '編號';
$lang->group->name = '分組名稱';

View File

@@ -48,9 +48,7 @@ $lang->install->introductionContent = <<<EOT
<h4>Dear users, welcome to ZenTao project management system.</h4>
<p>ZenTao has two managment modes in version 15.0 and up. One is the classic management mode, providing two core features, Product and Project; the other is a new project management mode, with Program and Execution added. The following is an introduction to the new mode:</p>
<div class='block-content'>
<div class='block-details'>
<p class='block-title'><i class='icon icon-program'></i><strong>Program</strong></p>
<p>Program is used to manage a group of products and projects, and the company executives or PMO can use it for strategic planning.</p></div>
<div class='block-details'><p class='block-title'><i class='icon icon-program'></i><strong>Program</strong></p></div>
<div class='block-details block-right'>
<p class='block-title'><i class='icon icon-product'></i><strong>Product</strong></p>
<p>Product is used to subdivide the company's strategy into requirements that can be developed, and the product manager can use it to make release plans.<p>
@@ -202,6 +200,7 @@ $lang->install->cronList['moduleName=todo&methodName=createCycle'] = 'Creat
$lang->install->cronList['moduleName=ci&methodName=initQueue'] = 'Create recurring tasks';
$lang->install->cronList['moduleName=ci&methodName=checkCompileStatus'] = 'Synchronize Jenkins Status';
$lang->install->cronList['moduleName=ci&methodName=exec'] = 'Execute Jenkins';
$lang->install->cronList['moduleName=mr&methodName=syncMR'] = 'Synchronize GitLab merge request';
$lang->install->success = "Installed!";
$lang->install->login = 'ZenTao Login';

View File

@@ -40,31 +40,31 @@ $lang->install->links = <<<EOT
您現在正在安裝的版本是 <strong class='text-danger'>%s</strong>。
EOT;
global $config;
$lang->install->introduction = "禪道{$this->config->version}版本功能介紹";
$lang->install->introduction = "禪道15系列功能介紹";
$lang->install->howToUse = "請問您計劃如何使用禪道的新版本呢";
$lang->install->guideVideo = 'https://dl.cnezsoft.com/vedio/program0716.mp4';
$lang->install->introductionContent = <<<EOT
<div>
<h4>尊敬的用戶您好,歡迎您使用禪道%s。</h4>
<p>禪道%s提供了兩種使用模式, 一種是經典管理模式,功能較為精簡,提供了產品和項目兩個核心功能;另一種是全新項目集管理模式,具備所有核心功能。如下是相關功能介紹,您可以根據需要選擇使用的模式。</p>
<h4>尊敬的用戶您好,歡迎您使用禪道項目管理系統。</h4>
<p> 禪道自15系列開始提供了兩種使用模式,一種是經典管理模式,功能較為精簡,主要提供了產品和項目兩個核心功能;另一種是全新項目集管理模式,增加了項目集和執行的概念。下面是全新項目集管理模式的介紹:</p>
<div class='block-content'>
<div class='block-details'><p class='block-title'><i class='icon icon-program'></i><strong>項目集</strong></p><p>項目集是一組相互關聯,且被協調管理的項目集合,可以進行多層級管理,屬於戰略層面的管理。</p></div>
<div class='block-details'><p class='block-title'><i class='icon icon-program'></i><strong>項目集</strong></p><p>項目集用來管理一組相關的產品和項目公司高層或者PMO可以用來做戰略規劃。</p></div>
<div class='block-details block-right'>
<p class='block-title'><i class='icon icon-product'></i><strong>產品</strong></p>
<p>產品是定義做什麼,主要是管理需求,通過產品可以管理用戶需求、研發需求、計劃以及發佈。<p>
<p>產品用來將公司的戰略細分為可以進行研發的需求,產品經理可以用來做產品的發佈計劃。<p>
</div>
<div class='block-details'>
<p class='block-title'><i class='icon icon-project'></i><strong>項目</strong></p>
<p>項目是定義如何做,主要是在規定的時間、預算和質量目標範圍內完成項目的各種工作,屬於戰役層面的管理。</p>
<p>項目用來組織相應的人力進行研發,做好項目過程的跟蹤管理,多快好省地完成項目。</p>
</div>
<div class='block-details block-right'>
<p class='block-title'><i class='icon icon-product'></i><strong>執行</strong></p>
<p>我們把一個項目下的多個迭代/衝刺或階段統稱為執行,通過執行去完成項目的任務,屬於戰鬥層面的管理。<p>
<p>執行用來做任務的分解、指派和跟蹤,保證項目目標可以落實到人來執行。<p>
</div>
</div>
<div class='text-center introduction-link'>
<a href='https://dl.cnezsoft.com/zentao/zentaoconcept.pdf' target='_blank' class='btn btn-wide btn-info'><i class='icon icon-p-square'></i> 文檔介紹</a>
<a href='https://dl.cnezsoft.com/vedio/program0716.mp4' target='_blank' class='btn btn-wide btn-info'><i class='icon icon-video-play'></i> 視頻介紹</a>
<a href='javascript:showVideo()' class='btn btn-wide btn-info'><i class='icon icon-video-play'></i> 視頻介紹</a>
</div>
</div>
EOT;
@@ -200,6 +200,7 @@ $lang->install->cronList['moduleName=todo&methodName=createCycle'] = '生
$lang->install->cronList['moduleName=ci&methodName=initQueue'] = '創建周期性任務';
$lang->install->cronList['moduleName=ci&methodName=checkCompileStatus'] = '同步Jenkins任務狀態';
$lang->install->cronList['moduleName=ci&methodName=exec'] = '執行Jenkins任務';
$lang->install->cronList['moduleName=mr&methodName=syncMR'] = '定時同步GitLabMR信息';
$lang->install->success = "安裝成功";
$lang->install->login = '登錄禪道管理系統';

View File

@@ -86,3 +86,4 @@ $lang->job->pipelineVariables = "變數";
$lang->job->pipelineVariablesKeyPlaceHolder = "輸入變數的名稱";
$lang->job->pipelineVariablesValuePlaceHolder = "輸入變數的值";
$lang->job->pipelineVariablesTips = "指定要在此次運行中使用的變數值。CI/CD設置中指定的值將用作預設值。";
$lang->job->setReferenceTips = "在執行構建前,請先設置代碼庫的分支信息。";

View File

@@ -93,21 +93,21 @@ if($config->systemMode == 'new') $lang->my->executionLink = '執行預設着陸
$lang->my->programLinkList = array();
$lang->my->programLinkList['program-browse'] = '預設進入項目集列表,可以查看所有的項目集';
$lang->my->programLinkList['program-project'] = '預設進入最近一個項目集的項目列表,可以查看當前項目集下所有項目';
if($config->systemMode == 'new') $lang->my->programLinkList['program-kanban'] = '默認進入項目集看板,可以視化的查看到所有項目集的進展情';
if($config->systemMode == 'new') $lang->my->programLinkList['program-kanban'] = '預設進入項目集看板,可以視化的查看到所有項目集的進展情';
$lang->my->productLinkList = array();
$lang->my->productLinkList['product-index'] = '預設進入產品主頁,可以瞭解公司整體的產品狀況';
$lang->my->productLinkList['product-all'] = '預設進入產品列表,可以查看所有的產品';
$lang->my->productLinkList['product-dashboard'] = '預設進入最近一個產品儀表盤,可以查看當前產品概況';
$lang->my->productLinkList['product-browse'] = '預設進入最近一個產品的需求列表,可以查看當前產品下的需求信息';
$lang->my->productLinkList['product-kanban'] = '默認進入產品看板,可以視化的查看到所有產品的進展情';
$lang->my->productLinkList['product-kanban'] = '預設進入產品看板,可以視化的查看到所有產品的進展情';
global $config;
$lang->my->projectLinkList = array();
$lang->my->projectLinkList['project-browse'] = '預設進入項目列表,可以查看所有的項目';
$lang->my->projectLinkList['project-execution'] = '預設進入項目下所有執行列表,查看所有執行信息';
$lang->my->projectLinkList['project-index'] = '預設進入最近一個項目儀表盤,可以查看當前項目概況';
if($config->systemMode == 'new') $lang->my->projectLinkList['project-kanban'] = '默認進入項目看板,可以視化的查看到所有項目的進展情';
if($config->systemMode == 'new') $lang->my->projectLinkList['project-kanban'] = '預設進入項目看板,可以視化的查看到所有項目的進展情';
$lang->my->executionLinkList = array();
if($config->systemMode == 'new')

View File

@@ -132,15 +132,15 @@ $lang->product->unplan = "未計劃";
$lang->product->viewByUser = '按用戶查看';
/* Product Kanban. */
$lang->product->myProduct = '我負責的產品';
$lang->product->otherProduct = '其他產品';
$lang->product->unclosedProduct = '未關閉的產品';
$lang->product->myProduct = '我負責的' . $lang->productCommon;
$lang->product->otherProduct = '其他' . $lang->productCommon;
$lang->product->unclosedProduct = '未關閉的' . $lang->productCommon;
$lang->product->unexpiredPlan = '未過期的計劃';
$lang->product->doing = '進行中';
$lang->product->doingProject = '進行中的項目';
$lang->product->doingExecution = '進行中的執行';
$lang->product->doingClassicExecution = '進行中的' . $lang->executionCommon;
$lang->product->normalRelease = '正常的發';
$lang->product->normalRelease = '正常的發';
$lang->product->emptyProgram = '無項目集歸屬產品';
$lang->product->allStory = '所有';

View File

@@ -75,9 +75,6 @@ $lang->program->isStakeholderKey = 'Key stakeholder';
$lang->program->stakeholderTypeList['inside'] = 'Inside';
$lang->program->stakeholderTypeList['outside'] = 'Outside';
$lang->program->typeList['my'] = 'My Programs';
$lang->program->typeList['others'] = 'Others';
$lang->program->noProgram = 'No program.';
$lang->program->showClosed = 'Closed programs.';
$lang->program->tips = 'If a parent item set is selected, products under that parent item set can be associated. If no item set is selected, a product with the same name as the item is created by default and associated with that item.';

View File

@@ -36,6 +36,7 @@ $lang->program->create = '添加項目集';
$lang->program->createGuide = '選擇項目模板';
$lang->program->edit = '編輯項目集';
$lang->program->browse = '項目集列表';
$lang->program->kanbanAction = '項目集看板';
$lang->program->view = '項目集詳情';
$lang->program->copy = '複製項目集';
$lang->program->product = '產品列表';
@@ -63,7 +64,7 @@ $lang->program->changePRJUnit = '更新項目預算單位';
$lang->program->progress = '項目進度';
$lang->program->children = '子項目集';
$lang->program->allInput = '項目集總投入';
$lang->program->allInvest = '項目集總投入';
$lang->program->teamCount = '總人數';
$lang->program->longTime = '長期';
$lang->program->moreProgram = '更多項目集';
@@ -115,3 +116,17 @@ $lang->program->statusList['suspended'] = '已掛起';
$lang->program->statusList['closed'] = '已關閉';
$lang->program->featureBar['all'] = '所有';
$lang->program->kanban = new stdclass();
$lang->program->kanban->common = '項目集看板';
$lang->program->kanban->typeList['my'] = '我參與的項目集';
$lang->program->kanban->typeList['others'] = '其他項目集';
$lang->program->kanban->openProducts = '未關閉的產品';
$lang->program->kanban->unexpiredPlans = '未過期的計劃';
$lang->program->kanban->waitingProjects = '未開始的項目';
$lang->program->kanban->doingProjects = '進行中的項目';
$lang->program->kanban->doingExecutions = '進行中的執行';
$lang->program->kanban->normalReleases = '正常的發佈';
$lang->program->kanban->laneColorList = array('#32C5FF', '#006AF1', '#9D28B2', '#FF8F26', '#FFC20E', '#00A78E', '#7FBB00', '#424BAC', '#C0E9FF', '#EC2761');

View File

@@ -61,6 +61,9 @@ $lang->project->id = 'ID';
$lang->project->stage = 'Stage';
$lang->project->model = 'Model';
$lang->project->PM = 'Manager';
$lang->project->PO = 'Project Owner';
$lang->project->QD = 'Test Leader';
$lang->project->RD = 'Releaser';
$lang->project->name = 'Name';
$lang->project->category = 'Category';
$lang->project->desc = 'Description';

View File

@@ -61,6 +61,9 @@ $lang->project->id = '項目編號';
$lang->project->stage = '階段';
$lang->project->model = '項目管理方式';
$lang->project->PM = '負責人';
$lang->project->PO = '項目負責人';
$lang->project->QD = '測試負責人';
$lang->project->RD = '發佈負責人';
$lang->project->name = '項目名稱';
$lang->project->category = '項目類型';
$lang->project->desc = '項目描述';
@@ -131,6 +134,19 @@ $lang->project->moreProject = '更多項目';
$lang->project->days = '可用工作日';
$lang->project->etc = "";
/* Project Kanban. */
$lang->project->typeList = array();
$lang->project->typeList['my'] = '我負責的項目';
$lang->project->typeList['other'] = '其他項目';
$lang->project->waitProjects = '未開始的項目';
$lang->project->doingProjects = '進行中的項目';
$lang->project->doingExecutions = '進行中的執行';
$lang->project->closedProjects = '已關閉的項目';
$lang->project->noProgram = '無項目集歸屬項目';
$lang->project->laneColorList = array('#32C5FF', '#006AF1', '#9D28B2', '#FF8F26', '#FFC20E', '#00A78E', '#7FBB00', '#424BAC', '#C0E9FF', '#EC2761');
$lang->project->productNotEmpty = '請關聯產品或創建產品。';
$lang->project->existProductName = '產品名稱已存在。';
$lang->project->changeProgram = '%s > 修改項目集';

View File

@@ -116,7 +116,7 @@ class projectStory extends control
*/
public function batchUnlinkStory($projectID, $storyIdList = '')
{
$storyIdList = if(empty($storyIdList)) ? array() : array_filter(explode(',', $storyIdList));
$storyIdList = empty($storyIdList) ? array() : array_filter(explode(',', $storyIdList));
$executionStories = $this->projectstory->getExecutionStories($projectID, $storyIdList);
$html = '';

View File

@@ -22,3 +22,5 @@ $lang->projectstory->featureBar['story']['allstory'] = $lang->product->allStory;
$lang->projectstory->featureBar['story']['unclosed'] = $lang->product->unclosed;
$lang->projectstory->featureBar['story']['changed'] = $lang->product->changedStory;
$lang->projectstory->featureBar['story']['closed'] = $lang->product->closedStory;
$lang->projectstory->featureBar['story']['linkedExecution'] = '已關聯' . $lang->execution->common;
$lang->projectstory->featureBar['story']['unlinkedExecution'] = '未關聯' . $lang->execution->common;

View File

@@ -289,7 +289,7 @@ $lang->story->action->rejectreviewed = array('main' => '$date, 由 <stron
$lang->story->action->recalled = array('main' => '$date, 由 <strong>$actor</strong> 撤銷評審。');
$lang->story->action->closed = array('main' => '$date, 由 <strong>$actor</strong> 關閉,原因為 <strong>$extra</strong> $appendLink。', 'extra' => 'reasonList');
$lang->story->action->reviewpassed = array('main' => '$date, 由 <strong>系統</strong> 判定,結果為 <strong>確認通過</strong>。');
$lang->story->action->reviewrejected = array('main' => '$date, 由 <strong>系統</strong> 關閉,原因為 <strong>拒</strong>。');
$lang->story->action->reviewrejected = array('main' => '$date, 由 <strong>系統</strong> 關閉,原因為 <strong>拒</strong>。');
$lang->story->action->reviewclarified = array('main' => '$date, 由 <strong>系統</strong> 判定,結果為 <strong>有待明確</strong>,請變更後重新發起評審。');
$lang->story->action->linked2plan = array('main' => '$date, 由 <strong>$actor</strong> 關聯到計劃 <strong>$extra</strong>。');
$lang->story->action->unlinkedfromplan = array('main' => '$date, 由 <strong>$actor</strong> 從計劃 <strong>$extra</strong> 移除。');

View File

@@ -224,7 +224,9 @@ $lang->task->error->deadlineSmall = '"截止日期"必須大於"預計開始
$lang->task->error->alreadyStarted = '此任務已被啟動,不能重複啟動!';
$lang->task->error->realStartedEmpty = '實際開始不能為空';
$lang->task->error->finishedDateEmpty = '實際完成不能為空';
$lang->task->error->finishedDateSmall = '實際完成不能小於實際開始';
$lang->task->error->alreadyConsumed = '當前選中的父任務已有消耗。';
$lang->task->error->date = '日期不能大於今天';
/* Report. */
$lang->task->report = new stdclass();

View File

@@ -137,6 +137,7 @@ $lang->testtask->unitXMLFormat = '請選擇Junit XML 格式的檔案。';
$lang->testtask->titleOfAuto = "%s 自動化測試";
$lang->testtask->cannotBeParsed = '導入的XML檔案內容格式錯誤無法解析。';
$lang->testtask->finishedDateError = '實際完成日期不能小於開始日期%s';
$lang->testtask->finishedDateError2 = '實際完成日期不能大於今天';
$lang->testtask->assignedToMe = '指派給我';
$lang->testtask->allCases = '所有用例';

View File

@@ -102,6 +102,7 @@ $lang->todo->typeList['bug'] = 'Bug';
$lang->todo->typeList['task'] = 'Task';
$lang->todo->typeList['story'] = 'Story';
$lang->todo->typeList['testtask'] = 'Testtask';
$lang->todo->typeList['mrapprove'] = 'MR Approve';
$lang->todo->confirmDelete = "Do you want to delete this todo?";
$lang->todo->thisIsPrivate = 'This is a private todo';

View File

@@ -70,6 +70,9 @@ $lang->todo->closedDate = '關閉時間';
$lang->todo->deadline = '過期時間';
$lang->todo->deleted = '已刪除';
$lang->todo->cycleDaysLabel = '間隔天數';
$lang->todo->beforeDaysLabel = '提前天數';
$lang->todo->every = '間隔';
$lang->todo->specify = '指定';
$lang->todo->everyYear = '每年';
@@ -99,6 +102,7 @@ $lang->todo->typeList['bug'] = 'Bug';
$lang->todo->typeList['task'] = '任務';
$lang->todo->typeList['story'] = $lang->SRCommon;
$lang->todo->typeList['testtask'] = '測試單';
$lang->todo->typeList['mrapprove'] = '合併請求審批';
$lang->todo->confirmDelete = "您確定要刪除這條待辦嗎?";
$lang->todo->thisIsPrivate = '這是一條私人事務。:)';

View File

@@ -9,7 +9,6 @@
* @version $Id: zh-cn.php 5116 2013-07-12 06:37:48Z sunhao@cnezsoft.com $
* @link http://www.zentao.net
*/
$lang->tutorial = new stdclass();
$lang->tutorial->common = 'Tutorial';
$lang->tutorial->desc = 'You can know how to use ZenTao by doing tasks. It takes about 10 minutes, and you can quit anytime.';
@@ -22,11 +21,11 @@ $lang->tutorial->allTasks = 'All Tasks';
$lang->tutorial->previous = 'Previous';
$lang->tutorial->nextTask = 'Next';
$lang->tutorial->openTargetPage = 'Open <strong class="task-page-name">%s</strong>';
$lang->tutorial->targetAppTip = 'Open <strong class="task-page-name">%s</strong>';
$lang->tutorial->atTargetPage = 'On <strong class="task-page-name">%s</strong>';
$lang->tutorial->reloadTargetPage = 'Reload';
$lang->tutorial->target = 'Target';
$lang->tutorial->targetPageTip = 'Open【%s】page by following this instruction.';
$lang->tutorial->targetAppTip = 'Open <strong class="task-page-name">%s</strong>';
$lang->tutorial->requiredTip = '【%s】is required.';
$lang->tutorial->congratulateTask = 'Congratulations! You have finished【<span class="task-name-current"></span>】!';
$lang->tutorial->serverErrorTip = 'Error!';

View File

@@ -25,6 +25,7 @@ $lang->tutorial->atTargetPage = '已在 <strong class="task-page-name">目
$lang->tutorial->reloadTargetPage = '重新載入';
$lang->tutorial->target = '目標';
$lang->tutorial->targetPageTip = '按此指示打開【%s】頁面';
$lang->tutorial->targetAppTip = '按此指示打開【%s】應用';
$lang->tutorial->requiredTip = '【%s】為必填項';
$lang->tutorial->congratulateTask = '恭喜,你完成了任務 【<span class="task-name-current"></span>】!';
$lang->tutorial->serverErrorTip = '發生了一些錯誤。';
@@ -35,49 +36,49 @@ $lang->tutorial->dataNotSave = "教程任務中,數據不會保存。";
$lang->tutorial->tasks = array();
$lang->tutorial->tasks['createAccount'] = array('title' => '創建帳號');
$lang->tutorial->tasks['createAccount']['nav'] = array('module' => 'user', 'method' => 'create', 'menuModule' => 'company', 'menu' => 'browseUser', 'form' => '#createForm', 'submit' => '#submit', 'target' => '.create-user-btn', 'targetPageName' => '添加用戶');
$lang->tutorial->tasks['createAccount']['desc'] = "<p>在系統創建一個新的用戶帳號:</p><ul><li data-target='nav'>打開 <span class='task-nav'>組織 <i class='icon icon-angle-right'></i> 用戶 <i class='icon icon-angle-right'></i> 添加用戶</span> 頁面;</li><li data-target='form'>在添加用戶表單中填寫新用戶信息;</li><li data-target='submit'>保存用戶信息。</li></ul>";
$lang->tutorial->tasks['createAccount']['nav'] = array('app' => 'admin', 'module' => 'user', 'method' => 'create', 'menuModule' => 'company', 'menu' => 'browseUser', 'form' => '#createForm', 'requiredFields' => 'account,realname,verifyPassword,password1,password2', 'submit' => '#submit', 'target' => '.create-user-btn', 'targetPageName' => '添加用戶');
$lang->tutorial->tasks['createAccount']['desc'] = "<p>在系統創建一個新的用戶帳號:</p><ul><li data-target='nav'>打開 <span class='task-nav'>後台 <i class='icon icon-angle-right'></i> 人員 <i class='icon icon-angle-right'></i> 用戶 <i class='icon icon-angle-right'></i> 添加用戶</span> 頁面;</li><li data-target='form'>在添加用戶表單中填寫新用戶信息;</li><li data-target='submit'>保存用戶信息。</li></ul>";
global $config;
if($config->global->flow == 'full' or $config->global->flow != 'onlyTask')
{
$lang->tutorial->tasks['createProduct'] = array('title' => '創建' . $lang->productCommon);
$lang->tutorial->tasks['createProduct']['nav'] = array('module' => 'product', 'method' => 'create', 'menu' => '#pageNav', 'form' => '#createForm', 'submit' => '#submit', 'target' => '.create-product-btn', 'targetPageName' => '添加' . $lang->productCommon);
$lang->tutorial->tasks['createProduct']['desc'] = "<p>在系統創建一個新的{$lang->productCommon}</p><ul><li data-target='nav'>打開 <span class='task-nav'>{$lang->productCommon} <i class='icon icon-angle-right'></i> 添加{$lang->productCommon}</span> 頁面;</li><li data-target='form'>在表單中填寫要創建的{$lang->productCommon}信息;</li><li data-target='submit'>保存{$lang->productCommon}信息。</li></ul>";
}
$lang->tutorial->tasks['createProgram'] = array('title' => '創建項目集');
$lang->tutorial->tasks['createProgram']['mode'] = 'new';
$lang->tutorial->tasks['createProgram']['nav'] = array('app' => 'program', 'module' => 'program', 'method' => 'create', 'menuModule' => 'program', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="browse"],.create-program-btn', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-program-btn', 'targetPageName' => '添加項目集');
$lang->tutorial->tasks['createProgram']['desc'] = "<p>在系統創建一個新的項目集:</p><ul><li data-target='nav'>打開 <span class='task-nav'>項目集 <i class='icon icon-angle-right'></i> 項目集列表 <i class='icon icon-angle-right'></i> 添加項目集</span> 頁面;</li><li data-target='form'>在添加項目集表單中填寫項目集信息;</li><li data-target='submit'>保存項目集信息。</li></ul>";
if($config->global->flow == 'full' or $config->global->flow == 'onlyStory')
{
$lang->tutorial->tasks['createStory'] = array('title' => "創建{$lang->SRCommon}");
$lang->tutorial->tasks['createStory']['nav'] = array('module' => 'story', 'method' => 'create', 'menuModule' => 'product', 'menu' => 'story', 'target' => '.create-story-btn', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => "{$lang->SRCommon}");
$lang->tutorial->tasks['createStory']['desc'] = "<p>在系統創建一個新的{$lang->SRCommon}</p><ul><li data-target='nav'>打開 <span class='task-nav'>{$lang->productCommon} <i class='icon icon-angle-right'></i> {$lang->SRCommon} <i class='icon icon-angle-right'></i> 添加{$lang->SRCommon}</span> 頁面;</li><li data-target='form'>在表單中填寫要創建的{$lang->SRCommon}信息;</li><li data-target='submit'>保存{$lang->SRCommon}信息。</li></ul>";
}
$lang->tutorial->tasks['createProduct'] = array('title' => '創建' . $lang->productCommon);
$lang->tutorial->tasks['createProduct']['nav'] = array('app' => 'product', 'module' => 'product', 'method' => 'create', 'menuModule' => 'product', 'menu' => 'all', 'form' => '#createForm', 'submit' => '#submit', 'target' => '.create-product-btn', 'targetPageName' => '添加' . $lang->productCommon);
$lang->tutorial->tasks['createProduct']['desc'] = "<p>在系統創建一個新的{$lang->productCommon}</p><ul><li data-target='nav'>打開 <span class='task-nav'>{$lang->productCommon} <i class='icon icon-angle-right'></i> {$lang->productCommon}列表 <i class='icon icon-angle-right'></i> 添加{$lang->productCommon}</span> 頁面;</li><li data-target='form'>在表單中填寫要創建的{$lang->productCommon}信息;</li><li data-target='submit'>保存{$lang->productCommon}信息。</li></ul>";
if($config->global->flow == 'full' or $config->global->flow == 'onlyTask')
{
$lang->tutorial->tasks['createProject'] = array('title' => '創建' . $lang->executionCommon);
$lang->tutorial->tasks['createProject']['nav'] = array('module' => 'execution', 'method' => 'create', 'menu' => '#pageNav', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-project-btn', 'targetPageName' => '添加' . $lang->executionCommon);
$lang->tutorial->tasks['createProject']['desc'] = "<p>在系統創建一個新的{$lang->executionCommon}</p><ul><li data-target='nav'>打開 <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> 添加{$lang->executionCommon}</span> 頁面;</li><li data-target='form'>在表單中填寫要創建的{$lang->executionCommon}信息;</li><li data-target='submit'>保存{$lang->executionCommon}信息。</li></ul>";
$lang->tutorial->tasks['createStory'] = array('title' => "創建{$lang->SRCommon}");
$lang->tutorial->tasks['createStory']['nav'] = array('app' => 'product', 'module' => 'story', 'method' => 'create', 'menuModule' => 'story', 'menu' => '#productTableList>tr:not(.has-nest-child):first>.c-name>a,#heading>.header-btn:first,#navbar>.nav>li[data-id="all"],.create-story-btn', 'target' => '.create-story-btn', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => "{$lang->SRCommon}");
$lang->tutorial->tasks['createStory']['desc'] = "<p>在系統創建一個新的{$lang->SRCommon}</p><ul><li data-target='nav'>打開 <span class='task-nav'>{$lang->productCommon} <i class='icon icon-angle-right'></i> {$lang->SRCommon} <i class='icon icon-angle-right'></i> 提{$lang->SRCommon}</span> 頁面;</li><li data-target='form'>在表單中填寫要創建的{$lang->SRCommon}信息;</li><li data-target='submit'>保存{$lang->SRCommon}信息。</li></ul>";
$lang->tutorial->tasks['manageTeam'] = array('title' => '管理團隊');
$lang->tutorial->tasks['manageTeam']['nav'] = array('module' => 'execution', 'method' => 'managemembers', 'menu' => 'team', 'target' => '.manage-team-btn', 'form' => '#teamForm', 'requiredFields' => 'account1', 'submit' => '#submit', 'targetPageName' => '團隊管理');
$lang->tutorial->tasks['manageTeam']['desc'] = "<p>管理{$lang->executionCommon}團隊成員:</p><ul><li data-target='nav'>打開 <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> 團隊 <i class='icon icon-angle-right'></i> 團隊管理</span> 頁面;</li><li data-target='form'>選擇要加入團隊的成員;</li><li data-target='submit'>保存團隊成員信息。</li></ul>";
$lang->tutorial->tasks['createProject'] = array('title' => '創建' . $lang->projectCommon);
$lang->tutorial->tasks['createProject']['mode'] = 'new';
$lang->tutorial->tasks['createProject']['nav'] = array('app' => 'project', 'module' => 'project', 'method' => 'create', 'menuModule' => 'browse', 'menu' => '', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-project-btn', 'targetPageName' => '添加' . $lang->projectCommon);
$lang->tutorial->tasks['createProject']['desc'] = "<p>在系統創建一個新的{$lang->projectCommon}</p><ul><li data-target='nav'>打開 <span class='task-nav'> {$lang->projectCommon} <i class='icon icon-angle-right'></i> {$lang->projectCommon}列表 <i class='icon icon-angle-right'></i> 創建{$lang->projectCommon}</span> 頁面;</li><li data-target='form'>在表單中填寫要創建的{$lang->projectCommon}信息;</li><li data-target='submit'>保存{$lang->projectCommon}信息。</li></ul>";
if($config->global->flow == 'full')
{
$lang->tutorial->tasks['linkStory'] = array('title' => "關聯{$lang->SRCommon}");
$lang->tutorial->tasks['linkStory']['nav'] = array('module' => 'execution', 'method' => 'linkStory', 'menu' => 'story', 'target' => '.link-story-btn', 'form' => '#linkStoryForm', 'formType' => 'table', 'submit' => '#submit', 'targetPageName' => "關聯{$lang->SRCommon}");
$lang->tutorial->tasks['linkStory']['desc'] = "<p>將{$lang->SRCommon}關聯到{$lang->executionCommon}</p><ul><li data-target='nav'>打開 <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> {$lang->SRCommon} <i class='icon icon-angle-right'></i> 關聯{$lang->SRCommon}</span> 頁面;</li><li data-target='form'>在{$lang->SRCommon}列表中勾選要關聯的{$lang->SRCommon}</li><li data-target='submit'>保存關聯的{$lang->SRCommon}信息。</li></ul>";
}
$lang->tutorial->tasks['manageTeam'] = array('title' => "管理{$lang->projectCommon}團隊");
$lang->tutorial->tasks['manageTeam']['mode'] = 'new';
$lang->tutorial->tasks['manageTeam']['nav'] = array('app' => 'project', 'module' => 'project', 'method' => 'managemembers', 'menuModule' => '', 'menu' => '#navbar>.nav>li[data-id="browse"],#cards>.col>.panel:first .project-name,#projectTableList>tr:first>.c-name a,#navbar>.nav>li[data-id="settings"],#subNavbar>.nav>li[data-id="members"],.manage-team-btn', 'target' => '.manage-team-btn', 'form' => '#teamForm', 'requiredFields' => 'accounts1', 'submit' => '#submit', 'targetPageName' => '團隊管理');
$lang->tutorial->tasks['manageTeam']['desc'] = "<p>管理{$lang->projectCommon}團隊成員:</p><ul><li data-target='nav'>打開 <span class='task-nav'> {$lang->projectCommon} <i class='icon icon-angle-right'></i> 設置 <i class='icon icon-angle-right'></i> 團隊 <i class='icon icon-angle-right'></i> 團隊管理</span> 頁面;</li><li data-target='form'>選擇要加入團隊的成員;</li><li data-target='submit'>保存團隊成員信息。</li></ul>";
$lang->tutorial->tasks['createTask'] = array('title' => '分解任務');
$lang->tutorial->tasks['createTask']['nav'] = array('module' => 'task', 'method' => 'create', 'menuModule' => 'execution', 'menu' => 'story', 'target' => '.btn-task-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => '建任務');
$lang->tutorial->tasks['createTask']['desc'] = "<p>{$lang->executionCommon}{$lang->SRCommon}分解為任務</p><ul><li data-target='nav'>打開 <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> {$lang->SRCommon} <i class='icon icon-angle-right'></i> 分解任務</span> 頁面;</li><li data-target='form'>在表單中填寫任務信息;</li><li data-target='submit'>保存任務信息。</li></ul>";
}
$lang->tutorial->tasks['createExecution'] = array('title' => '創建' . $lang->executionCommon);
$lang->tutorial->tasks['createExecution']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'create', 'menuModule' => 'browse', 'menu' => '#heading>.header-btn:first,#navbar>.nav>li[data-id="all"],.create-execution-btn', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-execution-btn', 'targetPageName' => '添加' . $lang->executionCommon);
$lang->tutorial->tasks['createExecution']['desc'] = "<p>在系統創建一個新的{$lang->executionCommon}</p><ul><li data-target='nav'>打開 <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> {$lang->executionCommon}列表 <i class='icon icon-angle-right'></i> 添加{$lang->executionCommon}</span> 頁面;</li><li data-target='form'>在表單中填寫要創建的{$lang->executionCommon}信息;</li><li data-target='submit'>保存{$lang->executionCommon}信息。</li></ul>";
if($config->global->flow == 'full' or $config->global->flow == 'onlyTest')
{
$lang->tutorial->tasks['createBug'] = array('title' => '提Bug');
$lang->tutorial->tasks['createBug']['nav'] = array('module' => 'bug', 'method' => 'create', 'menuModule' => 'qa', 'menu' => 'bug', 'target' => '.btn-bug-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => '提Bug');
$lang->tutorial->tasks['createBug']['desc'] = "<p>在系統中提交一個Bug</p><ul><li data-target='nav'>打開 <span class='task-nav'> 測試 <i class='icon icon-angle-right'></i> Bug <i class='icon icon-angle-right'></i> 提Bug</span></li><li data-target='form'>在表單中填寫Bug信息</li><li data-target='submit'>保存Bug信息。</li></ul>";
}
$lang->tutorial->tasks['manageExecutionTeam'] = array('title' => "管理{$lang->executionCommon}團隊");
$lang->tutorial->tasks['manageExecutionTeam']['mode'] = 'classic';
$lang->tutorial->tasks['manageExecutionTeam']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'managemembers', 'menuModule' => '', 'menu' => '#navbar>.nav>li[data-id="browse"],#cards>.col>.panel:first .project-name,#executionTableList>tr:first>.c-name>a,#navbar>.nav>li[data-id="settings"],#subNavbar>.nav>li[data-id="team"],.manage-team-btn', 'target' => '.manage-team-btn', 'form' => '#teamForm', 'requiredFields' => 'account1', 'submit' => '#submit', 'targetPageName' => '團隊管理');
$lang->tutorial->tasks['manageExecutionTeam']['desc'] = "<p>管理{$lang->executionCommon}團隊成員:</p><ul><li data-target='nav'>打開 <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> 設置 <i class='icon icon-angle-right'></i> 團隊 <i class='icon icon-angle-right'></i> 團隊管理</span> 頁面;</li><li data-target='form'>選擇要加入團隊的成員;</li><li data-target='submit'>保存團隊成員信息。</li></ul>";
$lang->tutorial->tasks['linkStory'] = array('title' => "關聯{$lang->SRCommon}");
$lang->tutorial->tasks['linkStory']['nav'] = array('app' => 'execution', 'module' => 'execution', 'method' => 'linkStory', 'menuModule' => 'story', 'menu' => '', 'target' => '.link-story-btn', 'form' => '#linkStoryForm', 'formType' => 'table', 'submit' => '#submit', 'targetPageName' => "關聯{$lang->SRCommon}");
$lang->tutorial->tasks['linkStory']['desc'] = "<p>將{$lang->SRCommon}關聯到{$lang->executionCommon}</p><ul><li data-target='nav'>打開 <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> {$lang->SRCommon} <i class='icon icon-angle-right'></i> 關聯{$lang->SRCommon}</span> 頁面;</li><li data-target='form'>在{$lang->SRCommon}列表中勾選要關聯的{$lang->SRCommon}</li><li data-target='submit'>保存關聯的{$lang->SRCommon}信息。</li></ul>";
$lang->tutorial->tasks['createTask'] = array('title' => '分解任務');
$lang->tutorial->tasks['createTask']['nav'] = array('app' => 'execution', 'module' => 'task', 'method' => 'create', 'menuModule' => 'story', 'menu' => '', 'target' => '.btn-task-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => '建任務');
$lang->tutorial->tasks['createTask']['desc'] = "<p>將{$lang->executionCommon}{$lang->SRCommon}分解為任務:</p><ul><li data-target='nav'>打開 <span class='task-nav'> {$lang->executionCommon} <i class='icon icon-angle-right'></i> {$lang->SRCommon} <i class='icon icon-angle-right'></i> 分解任務</span> 頁面;</li><li data-target='form'>在表單中填寫任務信息;</li><li data-target='submit'>保存任務信息。</li></ul>";
$lang->tutorial->tasks['createBug'] = array('title' => '提Bug');
$lang->tutorial->tasks['createBug']['nav'] = array('app' => 'qa', 'module' => 'bug', 'method' => 'create', 'menuModule' => 'bug', 'menu' => 'bug', 'target' => '.create-bug-btn', 'vars' => 'productID=0', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => '提Bug');
$lang->tutorial->tasks['createBug']['desc'] = "<p>在系統中提交一個Bug</p><ul><li data-target='nav'>打開 <span class='task-nav'> 測試 <i class='icon icon-angle-right'></i> Bug <i class='icon icon-angle-right'></i> 提Bug</span></li><li data-target='form'>在表單中填寫Bug信息</li><li data-target='submit'>保存Bug信息。</li></ul>";

View File

@@ -142,3 +142,4 @@ $lang->upgrade->fromVersions['15_0_2'] = '15.0.2';
$lang->upgrade->fromVersions['15_0_3'] = '15.0.3';
$lang->upgrade->fromVersions['15_2'] = '15.2';
$lang->upgrade->fromVersions['15_3'] = '15.3';
$lang->upgrade->fromVersions['15_4'] = '15.4';

View File

@@ -50,7 +50,7 @@ $lang->upgrade->sureExecute = '確認執行';
$lang->upgrade->forbiddenExt = '以下插件與新版本不兼容,已經自動禁用:';
$lang->upgrade->updateFile = '需要更新附件信息。';
$lang->upgrade->noticeSQL = '檢查到你的資料庫跟標準不一致嘗試修復失敗。請執行以下SQL語句再刷新頁面檢查。';
$lang->upgrade->afterDeleted = '以上檔案未能刪除 刪除後刷新!';
$lang->upgrade->afterDeleted = '請執行上面命令刪除檔案 刪除後刷新!';
$lang->upgrade->mergeProgram = '數據遷移';
$lang->upgrade->mergeTips = '數據遷移提示';
$lang->upgrade->toPMS15Guide = '禪道開源版15版本升級';
@@ -111,6 +111,7 @@ $lang->upgrade->dataMethod = '數據遷移方式';
$lang->upgrade->begin = '開始日期';
$lang->upgrade->end = '結束日期';
$lang->upgrade->selectProject = '目標項目';
$lang->upgrade->programName = '項目集名稱';
$lang->upgrade->projectName = '項目名稱';
$lang->upgrade->newProgram = '新建';

View File

@@ -712,6 +712,8 @@ class upgradeModel extends model
{
$xuanxuanSql = $this->app->getAppRoot() . 'db' . DS . 'upgradexuanxuan4.2.sql';
$this->execSQL($xuanxuanSql);
$xuanxuanSql = $this->app->getAppRoot() . 'db' . DS . 'upgradexuanxuan4.4.sql';
$this->execSQL($xuanxuanSql);
}
}
$this->appendExec('15_4');
@@ -914,6 +916,8 @@ class upgradeModel extends model
{
$xuanxuanSql = $this->app->getAppRoot() . 'db' . DS . 'upgradexuanxuan4.2.sql';
$confirmContent .= file_get_contents($xuanxuanSql);
$xuanxuanSql = $this->app->getAppRoot() . 'db' . DS . 'upgradexuanxuan4.4.sql';
$confirmContent .= file_get_contents($xuanxuanSql);
}
}
return str_replace('zt_', $this->config->db->prefix, $confirmContent);