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 = '所有';