From ee49b7048254039f6c6f2b145cea8396fcc51717 Mon Sep 17 00:00:00 2001 From: liumengyi Date: Tue, 14 Jun 2022 16:42:12 +0800 Subject: [PATCH 1/3] * Finish task #57089. --- module/execution/control.php | 9 ++++++++- module/execution/js/common.js | 4 ++-- module/execution/model.php | 2 +- module/execution/view/create.html.php | 6 +++--- module/execution/view/edit.html.php | 2 +- module/execution/view/view.html.php | 20 +++++++++++++------- 6 files changed, 28 insertions(+), 15 deletions(-) diff --git a/module/execution/control.php b/module/execution/control.php index ef26f905ad..0050be1d43 100644 --- a/module/execution/control.php +++ b/module/execution/control.php @@ -1594,9 +1594,16 @@ class execution extends control $newPlans = array(); if(isset($_POST['plans'])) { + foreach($_POST['plans'] as $plans) { - foreach($plans as $planID) $newPlans[$planID] = $planID; + foreach($plans as $planList) + { + foreach($planList as $planID) + { + $newPlans[$planID] = $planID; + } + } } } diff --git a/module/execution/js/common.js b/module/execution/js/common.js index 250b57fc8b..9a831597b7 100644 --- a/module/execution/js/common.js +++ b/module/execution/js/common.js @@ -184,12 +184,12 @@ function loadPlans(product, branchID) var branchID = typeof(branchID) == 'undefined' ? 0 : branchID; var index = $(product).attr('id').replace('products', ''); - $.get(createLink('product', 'ajaxGetPlans', "productID=" + productID + '&branch=0,' + branchID + '&planID=0&fieldID&needCreate=&expired=noclosed,' + (config.currentMethod == 'create' ? 'unexpired' : '') + '¶m=skipParent'), function(data) + $.get(createLink('product', 'ajaxGetPlans', "productID=" + productID + '&branch=0,' + branchID + '&planID=0&fieldID&needCreate=&expired=noclosed,unexpired¶m=skipParent,multiple'), function(data) { if(data) { if($("div#plan" + index).size() == 0) $("#plansBox .row").append('
'); - $("div#plan" + index).html(data).find('select').attr('name', 'plans[' + productID + '][' + branchID + ']').attr('id', 'plans' + productID).chosen(); + $("div#plan" + index).html(data).find('select').attr('name', 'plans[' + productID + '][' + branchID + '][]').attr('id', 'plans' + productID).chosen(); adjustPlanBoxMargin(); } diff --git a/module/execution/model.php b/module/execution/model.php index bb760866c5..fbd5818e4e 100644 --- a/module/execution/model.php +++ b/module/execution/model.php @@ -2023,7 +2023,7 @@ class executionModel extends model $data->project = $executionID; $data->product = $productID; $data->branch = $branch; - $data->plan = isset($plans[$productID][$branch]) ? $plans[$productID][$branch] : $oldPlan; + $data->plan = isset($plans[$productID][$branch]) ? implode(',', $plans[$productID][$branch]) : $oldPlan; $this->dao->insert(TABLE_PROJECTPRODUCT)->data($data)->exec(); $existedProducts[$productID][$branch] = true; } diff --git a/module/execution/view/create.html.php b/module/execution/view/create.html.php index ad142d687e..a38a8e0500 100644 --- a/module/execution/view/create.html.php +++ b/module/execution/view/create.html.php @@ -159,19 +159,19 @@
begin)):?> -
product}][{$plan->branch}]", $productPlan, $plan->id, "class='form-control chosen'");?>
+
product}][{$plan->branch}]", $productPlan, $plan->id, "class='form-control chosen' multiple");?>
id)?> id] as $branchID => $branch):?> id][$branchID]) ? $productPlans[$product->id][$branchID] : array();?> -
id}][$branchID]", $plans, $branches[$product->id][$branchID]->plan, "class='form-control chosen'");?>
+
id}][$branchID]", $plans, $branches[$product->id][$branchID]->plan, "class='form-control chosen' multiple");?>
-
+
diff --git a/module/execution/view/edit.html.php b/module/execution/view/edit.html.php index b8d706294c..6106f73c6d 100644 --- a/module/execution/view/edit.html.php +++ b/module/execution/view/edit.html.php @@ -179,7 +179,7 @@ id] as $branchID => $branch):?> id][$branchID]) ? $productPlans[$product->id][$branchID] : array();?> -
id}][{$branchID}]", $plans, $branches[$product->id][$branchID]->plan, "class='form-control chosen'");?>
+
id}][{$branchID}][]", $plans, $branches[$product->id][$branchID]->plan, "class='form-control chosen' multiple");?>
diff --git a/module/execution/view/view.html.php b/module/execution/view/view.html.php index 70661107d5..10aaac97db 100644 --- a/module/execution/view/view.html.php +++ b/module/execution/view/view.html.php @@ -198,13 +198,19 @@
execution->linkPlan;?>
- $product):?> - plans as $planID):?> - -
createLink('productplan', 'view', "planID={$planID}"), $product->name . '/' . $planGroups[$productID][$planID]);?>
- - - + $product) + { + foreach($product->plans as $planIDList) + { + $planIDList = explode(',', $planIDList); + foreach($planIDList as $planID) + { + if(isset($planGroups[$productID][$planID])) echo '
' . html::a($this->createLink('productplan', 'view', "planID={$planID}"), $product->name . '/' . $planGroups[$productID][$planID]) . '
'; + } + } + } + ?>
From 9a74ea6d5dd1f2ce54fe169cb78dbfdb436d2d0e Mon Sep 17 00:00:00 2001 From: liumengyi Date: Wed, 15 Jun 2022 10:05:52 +0800 Subject: [PATCH 2/3] * Fix bug of task #57089. --- module/execution/css/create.css | 4 ++++ module/execution/css/edit.css | 3 +++ module/execution/model.php | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/module/execution/css/create.css b/module/execution/css/create.css index f8689e174c..1d8a16b1f2 100644 --- a/module/execution/css/create.css +++ b/module/execution/css/create.css @@ -18,3 +18,7 @@ #lifeTimeTips {display: none;} #teams_chosen .chosen-drop ul li .label {margin-top: 3px; background: #fff; color: #838a9d; border: 1px solid #d8d8d8;} + +#productsBox .row .col-sm-4 {padding-right: 13px;} +#plansBox .row {display: inline-table; width: 102%;} +#plansBox .row .col-sm-4 {display: inline-block; float: none; padding-right: 13px;} diff --git a/module/execution/css/edit.css b/module/execution/css/edit.css index 2425ae4674..13a5a35dc3 100644 --- a/module/execution/css/edit.css +++ b/module/execution/css/edit.css @@ -1 +1,4 @@ .chosen-container-single .chosen-single > span {max-width: 100%;} + +#plansBox .row {display: inline-table; width: 102%;} +#plansBox .row .col-sm-4 {display: inline-block; float: none;} diff --git a/module/execution/model.php b/module/execution/model.php index fbd5818e4e..6c423c8929 100644 --- a/module/execution/model.php +++ b/module/execution/model.php @@ -2016,7 +2016,7 @@ class executionModel extends model if(isset($oldProducts[$productID][$branch])) { $oldProduct = $oldProducts[$productID][$branch]; - $oldPlan = $oldProduct->plan; + if($this->app->rawMethod != 'edit') $oldPlan = $oldProduct->plan; } $data = new stdclass(); From 8a8666f1587f78d74f87d88d426136ca360a980b Mon Sep 17 00:00:00 2001 From: liumengyi Date: Wed, 15 Jun 2022 10:06:26 +0800 Subject: [PATCH 3/3] * Finish task #57099. --- module/execution/control.php | 28 ++++-- module/execution/lang/en.php | 147 ++++++++++++++++---------------- module/execution/lang/zh-cn.php | 147 ++++++++++++++++---------------- 3 files changed, 168 insertions(+), 154 deletions(-) diff --git a/module/execution/control.php b/module/execution/control.php index 0050be1d43..41306fdc39 100644 --- a/module/execution/control.php +++ b/module/execution/control.php @@ -1542,7 +1542,7 @@ class execution extends control * @access public * @return void */ - public function edit($executionID, $action = 'edit', $extra = '') + public function edit($executionID, $action = 'edit', $extra = '', $newPlans = '', $confirm = 'no') { /* Load language files and get browseExecutionLink. */ $this->loadModel('product'); @@ -1561,6 +1561,19 @@ class execution extends control include $this->app->getModulePath('', 'execution') . 'lang/' . $this->app->getClientLang() . '.php'; } + if(!empty($newPlans) and $confirm == 'yes') + { + $newPlans = explode(',', $newPlans); + $projectID = $this->dao->select('project')->from(TABLE_EXECUTION)->where('id')->eq($executionID)->fetch('project'); + $this->loadModel('productplan')->linkProject($executionID, $newPlans); + $this->productplan->linkProject($projectID, $newPlans); + return $this->send(array('result' => 'success', 'locate' => inlink('view', "executionID=$executionID"))); + } + elseif(!empty($newPlans)) + { + return print(js::confirm($this->lang->execution->importEditPlanStory, inlink('edit', "executionID=$executionID&action=edit&extra=&newPlans=$newPlans&confirm=yes"), inlink('view', "executionID=$executionID"))); + } + if(!empty($_POST)) { $oldPlans = $this->dao->select('plan')->from(TABLE_PROJECTPRODUCT)->where('project')->eq($executionID)->andWhere('plan')->ne(0)->fetchPairs('plan'); @@ -1591,6 +1604,7 @@ class execution extends control } /* Link the plan stories. */ + $oldPlans = explode(',', implode(',' ,$oldPlans)); $newPlans = array(); if(isset($_POST['plans'])) { @@ -1601,19 +1615,17 @@ class execution extends control { foreach($planList as $planID) { - $newPlans[$planID] = $planID; + if(!array_search($planID, $oldPlans)) $newPlans[$planID] = $planID; } } } } - $diffResult = array_diff($oldPlans, $newPlans); - $diffResult = array_merge($diffResult, array_diff($newPlans, $oldPlans)); - if(!empty($newPlans) and !empty($diffResult)) + $newPlans = array_filter($newPlans); + if(!empty($newPlans)) { - $projectID = $this->dao->select('project')->from(TABLE_EXECUTION)->where('id')->eq($executionID)->fetch('project'); - $this->loadModel('productplan')->linkProject($executionID, $newPlans); - $this->productplan->linkProject($projectID, $newPlans); + $newPlans = implode(',', $newPlans); + return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('edit', "executionID=$executionID&action=edit&extra=&newPlans=$newPlans&confirm=no"))); } $message = $this->executeHooks($executionID); diff --git a/module/execution/lang/en.php b/module/execution/lang/en.php index 83c5cd6e31..89cbbdb32b 100644 --- a/module/execution/lang/en.php +++ b/module/execution/lang/en.php @@ -205,79 +205,80 @@ $lang->execution->burnByList['estimate'] = "View by plan hours"; $lang->execution->burnByList['storyPoint'] = 'View by story point'; /* Method list. */ -$lang->execution->index = "{$lang->executionCommon} Home"; -$lang->execution->task = 'Task List'; -$lang->execution->groupTask = 'Group View'; -$lang->execution->story = 'Story List'; -$lang->execution->qa = 'QA'; -$lang->execution->bug = 'Bug List'; -$lang->execution->testcase = 'Testcase List'; -$lang->execution->dynamic = 'Dynamics'; -$lang->execution->latestDynamic = 'Dynamics'; -$lang->execution->build = 'Build List'; -$lang->execution->testtask = 'Request'; -$lang->execution->burn = 'Burndown'; -$lang->execution->computeBurn = 'Update'; -$lang->execution->burnData = 'Burndown Data'; -$lang->execution->fixFirst = 'Edit 1st-Day Estimates'; -$lang->execution->team = 'Members'; -$lang->execution->doc = 'Document'; -$lang->execution->doclib = 'Docoment Library'; -$lang->execution->manageProducts = 'Linked ' . $lang->productCommon . 's'; -$lang->execution->linkStory = 'Link Stories'; -$lang->execution->linkStoryByPlan = 'Link Stories By Plan'; -$lang->execution->linkPlan = 'Linked Plan'; -$lang->execution->unlinkStoryTasks = 'Unlink'; -$lang->execution->linkedProducts = "Linked {$lang->productCommon}s"; -$lang->execution->unlinkedProducts = "Unlinked {$lang->productCommon}s"; -$lang->execution->view = "Execution Detail"; -$lang->execution->startAction = "Start Execution"; -$lang->execution->activateAction = "Activate Execution"; -$lang->execution->delayAction = "Delay Execution"; -$lang->execution->suspendAction = "Suspend Execution"; -$lang->execution->closeAction = "Close Execution"; -$lang->execution->testtaskAction = "Execution Request"; -$lang->execution->teamAction = "Execution Members"; -$lang->execution->kanbanAction = "Execution Kanban"; -$lang->execution->printKanbanAction = "Print Kanban"; -$lang->execution->treeAction = "Execution Tree View"; -$lang->execution->exportAction = "Export Execution"; -$lang->execution->computeBurnAction = "Update Burndown"; -$lang->execution->create = "Create {$lang->executionCommon}"; -$lang->execution->createExec = "Create {$lang->execution->common}"; -$lang->execution->createAction = "Create {$lang->execution->common}"; -$lang->execution->copyExec = "Copy {$lang->execution->common}"; -$lang->execution->copy = "Copy {$lang->executionCommon}"; -$lang->execution->delete = "Delete {$lang->executionCommon}"; -$lang->execution->deleteAB = "Delete Execution"; -$lang->execution->browse = "{$lang->executionCommon} List"; -$lang->execution->edit = "Edit {$lang->executionCommon}"; -$lang->execution->editAction = "Edit Execution"; -$lang->execution->batchEdit = "Edit"; -$lang->execution->batchEditAction = "Batch Edit"; -$lang->execution->manageMembers = 'Manage Team'; -$lang->execution->unlinkMember = 'Remove Member'; -$lang->execution->unlinkStory = 'Unlink Story'; -$lang->execution->unlinkStoryAB = 'Unlink'; -$lang->execution->batchUnlinkStory = 'Batch Unlink Stories'; -$lang->execution->importTask = 'Transfer Task'; -$lang->execution->importPlanStories = 'Link Stories By Plan'; -$lang->execution->importBug = 'Import Bug'; -$lang->execution->tree = 'Tree'; -$lang->execution->treeTask = 'Show Task Only'; -$lang->execution->treeStory = 'Show Story Only'; -$lang->execution->treeOnlyTask = 'Show Task Only'; -$lang->execution->treeOnlyStory = 'Show Story Only'; -$lang->execution->storyKanban = 'Story Kanban'; -$lang->execution->storySort = 'Rank Story'; -$lang->execution->importPlanStory = $lang->executionCommon . ' is created!\nDo you want to import stories that have been linked to the plan?'; -$lang->execution->needLinkProducts = 'The execution has not been linked with any product, and the related functions cannot be used. Please link the product first and try again.'; -$lang->execution->iteration = 'Iterations'; -$lang->execution->iterationInfo = '%s Iterations'; -$lang->execution->viewAll = 'View All'; -$lang->execution->testreport = 'Test Report'; -$lang->execution->taskKanban = 'Task Kanban'; -$lang->execution->RDKanban = 'Research & Development Kanban'; +$lang->execution->index = "{$lang->executionCommon} Home"; +$lang->execution->task = 'Task List'; +$lang->execution->groupTask = 'Group View'; +$lang->execution->story = 'Story List'; +$lang->execution->qa = 'QA'; +$lang->execution->bug = 'Bug List'; +$lang->execution->testcase = 'Testcase List'; +$lang->execution->dynamic = 'Dynamics'; +$lang->execution->latestDynamic = 'Dynamics'; +$lang->execution->build = 'Build List'; +$lang->execution->testtask = 'Request'; +$lang->execution->burn = 'Burndown'; +$lang->execution->computeBurn = 'Update'; +$lang->execution->burnData = 'Burndown Data'; +$lang->execution->fixFirst = 'Edit 1st-Day Estimates'; +$lang->execution->team = 'Members'; +$lang->execution->doc = 'Document'; +$lang->execution->doclib = 'Docoment Library'; +$lang->execution->manageProducts = 'Linked ' . $lang->productCommon . 's'; +$lang->execution->linkStory = 'Link Stories'; +$lang->execution->linkStoryByPlan = 'Link Stories By Plan'; +$lang->execution->linkPlan = 'Linked Plan'; +$lang->execution->unlinkStoryTasks = 'Unlink'; +$lang->execution->linkedProducts = "Linked {$lang->productCommon}s"; +$lang->execution->unlinkedProducts = "Unlinked {$lang->productCommon}s"; +$lang->execution->view = "Execution Detail"; +$lang->execution->startAction = "Start Execution"; +$lang->execution->activateAction = "Activate Execution"; +$lang->execution->delayAction = "Delay Execution"; +$lang->execution->suspendAction = "Suspend Execution"; +$lang->execution->closeAction = "Close Execution"; +$lang->execution->testtaskAction = "Execution Request"; +$lang->execution->teamAction = "Execution Members"; +$lang->execution->kanbanAction = "Execution Kanban"; +$lang->execution->printKanbanAction = "Print Kanban"; +$lang->execution->treeAction = "Execution Tree View"; +$lang->execution->exportAction = "Export Execution"; +$lang->execution->computeBurnAction = "Update Burndown"; +$lang->execution->create = "Create {$lang->executionCommon}"; +$lang->execution->createExec = "Create {$lang->execution->common}"; +$lang->execution->createAction = "Create {$lang->execution->common}"; +$lang->execution->copyExec = "Copy {$lang->execution->common}"; +$lang->execution->copy = "Copy {$lang->executionCommon}"; +$lang->execution->delete = "Delete {$lang->executionCommon}"; +$lang->execution->deleteAB = "Delete Execution"; +$lang->execution->browse = "{$lang->executionCommon} List"; +$lang->execution->edit = "Edit {$lang->executionCommon}"; +$lang->execution->editAction = "Edit Execution"; +$lang->execution->batchEdit = "Edit"; +$lang->execution->batchEditAction = "Batch Edit"; +$lang->execution->manageMembers = 'Manage Team'; +$lang->execution->unlinkMember = 'Remove Member'; +$lang->execution->unlinkStory = 'Unlink Story'; +$lang->execution->unlinkStoryAB = 'Unlink'; +$lang->execution->batchUnlinkStory = 'Batch Unlink Stories'; +$lang->execution->importTask = 'Transfer Task'; +$lang->execution->importPlanStories = 'Link Stories By Plan'; +$lang->execution->importBug = 'Import Bug'; +$lang->execution->tree = 'Tree'; +$lang->execution->treeTask = 'Show Task Only'; +$lang->execution->treeStory = 'Show Story Only'; +$lang->execution->treeOnlyTask = 'Show Task Only'; +$lang->execution->treeOnlyStory = 'Show Story Only'; +$lang->execution->storyKanban = 'Story Kanban'; +$lang->execution->storySort = 'Rank Story'; +$lang->execution->importPlanStory = $lang->executionCommon . ' is created!\nDo you want to import stories that have been linked to the plan?'; +$lang->execution->importEditPlanStory = $lang->executionCommon . ' is edited!\nDo you want to import stories that have been linked to the plan?'; +$lang->execution->needLinkProducts = 'The execution has not been linked with any product, and the related functions cannot be used. Please link the product first and try again.'; +$lang->execution->iteration = 'Iterations'; +$lang->execution->iterationInfo = '%s Iterations'; +$lang->execution->viewAll = 'View All'; +$lang->execution->testreport = 'Test Report'; +$lang->execution->taskKanban = 'Task Kanban'; +$lang->execution->RDKanban = 'Research & Development Kanban'; /* Group browsing. */ $lang->execution->allTasks = 'All'; diff --git a/module/execution/lang/zh-cn.php b/module/execution/lang/zh-cn.php index 8f25c9c16f..15b8062029 100644 --- a/module/execution/lang/zh-cn.php +++ b/module/execution/lang/zh-cn.php @@ -205,79 +205,80 @@ $lang->execution->burnByList['estimate'] = "按计划工时查看"; $lang->execution->burnByList['storyPoint'] = '按故事点查看'; /* 方法列表。*/ -$lang->execution->index = "{$lang->execution->common}主页"; -$lang->execution->task = '任务列表'; -$lang->execution->groupTask = '分组浏览任务'; -$lang->execution->story = "{$lang->SRCommon}列表"; -$lang->execution->qa = '测试仪表盘'; -$lang->execution->bug = 'Bug列表'; -$lang->execution->testcase = '用例列表'; -$lang->execution->dynamic = '动态'; -$lang->execution->latestDynamic = '最新动态'; -$lang->execution->build = '所有版本'; -$lang->execution->testtask = '测试单'; -$lang->execution->burn = '燃尽图'; -$lang->execution->computeBurn = '更新燃尽图'; -$lang->execution->burnData = '燃尽图数据'; -$lang->execution->fixFirst = '修改首天工时'; -$lang->execution->team = '团队成员'; -$lang->execution->doc = '文档列表'; -$lang->execution->doclib = '文档库列表'; -$lang->execution->manageProducts = '关联' . $lang->productCommon; -$lang->execution->linkStory = "关联{$lang->SRCommon}"; -$lang->execution->linkStoryByPlan = "按照计划关联"; -$lang->execution->linkPlan = "关联计划"; -$lang->execution->unlinkStoryTasks = "未关联{$lang->SRCommon}任务"; -$lang->execution->linkedProducts = '已关联'; -$lang->execution->unlinkedProducts = '未关联'; -$lang->execution->view = "{$lang->execution->common}概况"; -$lang->execution->startAction = "开始{$lang->execution->common}"; -$lang->execution->activateAction = "激活{$lang->execution->common}"; -$lang->execution->delayAction = "延期{$lang->execution->common}"; -$lang->execution->suspendAction = "挂起{$lang->execution->common}"; -$lang->execution->closeAction = "关闭{$lang->execution->common}"; -$lang->execution->testtaskAction = "{$lang->execution->common}测试单"; -$lang->execution->teamAction = "{$lang->execution->common}团队"; -$lang->execution->kanbanAction = "{$lang->execution->common}看板"; -$lang->execution->printKanbanAction = "打印看板"; -$lang->execution->treeAction = "{$lang->execution->common}树状图"; -$lang->execution->exportAction = "导出{$lang->execution->common}"; -$lang->execution->computeBurnAction = "计算燃尽图"; -$lang->execution->create = "添加{$lang->executionCommon}"; -$lang->execution->createExec = "添加{$lang->execution->common}"; -$lang->execution->createAction = "添加{$lang->execution->common}"; -$lang->execution->copyExec = "复制{$lang->execution->common}"; -$lang->execution->copy = "复制{$lang->executionCommon}"; -$lang->execution->delete = "删除{$lang->executionCommon}"; -$lang->execution->deleteAB = "删除{$lang->execution->common}"; -$lang->execution->browse = "浏览{$lang->execution->common}"; -$lang->execution->edit = "设置{$lang->executionCommon}"; -$lang->execution->editAction = "编辑{$lang->execution->common}"; -$lang->execution->batchEdit = "编辑"; -$lang->execution->batchEditAction = "批量编辑"; -$lang->execution->manageMembers = '团队管理'; -$lang->execution->unlinkMember = '移除成员'; -$lang->execution->unlinkStory = "移除{$lang->SRCommon}"; -$lang->execution->unlinkStoryAB = "移除{$lang->SRCommon}"; -$lang->execution->batchUnlinkStory = "批量移除{$lang->SRCommon}"; -$lang->execution->importTask = '转入任务'; -$lang->execution->importPlanStories = "按计划关联{$lang->SRCommon}"; -$lang->execution->importBug = '导入Bug'; -$lang->execution->tree = '树状图'; -$lang->execution->treeTask = '只看任务'; -$lang->execution->treeStory = "只看{$lang->SRCommon}"; -$lang->execution->treeOnlyTask = '树状图只看任务'; -$lang->execution->treeOnlyStory = "树状图只看{$lang->SRCommon}"; -$lang->execution->storyKanban = "{$lang->SRCommon}看板"; -$lang->execution->storySort = "{$lang->SRCommon}排序"; -$lang->execution->importPlanStory = '创建' . $lang->executionCommon . '成功!\n是否导入计划关联的相关' . $lang->SRCommon . '?'; -$lang->execution->needLinkProducts = '该执行还未关联任何产品,相关功能无法使用,请先关联产品后再试。'; -$lang->execution->iteration = '版本迭代'; -$lang->execution->iterationInfo = '迭代%s次'; -$lang->execution->viewAll = '查看所有'; -$lang->execution->testreport = '测试报告'; -$lang->execution->taskKanban = '任务看板'; -$lang->execution->RDKanban = '研发看板'; +$lang->execution->index = "{$lang->execution->common}主页"; +$lang->execution->task = '任务列表'; +$lang->execution->groupTask = '分组浏览任务'; +$lang->execution->story = "{$lang->SRCommon}列表"; +$lang->execution->qa = '测试仪表盘'; +$lang->execution->bug = 'Bug列表'; +$lang->execution->testcase = '用例列表'; +$lang->execution->dynamic = '动态'; +$lang->execution->latestDynamic = '最新动态'; +$lang->execution->build = '所有版本'; +$lang->execution->testtask = '测试单'; +$lang->execution->burn = '燃尽图'; +$lang->execution->computeBurn = '更新燃尽图'; +$lang->execution->burnData = '燃尽图数据'; +$lang->execution->fixFirst = '修改首天工时'; +$lang->execution->team = '团队成员'; +$lang->execution->doc = '文档列表'; +$lang->execution->doclib = '文档库列表'; +$lang->execution->manageProducts = '关联' . $lang->productCommon; +$lang->execution->linkStory = "关联{$lang->SRCommon}"; +$lang->execution->linkStoryByPlan = "按照计划关联"; +$lang->execution->linkPlan = "关联计划"; +$lang->execution->unlinkStoryTasks = "未关联{$lang->SRCommon}任务"; +$lang->execution->linkedProducts = '已关联'; +$lang->execution->unlinkedProducts = '未关联'; +$lang->execution->view = "{$lang->execution->common}概况"; +$lang->execution->startAction = "开始{$lang->execution->common}"; +$lang->execution->activateAction = "激活{$lang->execution->common}"; +$lang->execution->delayAction = "延期{$lang->execution->common}"; +$lang->execution->suspendAction = "挂起{$lang->execution->common}"; +$lang->execution->closeAction = "关闭{$lang->execution->common}"; +$lang->execution->testtaskAction = "{$lang->execution->common}测试单"; +$lang->execution->teamAction = "{$lang->execution->common}团队"; +$lang->execution->kanbanAction = "{$lang->execution->common}看板"; +$lang->execution->printKanbanAction = "打印看板"; +$lang->execution->treeAction = "{$lang->execution->common}树状图"; +$lang->execution->exportAction = "导出{$lang->execution->common}"; +$lang->execution->computeBurnAction = "计算燃尽图"; +$lang->execution->create = "添加{$lang->executionCommon}"; +$lang->execution->createExec = "添加{$lang->execution->common}"; +$lang->execution->createAction = "添加{$lang->execution->common}"; +$lang->execution->copyExec = "复制{$lang->execution->common}"; +$lang->execution->copy = "复制{$lang->executionCommon}"; +$lang->execution->delete = "删除{$lang->executionCommon}"; +$lang->execution->deleteAB = "删除{$lang->execution->common}"; +$lang->execution->browse = "浏览{$lang->execution->common}"; +$lang->execution->edit = "设置{$lang->executionCommon}"; +$lang->execution->editAction = "编辑{$lang->execution->common}"; +$lang->execution->batchEdit = "编辑"; +$lang->execution->batchEditAction = "批量编辑"; +$lang->execution->manageMembers = '团队管理'; +$lang->execution->unlinkMember = '移除成员'; +$lang->execution->unlinkStory = "移除{$lang->SRCommon}"; +$lang->execution->unlinkStoryAB = "移除{$lang->SRCommon}"; +$lang->execution->batchUnlinkStory = "批量移除{$lang->SRCommon}"; +$lang->execution->importTask = '转入任务'; +$lang->execution->importPlanStories = "按计划关联{$lang->SRCommon}"; +$lang->execution->importBug = '导入Bug'; +$lang->execution->tree = '树状图'; +$lang->execution->treeTask = '只看任务'; +$lang->execution->treeStory = "只看{$lang->SRCommon}"; +$lang->execution->treeOnlyTask = '树状图只看任务'; +$lang->execution->treeOnlyStory = "树状图只看{$lang->SRCommon}"; +$lang->execution->storyKanban = "{$lang->SRCommon}看板"; +$lang->execution->storySort = "{$lang->SRCommon}排序"; +$lang->execution->importPlanStory = '创建' . $lang->executionCommon . '成功!\n是否导入计划关联的相关' . $lang->SRCommon . '?'; +$lang->execution->importEditPlanStory = '编辑' . $lang->executionCommon . '成功!\n是否导入计划关联的相关' . $lang->SRCommon . '?'; +$lang->execution->needLinkProducts = '该执行还未关联任何产品,相关功能无法使用,请先关联产品后再试。'; +$lang->execution->iteration = '版本迭代'; +$lang->execution->iterationInfo = '迭代%s次'; +$lang->execution->viewAll = '查看所有'; +$lang->execution->testreport = '测试报告'; +$lang->execution->taskKanban = '任务看板'; +$lang->execution->RDKanban = '研发看板'; /* 分组浏览。*/ $lang->execution->allTasks = '所有';