Merge branch 'master' of github.com:easysoft/zentaopms
This commit is contained in:
+46
-14
@@ -24,26 +24,58 @@ $config->wideSize = 1400;
|
||||
$config->timeout = 30000;
|
||||
$config->duplicateTime = 60;
|
||||
|
||||
$config->productCommonList['en'][0] = 'Product';
|
||||
$config->productCommonList['en'][1] = 'Project';
|
||||
$config->projectCommonList['en'][0] = 'Project';
|
||||
$config->projectCommonList['en'][1] = 'Sprint';
|
||||
/* Product common list. */
|
||||
$config->productCommonList['zh-cn'][0] = '产品';
|
||||
$config->productCommonList['zh-cn'][1] = '项目';
|
||||
$config->projectCommonList['zh-cn'][0] = '项目';
|
||||
$config->projectCommonList['zh-cn'][1] = '迭代';
|
||||
|
||||
$config->productCommonList['zh-tw'][0] = '產品';
|
||||
$config->productCommonList['zh-tw'][1] = '項目';
|
||||
|
||||
$config->productCommonList['en'][0] = 'Product';
|
||||
$config->productCommonList['en'][1] = 'Project';
|
||||
|
||||
$config->productCommonList['de'][0] = 'Produkt';
|
||||
$config->productCommonList['de'][1] = 'Projekt';
|
||||
|
||||
$config->productCommonList['fr'][0] = 'Product';
|
||||
$config->productCommonList['fr'][1] = 'Projet';
|
||||
|
||||
/* Project common list. */
|
||||
$config->projectCommonList['zh-cn'][0] = '项目';
|
||||
$config->projectCommonList['zh-cn'][1] = '迭代';
|
||||
$config->projectCommonList['zh-cn'][2] = '冲刺';
|
||||
|
||||
$config->projectCommonList['zh-tw'][0] = '項目';
|
||||
$config->projectCommonList['zh-tw'][1] = '迭代';
|
||||
$config->productCommonList['de'][0] = 'Produkt';
|
||||
$config->productCommonList['de'][1] = 'Projekt';
|
||||
$config->projectCommonList['de'][0] = 'Projekt';
|
||||
$config->projectCommonList['de'][1] = 'Iteration';
|
||||
$config->productCommonList['fr'][0] = 'Product';
|
||||
$config->productCommonList['fr'][1] = 'Projet';
|
||||
$config->projectCommonList['fr'][0] = 'Projet';
|
||||
$config->projectCommonList['fr'][1] = 'Sprint';
|
||||
$config->projectCommonList['zh-tw'][2] = '冲刺';
|
||||
|
||||
$config->projectCommonList['en'][0] = 'Project';
|
||||
$config->projectCommonList['en'][1] = 'Iteration';
|
||||
$config->projectCommonList['en'][2] = 'Sprint';
|
||||
|
||||
$config->projectCommonList['de'][0] = 'Projekt';
|
||||
$config->projectCommonList['de'][1] = 'Iteration';
|
||||
$config->projectCommonList['de'][2] = 'Sprint';
|
||||
|
||||
$config->projectCommonList['fr'][0] = 'Projet';
|
||||
$config->projectCommonList['fr'][1] = 'Iteration';
|
||||
$config->projectCommonList['fr'][2] = 'Sprint';
|
||||
|
||||
/* Story common list. */
|
||||
$config->storyCommonList['zh-cn'][0] = '需求';
|
||||
$config->storyCommonList['zh-cn'][1] = '故事';
|
||||
|
||||
$config->storyCommonList['zh-tw'][0] = '需求';
|
||||
$config->storyCommonList['zh-tw'][1] = '故事';
|
||||
|
||||
$config->storyCommonList['en'][0] = 'story';
|
||||
$config->storyCommonList['en'][1] = 'story';
|
||||
|
||||
$config->storyCommonList['de'][0] = 'story';
|
||||
$config->storyCommonList['de'][1] = 'story';
|
||||
|
||||
$config->storyCommonList['fr'][0] = 'story';
|
||||
$config->storyCommonList['fr'][1] = 'story';
|
||||
|
||||
/* Supported charsets. */
|
||||
$config->charsets['zh-cn']['utf-8'] = 'UTF-8';
|
||||
|
||||
@@ -105,7 +105,8 @@ class router extends baseRouter
|
||||
|
||||
try
|
||||
{
|
||||
$productProject = $this->dbh->query('SELECT value FROM' . TABLE_CONFIG . "WHERE `owner`='system' AND `module`='custom' AND `key`='productProject'")->fetch();
|
||||
$productProject = $this->dbh->query('SELECT value FROM' . TABLE_CONFIG . "WHERE `owner`='system' AND `module`='custom' AND `key`='productProject'")->fetch();
|
||||
$storyRequirement = $this->dbh->query('SELECT value FROM' . TABLE_CONFIG . "WHERE `owner`='system' AND `module`='custom' AND `key`='storyRequirement'")->fetch();
|
||||
}
|
||||
catch (PDOException $exception)
|
||||
{
|
||||
@@ -125,7 +126,7 @@ class router extends baseRouter
|
||||
}
|
||||
}
|
||||
|
||||
$productCommon = $projectCommon = 0;
|
||||
$productCommon = $projectCommon = $storyCommon = 0;
|
||||
if(!empty($this->config->isINT)) $projectCommon = 1;
|
||||
if($productProject)
|
||||
{
|
||||
@@ -133,6 +134,12 @@ class router extends baseRouter
|
||||
list($productCommon, $projectCommon) = explode('_', $productProject);
|
||||
}
|
||||
|
||||
if($storyRequirement)
|
||||
{
|
||||
$storyCommon = $storyRequirement->value;
|
||||
$lang->storyCommon = isset($this->config->storyCommonList[$this->clientLang][(int)$storyCommon]) ? $this->config->storyCommonList[$this->clientLang][(int)$storyCommon] : $this->config->storyCommonList['en'][(int)$storyCommon];
|
||||
}
|
||||
|
||||
/* Set productCommon and projectCommon. Default english lang. */
|
||||
$lang->productCommon = isset($this->config->productCommonList[$this->clientLang][(int)$productCommon]) ? $this->config->productCommonList[$this->clientLang][(int)$productCommon] : $this->config->productCommonList['en'][(int)$productCommon];
|
||||
$lang->projectCommon = isset($this->config->projectCommonList[$this->clientLang][(int)$projectCommon]) ? $this->config->projectCommonList[$this->clientLang][(int)$projectCommon] : $this->config->projectCommonList['en'][(int)$projectCommon];
|
||||
|
||||
@@ -330,7 +330,7 @@ class baseValidater
|
||||
*/
|
||||
public static function checkNotEmpty($var)
|
||||
{
|
||||
return !empty($var);
|
||||
return strlen(trim($var)) != 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -344,7 +344,7 @@ class baseValidater
|
||||
*/
|
||||
public static function checkEmpty($var)
|
||||
{
|
||||
return empty($var);
|
||||
return strlen(trim($var)) == 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -65,7 +65,7 @@ $lang->action->periods['thismonth'] = $lang->action->dynamic->thisMonth;
|
||||
$lang->action->periods['lastmonth'] = $lang->action->dynamic->lastMonth;
|
||||
|
||||
$lang->action->objectTypes['product'] = $lang->productCommon;
|
||||
$lang->action->objectTypes['story'] = '需求';
|
||||
$lang->action->objectTypes['story'] = $lang->storyCommon;
|
||||
$lang->action->objectTypes['productplan'] = '计划';
|
||||
$lang->action->objectTypes['release'] = '发布';
|
||||
$lang->action->objectTypes['project'] = $lang->projectCommon;
|
||||
@@ -108,7 +108,7 @@ $lang->action->desc->commented = '$date, 由 <strong>$actor</strong> 添加
|
||||
$lang->action->desc->activated = '$date, 由 <strong>$actor</strong> 激活。' . "\n";
|
||||
$lang->action->desc->blocked = '$date, 由 <strong>$actor</strong> 阻塞。' . "\n";
|
||||
$lang->action->desc->moved = '$date, 由 <strong>$actor</strong> 移动,之前为 "$extra"。' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, 由 <strong>$actor</strong> 确认需求变动,最新版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, 由 <strong>$actor</strong> 确认' . $lang->storyCommon . '变动,最新版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, 由 <strong>$actor</strong> 确认用例变动,最新版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, 由 <strong>$actor</strong> 确认Bug。' . "\n";
|
||||
$lang->action->desc->frombug = '$date, 由 <strong>$actor</strong> Bug转化而来,Bug编号为 <strong>$extra</strong>。';
|
||||
@@ -163,10 +163,10 @@ $lang->action->label->blocked = '阻塞了';
|
||||
$lang->action->label->resolved = '解决了';
|
||||
$lang->action->label->reviewed = '评审了';
|
||||
$lang->action->label->moved = '移动了';
|
||||
$lang->action->label->confirmed = '确认了需求';
|
||||
$lang->action->label->confirmed = "确认了{$lang->storyCommon}";
|
||||
$lang->action->label->bugconfirmed = '确认了';
|
||||
$lang->action->label->tostory = '转需求';
|
||||
$lang->action->label->frombug = '转需求';
|
||||
$lang->action->label->tostory = "转{$lang->storyCommon}";
|
||||
$lang->action->label->frombug = "转{$lang->storyCommon}";
|
||||
$lang->action->label->fromlib = '从用例库导入';
|
||||
$lang->action->label->totask = '转任务';
|
||||
$lang->action->label->svncommited = '提交代码';
|
||||
@@ -184,10 +184,10 @@ $lang->action->label->linkrelatedbug = "关联了相关Bug";
|
||||
$lang->action->label->unlinkrelatedbug = "移除了相关Bug";
|
||||
$lang->action->label->linkrelatedcase = "关联了相关用例";
|
||||
$lang->action->label->unlinkrelatedcase = "移除了相关用例";
|
||||
$lang->action->label->linkrelatedstory = "关联了相关需求";
|
||||
$lang->action->label->unlinkrelatedstory = "移除了相关需求";
|
||||
$lang->action->label->subdividestory = "细分了需求";
|
||||
$lang->action->label->unlinkchildstory = "移除了细分需求";
|
||||
$lang->action->label->linkrelatedstory = "关联了相关{$lang->storyCommon}";
|
||||
$lang->action->label->unlinkrelatedstory = "移除了相关{$lang->storyCommon}";
|
||||
$lang->action->label->subdividestory = "细分了{$lang->storyCommon}";
|
||||
$lang->action->label->unlinkchildstory = "移除了细分{$lang->storyCommon}";
|
||||
$lang->action->label->started = '开始了';
|
||||
$lang->action->label->restarted = '继续了';
|
||||
$lang->action->label->recordestimate = '记录了工时';
|
||||
@@ -238,22 +238,22 @@ $lang->action->dynamicAction->release['edited'] = '编辑发布';
|
||||
$lang->action->dynamicAction->release['changestatus'] = '修改发布状态';
|
||||
$lang->action->dynamicAction->release['undeleted'] = '还原发布';
|
||||
$lang->action->dynamicAction->release['hidden'] = '隐藏发布';
|
||||
$lang->action->dynamicAction->story['opened'] = '创建需求';
|
||||
$lang->action->dynamicAction->story['edited'] = '编辑需求';
|
||||
$lang->action->dynamicAction->story['activated'] = '激活需求';
|
||||
$lang->action->dynamicAction->story['reviewed'] = '评审需求';
|
||||
$lang->action->dynamicAction->story['closed'] = '关闭需求';
|
||||
$lang->action->dynamicAction->story['assigned'] = '指派需求';
|
||||
$lang->action->dynamicAction->story['changed'] = '变更需求';
|
||||
$lang->action->dynamicAction->story['linked2plan'] = '需求关联计划';
|
||||
$lang->action->dynamicAction->story['unlinkedfromplan'] = '计划移除需求';
|
||||
$lang->action->dynamicAction->story['linked2release'] = '需求关联发布';
|
||||
$lang->action->dynamicAction->story['unlinkedfromrelease'] = '发布移除需求';
|
||||
$lang->action->dynamicAction->story['linked2build'] = '需求关联版本';
|
||||
$lang->action->dynamicAction->story['unlinkedfrombuild'] = '版本移除需求';
|
||||
$lang->action->dynamicAction->story['opened'] = "创建{$lang->storyCommon}";
|
||||
$lang->action->dynamicAction->story['edited'] = "编辑{$lang->storyCommon}";
|
||||
$lang->action->dynamicAction->story['activated'] = "激活{$lang->storyCommon}";
|
||||
$lang->action->dynamicAction->story['reviewed'] = "评审{$lang->storyCommon}";
|
||||
$lang->action->dynamicAction->story['closed'] = "关闭{$lang->storyCommon}";
|
||||
$lang->action->dynamicAction->story['assigned'] = "指派{$lang->storyCommon}";
|
||||
$lang->action->dynamicAction->story['changed'] = "变更{$lang->storyCommon}";
|
||||
$lang->action->dynamicAction->story['linked2plan'] = "{$lang->storyCommon}关联计划";
|
||||
$lang->action->dynamicAction->story['unlinkedfromplan'] = "计划移除{$lang->storyCommon}";
|
||||
$lang->action->dynamicAction->story['linked2release'] = "{$lang->storyCommon}关联发布";
|
||||
$lang->action->dynamicAction->story['unlinkedfromrelease'] = "发布移除{$lang->storyCommon}";
|
||||
$lang->action->dynamicAction->story['linked2build'] = "{$lang->storyCommon}关联版本";
|
||||
$lang->action->dynamicAction->story['unlinkedfrombuild'] = "版本移除{$lang->storyCommon}";
|
||||
$lang->action->dynamicAction->story['unlinkedfromproject'] = '移除项目';
|
||||
$lang->action->dynamicAction->story['undeleted'] = '还原需求';
|
||||
$lang->action->dynamicAction->story['hidden'] = '隐藏需求';
|
||||
$lang->action->dynamicAction->story['undeleted'] = "还原{$lang->storyCommon}";
|
||||
$lang->action->dynamicAction->story['hidden'] = "隐藏{$lang->storyCommon}";
|
||||
|
||||
$lang->action->dynamicAction->project['opened'] = '创建' . $lang->projectCommon;
|
||||
$lang->action->dynamicAction->project['edited'] = '编辑' . $lang->projectCommon;
|
||||
@@ -271,7 +271,7 @@ $lang->action->dynamicAction->task['opened'] = '创建任务';
|
||||
$lang->action->dynamicAction->task['edited'] = '编辑任务';
|
||||
$lang->action->dynamicAction->task['commented'] = '备注任务';
|
||||
$lang->action->dynamicAction->task['assigned'] = '指派任务';
|
||||
$lang->action->dynamicAction->task['confirmed'] = '确认需求变更';
|
||||
$lang->action->dynamicAction->task['confirmed'] = "确认{$lang->storyCommon}变更";
|
||||
$lang->action->dynamicAction->task['started'] = '开始任务';
|
||||
$lang->action->dynamicAction->task['finished'] = '完成任务';
|
||||
$lang->action->dynamicAction->task['recordestimate'] = '记录工时';
|
||||
@@ -302,8 +302,8 @@ $lang->action->dynamicAction->bug['bugconfirmed'] = '确认Bug';
|
||||
$lang->action->dynamicAction->bug['resolved'] = '解决Bug';
|
||||
$lang->action->dynamicAction->bug['undeleted'] = '还原Bug';
|
||||
$lang->action->dynamicAction->bug['hidden'] = '隐藏Bug';
|
||||
$lang->action->dynamicAction->bug['confirmed'] = '确认需求变更';
|
||||
$lang->action->dynamicAction->bug['tostory'] = '转需求';
|
||||
$lang->action->dynamicAction->bug['confirmed'] = "确认{$lang->storyCommon}变更";
|
||||
$lang->action->dynamicAction->bug['tostory'] = "转{$lang->storyCommon}";
|
||||
$lang->action->dynamicAction->bug['totask'] = '转任务';
|
||||
$lang->action->dynamicAction->bug['linked2plan'] = 'Bug关联计划';
|
||||
$lang->action->dynamicAction->bug['unlinkedfromplan'] = '计划移除Bug';
|
||||
@@ -323,7 +323,7 @@ $lang->action->dynamicAction->case['deleted'] = '删除用例';
|
||||
$lang->action->dynamicAction->case['undeleted'] = '还原用例';
|
||||
$lang->action->dynamicAction->case['hidden'] = '隐藏用例';
|
||||
$lang->action->dynamicAction->case['reviewed'] = '评审用例';
|
||||
$lang->action->dynamicAction->case['confirmed'] = '确认需求变更';
|
||||
$lang->action->dynamicAction->case['confirmed'] = "确认{$lang->storyCommon}变更";
|
||||
$lang->action->dynamicAction->case['fromlib'] = '从用例库导入';
|
||||
$lang->action->dynamicAction->testreport['opened'] = '创建测试报告';
|
||||
$lang->action->dynamicAction->testreport['edited'] = '编辑测试报告';
|
||||
@@ -365,7 +365,7 @@ $lang->action->dynamicAction->entry['edited'] = '编辑应用';
|
||||
$lang->action->label->product = $lang->productCommon . '|product|view|productID=%s';
|
||||
$lang->action->label->productplan = '计划|productplan|view|productID=%s';
|
||||
$lang->action->label->release = '发布|release|view|productID=%s';
|
||||
$lang->action->label->story = '需求|story|view|storyID=%s';
|
||||
$lang->action->label->story = "{$lang->storyCommon}|story|view|storyID=%s";
|
||||
$lang->action->label->project = "{$lang->projectCommon}|project|view|projectID=%s";
|
||||
$lang->action->label->task = '任务|task|view|taskID=%s';
|
||||
$lang->action->label->build = '版本|build|view|buildID=%s';
|
||||
@@ -391,7 +391,7 @@ $lang->action->search->objectTypeList['bug'] = 'Bug';
|
||||
$lang->action->search->objectTypeList['case'] = '用例';
|
||||
$lang->action->search->objectTypeList['caseresult'] = '用例结果';
|
||||
$lang->action->search->objectTypeList['stepresult'] = '用例步骤';
|
||||
$lang->action->search->objectTypeList['story'] = '需求';
|
||||
$lang->action->search->objectTypeList['story'] = $lang->storyCommon;
|
||||
$lang->action->search->objectTypeList['task'] = '任务';
|
||||
$lang->action->search->objectTypeList['testtask'] = '测试单';
|
||||
$lang->action->search->objectTypeList['user'] = '用户';
|
||||
|
||||
@@ -38,7 +38,7 @@ $lang->block->lblTesttask = '查看测试详情';
|
||||
|
||||
$lang->block->leftToday = '今天剩余工作总计';
|
||||
$lang->block->myTask = '我的任务';
|
||||
$lang->block->myStory = '我的需求';
|
||||
$lang->block->myStory = "我的{$lang->storyCommon}";
|
||||
$lang->block->myBug = '我的BUG';
|
||||
$lang->block->myProject = '进行中的' . $lang->projectCommon;
|
||||
$lang->block->myProduct = '未关闭的' . $lang->productCommon;
|
||||
@@ -82,7 +82,7 @@ $lang->block->default['product']['3']['grid'] = 8;
|
||||
$lang->block->default['product']['3']['params']['num'] = 15;
|
||||
$lang->block->default['product']['3']['params']['type'] = 'noclosed';
|
||||
|
||||
$lang->block->default['product']['4']['title'] = '指派给我的需求';
|
||||
$lang->block->default['product']['4']['title'] = "指派给我的{$lang->storyCommon}";
|
||||
$lang->block->default['product']['4']['block'] = 'story';
|
||||
$lang->block->default['product']['4']['grid'] = 4;
|
||||
|
||||
@@ -238,7 +238,7 @@ $lang->block->availableBlocks->todo = '我的待办';
|
||||
$lang->block->availableBlocks->task = '我的任务';
|
||||
$lang->block->availableBlocks->bug = '我的Bug';
|
||||
$lang->block->availableBlocks->case = '我的用例';
|
||||
$lang->block->availableBlocks->story = '我的需求';
|
||||
$lang->block->availableBlocks->story = "我的{$lang->storyCommon}";
|
||||
$lang->block->availableBlocks->product = $lang->productCommon . '列表';
|
||||
$lang->block->availableBlocks->project = $lang->projectCommon . '列表';
|
||||
$lang->block->availableBlocks->plan = '计划列表';
|
||||
@@ -256,7 +256,7 @@ $lang->block->modules['product']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['product']->availableBlocks->statistic = $lang->productCommon . '统计';
|
||||
$lang->block->modules['product']->availableBlocks->overview = $lang->productCommon . '总览';
|
||||
$lang->block->modules['product']->availableBlocks->list = $lang->productCommon . '列表';
|
||||
$lang->block->modules['product']->availableBlocks->story = '需求列表';
|
||||
$lang->block->modules['product']->availableBlocks->story = "{$lang->storyCommon}列表";
|
||||
$lang->block->modules['product']->availableBlocks->plan = '计划列表';
|
||||
$lang->block->modules['product']->availableBlocks->release = '发布列表';
|
||||
$lang->block->modules['project'] = new stdclass();
|
||||
@@ -398,7 +398,7 @@ $lang->block->gridOptions[4] = '右侧';
|
||||
|
||||
$lang->block->flowchart = array();
|
||||
$lang->block->flowchart['admin'] = array('管理员', '维护公司', '添加用户', '维护权限');
|
||||
$lang->block->flowchart['product'] = array($lang->productCommon . '经理', '创建' . $lang->productCommon, '维护模块', '维护计划', '维护需求', '创建发布');
|
||||
$lang->block->flowchart['project'] = array($lang->projectCommon . '经理', '创建' . $lang->projectCommon, '维护团队', '关联' . $lang->productCommon, '关联需求', '分解任务');
|
||||
$lang->block->flowchart['product'] = array($lang->productCommon . '经理', '创建' . $lang->productCommon, '维护模块', '维护计划', '维护{$lang->storyCommon}', '创建发布');
|
||||
$lang->block->flowchart['project'] = array($lang->projectCommon . '经理', '创建' . $lang->projectCommon, '维护团队', '关联' . $lang->productCommon, '关联{$lang->storyCommon}', '分解任务');
|
||||
$lang->block->flowchart['dev'] = array('研发人员', '领取任务和Bug', '更新状态', '完成任务和Bug');
|
||||
$lang->block->flowchart['tester'] = array('测试人员', '撰写用例', '执行用例', '提交Bug', '验证Bug', '关闭Bug');
|
||||
|
||||
@@ -1448,7 +1448,6 @@ class bug extends control
|
||||
|
||||
/* Get related objects id lists. */
|
||||
$relatedProductIdList = array();
|
||||
$relatedModuleIdList = array();
|
||||
$relatedStoryIdList = array();
|
||||
$relatedTaskIdList = array();
|
||||
$relatedBugIdList = array();
|
||||
@@ -1459,7 +1458,6 @@ class bug extends control
|
||||
foreach($bugs as $bug)
|
||||
{
|
||||
$relatedProductIdList[$bug->product] = $bug->product;
|
||||
$relatedModuleIdList[$bug->module] = $bug->module;
|
||||
$relatedStoryIdList[$bug->story] = $bug->story;
|
||||
$relatedTaskIdList[$bug->task] = $bug->task;
|
||||
$relatedCaseIdList[$bug->case] = $bug->case;
|
||||
@@ -1483,7 +1481,6 @@ class bug extends control
|
||||
}
|
||||
|
||||
/* Get related objects title or names. */
|
||||
$relatedModules = array();
|
||||
$productsType = $this->dao->select('id, type')->from(TABLE_PRODUCT)->where('id')->in($relatedProductIdList)->fetchPairs();
|
||||
$relatedStories = $this->dao->select('id,title')->from(TABLE_STORY) ->where('id')->in($relatedStoryIdList)->fetchPairs();
|
||||
$relatedTasks = $this->dao->select('id, name')->from(TABLE_TASK)->where('id')->in($relatedTaskIdList)->fetchPairs();
|
||||
@@ -1492,8 +1489,8 @@ class bug extends control
|
||||
$relatedBranch = array('0' => $this->lang->branch->all) + $this->dao->select('id, name')->from(TABLE_BRANCH)->where('id')->in($relatedBranchIdList)->fetchPairs();
|
||||
$relatedBuilds = array('trunk' => $this->lang->trunk) + $this->dao->select('id, name')->from(TABLE_BUILD)->where('id')->in($relatedBuildIdList)->fetchPairs();
|
||||
$relatedFiles = $this->dao->select('id, objectID, pathname, title')->from(TABLE_FILE)->where('objectType')->eq('bug')->andWhere('objectID')->in(@array_keys($bugs))->andWhere('extra')->ne('editor')->fetchGroup('objectID');
|
||||
foreach($relatedProductIdList as $relatedProductId) $relatedModules += $this->loadModel('tree')->getOptionMenu($relatedProductId, 'bug');
|
||||
|
||||
$this->loadModel('tree');
|
||||
foreach($bugs as $bug)
|
||||
{
|
||||
if($this->post->fileType == 'csv')
|
||||
@@ -1512,10 +1509,10 @@ class bug extends control
|
||||
$bug->task = !isset($relatedTasks[$bug->task]) ? '' : $relatedTasks[$bug->task] . "($bug->task)";
|
||||
$bug->case = !isset($relatedCases[$bug->case]) ? '' : $relatedCases[$bug->case] . "($bug->case)";
|
||||
|
||||
if(isset($relatedModules[$bug->module])) $bug->module = $relatedModules[$bug->module] . "(#$bug->module)";
|
||||
if(isset($relatedBugs[$bug->duplicateBug])) $bug->duplicateBug = $relatedBugs[$bug->duplicateBug] . "($bug->duplicateBug)";
|
||||
if(isset($relatedBuilds[$bug->resolvedBuild])) $bug->resolvedBuild = $relatedBuilds[$bug->resolvedBuild] . "(#$bug->resolvedBuild)";
|
||||
if(isset($relatedBranch[$bug->branch])) $bug->branch = $relatedBranch[$bug->branch] . "(#$bug->branch)";
|
||||
$bugh->module = $bug->module ? $this->tree->getModulePathByID($bug->module) . "(#$bug->module)" : '';
|
||||
|
||||
if(isset($bugLang->priList[$bug->pri])) $bug->pri = $bugLang->priList[$bug->pri];
|
||||
if(isset($bugLang->typeList[$bug->type])) $bug->type = $bugLang->typeList[$bug->type];
|
||||
|
||||
+10
-10
@@ -18,8 +18,8 @@ $lang->bug->productplan = '所属计划';
|
||||
$lang->bug->module = '所属模块';
|
||||
$lang->bug->moduleAB = '模块';
|
||||
$lang->bug->project = '所属' . $lang->projectCommon;
|
||||
$lang->bug->story = '相关需求';
|
||||
$lang->bug->storyVersion = '需求版本';
|
||||
$lang->bug->story = "相关{$lang->storyCommon}";
|
||||
$lang->bug->storyVersion = "{$lang->storyCommon}版本";
|
||||
$lang->bug->color = '标题颜色';
|
||||
$lang->bug->task = '相关任务';
|
||||
$lang->bug->title = 'Bug标题';
|
||||
@@ -39,7 +39,7 @@ $lang->bug->activatedDate = '激活日期';
|
||||
$lang->bug->confirmed = '是否确认';
|
||||
$lang->bug->confirmedAB = '确认';
|
||||
$lang->bug->toTask = '转任务';
|
||||
$lang->bug->toStory = '转需求';
|
||||
$lang->bug->toStory = "转{$lang->storyCommon}";
|
||||
$lang->bug->mailto = '抄送给';
|
||||
$lang->bug->openedBy = '由谁创建';
|
||||
$lang->bug->openedByAB = '创建者';
|
||||
@@ -110,7 +110,7 @@ $lang->bug->exportAction = '导出Bug';
|
||||
$lang->bug->delete = '删除';
|
||||
$lang->bug->deleteAction = '删除Bug';
|
||||
$lang->bug->deleted = '已删除';
|
||||
$lang->bug->confirmStoryChange = '确认需求变动';
|
||||
$lang->bug->confirmStoryChange = "确认{$lang->storyCommon}变动";
|
||||
$lang->bug->copy = '复制Bug';
|
||||
$lang->bug->search = '搜索';
|
||||
|
||||
@@ -129,7 +129,7 @@ $lang->bug->postponedBugs = '被延期';
|
||||
$lang->bug->overdueBugs = '过期Bug';
|
||||
$lang->bug->allBugs = '所有';
|
||||
$lang->bug->byQuery = '搜索';
|
||||
$lang->bug->needConfirm = '需求变动';
|
||||
$lang->bug->needConfirm = "{$lang->storyCommon}变动";
|
||||
$lang->bug->allProduct = '所有' . $lang->productCommon;
|
||||
$lang->bug->my = '我的';
|
||||
$lang->bug->yesterdayResolved = '昨天解决Bug数';
|
||||
@@ -159,7 +159,7 @@ $lang->bug->createBuild = '新建';
|
||||
/* legend列表。*/
|
||||
$lang->bug->legendBasicInfo = '基本信息';
|
||||
$lang->bug->legendAttatch = '附件';
|
||||
$lang->bug->legendPrjStoryTask = $lang->projectCommon . '/需求/任务';
|
||||
$lang->bug->legendPrjStoryTask = $lang->projectCommon . '/{$lang->storyCommon}/任务';
|
||||
$lang->bug->lblTypeAndSeverity = '类型/严重程度';
|
||||
$lang->bug->lblSystemBrowserAndHardware = '系统/浏览器';
|
||||
$lang->bug->legendSteps = '重现步骤';
|
||||
@@ -173,7 +173,7 @@ $lang->bug->buttonConfirm = '确认';
|
||||
|
||||
/* 交互提示。*/
|
||||
$lang->bug->summary = "本页共 <strong>%s</strong> 个Bug,未解决 <strong>%s</strong>。";
|
||||
$lang->bug->confirmChangeProduct = "修改{$lang->productCommon}会导致相应的{$lang->projectCommon}、需求和任务发生变化,确定吗?";
|
||||
$lang->bug->confirmChangeProduct = "修改{$lang->productCommon}会导致相应的{$lang->projectCommon}、{$lang->storyCommon}和任务发生变化,确定吗?";
|
||||
$lang->bug->confirmDelete = '您确认要删除该Bug吗?';
|
||||
$lang->bug->remindTask = '该Bug已经转化为任务,是否更新任务(编号:%s)状态 ?';
|
||||
$lang->bug->skipClose = 'Bug %s 不是已解决状态,不能关闭。';
|
||||
@@ -251,7 +251,7 @@ $lang->bug->typeList['performance'] = '性能问题';
|
||||
$lang->bug->typeList['standard'] = '标准规范';
|
||||
$lang->bug->typeList['automation'] = '测试脚本';
|
||||
$lang->bug->typeList['designchange'] = '设计变更';
|
||||
$lang->bug->typeList['newfeature'] = '新增需求';
|
||||
$lang->bug->typeList['newfeature'] = "新增{$lang->storyCommon}";
|
||||
$lang->bug->typeList['designdefect'] = '设计缺陷';
|
||||
$lang->bug->typeList['trackthings'] = '事务跟踪';
|
||||
$lang->bug->typeList['others'] = '其他';
|
||||
@@ -272,7 +272,7 @@ $lang->bug->resolutionList['fixed'] = '已解决';
|
||||
$lang->bug->resolutionList['notrepro'] = '无法重现';
|
||||
$lang->bug->resolutionList['postponed'] = '延期处理';
|
||||
$lang->bug->resolutionList['willnotfix'] = "不予解决";
|
||||
$lang->bug->resolutionList['tostory'] = '转为需求';
|
||||
$lang->bug->resolutionList['tostory'] = "转为{$lang->storyCommon}";
|
||||
|
||||
/* 统计报表。*/
|
||||
$lang->bug->report = new stdclass();
|
||||
@@ -373,7 +373,7 @@ $lang->bug->report->bugHistories->graph->xAxisName = '处理步骤';
|
||||
/* 操作记录。*/
|
||||
$lang->bug->action = new stdclass();
|
||||
$lang->bug->action->resolved = array('main' => '$date, 由 <strong>$actor</strong> 解决,方案为 <strong>$extra</strong> $appendLink。', 'extra' => 'resolutionList');
|
||||
$lang->bug->action->tostory = array('main' => '$date, 由 <strong>$actor</strong> 转为<strong>需求</strong>,编号为 <strong>$extra</strong>。');
|
||||
$lang->bug->action->tostory = array('main' => '$date, 由 <strong>$actor</strong> 转为<strong>{$lang->storyCommon}</strong>,编号为 <strong>$extra</strong>。');
|
||||
$lang->bug->action->totask = array('main' => '$date, 由 <strong>$actor</strong> 导入为<strong>任务</strong>,编号为 <strong>$extra</strong>。');
|
||||
$lang->bug->action->linked2plan = array('main' => '$date, 由 <strong>$actor</strong> 关联到计划 <strong>$extra</strong>。');
|
||||
$lang->bug->action->unlinkedfromplan = array('main' => '$date, 由 <strong>$actor</strong> 从计划 <strong>$extra</strong> 移除。');
|
||||
|
||||
@@ -912,10 +912,16 @@ class bugModel extends model
|
||||
*/
|
||||
public function resolve($bugID)
|
||||
{
|
||||
if(strpos($this->config->bug->resolve->requiredFields, 'comment') !== false and !$this->post->comment)
|
||||
/* Check required fields before create build. */
|
||||
$requiredFields = explode(',', trim($this->config->bug->resolve->requiredFields, ','));
|
||||
foreach($requiredFields as $requiredField)
|
||||
{
|
||||
dao::$errors[] = sprintf($this->lang->error->notempty, $this->lang->comment);
|
||||
return false;
|
||||
if(!$this->post->$requiredField)
|
||||
{
|
||||
$tip = $requiredField == 'comment' ? $this->lang->comment : $this->lang->bug->$requiredField;
|
||||
dao::$errors[] = sprintf($this->lang->error->notempty, $tip);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$now = helper::now();
|
||||
|
||||
@@ -12,17 +12,17 @@
|
||||
$lang->build->common = "版本";
|
||||
$lang->build->create = "创建版本";
|
||||
$lang->build->edit = "编辑版本";
|
||||
$lang->build->linkStory = "关联需求";
|
||||
$lang->build->linkStory = "关联{$lang->storyCommon}";
|
||||
$lang->build->linkBug = "关联Bug";
|
||||
$lang->build->delete = "删除版本";
|
||||
$lang->build->deleted = "已删除";
|
||||
$lang->build->view = "版本详情";
|
||||
$lang->build->batchUnlink = '批量移除';
|
||||
$lang->build->batchUnlinkStory = '批量移除需求';
|
||||
$lang->build->batchUnlinkStory = "批量移除{$lang->storyCommon}";
|
||||
$lang->build->batchUnlinkBug = '批量移除Bug';
|
||||
|
||||
$lang->build->confirmDelete = "您确认删除该版本吗?";
|
||||
$lang->build->confirmUnlinkStory = "您确认移除该需求吗?";
|
||||
$lang->build->confirmUnlinkStory = "您确认移除该{$lang->storyCommon}吗?";
|
||||
$lang->build->confirmUnlinkBug = "您确认移除该Bug吗?";
|
||||
|
||||
$lang->build->basicInfo = '基本信息';
|
||||
@@ -40,15 +40,15 @@ $lang->build->desc = '描述';
|
||||
$lang->build->files = '上传发行包';
|
||||
$lang->build->last = '上个版本';
|
||||
$lang->build->packageType = '包类型';
|
||||
$lang->build->unlinkStory = '移除需求';
|
||||
$lang->build->unlinkStory = "移除{$lang->storyCommon}";
|
||||
$lang->build->unlinkBug = '移除Bug';
|
||||
$lang->build->stories = '完成的需求';
|
||||
$lang->build->stories = "完成的{$lang->storyCommon}";
|
||||
$lang->build->bugs = '解决的Bug';
|
||||
$lang->build->generatedBugs = '产生的Bug';
|
||||
$lang->build->noProduct = " <span style='color:red'>该{$lang->projectCommon}没有关联{$lang->productCommon},无法创建版本,请先<a href='%s'>关联{$lang->productCommon}</a></span>";
|
||||
$lang->build->noBuild = '暂时没有版本。';
|
||||
|
||||
$lang->build->finishStories = ' 本次共完成 %s 个需求';
|
||||
$lang->build->finishStories = " 本次共完成 %s 个{$lang->storyCommon}";
|
||||
$lang->build->resolvedBugs = ' 本次共解决 %s 个Bug';
|
||||
$lang->build->createdBugs = ' 本次共产生 %s 个Bug';
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@ $lang->dividerMenu = ',qa,report,';
|
||||
|
||||
/* 查询条中可以选择的对象列表。*/
|
||||
$lang->searchObjects['bug'] = 'Bug';
|
||||
$lang->searchObjects['story'] = '需求';
|
||||
$lang->searchObjects['story'] = "{$lang->storyCommon}";
|
||||
$lang->searchObjects['task'] = '任务';
|
||||
$lang->searchObjects['testcase'] = '用例';
|
||||
$lang->searchObjects['project'] = $lang->projectCommon;
|
||||
@@ -188,7 +188,7 @@ $lang->my->menu->calendar = array('link' => '日程|my|calendar|', 'subMod
|
||||
$lang->my->menu->task = array('link' => '任务|my|task|', 'subModule' => 'task');
|
||||
$lang->my->menu->bug = array('link' => 'Bug|my|bug|', 'subModule' => 'bug');
|
||||
$lang->my->menu->testtask = array('link' => '测试|my|testtask|', 'subModule' => 'testcase,testtask', 'alias' => 'testcase');
|
||||
$lang->my->menu->story = array('link' => '需求|my|story|', 'subModule' => 'story');
|
||||
$lang->my->menu->story = array('link' => "{$lang->storyCommon}|my|story|", 'subModule' => 'story');
|
||||
$lang->my->menu->myProject = "{$lang->projectCommon}|my|project|";
|
||||
$lang->my->menu->dynamic = '动态|my|dynamic|';
|
||||
$lang->my->menu->profile = array('link' => '档案|my|profile', 'alias' => 'editprofile');
|
||||
@@ -208,7 +208,7 @@ $lang->score->menu = $lang->my->menu;
|
||||
$lang->product = new stdclass();
|
||||
$lang->product->menu = new stdclass();
|
||||
|
||||
$lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->menu->story = array('link' => "{$lang->storyCommon}|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->menu->plan = array('link' => '计划|productplan|browse|productID=%s', 'subModule' => 'productplan');
|
||||
$lang->product->menu->release = array('link' => '发布|release|browse|productID=%s', 'subModule' => 'release');
|
||||
$lang->product->menu->roadmap = '路线图|product|roadmap|productID=%s';
|
||||
@@ -239,7 +239,7 @@ $lang->project->menu->task = array('link' => '任务|project|task|projectID=%
|
||||
$lang->project->menu->kanban = array('link' => '看板|project|kanban|projectID=%s');
|
||||
$lang->project->menu->burn = array('link' => '燃尽图|project|burn|projectID=%s');
|
||||
$lang->project->menu->list = array('link' => '更多|project|grouptask|projectID=%s', 'alias' => 'grouptask,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
|
||||
$lang->project->menu->story = array('link' => "{$lang->storyCommon}|project|story|projectID=%s", 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
|
||||
$lang->project->menu->qa = array('link' => '测试|project|bug|projectID=%s', 'subModule' => 'bug,build,testtask', 'alias' => 'build,testtask', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->doc = array('link' => '文档|doc|objectLibs|type=project&objectID=%s&from=project', 'subModule' => 'doc');
|
||||
$lang->project->menu->action = array('link' => '动态|project|dynamic|projectID=%s', 'subModule' => 'dynamic', 'class' => 'dropdown dropdown-hover');
|
||||
@@ -788,7 +788,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
$lang->bug->subMenu->more->longlifebugs = '久未处理|bug|browse|productID=%s&branch=%s&browseType=longlifebugs¶m=%s';
|
||||
$lang->bug->subMenu->more->postponedbugs = '被延期|bug|browse|productID=%s&branch=%s&browseType=postponedbugs¶m=%s';
|
||||
$lang->bug->subMenu->more->overduebugs = '过期Bug|bug|browse|productID=%s&branch=%s&browseType=overduebugs¶m=%s';
|
||||
$lang->bug->subMenu->more->needconfirm = '需求变动|bug|browse|productID=%s&branch=%s&browseType=needconfirm¶m=%s';
|
||||
$lang->bug->subMenu->more->needconfirm = "{$lang->storyCommon}变动|bug|browse|productID=%s&branch=%s&browseType=needconfirm¶m=%s";
|
||||
|
||||
$lang->bug->menuOrder[5] = 'product';
|
||||
$lang->bug->menuOrder[10] = 'all';
|
||||
|
||||
@@ -35,7 +35,7 @@ $lang->convert->aimTypeOfZentao = '转化为Zentao中的类型';
|
||||
|
||||
$lang->convert->directionList['bug'] = 'Bug';
|
||||
$lang->convert->directionList['task'] = '任务';
|
||||
$lang->convert->directionList['story'] = '需求';
|
||||
$lang->convert->directionList['story'] = $lang->storyCommon;
|
||||
|
||||
$lang->convert->sourceList['BugFree'] = array('bugfree_1' => '1.x', 'bugfree_2' => '2.x');
|
||||
$lang->convert->sourceList['Redmine'] = array('Redmine_1.1' => '1.1');
|
||||
@@ -79,7 +79,7 @@ $lang->convert->redmine->users = '用户';
|
||||
$lang->convert->redmine->groups = '用户分组';
|
||||
$lang->convert->redmine->products = $lang->productCommon;
|
||||
$lang->convert->redmine->projects = $lang->projectCommon;
|
||||
$lang->convert->redmine->stories = '需求';
|
||||
$lang->convert->redmine->stories = $lang->storyCommon;
|
||||
$lang->convert->redmine->tasks = '任务';
|
||||
$lang->convert->redmine->bugs = 'Bug';
|
||||
$lang->convert->redmine->productPlans = $lang->productCommon . '计划';
|
||||
|
||||
+22
-20
@@ -131,7 +131,7 @@ class custom extends control
|
||||
{
|
||||
if(!is_numeric($key) or $key > 255) $this->send(array('result' => 'fail', 'message' => $this->lang->custom->notice->invalidNumberKey));
|
||||
}
|
||||
if(!empty($key) and !isset($oldCustoms[$key]) and $key != 'n/a' and !validater::checkREG($key, '/^[a-z_0-9]+$/')) $this->send(array('result' => 'fail', 'message' => $this->lang->custom->notice->invalidStringKey));
|
||||
if(!empty($key) and !empty($oldCustoms) and !isset($oldCustoms[$key]) and $key != 'n/a' and !validater::checkREG($key, '/^[a-z_0-9]+$/')) $this->send(array('result' => 'fail', 'message' => $this->lang->custom->notice->invalidStringKey));
|
||||
|
||||
/* The length of roleList in user module and typeList in todo module is less than 10. check it when saved. */
|
||||
if($field == 'roleList' or $module == 'todo' and $field == 'typeList')
|
||||
@@ -235,25 +235,7 @@ class custom extends control
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$this->loadModel('setting')->setItem('system.custom.productProject', $this->post->productProject);
|
||||
|
||||
/* Change block title. */
|
||||
$oldConfig = isset($this->config->custom->productProject) ? $this->config->custom->productProject : '0_0';
|
||||
$newConfig = $this->post->productProject;
|
||||
|
||||
list($oldProductIndex, $oldProjectIndex) = explode('_', $oldConfig);
|
||||
list($newProductIndex, $newProjectIndex) = explode('_', $newConfig);
|
||||
|
||||
foreach($this->config->productCommonList as $clientLang => $productCommonList)
|
||||
{
|
||||
$this->dao->update(TABLE_BLOCK)->set("`title` = REPLACE(`title`, '{$productCommonList[$oldProductIndex]}', '{$productCommonList[$newProductIndex]}')")->where('source')->eq('product')->exec();
|
||||
}
|
||||
|
||||
foreach($this->config->projectCommonList as $clientLang => $projectCommonList)
|
||||
{
|
||||
$this->dao->update(TABLE_BLOCK)->set("`title` = REPLACE(`title`, '{$projectCommonList[$oldProjectIndex]}', '{$projectCommonList[$newProjectIndex]}')")->where('source')->eq('project')->exec();
|
||||
}
|
||||
|
||||
$this->custom->setFlow();
|
||||
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'reload'));
|
||||
}
|
||||
|
||||
@@ -262,6 +244,26 @@ class custom extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set concept.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function concept()
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$this->custom->setFlow();
|
||||
$this->custom->setStoryRequirement();
|
||||
$this->loadModel('setting')->setItem('system.common.conceptSetted', 1);
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->custom->concept;
|
||||
$this->view->position[] = $this->lang->custom->concept;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
public function working()
|
||||
{
|
||||
if($_POST)
|
||||
|
||||
@@ -6,6 +6,7 @@ $lang->custom->restore = '恢复默认';
|
||||
$lang->custom->key = '键';
|
||||
$lang->custom->value = '值';
|
||||
$lang->custom->flow = '流程';
|
||||
$lang->custom->concept = '使用偏好设置';
|
||||
$lang->custom->working = '工作方式';
|
||||
$lang->custom->select = '请选择流程:';
|
||||
$lang->custom->branch = '多分支';
|
||||
@@ -20,7 +21,7 @@ $lang->custom->timezone = '时区';
|
||||
$lang->custom->scoreReset = '重置积分';
|
||||
$lang->custom->scoreTitle = '积分功能';
|
||||
|
||||
$lang->custom->object['story'] = '需求';
|
||||
$lang->custom->object['story'] = $lang->storyCommon;
|
||||
$lang->custom->object['task'] = '任务';
|
||||
$lang->custom->object['bug'] = 'Bug';
|
||||
$lang->custom->object['testcase'] = '用例';
|
||||
@@ -98,6 +99,7 @@ $lang->custom->notice->invalidStringKey = '键值应当为小写英
|
||||
$lang->custom->notice->cannotSetTimezone = 'date_default_timezone_set方法不存在或禁用,不能设置时区。';
|
||||
$lang->custom->notice->noClosedBlock = '没有永久关闭的区块';
|
||||
$lang->custom->notice->required = '页面提交时,选中的字段必填';
|
||||
$lang->custom->notice->conceptResult = '我们已经根据您的选择为您设置了<b> %s-%s </b>模式,使用<b>%s</b> + <b> %s</b>。';
|
||||
|
||||
$lang->custom->notice->indexPage['product'] = "从8.2版本起增加了产品主页视图,是否默认进入产品主页?";
|
||||
$lang->custom->notice->indexPage['project'] = "从8.2版本起增加了项目主页视图,是否默认进入项目主页?";
|
||||
@@ -126,12 +128,14 @@ $lang->custom->productProject = new stdclass();
|
||||
$lang->custom->productProject->relation['0_0'] = '产品 - 项目';
|
||||
$lang->custom->productProject->relation['0_1'] = '产品 - 迭代';
|
||||
$lang->custom->productProject->relation['1_1'] = '项目 - 迭代';
|
||||
$lang->custom->productProject->relation['0_2'] = '产品 - 冲刺';
|
||||
$lang->custom->productProject->relation['1_2'] = '项目 - 冲刺';
|
||||
|
||||
$lang->custom->productProject->notice = '请根据实际情况选择适合自己团队的概念。';
|
||||
|
||||
$lang->custom->workingList['full'] = '完整研发管理工具';
|
||||
$lang->custom->workingList['onlyTest'] = '测试管理工具';
|
||||
$lang->custom->workingList['onlyStory'] = '需求管理工具';
|
||||
$lang->custom->workingList['onlyStory'] = "{$lang->storyCommon}管理工具";
|
||||
$lang->custom->workingList['onlyTask'] = '任务管理工具';
|
||||
|
||||
$lang->custom->menuTip = '点击显示或隐藏导航条目,拖拽来更改显示顺序。';
|
||||
@@ -144,3 +148,17 @@ $lang->custom->scoreStatus[0] = '关闭';
|
||||
$lang->custom->moduleName['product'] = $lang->productCommon;
|
||||
$lang->custom->moduleName['productplan'] = '计划';
|
||||
$lang->custom->moduleName['project'] = $lang->projectCommon;
|
||||
|
||||
$lang->custom->conceptQuestions['overview'] = "1. 下述哪种组合方式更适合您公司的管理现状?";
|
||||
$lang->custom->conceptQuestions['story'] = "2. 您公司是在使用需求概念还是用户故事概念?";
|
||||
$lang->custom->conceptQuestions['storypoint'] = "3. 您公司是在使用工时还是故事点来做规模估算?";
|
||||
|
||||
$lang->custom->conceptOptions = new stdclass;
|
||||
|
||||
$lang->custom->conceptOptions->story = array();
|
||||
$lang->custom->conceptOptions->story['0'] = '需求';
|
||||
$lang->custom->conceptOptions->story['1'] = '故事';
|
||||
|
||||
$lang->custom->conceptOptions->storypoint = array();
|
||||
$lang->custom->conceptOptions->storypoint['hour'] = '工时';
|
||||
$lang->custom->conceptOptions->storypoint['storypoint'] = '故事点';
|
||||
|
||||
@@ -490,4 +490,47 @@ class customModel extends model
|
||||
$this->setting->deleteItems("owner=system&module={$moduleName}");
|
||||
$this->setting->setItems("system.{$moduleName}", $requiredFields);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set flow function.
|
||||
*
|
||||
* @param string $type productProject | storyRequirement
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setFlow()
|
||||
{
|
||||
$this->loadModel('setting')->setItem('system.custom.productProject', $this->post->productProject);
|
||||
|
||||
/* Change block title. */
|
||||
$oldConfig = isset($this->config->custom->productProject) ? $this->config->custom->productProject : '0_0';
|
||||
$newConfig = $this->post->productProject;
|
||||
|
||||
list($oldProductIndex, $oldProjectIndex) = explode('_', $oldConfig);
|
||||
list($newProductIndex, $newProjectIndex) = explode('_', $newConfig);
|
||||
|
||||
foreach($this->config->productCommonList as $clientLang => $productCommonList)
|
||||
{
|
||||
$this->dao->update(TABLE_BLOCK)->set("`title` = REPLACE(`title`, '{$productCommonList[$oldProductIndex]}', '{$productCommonList[$newProductIndex]}')")->where('source')->eq('product')->exec();
|
||||
}
|
||||
|
||||
foreach($this->config->projectCommonList as $clientLang => $projectCommonList)
|
||||
{
|
||||
$this->dao->update(TABLE_BLOCK)->set("`title` = REPLACE(`title`, '{$projectCommonList[$oldProjectIndex]}', '{$projectCommonList[$newProjectIndex]}')")->where('source')->eq('project')->exec();
|
||||
}
|
||||
}
|
||||
|
||||
public function setStoryRequirement()
|
||||
{
|
||||
$this->loadModel('setting')->setItem('system.custom.storyRequirement', $this->post->storyRequirement);
|
||||
|
||||
$oldIndex = isset($this->config->custom->storyRequirement) ? $this->config->custom->storyRequirement : '0';
|
||||
$newIndex = $this->post->storyRequirement;
|
||||
|
||||
foreach($this->config->storyCommonList as $clientLang => $commonList)
|
||||
{
|
||||
$this->dao->update(TABLE_BLOCK)->set("`title` = REPLACE(`title`, '{$commonList[$oldIndex]}', '{$commonList[$newIndex]}')")->where('source')->eq('product')->exec();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
/**
|
||||
* The html template file of deny method of user module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package ZenTaoPMS
|
||||
* @version $Id: deny.html.php 4129 2013-01-18 01:58:14Z wwccss $
|
||||
*/
|
||||
include '../../common/view/header.lite.html.php';
|
||||
?>
|
||||
<?php if($this->config->conceptSetted):?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php else:?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<?php endif;?>
|
||||
<div class='container'>
|
||||
<?php if($_POST):?>
|
||||
<div class='modal-dialog'>
|
||||
<div class='alert alert-success'>
|
||||
<?php printf($lang->custom->notice->conceptResult, $lang->productCommon, $lang->projectCommon, $lang->storyCommon, $lang->storypoint);?>
|
||||
</div>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<form id='ajaxForm' method='post'>
|
||||
<div class='modal-dialog'>
|
||||
<div class='modal-header'><strong><?php echo $lang->custom->concept;?></strong></div>
|
||||
<div class='modal-body'>
|
||||
<div class="form-group">
|
||||
<label><?php echo $lang->custom->conceptQuestions['overview']?></label>
|
||||
<div class="checkbox"> <?php echo html::radio('productProject', $lang->custom->productProject->relation, zget($this->config->custom, 'productProject', '0_0'))?> </div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><?php echo $lang->custom->conceptQuestions['story']?></label>
|
||||
<div class="checkbox"> <?php echo html::radio('storyRequirement', $lang->custom->conceptOptions->story, zget($this->config->custom, 'storyRequirement', '0'));?></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><?php echo $lang->custom->conceptQuestions['storypoint']?></label>
|
||||
<div class="checkbox"> <?php echo html::radio('storypoint', $lang->custom->conceptOptions->storypoint, 'hour')?> </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='modal-footer'>
|
||||
<div class='text-center'><?php echo html::submitButton();?></div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<?php endif;?>
|
||||
<?php if($this->config->conceptSetted):?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
<?php else:?>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
<?php endif;?>
|
||||
@@ -49,10 +49,10 @@ $lang->dev->tableList['product'] = $lang->productCommon;
|
||||
$lang->dev->tableList['productplan'] = $lang->productCommon . '计划';
|
||||
$lang->dev->tableList['project'] = $lang->projectCommon;
|
||||
$lang->dev->tableList['projectproduct'] = $lang->projectCommon . $lang->productCommon;
|
||||
$lang->dev->tableList['projectstory'] = $lang->projectCommon . '需求';
|
||||
$lang->dev->tableList['projectstory'] = $lang->projectCommon . $lang->storyCommon;
|
||||
$lang->dev->tableList['release'] = '发布';
|
||||
$lang->dev->tableList['story'] = '需求';
|
||||
$lang->dev->tableList['storyspec'] = '需求描述';
|
||||
$lang->dev->tableList['story'] = $lang->storyCommon;
|
||||
$lang->dev->tableList['storyspec'] = "{$lang->storyCommon}描述";
|
||||
$lang->dev->tableList['task'] = '任务';
|
||||
$lang->dev->tableList['taskestimate'] = '任务预计';
|
||||
$lang->dev->tableList['team'] = '团队';
|
||||
@@ -93,7 +93,7 @@ $lang->dev->tableList['datatable'] = '数据表格';
|
||||
$lang->dev->tableList['block'] = '区块';
|
||||
$lang->dev->tableList['branch'] = '平台/分支';
|
||||
$lang->dev->tableList['doccontent'] = '文档内容';
|
||||
$lang->dev->tableList['storystage'] = '需求阶段';
|
||||
$lang->dev->tableList['storystage'] = "{$lang->storyCommon}阶段";
|
||||
$lang->dev->tableList['translate'] = '翻译';
|
||||
$lang->dev->tableList['tutorial'] = '新手教程';
|
||||
$lang->dev->tableList['suitecase'] = '套件用例';
|
||||
|
||||
@@ -66,7 +66,7 @@ $lang->editor->modules['qa'] = '测试视图';
|
||||
$lang->editor->modules['release'] = '发布';
|
||||
$lang->editor->modules['report'] = '报表';
|
||||
$lang->editor->modules['search'] = '搜索';
|
||||
$lang->editor->modules['story'] = '需求';
|
||||
$lang->editor->modules['story'] = $lang->storyCommon;
|
||||
$lang->editor->modules['task'] = '任务';
|
||||
$lang->editor->modules['testcase'] = '用例管理';
|
||||
$lang->editor->modules['testtask'] = '测试单';
|
||||
|
||||
@@ -290,6 +290,10 @@ class groupModel extends model
|
||||
}
|
||||
$actions['actions'] = $dynamic;
|
||||
|
||||
/* If not select any projects or products, set it empty. */
|
||||
if(isset($actions['products'][0]) && !$actions['products'][0]) $actions['products'] = array();
|
||||
if(isset($actions['projects'][0]) && !$actions['projects'][0]) $actions['projects'] = array();
|
||||
|
||||
$actions = empty($actions) ? '' : json_encode($actions);
|
||||
$this->dao->update(TABLE_GROUP)->set('acl')->eq($actions)->where('id')->eq($groupID)->exec();
|
||||
return dao::isError() ? false : true;
|
||||
|
||||
@@ -109,7 +109,7 @@ $lang->install->requestTypes['PATH_INFO'] = '静态友好方式';
|
||||
|
||||
$lang->install->workingList['full'] = '完整研发管理工具';
|
||||
$lang->install->workingList['onlyTest'] = '测试管理工具';
|
||||
$lang->install->workingList['onlyStory'] = '需求管理工具';
|
||||
$lang->install->workingList['onlyStory'] = "{$lang->storyCommon}管理工具";
|
||||
$lang->install->workingList['onlyTask'] = '任务管理工具';
|
||||
|
||||
$lang->install->errorConnectDB = '数据库连接失败 ';
|
||||
|
||||
@@ -136,7 +136,7 @@ $lang->misc->feature->all['11.5.stable'][] = array('title'=>'集成新版本客
|
||||
|
||||
$lang->misc->feature->all['11.4.1'][] = array('title'=>'完善细节,修复Bug', 'desc' => '');
|
||||
|
||||
$lang->misc->feature->all['11.4.stable'][] = array('title'=>'完善细节,修复Bug', 'desc' => '<p>增强测试任务管理</p><p>优化计划、发布、版本关联需求和bug的交互</p><p>文档库可以自定义是否显示子分类里的文档</p><p>修复bug,完善细节</p>');
|
||||
$lang->misc->feature->all['11.4.stable'][] = array('title'=>'完善细节,修复Bug', 'desc' => '<p>增强测试任务管理</p><p>优化计划、发布、版本关联{$lang->storyCommon}和bug的交互</p><p>文档库可以自定义是否显示子分类里的文档</p><p>修复bug,完善细节</p>');
|
||||
|
||||
$lang->misc->feature->all['11.3.stable'][] = array('title'=>'完善细节,修复Bug', 'desc' => '<p>计划添加子计划功能</p><p>优化chosen交互</p><p>添加时区设置</p><p>优化文档库和文档</p>');
|
||||
|
||||
@@ -188,14 +188,14 @@ $lang->misc->feature->all['8.3.stable'][] = array('title'=>'调整文档功能',
|
||||
$lang->misc->feature->all['8.2.stable'][] = array('title'=>'首页自定义', 'desc' => '<p>我的地盘由我做主。现在开始,你可以向首页添加多种多样的内容区块,而且还可以决定如何排列和显示他们。</p><p>我的地盘、产品、项目、测试模块下均支持首页自定义功能。</p>');
|
||||
$lang->misc->feature->all['8.2.stable'][] = array('title'=>'导航定制', 'desc' => '<p>导航上显示的项目现在完全由你来决定,不仅仅可以决定在导航上展示哪些内容,还可以决定展示的顺序。</p><p>将鼠标悬浮在导航上稍后会在右侧显示定制按钮,点击打开定制对话框,通过点击切换是否显示,拖放操作来更改显示顺序。</p>');
|
||||
$lang->misc->feature->all['8.2.stable'][] = array('title'=>'批量添加、编辑自定义', 'desc' => '<p>可以在批量添加和批量编辑页面自定义操作的字段。</p>');
|
||||
$lang->misc->feature->all['8.2.stable'][] = array('title'=>'添加需求、任务、Bug、用例自定义', 'desc' => '<p>可以在添加需求、任务、Bug、用例页面,自定义部分字段是否显示。</p>');
|
||||
$lang->misc->feature->all['8.2.stable'][] = array('title'=>'导出自定义', 'desc' => '<p>在导出需求、任务、Bug、用例的时候,用户可以自定义导出的字段,也可以保存模板方便每次导出。</p>');
|
||||
$lang->misc->feature->all['8.2.stable'][] = array('title'=>'需求、任务、Bug、用例组合检索功能', 'desc' => '<p>在需求、任务、Bug、用例列表页面,可以实现模块和标签的组合检索。</p>');
|
||||
$lang->misc->feature->all['8.2.stable'][] = array('title'=>'添加{$lang->storyCommon}、任务、Bug、用例自定义', 'desc' => '<p>可以在添加{$lang->storyCommon}、任务、Bug、用例页面,自定义部分字段是否显示。</p>');
|
||||
$lang->misc->feature->all['8.2.stable'][] = array('title'=>'导出自定义', 'desc' => '<p>在导出{$lang->storyCommon}、任务、Bug、用例的时候,用户可以自定义导出的字段,也可以保存模板方便每次导出。</p>');
|
||||
$lang->misc->feature->all['8.2.stable'][] = array('title'=>'{$lang->storyCommon}、任务、Bug、用例组合检索功能', 'desc' => '<p>在{$lang->storyCommon}、任务、Bug、用例列表页面,可以实现模块和标签的组合检索。</p>');
|
||||
$lang->misc->feature->all['8.2.stable'][] = array('title'=>'增加新手教程', 'desc' => '<p>增加新手教程,方便新用户了解禅道使用。</p>');
|
||||
|
||||
$lang->misc->feature->all['7.4.beta'][] = array('title'=>'产品实现分支功能', 'desc' => '<p>产品增加分支/平台类型,相应的需求、计划、Bug、用例、模块等都增加分支。</p>');
|
||||
$lang->misc->feature->all['7.4.beta'][] = array('title'=>'产品实现分支功能', 'desc' => '<p>产品增加分支/平台类型,相应的{$lang->storyCommon}、计划、Bug、用例、模块等都增加分支。</p>');
|
||||
$lang->misc->feature->all['7.4.beta'][] = array('title'=>'调整发布模块', 'desc' => '<p>发布增加停止维护操作,当发布停止维护时,创建Bug将不显示这个发布。</p><p>发布中遗留的bug改为手工关联。</p>');
|
||||
$lang->misc->feature->all['7.4.beta'][] = array('title'=>'调整需求和Bug的创建页面', 'desc' => '');
|
||||
$lang->misc->feature->all['7.4.beta'][] = array('title'=>'调整{$lang->storyCommon}和Bug的创建页面', 'desc' => '');
|
||||
|
||||
$lang->misc->feature->all['7.2.stable'][] = array('title'=>'增强安全', 'desc' => '<p>加强对管理员弱口令的检查。</p><p>写插件,上传插件的时候需要创建ok文件。</p><p>敏感操作增加管理员口令的检查</p><p>对输入内容做striptags, specialchars处理。</p>');
|
||||
$lang->misc->feature->all['7.2.stable'][] = array('title'=>'完善细节', 'desc' => '');
|
||||
|
||||
@@ -9,7 +9,7 @@ $lang->my->task = '我的任务';
|
||||
$lang->my->bug = '我的Bug';
|
||||
$lang->my->testTask = '我的版本';
|
||||
$lang->my->testCase = '我的用例';
|
||||
$lang->my->story = '我的需求';
|
||||
$lang->my->story = "我的{$lang->storyCommon}";
|
||||
$lang->my->myProject = "我的{$lang->projectCommon}";
|
||||
$lang->my->profile = '我的档案';
|
||||
$lang->my->dynamic = '我的动态';
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
*/
|
||||
$lang->product->common = $lang->productCommon . '视图';
|
||||
$lang->product->index = $lang->productCommon . '主页';
|
||||
$lang->product->browse = '需求列表';
|
||||
$lang->product->browse = "{$lang->storyCommon}列表";
|
||||
$lang->product->dynamic = '产品动态';
|
||||
$lang->product->view = "{$lang->productCommon}概况";
|
||||
$lang->product->edit = "编辑{$lang->productCommon}";
|
||||
@@ -48,14 +48,14 @@ $lang->product->build = '版本列表';
|
||||
$lang->product->projectInfo = "所有与此产品关联的{$lang->projectCommon}";
|
||||
|
||||
$lang->product->currentProject = '当前' . $lang->projectCommon;
|
||||
$lang->product->activeStories = '激活需求';
|
||||
$lang->product->activeStoriesTitle = '激活需求';
|
||||
$lang->product->changedStories = '已变更需求';
|
||||
$lang->product->changedStoriesTitle = '已变更需求';
|
||||
$lang->product->draftStories = '草稿需求';
|
||||
$lang->product->draftStoriesTitle = '草稿需求';
|
||||
$lang->product->closedStories = '已关闭需求';
|
||||
$lang->product->closedStoriesTitle = '已关闭需求';
|
||||
$lang->product->activeStories = "激活{$lang->storyCommon}";
|
||||
$lang->product->activeStoriesTitle = "激活{$lang->storyCommon}";
|
||||
$lang->product->changedStories = "已变更{$lang->storyCommon}";
|
||||
$lang->product->changedStoriesTitle = "已变更{$lang->storyCommon}";
|
||||
$lang->product->draftStories = "草稿{$lang->storyCommon}";
|
||||
$lang->product->draftStoriesTitle = "草稿{$lang->storyCommon}";
|
||||
$lang->product->closedStories = "已关闭{$lang->storyCommon}";
|
||||
$lang->product->closedStoriesTitle = "已关闭{$lang->storyCommon}";
|
||||
$lang->product->unResolvedBugs = '未解决Bug';
|
||||
$lang->product->unResolvedBugsTitle = '未解决Bug';
|
||||
$lang->product->assignToNullBugs = '未指派Bug';
|
||||
@@ -133,8 +133,8 @@ $lang->product->aclList['open'] = "默认设置(有{$lang->productCommon}视
|
||||
$lang->product->aclList['private'] = "私有{$lang->productCommon}(只有{$lang->productCommon}相关负责人和{$lang->projectCommon}团队成员才能访问)";
|
||||
$lang->product->aclList['custom'] = '自定义白名单(团队成员和白名单的成员可以访问)';
|
||||
|
||||
$lang->product->storySummary = "本页共 <strong>%s</strong> 个需求,预计 <strong>%s</strong> 个工时,用例覆盖率 <strong>%s</strong>。";
|
||||
$lang->product->checkedSummary = "选中 <strong>%total%</strong> 个需求,预计 <strong>%estimate%</strong> 个工时,用例覆盖率 <strong>%rate%</strong>。";
|
||||
$lang->product->storySummary = "本页共 <strong>%s</strong> 个{$lang->storyCommon},预计 <strong>%s</strong> 个工时,用例覆盖率 <strong>%s</strong>。";
|
||||
$lang->product->checkedSummary = "选中 <strong>%total%</strong> 个{$lang->storyCommon},预计 <strong>%estimate%</strong> 个工时,用例覆盖率 <strong>%rate%</strong>。";
|
||||
$lang->product->noModule = "<div>您现在还没有模块信息</div><div>请维护{$lang->productCommon}模块</div>";
|
||||
$lang->product->noProduct = "暂时没有{$lang->productCommon}。";
|
||||
$lang->product->noMatched = '找不到包含"%s"的' . $lang->productCommon;
|
||||
|
||||
@@ -21,12 +21,12 @@ $lang->productplan->basicInfo = '基本信息';
|
||||
$lang->productplan->batchEdit = '批量编辑';
|
||||
|
||||
$lang->productplan->batchUnlink = "批量移除";
|
||||
$lang->productplan->linkStory = "关联需求";
|
||||
$lang->productplan->unlinkStory = "移除需求";
|
||||
$lang->productplan->linkStory = "关联{$lang->storyCommon}";
|
||||
$lang->productplan->unlinkStory = "移除{$lang->storyCommon}";
|
||||
$lang->productplan->unlinkStoryAB = "移除";
|
||||
$lang->productplan->batchUnlinkStory = "批量移除需求";
|
||||
$lang->productplan->linkedStories = '需求';
|
||||
$lang->productplan->unlinkedStories = '未关联需求';
|
||||
$lang->productplan->batchUnlinkStory = "批量移除{$lang->storyCommon}";
|
||||
$lang->productplan->linkedStories = $lang->storyCommon;
|
||||
$lang->productplan->unlinkedStories = "未关联{$lang->storyCommon}";
|
||||
$lang->productplan->updateOrder = '排序';
|
||||
$lang->productplan->createChildren = "创建子计划";
|
||||
|
||||
@@ -39,7 +39,7 @@ $lang->productplan->unexpired = '未过期计划';
|
||||
$lang->productplan->all = '所有计划';
|
||||
|
||||
$lang->productplan->confirmDelete = "您确认删除该计划吗?";
|
||||
$lang->productplan->confirmUnlinkStory = "您确认移除该需求吗?";
|
||||
$lang->productplan->confirmUnlinkStory = "您确认移除该{$lang->storyCommon}吗?";
|
||||
$lang->productplan->confirmUnlinkBug = "您确认移除该Bug吗?";
|
||||
$lang->productplan->noPlan = '暂时没有计划。';
|
||||
$lang->productplan->cannotDeleteParent = '不能删除父计划';
|
||||
@@ -53,7 +53,7 @@ $lang->productplan->begin = '开始日期';
|
||||
$lang->productplan->end = '结束日期';
|
||||
$lang->productplan->last = '上次计划';
|
||||
$lang->productplan->future = '待定';
|
||||
$lang->productplan->stories = '需求数';
|
||||
$lang->productplan->stories = "{$lang->storyCommon}数";
|
||||
$lang->productplan->bugs = 'Bug数';
|
||||
$lang->productplan->hour = '工时';
|
||||
$lang->productplan->project = $lang->projectCommon;
|
||||
|
||||
@@ -56,11 +56,11 @@ $lang->project->progress = '进度';
|
||||
$lang->project->hours = '预计 %s 消耗 %s 剩余 %s';
|
||||
$lang->project->viewBug = '查看bug';
|
||||
$lang->project->noProduct = "无{$lang->productCommon}{$lang->projectCommon}";
|
||||
$lang->project->createStory = "添加需求";
|
||||
$lang->project->createStory = "添加{$lang->storyCommon}";
|
||||
$lang->project->all = '所有';
|
||||
$lang->project->undone = '未完成';
|
||||
$lang->project->unclosed = '未关闭';
|
||||
$lang->project->typeDesc = "运维{$lang->projectCommon}没有需求、bug、版本、测试功能,同时禁用燃尽图。";
|
||||
$lang->project->typeDesc = "运维{$lang->projectCommon}没有{$lang->storyCommon}、bug、版本、测试功能,同时禁用燃尽图。";
|
||||
$lang->project->mine = '我负责:';
|
||||
$lang->project->other = '其他:';
|
||||
$lang->project->deleted = '已删除';
|
||||
@@ -121,7 +121,7 @@ $lang->project->aclList['custom'] = "自定义白名单(团队成员和白名
|
||||
$lang->project->index = "{$lang->projectCommon}主页";
|
||||
$lang->project->task = '任务列表';
|
||||
$lang->project->groupTask = '分组浏览任务';
|
||||
$lang->project->story = '需求列表';
|
||||
$lang->project->story = "{$lang->storyCommon}列表";
|
||||
$lang->project->bug = 'Bug列表';
|
||||
$lang->project->dynamic = '动态';
|
||||
$lang->project->latestDynamic = '最新动态';
|
||||
@@ -135,10 +135,10 @@ $lang->project->team = '团队成员';
|
||||
$lang->project->doc = '文档列表';
|
||||
$lang->project->doclib = '文档库列表';
|
||||
$lang->project->manageProducts = '关联' . $lang->productCommon;
|
||||
$lang->project->linkStory = '关联需求';
|
||||
$lang->project->linkStory = "关联{$lang->storyCommon}";
|
||||
$lang->project->linkStoryByPlan = '按照计划关联';
|
||||
$lang->project->linkPlan = '关联计划';
|
||||
$lang->project->unlinkStoryTasks = '未关联需求任务';
|
||||
$lang->project->unlinkStoryTasks = "未关联{$lang->storyCommon}任务";
|
||||
$lang->project->linkedProducts = '已关联';
|
||||
$lang->project->unlinkedProducts = '未关联';
|
||||
$lang->project->view = "{$lang->projectCommon}概况";
|
||||
@@ -162,21 +162,21 @@ $lang->project->edit = "编辑{$lang->projectCommon}";
|
||||
$lang->project->batchEdit = "批量编辑";
|
||||
$lang->project->manageMembers = '团队管理';
|
||||
$lang->project->unlinkMember = '移除成员';
|
||||
$lang->project->unlinkStory = '移除需求';
|
||||
$lang->project->unlinkStoryAB = '移除需求';
|
||||
$lang->project->batchUnlinkStory = '批量移除需求';
|
||||
$lang->project->unlinkStory = "移除{$lang->storyCommon}";
|
||||
$lang->project->unlinkStoryAB = "移除{$lang->storyCommon}";
|
||||
$lang->project->batchUnlinkStory = "批量移除{$lang->storyCommon}";
|
||||
$lang->project->importTask = '转入任务';
|
||||
$lang->project->importPlanStories = '按计划关联需求';
|
||||
$lang->project->importPlanStories = "按计划关联{$lang->storyCommon}";
|
||||
$lang->project->importBug = '导入Bug';
|
||||
$lang->project->updateOrder = "{$lang->projectCommon}排序";
|
||||
$lang->project->tree = '树状图';
|
||||
$lang->project->treeTask = '只看任务';
|
||||
$lang->project->treeStory = '只看需求';
|
||||
$lang->project->treeStory = "只看{$lang->storyCommon}";
|
||||
$lang->project->treeOnlyTask = '树状图只看任务';
|
||||
$lang->project->treeOnlyStory = '树状图只看需求';
|
||||
$lang->project->storyKanban = '需求看板';
|
||||
$lang->project->storySort = '需求排序';
|
||||
$lang->project->importPlanStory = '创建' . $lang->projectCommon . '成功!\n是否导入计划关联的相关需求?';
|
||||
$lang->project->treeOnlyStory = "树状图只看{$lang->storyCommon}";
|
||||
$lang->project->storyKanban = "{$lang->storyCommon}看板";
|
||||
$lang->project->storySort = "{$lang->storyCommon}排序";
|
||||
$lang->project->importPlanStory = "创建" . $lang->projectCommon . "成功!\n是否导入计划关联的相关{$lang->storyCommon}?";
|
||||
$lang->project->iteration = '版本迭代';
|
||||
$lang->project->iterationInfo = '迭代%s次';
|
||||
$lang->project->viewAll = '查看所有';
|
||||
@@ -196,7 +196,7 @@ $lang->project->statusSelects['closed'] = '已关闭';
|
||||
$lang->project->statusSelects['cancel'] = '已取消';
|
||||
|
||||
$lang->project->groups[''] = '分组查看';
|
||||
$lang->project->groups['story'] = '需求分组';
|
||||
$lang->project->groups['story'] = "{$lang->storyCommon}分组";
|
||||
$lang->project->groups['status'] = '状态分组';
|
||||
$lang->project->groups['pri'] = '优先级分组';
|
||||
$lang->project->groups['assignedTo'] = '指派给分组';
|
||||
@@ -205,7 +205,7 @@ $lang->project->groups['closedBy'] = '关闭者分组';
|
||||
$lang->project->groups['type'] = '类型分组';
|
||||
|
||||
$lang->project->groupFilter['story']['all'] = '所有';
|
||||
$lang->project->groupFilter['story']['linked'] = '已关联需求的任务';
|
||||
$lang->project->groupFilter['story']['linked'] = "已关联{$lang->storyCommon}的任务";
|
||||
$lang->project->groupFilter['pri']['all'] = '所有';
|
||||
$lang->project->groupFilter['pri']['noset'] = '未设置';
|
||||
$lang->project->groupFilter['assignedTo']['undone'] = '未完成';
|
||||
@@ -219,7 +219,7 @@ $lang->project->aboveAllProduct = "以上所有{$lang->productCommon}";
|
||||
$lang->project->aboveAllProject = "以上所有{$lang->projectCommon}";
|
||||
|
||||
/* 页面提示。*/
|
||||
$lang->project->linkStoryByPlanTips = "此操作会将所选计划下面的需求全部关联到此{$lang->projectCommon}中";
|
||||
$lang->project->linkStoryByPlanTips = "此操作会将所选计划下面的{$lang->storyCommon}全部关联到此{$lang->projectCommon}中";
|
||||
$lang->project->selectProject = "请选择{$lang->projectCommon}";
|
||||
$lang->project->beginAndEnd = '起止时间';
|
||||
$lang->project->begin = '开始日期';
|
||||
@@ -236,9 +236,9 @@ $lang->project->groupSummaryAB = "<div>总任务 <strong>%s : </strong><spa
|
||||
$lang->project->wbs = "分解任务";
|
||||
$lang->project->batchWBS = "批量分解";
|
||||
$lang->project->howToUpdateBurn = "<a href='https://api.zentao.net/goto.php?item=burndown&lang=zh-cn' target='_blank' title='如何更新燃尽图?' class='btn btn-link'>帮助 <i class='icon icon-help'></i></a>";
|
||||
$lang->project->whyNoStories = "看起来没有需求可以关联。请检查下{$lang->projectCommon}关联的{$lang->productCommon}中有没有需求,而且要确保它们已经审核通过。";
|
||||
$lang->project->productStories = "{$lang->projectCommon}关联的需求是{$lang->productCommon}需求的子集,并且只有评审通过的需求才能关联。请<a href='%s'>关联需求</a>。";
|
||||
$lang->project->haveDraft = "有%s条草稿状态的需求无法关联到该{$lang->projectCommon}";
|
||||
$lang->project->whyNoStories = "看起来没有{$lang->storyCommon}可以关联。请检查下{$lang->projectCommon}关联的{$lang->productCommon}中有没有{$lang->storyCommon},而且要确保它们已经审核通过。";
|
||||
$lang->project->productStories = "{$lang->projectCommon}关联的{$lang->storyCommon}是{$lang->productCommon}{$lang->storyCommon}的子集,并且只有评审通过的{$lang->storyCommon}才能关联。请<a href='%s'>关联{$lang->storyCommon}</a>。";
|
||||
$lang->project->haveDraft = "有%s条草稿状态的{$lang->storyCommon}无法关联到该{$lang->projectCommon}";
|
||||
$lang->project->doneProjects = '已结束';
|
||||
$lang->project->selectDept = '选择部门';
|
||||
$lang->project->selectDeptTitle = '选择一个部门的成员';
|
||||
@@ -258,14 +258,14 @@ $lang->project->noMembers = '暂时没有团队成员。';
|
||||
/* 交互提示。*/
|
||||
$lang->project->confirmDelete = "您确定删除{$lang->projectCommon}[%s]吗?";
|
||||
$lang->project->confirmUnlinkMember = "您确定从该{$lang->projectCommon}中移除该用户吗?";
|
||||
$lang->project->confirmUnlinkStory = "您确定从该{$lang->projectCommon}中移除该需求吗?";
|
||||
$lang->project->confirmUnlinkStory = "您确定从该{$lang->projectCommon}中移除该{$lang->storyCommon}吗?";
|
||||
$lang->project->errorNoLinkedProducts = "该{$lang->projectCommon}没有关联的{$lang->productCommon},系统将转到{$lang->productCommon}关联页面";
|
||||
$lang->project->errorSameProducts = "{$lang->projectCommon}不能关联多个相同的{$lang->productCommon}。";
|
||||
$lang->project->accessDenied = "您无权访问该{$lang->projectCommon}!";
|
||||
$lang->project->tips = '提示';
|
||||
$lang->project->afterInfo = "{$lang->projectCommon}添加成功,您现在可以进行以下操作:";
|
||||
$lang->project->setTeam = '设置团队';
|
||||
$lang->project->linkStory = '关联需求';
|
||||
$lang->project->linkStory = "关联{$lang->storyCommon}";
|
||||
$lang->project->createTask = '创建任务';
|
||||
$lang->project->goback = "返回任务列表";
|
||||
$lang->project->noweekend = '去除周末';
|
||||
@@ -300,12 +300,12 @@ $lang->project->placeholder->totalLeft = "{$lang->projectCommon}开始时的总
|
||||
$lang->project->selectGroup = new stdclass();
|
||||
$lang->project->selectGroup->done = '(已结束)';
|
||||
|
||||
$lang->project->orderList['order_asc'] = "需求排序正序";
|
||||
$lang->project->orderList['order_desc'] = "需求排序倒序";
|
||||
$lang->project->orderList['pri_asc'] = "需求优先级正序";
|
||||
$lang->project->orderList['pri_desc'] = "需求优先级倒序";
|
||||
$lang->project->orderList['stage_asc'] = "需求阶段正序";
|
||||
$lang->project->orderList['stage_desc'] = "需求阶段倒序";
|
||||
$lang->project->orderList['order_asc'] = "{$lang->storyCommon}排序正序";
|
||||
$lang->project->orderList['order_desc'] = "{$lang->storyCommon}排序倒序";
|
||||
$lang->project->orderList['pri_asc'] = "{$lang->storyCommon}优先级正序";
|
||||
$lang->project->orderList['pri_desc'] = "{$lang->storyCommon}优先级倒序";
|
||||
$lang->project->orderList['stage_asc'] = "{$lang->storyCommon}阶段正序";
|
||||
$lang->project->orderList['stage_desc'] = "{$lang->storyCommon}阶段倒序";
|
||||
|
||||
$lang->project->kanban = "看板";
|
||||
$lang->project->kanbanSetting = "看板设置";
|
||||
@@ -337,7 +337,7 @@ $lang->project->featureBar['task']['unclosed'] = $lang->project->unclosed;
|
||||
$lang->project->featureBar['task']['assignedtome'] = $lang->project->assignedToMe;
|
||||
$lang->project->featureBar['task']['myinvolved'] = $lang->project->myInvolved;
|
||||
$lang->project->featureBar['task']['delayed'] = '已延期';
|
||||
$lang->project->featureBar['task']['needconfirm'] = '需求变更';
|
||||
$lang->project->featureBar['task']['needconfirm'] = "{$lang->storyCommon}变更";
|
||||
$lang->project->featureBar['task']['status'] = $lang->project->statusSelects[''];
|
||||
|
||||
$lang->project->featureBar['all']['all'] = $lang->project->all;
|
||||
@@ -351,7 +351,7 @@ $lang->project->treeLevel = array();
|
||||
$lang->project->treeLevel['all'] = '全部展开';
|
||||
$lang->project->treeLevel['root'] = '全部折叠';
|
||||
$lang->project->treeLevel['task'] = '全部显示';
|
||||
$lang->project->treeLevel['story'] = '只看需求';
|
||||
$lang->project->treeLevel['story'] = "只看{$lang->storyCommon}";
|
||||
|
||||
global $config;
|
||||
if($config->global->flow == 'onlyTask')
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
$lang->release->common = '发布';
|
||||
$lang->release->create = "创建发布";
|
||||
$lang->release->edit = "编辑发布";
|
||||
$lang->release->linkStory = "关联需求";
|
||||
$lang->release->linkStory = "关联{$lang->storyCommon}";
|
||||
$lang->release->linkBug = "关联Bug";
|
||||
$lang->release->delete = "删除发布";
|
||||
$lang->release->deleted = '已删除';
|
||||
@@ -20,11 +20,11 @@ $lang->release->view = "发布详情";
|
||||
$lang->release->browse = "浏览发布";
|
||||
$lang->release->changeStatus = "修改状态";
|
||||
$lang->release->batchUnlink = "批量移除";
|
||||
$lang->release->batchUnlinkStory = "批量移除需求";
|
||||
$lang->release->batchUnlinkStory = "批量移除{$lang->storyCommon}";
|
||||
$lang->release->batchUnlinkBug = "批量移除Bug";
|
||||
|
||||
$lang->release->confirmDelete = "您确认删除该发布吗?";
|
||||
$lang->release->confirmUnlinkStory = "您确认移除该需求吗?";
|
||||
$lang->release->confirmUnlinkStory = "您确认移除该{$lang->storyCommon}吗?";
|
||||
$lang->release->confirmUnlinkBug = "您确认移除该Bug吗?";
|
||||
$lang->release->existBuild = '『版本』已经有『%s』这条记录了。您可以更改『发布名称』或者选择一个『版本』。';
|
||||
$lang->release->noRelease = '暂时没有发布。';
|
||||
@@ -43,13 +43,13 @@ $lang->release->desc = '描述';
|
||||
$lang->release->status = '状态';
|
||||
$lang->release->subStatus = '子状态';
|
||||
$lang->release->last = '上次发布';
|
||||
$lang->release->unlinkStory = '移除需求';
|
||||
$lang->release->unlinkStory = "移除{$lang->storyCommon}";
|
||||
$lang->release->unlinkBug = '移除Bug';
|
||||
$lang->release->stories = '完成的需求';
|
||||
$lang->release->stories = "完成的{$lang->storyCommon}";
|
||||
$lang->release->bugs = '解决的Bug';
|
||||
$lang->release->leftBugs = '遗留的Bug';
|
||||
$lang->release->generatedBugs = '遗留的Bug';
|
||||
$lang->release->finishStories = '本次共完成 %s 个需求';
|
||||
$lang->release->finishStories = "本次共完成 %s 个{$lang->storyCommon}";
|
||||
$lang->release->resolvedBugs = '本次共解决 %s 个Bug';
|
||||
$lang->release->createdBugs = '本次共遗留 %s 个Bug';
|
||||
$lang->release->export = '导出HTML';
|
||||
@@ -60,7 +60,7 @@ $lang->release->filePath = '下载地址:';
|
||||
$lang->release->scmPath = '版本库地址:';
|
||||
|
||||
$lang->release->exportTypeList['all'] = '所有';
|
||||
$lang->release->exportTypeList['story'] = '需求';
|
||||
$lang->release->exportTypeList['story'] = $lang->storyCommon;
|
||||
$lang->release->exportTypeList['bug'] = 'Bug';
|
||||
$lang->release->exportTypeList['leftbug'] = '遗留Bug';
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ $lang->score->modules['user'] = '用户';
|
||||
$lang->score->modules['ajax'] = '其它';
|
||||
$lang->score->modules['doc'] = '文档';
|
||||
$lang->score->modules['todo'] = '待办';
|
||||
$lang->score->modules['story'] = '需求';
|
||||
$lang->score->modules['story'] = $lang->storyCommon;
|
||||
$lang->score->modules['bug'] = 'Bug';
|
||||
$lang->score->modules['testcase'] = '用例';
|
||||
$lang->score->modules['testtask'] = '测试单';
|
||||
@@ -62,8 +62,8 @@ $lang->score->methods['ajax']['batchEdit'] = '首次使用批量编辑
|
||||
$lang->score->methods['ajax']['batchOther'] = '其它批量操作';
|
||||
$lang->score->methods['doc']['create'] = '创建文档';
|
||||
$lang->score->methods['todo']['create'] = '创建待办';
|
||||
$lang->score->methods['story']['create'] = '创建需求';
|
||||
$lang->score->methods['story']['close'] = '需求关闭';
|
||||
$lang->score->methods['story']['create'] = "创建{$lang->storyCommon}";
|
||||
$lang->score->methods['story']['close'] = "{$lang->storyCommon}关闭";
|
||||
$lang->score->methods['bug']['create'] = '创建Bug';
|
||||
$lang->score->methods['bug']['confirmBug'] = '确认Bug';
|
||||
$lang->score->methods['bug']['createFormCase'] = '从用例创建';
|
||||
@@ -85,4 +85,4 @@ $lang->score->extended['project']['close'] = '项目经理增加##manager,
|
||||
$lang->score->extended['bug']['resolve'] = 'Bug解决后,额外增加严重程度积分:s1 + ##severity,3##, s2 + ##severity,2##, s3 + ##severity,1##。';
|
||||
$lang->score->extended['bug']['confirmBug'] = 'Bug确认后,额外增加严重程度积分:s1 + ##severity,3##, s2 + ##severity,2##, s3 + ##severity,1##。';
|
||||
$lang->score->extended['task']['finish'] = '额外增加工时积分 round(工时 / 10 * 预计 / 消耗) + 优先级积分(p1 ##pri,1##, p2 ##pri,2##)。';
|
||||
$lang->score->extended['story']['close'] = '需求的创建者额外增加##createID##分';
|
||||
$lang->score->extended['story']['close'] = "{$lang->storyCommon}的创建者额外增加##createID##分";
|
||||
|
||||
@@ -20,7 +20,7 @@ $lang->search->buildQuery = '执行搜索';
|
||||
$lang->search->savedQuery = '已保存的查询条件';
|
||||
$lang->search->deleteQuery = '删除查询';
|
||||
$lang->search->setQueryTitle = '请输入查询标题(保存之前请先查询):';
|
||||
$lang->search->select = '需求/任务筛选';
|
||||
$lang->search->select = "{$lang->storyCommon}/任务筛选";
|
||||
$lang->search->me = '自己';
|
||||
$lang->search->noQuery = '还没有保存查询!';
|
||||
$lang->search->onMenuBar = '显示在菜单栏';
|
||||
|
||||
@@ -1498,7 +1498,6 @@ class story extends control
|
||||
|
||||
/* Get related objects id lists. */
|
||||
$relatedProductIdList = array();
|
||||
$relatedModuleIdList = array();
|
||||
$relatedStoryIdList = array();
|
||||
$relatedPlanIdList = array();
|
||||
$relatedBranchIdList = array();
|
||||
@@ -1507,7 +1506,6 @@ class story extends control
|
||||
foreach($stories as $story)
|
||||
{
|
||||
$relatedProductIdList[$story->product] = $story->product;
|
||||
$relatedModuleIdList[$story->module] = $story->module;
|
||||
$relatedPlanIdList[$story->plan] = $story->plan;
|
||||
$relatedBranchIdList[$story->branch] = $story->branch;
|
||||
$relatedStoryIDs[$story->id] = $story->id;
|
||||
@@ -1533,10 +1531,7 @@ class story extends control
|
||||
$relatedSpecs = $this->dao->select('*')->from(TABLE_STORYSPEC)->where('`story`')->in(@array_keys($stories))->orderBy('version desc')->fetchGroup('story');
|
||||
$relatedBranch = array('0' => $this->lang->branch->all) + $this->dao->select('id, name')->from(TABLE_BRANCH)->where('id')->in($relatedBranchIdList)->fetchPairs();
|
||||
|
||||
$relatedModules = array();
|
||||
$this->loadModel('tree');
|
||||
foreach($relatedProductIdList as $relatedProductId) $relatedModules += $this->tree->getOptionMenu($relatedProductId);
|
||||
|
||||
foreach($stories as $story)
|
||||
{
|
||||
$story->spec = '';
|
||||
@@ -1565,6 +1560,7 @@ class story extends control
|
||||
if(isset($products[$story->product])) $story->product = $this->post->fileType == 'word' ? $products[$story->product] : $products[$story->product] . "(#$story->product)";
|
||||
if(isset($relatedModules[$story->module])) $story->module = $this->post->fileType == 'word' ? $relatedModules[$story->module] : $relatedModules[$story->module] . "(#$story->module)";
|
||||
if(isset($relatedBranch[$story->branch])) $story->branch = $relatedBranch[$story->branch] . "(#$story->branch)";
|
||||
$story->module = $story->module ? (($this->post->fileType == 'word') ? $this->tree->getModulePathByID($story->module) : $this->tree->getModulePathByID($story->module) . "(#$story->module)") : '';
|
||||
if(isset($story->plan))
|
||||
{
|
||||
$plans = '';
|
||||
|
||||
+55
-55
@@ -9,29 +9,29 @@
|
||||
* @version $Id: zh-cn.php 5141 2013-07-15 05:57:15Z chencongzhi520@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->story->create = "提需求";
|
||||
$lang->story->create = "提{$lang->storyCommon}";
|
||||
$lang->story->batchCreate = "批量创建";
|
||||
$lang->story->change = "变更";
|
||||
$lang->story->changeAction = "变更需求";
|
||||
$lang->story->changed = '需求变更';
|
||||
$lang->story->changeAction = "变更{$lang->storyCommon}";
|
||||
$lang->story->changed = "{$lang->storyCommon}变更";
|
||||
$lang->story->assignTo = '指派';
|
||||
$lang->story->assignAction = '指派需求';
|
||||
$lang->story->assignAction = "指派{$lang->storyCommon}";
|
||||
$lang->story->review = '评审';
|
||||
$lang->story->reviewAction = '评审需求';
|
||||
$lang->story->reviewAction = "评审{$lang->storyCommon}";
|
||||
$lang->story->needReview = '需要评审';
|
||||
$lang->story->batchReview = '批量评审';
|
||||
$lang->story->edit = "编辑";
|
||||
$lang->story->batchEdit = "批量编辑";
|
||||
$lang->story->subdivide = '细分';
|
||||
$lang->story->subdivideAction = '细分需求';
|
||||
$lang->story->subdivideAction = "细分{$lang->storyCommon}";
|
||||
$lang->story->close = '关闭';
|
||||
$lang->story->closeAction = '关闭需求';
|
||||
$lang->story->closeAction = "关闭{$lang->storyCommon}";
|
||||
$lang->story->batchClose = '批量关闭';
|
||||
$lang->story->activate = '激活';
|
||||
$lang->story->activateAction = '激活需求';
|
||||
$lang->story->activateAction = "激活{$lang->storyCommon}";
|
||||
$lang->story->delete = "删除";
|
||||
$lang->story->deleteAction = "删除需求";
|
||||
$lang->story->view = "需求详情";
|
||||
$lang->story->deleteAction = "删除{$lang->storyCommon}";
|
||||
$lang->story->view = "{$lang->storyCommon}详情";
|
||||
$lang->story->setting = "设置";
|
||||
$lang->story->tasks = "相关任务";
|
||||
$lang->story->bugs = "相关Bug";
|
||||
@@ -42,15 +42,15 @@ $lang->story->caseCount = '用例数';
|
||||
$lang->story->taskCountAB = 'T';
|
||||
$lang->story->bugCountAB = 'B';
|
||||
$lang->story->caseCountAB = 'C';
|
||||
$lang->story->linkStory = '关联需求';
|
||||
$lang->story->unlinkStory = '移除相关需求';
|
||||
$lang->story->linkStory = "关联{$lang->storyCommon}";
|
||||
$lang->story->unlinkStory = "移除相关{$lang->storyCommon}";
|
||||
$lang->story->export = "导出数据";
|
||||
$lang->story->exportAction = "导出需求";
|
||||
$lang->story->zeroCase = "零用例需求";
|
||||
$lang->story->zeroTask = "只列零任务需求";
|
||||
$lang->story->exportAction = "导出{$lang->storyCommon}";
|
||||
$lang->story->zeroCase = "零用例{$lang->storyCommon}";
|
||||
$lang->story->zeroTask = "只列零任务{$lang->storyCommon}";
|
||||
$lang->story->reportChart = "统计报表";
|
||||
$lang->story->reportAction = "统计报表";
|
||||
$lang->story->copyTitle = "同需求名称";
|
||||
$lang->story->copyTitle = "同{$lang->storyCommon}名称";
|
||||
$lang->story->batchChangePlan = "批量修改计划";
|
||||
$lang->story->batchChangeBranch = "批量修改分支";
|
||||
$lang->story->batchChangeStage = "批量修改阶段";
|
||||
@@ -58,20 +58,20 @@ $lang->story->batchAssignTo = "批量指派";
|
||||
$lang->story->batchChangeModule = "批量修改模块";
|
||||
$lang->story->viewAll = '查看全部';
|
||||
|
||||
$lang->story->common = '需求';
|
||||
$lang->story->common = $lang->storyCommon;
|
||||
$lang->story->id = '编号';
|
||||
$lang->story->product = "所属{$lang->productCommon}";
|
||||
$lang->story->branch = "分支/平台";
|
||||
$lang->story->module = '所属模块';
|
||||
$lang->story->moduleAB = '模块';
|
||||
$lang->story->source = '需求来源';
|
||||
$lang->story->source = "{$lang->storyCommon}来源";
|
||||
$lang->story->sourceNote = '来源备注';
|
||||
$lang->story->fromBug = '来源Bug';
|
||||
$lang->story->title = '需求名称';
|
||||
$lang->story->type = '需求类型';
|
||||
$lang->story->title = "{$lang->storyCommon}名称";
|
||||
$lang->story->type = "{$lang->storyCommon}类型";
|
||||
$lang->story->color = '标题颜色';
|
||||
$lang->story->toBug = '转Bug';
|
||||
$lang->story->spec = '需求描述';
|
||||
$lang->story->spec = "{$lang->storyCommon}描述";
|
||||
$lang->story->assign = '指派给';
|
||||
$lang->story->verify = '验收标准';
|
||||
$lang->story->pri = '优先级';
|
||||
@@ -100,24 +100,24 @@ $lang->story->version = '版本号';
|
||||
$lang->story->plan = '所属计划';
|
||||
$lang->story->planAB = '计划';
|
||||
$lang->story->comment = '备注';
|
||||
$lang->story->linkStories = '相关需求';
|
||||
$lang->story->childStories = '细分需求';
|
||||
$lang->story->duplicateStory = '重复需求';
|
||||
$lang->story->linkStories = "相关{$lang->storyCommon}";
|
||||
$lang->story->childStories = "细分{$lang->storyCommon}";
|
||||
$lang->story->duplicateStory = "重复{$lang->storyCommon}";
|
||||
$lang->story->reviewResult = '评审结果';
|
||||
$lang->story->preVersion = '之前版本';
|
||||
$lang->story->keywords = '关键词';
|
||||
$lang->story->newStory = '继续添加需求';
|
||||
$lang->story->newStory = "继续添加{$lang->storyCommon}";
|
||||
$lang->story->colorTag = '颜色标签';
|
||||
$lang->story->files = '附件';
|
||||
$lang->story->copy = "复制需求";
|
||||
$lang->story->total = '总需求';
|
||||
$lang->story->allStories = '所有需求';
|
||||
$lang->story->copy = "复制{$lang->storyCommon}";
|
||||
$lang->story->total = "总{$lang->storyCommon}";
|
||||
$lang->story->allStories = "所有{$lang->storyCommon}";
|
||||
$lang->story->unclosed = '未关闭';
|
||||
$lang->story->deleted = '已删除';
|
||||
$lang->story->released = '已发布需求数';
|
||||
$lang->story->released = "已发布{$lang->storyCommon}数";
|
||||
|
||||
$lang->story->ditto = '同上';
|
||||
$lang->story->dittoNotice = '该需求与上一需求不属于同一产品!';
|
||||
$lang->story->dittoNotice = "该{$lang->storyCommon}与上一{$lang->storyCommon}不属于同一产品!";
|
||||
|
||||
$lang->story->useList[0] = '不使用';
|
||||
$lang->story->useList[1] = '使用';
|
||||
@@ -182,7 +182,7 @@ $lang->story->priList[3] = '3';
|
||||
$lang->story->priList[4] = '4';
|
||||
|
||||
$lang->story->legendBasicInfo = '基本信息';
|
||||
$lang->story->legendLifeTime = '需求的一生';
|
||||
$lang->story->legendLifeTime = "{$lang->storyCommon}的一生";
|
||||
$lang->story->legendRelated = '相关信息';
|
||||
$lang->story->legendMailto = '抄送给';
|
||||
$lang->story->legendAttatch = '附件';
|
||||
@@ -190,16 +190,16 @@ $lang->story->legendProjectAndTask = $lang->projectCommon . '任务';
|
||||
$lang->story->legendBugs = '相关Bug';
|
||||
$lang->story->legendFromBug = '来源Bug';
|
||||
$lang->story->legendCases = '相关用例';
|
||||
$lang->story->legendLinkStories = '相关需求';
|
||||
$lang->story->legendChildStories = '细分需求';
|
||||
$lang->story->legendSpec = '需求描述';
|
||||
$lang->story->legendLinkStories = "相关{$lang->storyCommon}";
|
||||
$lang->story->legendChildStories = "细分{$lang->storyCommon}";
|
||||
$lang->story->legendSpec = "{$lang->storyCommon}描述";
|
||||
$lang->story->legendVerify = '验收标准';
|
||||
$lang->story->legendMisc = '其他相关';
|
||||
|
||||
$lang->story->lblChange = '变更需求';
|
||||
$lang->story->lblReview = '评审需求';
|
||||
$lang->story->lblActivate = '激活需求';
|
||||
$lang->story->lblClose = '关闭需求';
|
||||
$lang->story->lblChange = "变更{$lang->storyCommon}";
|
||||
$lang->story->lblReview = "评审{$lang->storyCommon}";
|
||||
$lang->story->lblActivate = "激活{$lang->storyCommon}";
|
||||
$lang->story->lblClose = "关闭{$lang->storyCommon}";
|
||||
$lang->story->lblTBC = '任务Bug用例';
|
||||
|
||||
$lang->story->checkAffection = '影响范围';
|
||||
@@ -209,19 +209,19 @@ $lang->story->affectedCases = '影响的用例';
|
||||
|
||||
$lang->story->specTemplate = "建议参考的模板:作为一名<某种类型的用户>,我希望<达成某些目的>,这样可以<开发的价值>。";
|
||||
$lang->story->needNotReview = '不需要评审';
|
||||
$lang->story->successSaved = "需求成功添加,";
|
||||
$lang->story->confirmDelete = "您确认删除该需求吗?";
|
||||
$lang->story->errorEmptyChildStory = '『细分需求』不能为空。';
|
||||
$lang->story->successSaved = "{$lang->storyCommon}成功添加,";
|
||||
$lang->story->confirmDelete = "您确认删除该{$lang->storyCommon}吗?";
|
||||
$lang->story->errorEmptyChildStory = "『细分{$lang->storyCommon}』不能为空。";
|
||||
$lang->story->mustChooseResult = '必须选择评审结果';
|
||||
$lang->story->mustChoosePreVersion = '必须选择回溯的版本';
|
||||
$lang->story->noStory = '暂时没有需求。';
|
||||
$lang->story->ignoreChangeStage = '需求 %s 为草稿状态,没有修改其阶段。';
|
||||
$lang->story->noStory = "暂时没有{$lang->storyCommon}。";
|
||||
$lang->story->ignoreChangeStage = "{$lang->storyCommon} %s 为草稿状态,没有修改其阶段。";
|
||||
|
||||
$lang->story->form = new stdclass();
|
||||
$lang->story->form->area = '该需求所属范围';
|
||||
$lang->story->form->desc = '描述及标准,什么需求?如何验收?';
|
||||
$lang->story->form->area = "该{$lang->storyCommon}所属范围";
|
||||
$lang->story->form->desc = "描述及标准,什么{$lang->storyCommon}?如何验收?";
|
||||
$lang->story->form->resource = '资源分配,有谁完成?需要多少时间?';
|
||||
$lang->story->form->file = '附件,如果该需求有相关文件,请点此上传。';
|
||||
$lang->story->form->file = "附件,如果该{$lang->storyCommon}有相关文件,请点此上传。";
|
||||
|
||||
$lang->story->action = new stdclass();
|
||||
$lang->story->action->reviewed = array('main' => '$date, 由 <strong>$actor</strong> 记录评审结果,结果为 <strong>$extra</strong>。', 'extra' => 'reviewResultList');
|
||||
@@ -234,21 +234,21 @@ $lang->story->action->linked2build = array('main' => '$date, 由 <strong>
|
||||
$lang->story->action->unlinkedfrombuild = array('main' => '$date, 由 <strong>$actor</strong> 从版本 <strong>$extra</strong> 移除。');
|
||||
$lang->story->action->linked2release = array('main' => '$date, 由 <strong>$actor</strong> 关联到发布 <strong>$extra</strong>。');
|
||||
$lang->story->action->unlinkedfromrelease = array('main' => '$date, 由 <strong>$actor</strong> 从发布 <strong>$extra</strong> 移除。');
|
||||
$lang->story->action->linkrelatedstory = array('main' => '$date, 由 <strong>$actor</strong> 关联相关需求 <strong>$extra</strong>。');
|
||||
$lang->story->action->subdividestory = array('main' => '$date, 由 <strong>$actor</strong> 细分为需求 <strong>$extra</strong>。');
|
||||
$lang->story->action->unlinkrelatedstory = array('main' => '$date, 由 <strong>$actor</strong> 移除相关需求 <strong>$extra</strong>。');
|
||||
$lang->story->action->unlinkchildstory = array('main' => '$date, 由 <strong>$actor</strong> 移除细分需求 <strong>$extra</strong>。');
|
||||
$lang->story->action->linkrelatedstory = array('main' => "\$date, 由 <strong>\$actor</strong> 关联相关{$lang->storyCommon} <strong>\$extra</strong>。");
|
||||
$lang->story->action->subdividestory = array('main' => "\$date, 由 <strong>\$actor</strong> 细分为{$lang->storyCommon} <strong>\$extra</strong>。");
|
||||
$lang->story->action->unlinkrelatedstory = array('main' => "\$date, 由 <strong>\$actor</strong> 移除相关{$lang->storyCommon} <strong>\$extra</strong>。");
|
||||
$lang->story->action->unlinkchildstory = array('main' => "\$date, 由 <strong>\$actor</strong> 移除细分{$lang->storyCommon} <strong>\$extra</strong>。");
|
||||
|
||||
/* 统计报表。*/
|
||||
$lang->story->report = new stdclass();
|
||||
$lang->story->report->common = '报表';
|
||||
$lang->story->report->select = '请选择报表类型';
|
||||
$lang->story->report->create = '生成报表';
|
||||
$lang->story->report->value = '需求数';
|
||||
$lang->story->report->value = "{$lang->storyCommon}数";
|
||||
|
||||
$lang->story->report->charts['storysPerProduct'] = $lang->productCommon . '需求数量';
|
||||
$lang->story->report->charts['storysPerModule'] = '模块需求数量';
|
||||
$lang->story->report->charts['storysPerSource'] = '按需求来源统计';
|
||||
$lang->story->report->charts['storysPerProduct'] = $lang->productCommon . '{$lang->storyCommon}数量';
|
||||
$lang->story->report->charts['storysPerModule'] = "模块{$lang->storyCommon}数量";
|
||||
$lang->story->report->charts['storysPerSource'] = "按{$lang->storyCommon}来源统计";
|
||||
$lang->story->report->charts['storysPerPlan'] = '按计划进行统计';
|
||||
$lang->story->report->charts['storysPerStatus'] = '按状态进行统计';
|
||||
$lang->story->report->charts['storysPerStage'] = '按所处阶段进行统计';
|
||||
@@ -324,4 +324,4 @@ $lang->story->chosen = new stdClass();
|
||||
$lang->story->chosen->reviewedBy = '选择评审人...';
|
||||
|
||||
$lang->story->notice = new stdClass();
|
||||
$lang->story->notice->closed = '您选择的需求已经被关闭了!';
|
||||
$lang->story->notice->closed = "您选择的{$lang->storyCommon}已经被关闭了!";
|
||||
|
||||
@@ -504,6 +504,7 @@ class storyModel extends model
|
||||
->setIF($this->post->closedReason != false and $oldStory->closedDate == '', 'closedDate', $now)
|
||||
->setIF($this->post->closedBy != false or $this->post->closedReason != false, 'status', 'closed')
|
||||
->setIF($this->post->closedReason != false and $this->post->closedBy == false, 'closedBy', $this->app->user->account)
|
||||
->setIF($this->post->plan[0] and ($oldStory->stage == 'wait'), 'stage', 'planned')
|
||||
->join('reviewedBy', ',')
|
||||
->join('mailto', ',')
|
||||
->join('linkStories', ',')
|
||||
|
||||
@@ -1465,7 +1465,7 @@ class task extends control
|
||||
if(isset($taskLang->priList[$task->pri])) $task->pri = $taskLang->priList[$task->pri];
|
||||
if(isset($taskLang->statusList[$task->status])) $task->status = $this->processStatus('task', $task);
|
||||
if(isset($taskLang->reasonList[$task->closedReason])) $task->closedReason = $taskLang->reasonList[$task->closedReason];
|
||||
$task->module = $task->module ? $this->tree->getModulePathByID($task->module) : '';
|
||||
$task->module = $task->module ? $this->tree->getModulePathByID($task->module) . "(#$task->module)" : '';
|
||||
|
||||
if(isset($users[$task->openedBy])) $task->openedBy = $users[$task->openedBy];
|
||||
if(isset($users[$task->assignedTo])) $task->assignedTo = $users[$task->assignedTo];
|
||||
|
||||
+14
-14
@@ -44,8 +44,8 @@ $lang->task->exportAction = "导出任务";
|
||||
$lang->task->reportChart = "报表统计";
|
||||
$lang->task->fromBug = '来源Bug';
|
||||
$lang->task->case = '相关用例';
|
||||
$lang->task->confirmStoryChange = "确认需求变动";
|
||||
$lang->task->storyChange = "需求变更";
|
||||
$lang->task->confirmStoryChange = "确认{$lang->storyCommon}变动";
|
||||
$lang->task->storyChange = "{$lang->storyCommon}变更";
|
||||
$lang->task->progress = '进度';
|
||||
$lang->task->progressAB = '%';
|
||||
$lang->task->progressTips = '已消耗/(已消耗+剩余)';
|
||||
@@ -57,11 +57,11 @@ $lang->task->id = '编号';
|
||||
$lang->task->project = '所属' . $lang->projectCommon;
|
||||
$lang->task->module = '所属模块';
|
||||
$lang->task->moduleAB = '模块';
|
||||
$lang->task->story = '相关需求';
|
||||
$lang->task->storyAB = '需求';
|
||||
$lang->task->storySpec = '需求描述';
|
||||
$lang->task->story = "相关{$lang->storyCommon}";
|
||||
$lang->task->storyAB = $lang->storyCommon;
|
||||
$lang->task->storySpec = "{$lang->storyCommon}描述";
|
||||
$lang->task->storyVerify = '验收标准';
|
||||
$lang->task->storyVersion = '需求版本';
|
||||
$lang->task->storyVersion = "{$lang->storyCommon}版本";
|
||||
$lang->task->color = '标题颜色';
|
||||
$lang->task->name = '任务名称';
|
||||
$lang->task->type = '任务类型';
|
||||
@@ -127,13 +127,13 @@ $lang->task->parent = '父任务';
|
||||
$lang->task->parentAB = '父';
|
||||
$lang->task->lblPri = 'P';
|
||||
$lang->task->lblHour = '(h)';
|
||||
$lang->task->lblTestStory = '测试需求';
|
||||
$lang->task->lblTestStory = "测试{$lang->storyCommon}";
|
||||
|
||||
$lang->task->ditto = '同上';
|
||||
$lang->task->dittoNotice = "该任务与上一任务不属于同一项目!";
|
||||
$lang->task->selectTestStory = '选择测试需求';
|
||||
$lang->task->selectTestStory = "选择测试{$lang->storyCommon}";
|
||||
$lang->task->selectAllUser = '全部';
|
||||
$lang->task->noStory = '无需求';
|
||||
$lang->task->noStory = "无{$lang->storyCommon}";
|
||||
$lang->task->noAssigned = '未指派';
|
||||
$lang->task->noFinished = '未完成';
|
||||
$lang->task->noClosed = '未关闭';
|
||||
@@ -168,9 +168,9 @@ $lang->task->reasonList[''] = '';
|
||||
$lang->task->reasonList['done'] = '已完成';
|
||||
$lang->task->reasonList['cancel'] = '已取消';
|
||||
|
||||
$lang->task->afterChoices['continueAdding'] = '继续为该需求添加任务';
|
||||
$lang->task->afterChoices['continueAdding'] = "继续为该{$lang->storyCommon}添加任务";
|
||||
$lang->task->afterChoices['toTaskList'] = '返回任务列表';
|
||||
$lang->task->afterChoices['toStoryList'] = '返回需求列表';
|
||||
$lang->task->afterChoices['toStoryList'] = "返回{$lang->storyCommon}列表";
|
||||
|
||||
$lang->task->legendBasic = '基本信息';
|
||||
$lang->task->legendEffort = '工时信息';
|
||||
@@ -179,16 +179,16 @@ $lang->task->legendDesc = '任务描述';
|
||||
|
||||
$lang->task->confirmDelete = "您确定要删除这个任务吗?";
|
||||
$lang->task->confirmDeleteEstimate = "您确定要删除这个记录吗?";
|
||||
$lang->task->copyStoryTitle = "同需求";
|
||||
$lang->task->copyStoryTitle = "同{$lang->storyCommon}";
|
||||
$lang->task->afterSubmit = "添加之后";
|
||||
$lang->task->successSaved = "成功添加,";
|
||||
$lang->task->delayWarning = " <strong class='text-danger'> 延期%s天 </strong>";
|
||||
$lang->task->remindBug = "该任务为Bug转化得到,是否更新Bug:%s ?";
|
||||
$lang->task->confirmChangeProject = "修改{$lang->projectCommon}会导致相应的所属模块、相关需求和指派人发生变化,确定吗?";
|
||||
$lang->task->confirmChangeProject = "修改{$lang->projectCommon}会导致相应的所属模块、相关{$lang->storyCommon}和指派人发生变化,确定吗?";
|
||||
$lang->task->confirmFinish = '"预计剩余"为0,确认将任务状态改为"已完成"吗?';
|
||||
$lang->task->confirmRecord = '"剩余"为0,任务将标记为"已完成",您确定吗?';
|
||||
$lang->task->confirmTransfer = '"当前剩余"为0,任务将被转交,您确定吗?';
|
||||
$lang->task->noticeLinkStory = "没有可关联的相关需求,您可以为当前项目%s,然后%s";
|
||||
$lang->task->noticeLinkStory = "没有可关联的相关{$lang->storyCommon},您可以为当前项目%s,然后%s";
|
||||
$lang->task->noticeSaveRecord = '您有尚未保存的工时记录,请先将其保存。';
|
||||
$lang->task->commentActions = '%s. %s, 由 <strong>%s</strong> 添加备注。';
|
||||
$lang->task->deniedNotice = '当前任务只有%s才可以%s。';
|
||||
|
||||
@@ -1152,13 +1152,11 @@ class testcase extends control
|
||||
$branches = $this->loadModel('branch')->getPairs($productID);
|
||||
|
||||
/* Get related objects id lists. */
|
||||
$relatedModuleIdList = array();
|
||||
$relatedStoryIdList = array();
|
||||
$relatedCaseIdList = array();
|
||||
|
||||
foreach($cases as $case)
|
||||
{
|
||||
$relatedModuleIdList[$case->module] = $case->module;
|
||||
$relatedStoryIdList[$case->story] = $case->story;
|
||||
$relatedCaseIdList[$case->linkCase] = $case->linkCase;
|
||||
|
||||
@@ -1171,12 +1169,11 @@ class testcase extends control
|
||||
}
|
||||
|
||||
/* Get related objects title or names. */
|
||||
$relatedModules = $this->loadModel('tree')->getOptionMenu($productID, 'case');
|
||||
$relatedStories = $this->dao->select('id,title')->from(TABLE_STORY) ->where('id')->in($relatedStoryIdList)->fetchPairs();
|
||||
$relatedCases = $this->dao->select('id, title')->from(TABLE_CASE)->where('id')->in($relatedCaseIdList)->fetchPairs();
|
||||
$relatedSteps = $this->dao->select('id,parent,`case`,version,type,`desc`,expect')->from(TABLE_CASESTEP)->where('`case`')->in(@array_keys($cases))->orderBy('version desc,id')->fetchGroup('case', 'id');
|
||||
$relatedModules = array('0' => '/') + $relatedModules;
|
||||
|
||||
$this->loadModel('tree');
|
||||
$cases = $this->testcase->appendData($cases);
|
||||
foreach($cases as $case)
|
||||
{
|
||||
@@ -1222,8 +1219,8 @@ class testcase extends control
|
||||
/* fill some field with useful value. */
|
||||
$case->product = !isset($products[$case->product]) ? '' : $products[$case->product] . "(#$case->product)";
|
||||
$case->branch = !isset($branches[$case->branch]) ? '' : $branches[$case->branch] . "(#$case->branch)";
|
||||
$case->module = !isset($relatedModules[$case->module])? '' : $relatedModules[$case->module] . "(#$case->module)";
|
||||
$case->story = !isset($relatedStories[$case->story]) ? '' : $relatedStories[$case->story] . "(#$case->story)";
|
||||
$case->module = $case->module ? $this->tree->getModulePathByID($case->module) . "(#$case->module)" : '';
|
||||
|
||||
if(isset($caseLang->priList[$case->pri])) $case->pri = $caseLang->priList[$case->pri];
|
||||
if(isset($caseLang->typeList[$case->type])) $case->type = $caseLang->typeList[$case->type];
|
||||
|
||||
@@ -15,8 +15,8 @@ $lang->testcase->module = '所属模块';
|
||||
$lang->testcase->lib = "所属库";
|
||||
$lang->testcase->branch = "分支/平台";
|
||||
$lang->testcase->moduleAB = '模块';
|
||||
$lang->testcase->story = '相关需求';
|
||||
$lang->testcase->storyVersion = '需求版本';
|
||||
$lang->testcase->story = "相关{$lang->storyCommon}";
|
||||
$lang->testcase->storyVersion = "{$lang->storyCommon}版本";
|
||||
$lang->testcase->color = '标题颜色';
|
||||
$lang->testcase->order = '排序';
|
||||
$lang->testcase->title = '用例标题';
|
||||
@@ -96,7 +96,7 @@ $lang->testcase->batchChangeModule = "批量修改模块";
|
||||
$lang->testcase->confirmLibcaseChange = "同步用例库用例修改";
|
||||
$lang->testcase->ignoreLibcaseChange = "忽略用例库用例修改";
|
||||
$lang->testcase->batchChangeBranch = "批量修改分支";
|
||||
$lang->testcase->groupByStories = '需求分组';
|
||||
$lang->testcase->groupByStories = "{$lang->storyCommon}分组";
|
||||
$lang->testcase->batchDelete = "批量删除 ";
|
||||
$lang->testcase->batchConfirmStoryChange = "批量确认变更";
|
||||
$lang->testcase->batchCaseTypeChange = "批量修改类型";
|
||||
@@ -113,7 +113,7 @@ $lang->testcase->exportAction = "导出用例";
|
||||
$lang->testcase->reportChart = '报表统计';
|
||||
$lang->testcase->reportAction = '用例报表统计';
|
||||
$lang->testcase->confirmChange = '确认用例变动';
|
||||
$lang->testcase->confirmStoryChange = '确认需求变动';
|
||||
$lang->testcase->confirmStoryChange = "确认{$lang->storyCommon}变动";
|
||||
$lang->testcase->copy = '复制用例';
|
||||
$lang->testcase->group = '分组';
|
||||
$lang->testcase->groupName = '分组名称';
|
||||
@@ -133,11 +133,11 @@ $lang->testcase->assignToMe = '给我的用例';
|
||||
$lang->testcase->openedByMe = '我建的用例';
|
||||
$lang->testcase->allCases = '所有';
|
||||
$lang->testcase->allTestcases = '所有用例';
|
||||
$lang->testcase->needConfirm = '需求变动';
|
||||
$lang->testcase->needConfirm = "{$lang->storyCommon}变动";
|
||||
$lang->testcase->bySearch = '搜索';
|
||||
$lang->testcase->unexecuted = '未执行';
|
||||
|
||||
$lang->testcase->lblStory = '相关需求';
|
||||
$lang->testcase->lblStory = "相关{$lang->storyCommon}";
|
||||
$lang->testcase->lblLastEdited = '最后编辑';
|
||||
$lang->testcase->lblTypeValue = '类型可选值列表';
|
||||
$lang->testcase->lblStageValue = '阶段可选值列表';
|
||||
@@ -207,7 +207,7 @@ $lang->testcase->mustChooseResult = '必须选择评审结果';
|
||||
$lang->testcase->noModule = '<div>您现在还没有模块信息</div><div>请维护测试模块</div>';
|
||||
$lang->testcase->noCase = '暂时没有用例。';
|
||||
|
||||
$lang->testcase->searchStories = '键入来搜索需求';
|
||||
$lang->testcase->searchStories = "键入来搜索{$lang->storyCommon}";
|
||||
$lang->testcase->selectLib = '请选择库';
|
||||
|
||||
$lang->testcase->action = new stdclass();
|
||||
@@ -219,5 +219,5 @@ $lang->testcase->featureBar['browse']['wait'] = '待评审';
|
||||
$lang->testcase->featureBar['browse']['needconfirm'] = $lang->testcase->needConfirm;
|
||||
$lang->testcase->featureBar['browse']['group'] = '分组查看';
|
||||
$lang->testcase->featureBar['browse']['suite'] = '套件';
|
||||
$lang->testcase->featureBar['browse']['zerocase'] = '零用例需求';
|
||||
$lang->testcase->featureBar['browse']['zerocase'] = "零用例{$lang->storyCommon}";
|
||||
$lang->testcase->featureBar['groupcase'] = $lang->testcase->featureBar['browse'];
|
||||
|
||||
@@ -107,8 +107,8 @@
|
||||
if(!$isLibCase)
|
||||
{
|
||||
if(!isonlybody()) echo "<div class='divider'></div>";
|
||||
common::printIcon('testtask', 'runCase', "runID=$runID&caseID=$case->id&version=$case->currentVersion", $case, 'button', '', '', 'runCase', false, "data-width='95%'");
|
||||
common::printIcon('testtask', 'results', "runID=$runID&caseID=$case->id&version=$case->version", $case, 'button', '', '', 'results', false, "data-width='95%'");
|
||||
common::printIcon('testtask', 'runCase', "runID=$runID&caseID=$case->id&version=$case->currentVersion", $case, 'button', '', '', 'showinonlybody iframe', false, "data-width='95%'");
|
||||
common::printIcon('testtask', 'results', "runID=$runID&caseID=$case->id&version=$case->version", $case, 'button', '', '', 'showinonlybody iframe', false, "data-width='95%'");
|
||||
|
||||
if($caseFails > 0) common::printIcon('testcase', 'createBug', "product=$case->product&branch=$case->branch&extra=caseID=$case->id,version=$case->version,runID=$runID", $case, 'button', 'bug', '', 'iframe', '', "data-width='90%'");
|
||||
}
|
||||
@@ -118,10 +118,10 @@
|
||||
<?php echo $this->buildOperateMenu($case, 'view');?>
|
||||
|
||||
<?php
|
||||
common::printIcon('testcase', 'edit',"caseID=$case->id", $case);
|
||||
common::printIcon('testcase', 'edit',"caseID=$case->id", $case, 'button', '', '', 'showinonlybody');
|
||||
if(!$isLibCase) common::printIcon('testcase', 'create', "productID=$case->product&branch=$case->branch&moduleID=$case->module&from=testcase¶m=$case->id", $case, 'button', 'copy');
|
||||
if($isLibCase and common::hasPriv('caselib', 'createCase')) echo html::a($this->createLink('caselib', 'createCase', "libID=$case->lib&moduleID=$case->module¶m=$case->id", $case), "<i class='icon-copy'></i>", '', "class='btn' title='{$lang->testcase->copy}'");
|
||||
common::printIcon('testcase', 'delete', "caseID=$case->id", $case, 'button', 'trash', 'hiddenwin');
|
||||
common::printIcon('testcase', 'delete', "caseID=$case->id", $case, 'button', 'trash', 'hiddenwin', 'showinonlybody');
|
||||
?>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
|
||||
@@ -12,7 +12,7 @@ $lang->testreport->recreate = '重新生成报告';
|
||||
$lang->testreport->title = '标题';
|
||||
$lang->testreport->product = "所属{$lang->productCommon}";
|
||||
$lang->testreport->bugTitle = 'Bug 标题';
|
||||
$lang->testreport->storyTitle = '需求标题';
|
||||
$lang->testreport->storyTitle = "{$lang->storyCommon}标题";
|
||||
$lang->testreport->project = '所属项目';
|
||||
$lang->testreport->testtask = '测试版本';
|
||||
$lang->testreport->tasks = $lang->testreport->testtask;
|
||||
@@ -21,7 +21,7 @@ $lang->testreport->owner = '负责人';
|
||||
$lang->testreport->members = '参与人员';
|
||||
$lang->testreport->begin = '开始时间';
|
||||
$lang->testreport->end = '结束时间';
|
||||
$lang->testreport->stories = '测试的需求';
|
||||
$lang->testreport->stories = "测试的{$lang->storyCommon}";
|
||||
$lang->testreport->bugs = '测试的Bug';
|
||||
$lang->testreport->builds = '版本信息';
|
||||
$lang->testreport->goal = '项目目标';
|
||||
|
||||
@@ -370,8 +370,6 @@ class testreportModel extends model
|
||||
->leftJoin(TABLE_TESTRUN)->alias('t2')->on('t1.run=t2.id')
|
||||
->where('t2.task')->in(array_keys($tasks))
|
||||
->andWhere('t1.`case`')->in(array_keys($cases))
|
||||
->andWhere('t1.date')->ge($begin)
|
||||
->andWhere('t1.date')->le($end . " 23:59:59")
|
||||
->orderBy('date')
|
||||
->fetchAll('id');
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ $lang->testtask->priList[4] = '4';
|
||||
|
||||
$lang->testtask->unlinkedCases = '未关联';
|
||||
$lang->testtask->linkByBuild = '复制版本';
|
||||
$lang->testtask->linkByStory = '按需求关联';
|
||||
$lang->testtask->linkByStory = "按{$lang->storyCommon}关联";
|
||||
$lang->testtask->linkByBug = '按Bug关联';
|
||||
$lang->testtask->linkBySuite = '按套件关联';
|
||||
$lang->testtask->passAll = '全部通过';
|
||||
@@ -108,7 +108,7 @@ $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->confirmDelete = '您确认要删除该测试单吗?';
|
||||
$lang->testtask->confirmUnlinkCase = '您确认要移除该用例吗?';
|
||||
$lang->testtask->noticeNoOther = '该产品还没有其他测试版本';
|
||||
$lang->testtask->noTesttask = '暂时没有测试版本。';
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
<table class='table table-bordered' style='word-break:break-all' id='steps'>
|
||||
<thead>
|
||||
<tr>
|
||||
<td colspan='5' style='word-break: break-all;'><strong><?php echo $lang->testcase->precondition;?></strong> <?php echo $run->case->precondition;?></td>
|
||||
<td colspan='5' style='word-break: break-all;'><strong><?php echo $lang->testcase->precondition;?></strong><br/><?php echo nl2br($run->case->precondition);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='w-50px'><?php echo $lang->testcase->stepID;?></th>
|
||||
|
||||
@@ -33,7 +33,7 @@ $lang->todo->legendBasic = "基本信息";
|
||||
$lang->todo->cycle = "周期";
|
||||
$lang->todo->cycleConfig = "周期设置";
|
||||
|
||||
$lang->todo->reasonList['story'] = "转需求";
|
||||
$lang->todo->reasonList['story'] = "转{$lang->storyCommon}";
|
||||
$lang->todo->reasonList['task'] = "转任务";
|
||||
$lang->todo->reasonList['bug'] = "转Bug";
|
||||
$lang->todo->reasonList['done'] = "完成";
|
||||
@@ -89,7 +89,7 @@ $lang->todo->typeList['custom'] = '自定义';
|
||||
$lang->todo->typeList['cycle'] = '周期';
|
||||
$lang->todo->typeList['bug'] = 'Bug';
|
||||
$lang->todo->typeList['task'] = $lang->projectCommon . '任务';
|
||||
$lang->todo->typeList['story'] = $lang->projectCommon . '需求';
|
||||
$lang->todo->typeList['story'] = $lang->projectCommon . '{$lang->storyCommon}';
|
||||
|
||||
global $config;
|
||||
if($config->global->flow == 'onlyTest' or $config->global->flow == 'onlyStory') unset($lang->todo->typeList['task']);
|
||||
|
||||
@@ -38,7 +38,7 @@ $lang->tree->sort = "排序";
|
||||
$lang->tree->addChild = "增加子模块";
|
||||
$lang->tree->confirmDelete = '该模块及其子模块都会被删除,您确定删除吗?';
|
||||
$lang->tree->confirmDeleteLine = "您确定删除该{$lang->productCommon}线吗?";
|
||||
$lang->tree->confirmRoot = "模块的所属{$lang->productCommon}修改,会关联修改该模块下的需求、Bug、用例的所属{$lang->productCommon},以及{$lang->projectCommon}和{$lang->productCommon}的关联关系。该操作比较危险,请谨慎操作。是否确认修改?";
|
||||
$lang->tree->confirmRoot = "模块的所属{$lang->productCommon}修改,会关联修改该模块下的{$lang->storyCommon}、Bug、用例的所属{$lang->productCommon},以及{$lang->projectCommon}和{$lang->productCommon}的关联关系。该操作比较危险,请谨慎操作。是否确认修改?";
|
||||
$lang->tree->confirmRoot4Doc = "修改所属文档库,会同时修改该分类下文档的关联关系。该操作比较危险,请谨慎操作。是否确认修改?";
|
||||
$lang->tree->successSave = '成功保存';
|
||||
$lang->tree->successFixed = '成功修正数据!';
|
||||
|
||||
@@ -42,9 +42,9 @@ $lang->tutorial->tasks['createProduct'] = array('title' => '创建' . $l
|
||||
$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['createStory'] = array('title' => '创建需求');
|
||||
$lang->tutorial->tasks['createStory']['nav'] = array('module' => 'story', 'method' => 'create', 'menuModule' => 'product', 'menu' => 'story', 'target' => '.create-story-btn', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => '提需求');
|
||||
$lang->tutorial->tasks['createStory']['desc'] = "<p>在系统创建一个新的需求:</p><ul><li data-target='nav'>打开 <span class='task-nav'>{$lang->productCommon} <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['createStory'] = array('title' => "创建{$lang->storyCommon}");
|
||||
$lang->tutorial->tasks['createStory']['nav'] = array('module' => 'story', 'method' => 'create', 'menuModule' => 'product', 'menu' => 'story', 'target' => '.create-story-btn', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => "提{$lang->storyCommon}");
|
||||
$lang->tutorial->tasks['createStory']['desc'] = "<p>在系统创建一个新的{$lang->storyCommon}:</p><ul><li data-target='nav'>打开 <span class='task-nav'>{$lang->productCommon} <i class='icon icon-angle-right'></i> {$lang->storyCommon} <i class='icon icon-angle-right'></i> 添加{$lang->storyCommon}</span> 页面;</li><li data-target='form'>在表单中填写要创建的{$lang->storyCommon}信息;</li><li data-target='submit'>保存{$lang->storyCommon}信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createProject'] = array('title' => '创建' . $lang->projectCommon);
|
||||
$lang->tutorial->tasks['createProject']['nav'] = array('module' => 'project', 'method' => 'create', 'menu' => '#pageNav', 'form' => '#dataform', 'submit' => '#submit', 'target' => '.create-project-btn', 'targetPageName' => '添加' . $lang->projectCommon);
|
||||
@@ -54,13 +54,13 @@ $lang->tutorial->tasks['manageTeam'] = array('title' => '管理团队');
|
||||
$lang->tutorial->tasks['manageTeam']['nav'] = array('module' => 'project', 'method' => 'managemembers', 'menu' => 'team', 'target' => '.manage-team-btn', 'form' => '#teamForm', 'requiredFields' => 'account1', '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> 团队管理</span> 页面;</li><li data-target='form'>选择要加入团队的成员;</li><li data-target='submit'>保存团队成员信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['linkStory'] = array('title' => '关联需求');
|
||||
$lang->tutorial->tasks['linkStory']['nav'] = array('module' => 'project', 'method' => 'linkStory', 'menu' => 'story', 'target' => '.link-story-btn', 'form' => '#linkStoryForm', 'formType' => 'table', 'submit' => '#submit', 'targetPageName' => '关联需求');
|
||||
$lang->tutorial->tasks['linkStory']['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> 关联需求</span> 页面;</li><li data-target='form'>在需求列表中勾选要关联的需求;</li><li data-target='submit'>保存关联的需求信息。</li></ul>";
|
||||
$lang->tutorial->tasks['linkStory'] = array('title' => '关联{$lang->storyCommon}');
|
||||
$lang->tutorial->tasks['linkStory']['nav'] = array('module' => 'project', 'method' => 'linkStory', 'menu' => 'story', 'target' => '.link-story-btn', 'form' => '#linkStoryForm', 'formType' => 'table', 'submit' => '#submit', 'targetPageName' => '关联{$lang->storyCommon}');
|
||||
$lang->tutorial->tasks['linkStory']['desc'] = "<p>将{$lang->storyCommon}关联到{$lang->projectCommon}:</p><ul><li data-target='nav'>打开 <span class='task-nav'> {$lang->projectCommon} <i class='icon icon-angle-right'></i> {$lang->storyCommon} <i class='icon icon-angle-right'></i> 关联{$lang->storyCommon}</span> 页面;</li><li data-target='form'>在{$lang->storyCommon}列表中勾选要关联的{$lang->storyCommon};</li><li data-target='submit'>保存关联的{$lang->storyCommon}信息。</li></ul>";
|
||||
|
||||
$lang->tutorial->tasks['createTask'] = array('title' => '分解任务');
|
||||
$lang->tutorial->tasks['createTask']['nav'] = array('module' => 'task', 'method' => 'create', 'menuModule' => 'project', 'menu' => 'story', 'target' => '.btn-task-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => '建任务');
|
||||
$lang->tutorial->tasks['createTask']['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> 分解任务</span> 页面;</li><li data-target='form'>在表单中填写任务信息;</li><li data-target='submit'>保存任务信息。</li></ul>";
|
||||
$lang->tutorial->tasks['createTask']['desc'] = "<p>将{$lang->projectCommon}{$lang->storyCommon}分解为任务:</p><ul><li data-target='nav'>打开 <span class='task-nav'> {$lang->projectCommon} <i class='icon icon-angle-right'></i> {$lang->storyCommon} <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('module' => 'bug', 'method' => 'create', 'menuModule' => 'qa', 'menu' => 'bug', 'target' => '.btn-bug-create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => '提Bug');
|
||||
|
||||
@@ -93,7 +93,7 @@ $lang->user->testTask = '测试单';
|
||||
$lang->user->testCase = '测试用例';
|
||||
$lang->user->schedule = '日程';
|
||||
$lang->user->todo = '待办';
|
||||
$lang->user->story = '需求';
|
||||
$lang->user->story = $lang->storyCommon;
|
||||
$lang->user->dynamic = '动态';
|
||||
|
||||
$lang->user->openedBy = '由%s创建';
|
||||
@@ -141,7 +141,7 @@ $lang->user->statusList['active'] = '正常';
|
||||
$lang->user->statusList['delete'] = '删除';
|
||||
|
||||
$lang->user->personalData['createdTodo'] = '创建的待办数';
|
||||
$lang->user->personalData['createdStory'] = '创建的需求数';
|
||||
$lang->user->personalData['createdStory'] = "创建的{$lang->storyCommon}数";
|
||||
$lang->user->personalData['finishedTask'] = '完成的任务数';
|
||||
$lang->user->personalData['resolvedBug'] = '解决的Bug数';
|
||||
$lang->user->personalData['createdCase'] = '创建的用例数';
|
||||
|
||||
Reference in New Issue
Block a user