This commit is contained in:
hufangzhou
2021-09-08 16:08:38 +08:00
38 changed files with 308 additions and 116 deletions
+1 -1
View File
@@ -1 +1 @@
15.4
15.5
+1 -1
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.
+3 -3
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';
+2 -1
View File
@@ -781,6 +781,7 @@ class actionModel extends model
$docs = $this->doc->getPrivDocs(array_keys($libs), 0, 'all');
$actionCondition = $this->getActionCondition();
if(!$actionCondition and isset($this->app->user->rights['acls']['actions'])) return array();
/* Get actions. */
$actions = $this->dao->select('*')->from(TABLE_ACTION)
@@ -826,7 +827,7 @@ class actionModel extends model
$actionCondition = '';
if(isset($this->app->user->rights['acls']['actions']))
{
if(empty($this->app->user->rights['acls']['actions'])) return "`objectType` = 'user' and `action` in ('login','logout')";
if(empty($this->app->user->rights['acls']['actions'])) return '';
foreach($this->app->user->rights['acls']['actions'] as $moduleName => $actions)
{
+1
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;
+1
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;
+1
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;
+6 -5
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>";
@@ -241,10 +241,11 @@ $lang->testcase->case = 'Test Case';
$lang->testcase->testsuite = 'Test Suite';
$lang->testcase->caselib = 'Case Library';
$lang->devops->compile = 'Compile';
$lang->devops->mr = 'Merge Request';
$lang->devops->repo = 'Repo';
$lang->devops->rules = 'Rule';
$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';
+18 -4
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>";
@@ -241,9 +241,11 @@ $lang->testcase->case = '用例';
$lang->testcase->testsuite = '套件';
$lang->testcase->caselib = '用例庫';
$lang->devops->compile = '構建';
$lang->devops->repo = '版本庫';
$lang->devops->rules = '指令';
$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';
+1
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'] = '有所選產品訪問權限或白名單裡的用戶可以訪問。';
+1
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.";
+1
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}進行了關聯,請取消關聯後再操作。";
+1
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';
+2
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所屬的執行。";
+3 -1
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';
+4 -1
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 = '分組名稱';
+2 -3
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';
+10 -9
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 = '登錄禪道管理系統';
+1
View File
@@ -86,3 +86,4 @@ $lang->job->pipelineVariables = "變數";
$lang->job->pipelineVariablesKeyPlaceHolder = "輸入變數的名稱";
$lang->job->pipelineVariablesValuePlaceHolder = "輸入變數的值";
$lang->job->pipelineVariablesTips = "指定要在此次運行中使用的變數值。CI/CD設置中指定的值將用作預設值。";
$lang->job->setReferenceTips = "在執行構建前,請先設置代碼庫的分支信息。";
+113
View File
@@ -0,0 +1,113 @@
<?php
$lang->mr = new stdclass;
$lang->mr->common = "合併請求";
$lang->mr->create = "創建{$lang->mr->common}";
$lang->mr->browse = "瀏覽{$lang->mr->common}";
$lang->mr->list = $lang->mr->browse;
$lang->mr->edit = "編輯{$lang->mr->common}";
$lang->mr->delete = "刪除{$lang->mr->common}";
$lang->mr->view = "{$lang->mr->common}詳情";
$lang->mr->accept = "合併請求";
$lang->mr->source = '源項目分支';
$lang->mr->target = '目標項目分支';
$lang->mr->viewDiff = '比對代碼';
$lang->mr->viewInGitlab = '在GitLab查看';
$lang->mr->id = 'ID';
$lang->mr->mriid = "MR原始ID";
$lang->mr->title = '名稱';
$lang->mr->status = '狀態';
$lang->mr->author = '創建人';
$lang->mr->assignee = '指派給';
$lang->mr->reviewer = '評審人';
$lang->mr->mergeStatus = '是否可合併';
$lang->mr->commits = '提交數';
$lang->mr->changes = '更改數';
$lang->mr->statusList = array();
$lang->mr->statusList['opened'] = '開放中';
$lang->mr->statusList['closed'] = '已關閉';
$lang->mr->statusList['merged'] = '已合併';
$lang->mr->mergeStatusList = array();
$lang->mr->mergeStatusList['checking'] = '檢查中';
$lang->mr->mergeStatusList['can_be_merged'] = '可合併';
$lang->mr->mergeStatusList['cannot_be_merged'] = '不可自動合併';
$lang->mr->description = '描述';
$lang->mr->confirmDelete = '確認刪除該合併請求嗎?';
$lang->mr->sourceProject = '源項目';
$lang->mr->sourceBranch = '源分支';
$lang->mr->targetProject = '目標項目';
$lang->mr->targetBranch = '目標分支';
$lang->mr->usersTips = '提示:如果無法選擇指派人和評審人,請先前往GitLab頁面綁定用戶。';
$lang->mr->notFound = "此{$lang->mr->common}不存在。";
$lang->mr->apiError = new stdclass;
$lang->mr->apiError->createMR = "通過API創建合併請求失敗,失敗原因:%s";
$lang->mr->apiError->sudo = "無法以當前用戶綁定的GitLab賬戶進行操作,失敗原因:%s";
$lang->mr->createFailedFromAPI = "創建合併請求失敗。";
$lang->mr->accessGitlabFailed = "當前無法連接到GitLab伺服器。";
$lang->mr->from = "從";
$lang->mr->to = "合併到";
$lang->mr->at = "于";
$lang->mr->pipeline = "流水綫";
$lang->mr->pipelineSuccess = "已通過";
$lang->mr->pipelineFailed = "未通過";
$lang->mr->pipelineCancled = "已取消";
$lang->mr->pipelineUnknown = "未知";
$lang->mr->pipelineStatus = array();
$lang->mr->pipelineStatus['success'] = "已通過";
$lang->mr->pipelineStatus['failed'] = "未通過";
$lang->mr->pipelineStatus['canceled'] = "已取消";
$lang->mr->MRHasConflicts = "是否存在衝突";
$lang->mr->hasConflicts = "存在衝突或等待提交";
$lang->mr->hasNoConflict = "可以合併";
$lang->mr->mergeByManual = "此合併請求可以手動合併,請使用以下";
$lang->mr->commandLine = "合併命令";
$lang->mr->acceptMR = "合併";
$lang->mr->mergeFailed = "無法合併,請核對合併請求狀態";
$lang->mr->mergeSuccess = "已成功合併";
/**
* Merge Command Document.
*
* %s source_project::http_url_to_repo
* %s mr::source_branch
* %s source_project::path_with_namespace . '-' . mr::source_branch
* %s mr::target_branch
* %s source_project::path_with_namespace . '-' . mr::source_branch
* %s mr::target_branch
*/
$lang->mr->commandDocument = <<< EOD
<div class='detail-title'>在本地檢出、審核和手動合併</div>
<div class='detail-content'>
<p><strong>注意:您在本地合併後此合併請求將變為不可合併狀態,需要刪除此合併請求或者提交新的代碼。</strong></p>
<p>
第 1 步. 獲取並查看此合併請求的分支
<pre>
git fetch "%s" %s
git checkout -b "%s" FETCH_HEAD</pre>
</p>
<p>
第 2 步. 在本地查看更改
</p>
<p>
第 3 步. 合併分支並解決出現的任何衝突
<pre>
git fetch origin
git checkout "%s"
git merge --no-ff "%s"</pre>
</p>
<p>
第 4 步. 將合併結果推送到GitLab
<pre> git push origin "%s" </pre>
</p>
</div>
EOD;
+3 -3
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')
+3 -1
View File
@@ -87,7 +87,9 @@ class personnelModel extends model
{
foreach($userGroups[$account] as $groupID => $userGroup)
{
$group = $groupInfo[$groupID];
$group = isset($groupInfo[$groupID]) ? $groupInfo[$groupID] : '';
if(!$group) continue;
if(!isset($group->programs))
{
$programRight = true;
+4 -4
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 = '所有';
-3
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.';
+16 -1
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');
+3
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';
+16
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 > 修改項目集';
+6 -4
View File
@@ -18,7 +18,9 @@ $lang->projectstory->batchUnlinkTip = '其他需求已經移除,如下需求
global $app;
$app->loadLang('product');
$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']['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;
+5 -5
View File
@@ -278,10 +278,10 @@ $lang->story->estimateMustBeNumber = '估算值必須是數字';
$lang->story->estimateMustBePlus = '估算值不能是負數';
$lang->story->form = new stdclass();
$lang->story->form->area = "該{$lang->SRCommon}所屬範圍";
$lang->story->form->desc = "描述及標準,什麼{$lang->SRCommon}?如何驗收?";
$lang->story->form->resource = '資源分配,有誰完成?需要多少時間?';
$lang->story->form->file = "附件,如果該{$lang->SRCommon}有相關檔案,請點此上傳。";
$lang->story->form->area = "該{$lang->SRCommon}所屬範圍";
$lang->story->form->desc = "描述及標準,什麼{$lang->SRCommon}?如何驗收?";
$lang->story->form->resource = '資源分配,有誰完成?需要多少時間?';
$lang->story->form->file = "附件,如果該{$lang->SRCommon}有相關檔案,請點此上傳。";
$lang->story->action = new stdclass();
$lang->story->action->reviewed = array('main' => '$date, 由 <strong>$actor</strong> 記錄評審意見,評審意見為 <strong>$extra</strong>。', 'extra' => 'reviewResultList');
@@ -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> 移除。');
+2
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();
+11 -11
View File
@@ -127,17 +127,17 @@ $lang->testtask->fail = '失敗';
$lang->testtask->showResult = '共執行<span class="text-info">%s</span>次';
$lang->testtask->showFail = '失敗<span class="text-danger">%s</span>次';
$lang->testtask->confirmDelete = '您確認要刪除該測試單嗎?';
$lang->testtask->confirmUnlinkCase = '您確認要移除該用例嗎?';
$lang->testtask->noticeNoOther = '該產品還沒有其他測試單';
$lang->testtask->noTesttask = '暫時沒有測試單。';
$lang->testtask->checkLinked = "請檢查測試單的產品是否與{$lang->executionCommon}相關聯";
$lang->testtask->noImportData = '導入的XML沒有解析出數據。';
$lang->testtask->unitXMLFormat = '請選擇Junit XML 格式的檔案。';
$lang->testtask->titleOfAuto = "%s 自動化測試";
$lang->testtask->cannotBeParsed = '導入的XML檔案內容格式錯誤,無法解析。';
$lang->testtask->finishedDateLess = '實際完成日期不能小於開始日期%s';
$lang->testtask->finishedDateMore = '實際完成日期不能大於今天';
$lang->testtask->confirmDelete = '您確認要刪除該測試單嗎?';
$lang->testtask->confirmUnlinkCase = '您確認要移除該用例嗎?';
$lang->testtask->noticeNoOther = '該產品還沒有其他測試單';
$lang->testtask->noTesttask = '暫時沒有測試單。';
$lang->testtask->checkLinked = "請檢查測試單的產品是否與{$lang->executionCommon}相關聯";
$lang->testtask->noImportData = '導入的XML沒有解析出數據。';
$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 = '所有用例';
+7 -6
View File
@@ -96,12 +96,13 @@ $lang->todo->priList[2] = 'Important';
$lang->todo->priList[3] = 'Normal';
$lang->todo->priList[4] = 'Low';
$lang->todo->typeList['custom'] = 'Custom';
$lang->todo->typeList['cycle'] = 'Recur';
$lang->todo->typeList['bug'] = 'Bug';
$lang->todo->typeList['task'] = 'Task';
$lang->todo->typeList['story'] = 'Story';
$lang->todo->typeList['testtask'] = 'Testtask';
$lang->todo->typeList['custom'] = 'Custom';
$lang->todo->typeList['cycle'] = 'Recur';
$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';
+10 -6
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 = '每年';
@@ -93,12 +96,13 @@ $lang->todo->priList[2] = 2;
$lang->todo->priList[3] = 3;
$lang->todo->priList[4] = 4;
$lang->todo->typeList['custom'] = '自定義';
$lang->todo->typeList['cycle'] = '周期';
$lang->todo->typeList['bug'] = 'Bug';
$lang->todo->typeList['task'] = '任務';
$lang->todo->typeList['story'] = $lang->SRCommon;
$lang->todo->typeList['testtask'] = '測試單';
$lang->todo->typeList['custom'] = '自定義';
$lang->todo->typeList['cycle'] = '周期';
$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 = '這是一條私人事務。:)';
+2 -3
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->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!';
+40 -39
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>";
+1
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';
+2 -1
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 = '新建';
+4
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);