Merge branch 'master' of https://gitlab.zcorp.cc/easycorp/zentaopms into zentaopms_65

This commit is contained in:
zhaoke
2023-03-09 14:53:55 +08:00
463 changed files with 8617 additions and 2865 deletions
+2 -1
View File
@@ -227,7 +227,7 @@ $config->openMethods[] = 'doc.createbasicinfo';
$config->openMethods[] = 'project.createguide';
$config->openMethods[] = 'task.editteam';
$config->openMethods[] = 'feedback.mergeproductmodule';
$config->openMethods[] = 'zanode.nodeList';
$config->openMethods[] = 'zanode.nodelist';
$config->openMethods[] = 'action.restoreStages';
$config->openModules = array();
@@ -424,6 +424,7 @@ $config->programPriv->waterfall = array_merge($config->programPriv->scrum, a
$config->programPriv->agileplus = $config->programPriv->scrum;
$config->programPriv->waterfallplus = $config->programPriv->waterfall;
$config->safeFileTimeout = 3600;
$config->waterfallModules = array('workestimation', 'durationestimation', 'budget', 'programplan', 'review', 'reviewissue', 'weekly', 'cm', 'milestone', 'design', 'opportunity', 'auditplan', 'trainplan', 'gapanalysis', 'pssp', 'researchplan', 'researchreport');
$config->showMainMenu = true;
+3 -1
View File
@@ -1,6 +1,6 @@
DELETE FROM `zt_config` WHERE module = 'datatable' AND section = 'executionAll';
update `zt_task` set `assignedTo` = '' where `mode` = 'multi' and `status` != 'done' and `status` != 'closed';
UPDATE `zt_task` SET `assignedTo` = '' WHERE `mode` = 'multi' AND `status` != 'done' AND `status` != 'closed';
REPLACE INTO `zt_lang` (`lang`, `module`, `section`, `key`, `value`, `system`, `vision`) SELECT `lang`, `module`, 'scrumClassify', `key`, `value`, `system`, `vision` FROM `zt_lang` WHERE `module` = 'process' and `section` = 'classify' and `system` = '1' ORDER BY id ASC;
REPLACE INTO `zt_lang` (`lang`, `module`, `section`, `key`, `value`, `system`, `vision`) SELECT `lang`, `module`, 'agileplusClassify', `key`, `value`, `system`, `vision` FROM `zt_lang` WHERE `module` = 'process' and `section` = 'classify' and `system` = '1' ORDER BY id ASC;
@@ -65,3 +65,5 @@ REPLACE INTO `zt_process` (`model`, `name`, `type`, `abbr`, `desc`, `assignedTo`
UPDATE `zt_chart` SET `sql` = 'SELECT tt.join as `year`, count(1) as number, tt.name from (\r\nselect \r\nt2.name, YEAR(t1.join) as `join`\r\nfrom zt_team t1 \r\nRIGHT JOIN zt_project t2 on t2.id = t1.root\r\nRIGHT JOIN zt_user t3 on t3.account = t1.account\r\nWHERE t1.type = \'project\'\r\nAND t2.deleted = \'0\'\r\n) tt\r\nGROUP BY tt.`name`, tt.join\r\nORDER BY tt.join, number desc, tt.name' WHERE `id` = '1097';
UPDATE `zt_chart` SET `sql` = 'SELECT tt.join as `year`, count(1) as number, tt.setName from (\r\nselect \r\nYEAR(t1.join) as `join`, t4.name as setName \r\nfrom zt_team t1 \r\nRIGHT JOIN zt_project t2 on t2.id = t1.root\r\nLEFT JOIN zt_project t4 on FIND_IN_SET(t4.id,t2.path) and t4.grade = 1\r\nRIGHT JOIN zt_user t3 on t3.account = t1.account\r\nWHERE t1.type = \'project\'\r\nAND t2.deleted = \'0\'\r\nAND t3.deleted = \'0\'\r\n) tt\r\nGROUP BY tt.setName, tt.join\r\nORDER BY tt.join, number desc, tt.setName' WHERE `id` = '1086';
INSERT IGNORE INTO `zt_config` (`vision`, `owner`, `module`, `key`, `value`) VALUES ('', 'system', 'common', 'setCode', '1');
+3
View File
@@ -0,0 +1,3 @@
ALTER TABLE `zt_lang` MODIFY COLUMN `section` varchar(50) NOT NULL;
DELETE FROM `zt_grouppriv` WHERE `module` = 'dev' AND `method` = 'editor';
REPLACE INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system','common','','setPercent','1');
+1 -1
View File
@@ -1024,7 +1024,7 @@ CREATE TABLE IF NOT EXISTS `zt_lang` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`lang` varchar(30) NOT NULL,
`module` varchar(30) NOT NULL,
`section` varchar(30) NOT NULL,
`section` varchar(50) NOT NULL,
`key` varchar(60) NOT NULL,
`value` text NOT NULL,
`system` enum('0','1') NOT NULL default '1',
+3 -3
View File
@@ -11,13 +11,13 @@ Z PUBLIC LICENSE(ZPL) 1.2
Authorization
Z PUBLIC LICENSE, also known as ZPL Agreement, is drafted by EasyCorp(www.easycorp.ltd).
Z PUBLIC LICENSE, also known as ZPL Agreement, is drafted by ZenTao Software(www.easycorp.ltd).
Anyone can use the agreement to publish open source software, and modify the blank in the following text of the agreement accordingly.
No other text of the agreement shall be changed. EasyCorp has the final interpretation of the terms in the agreement.
No other text of the agreement shall be changed. ZenTao Software has the final interpretation of the terms in the agreement.
Preface
ZenTao ALM (Hereinafter referred to as "the software") developed by EasyCorp (www.easycorp.ltd) (hereinafter referred to I). I'm entitled to all copyright of the software.
ZenTao ALM (Hereinafter referred to as "the software") developed by ZenTao Software (www.easycorp.ltd) (hereinafter referred to I). I'm entitled to all copyright of the software.
The software is released as open source software. You are authorized to use the software as long as you are in compliance with this agreement.
By installation of the software, you agree that a contractual relationship between you and me is automatically established.
You are obliged to fully comply with all the terms of this agreement unless you choose to stop using the software or you have signed additional agreement with me.
+3 -3
View File
@@ -2,13 +2,13 @@ Z PUBLIC LICENSE 1.2
Authorization
Z PUBLIC LICENSE, also known as ZPL Agreement, is drafted by EasyCorp(www.easycorp.ltd).
Z PUBLIC LICENSE, also known as ZPL Agreement, is drafted by ZenTao Software(www.easycorp.ltd).
Anyone can use the agreement to publish open source software, and modify the blank in the following text of the agreement accordingly.
No other text of the agreement shall be changed. EasyCorp has the final interpretation of the terms in the agreement.
No other text of the agreement shall be changed. ZenTao Software has the final interpretation of the terms in the agreement.
Preface
ZenTao LITE (Hereinafter referred to as "the software") developed by EasyCorp (www.easycorp.ltd) (hereinafter referred to I). I'm entitled to all copyright of the software.
ZenTao LITE (Hereinafter referred to as "the software") developed by ZenTao Software (www.easycorp.ltd) (hereinafter referred to I). I'm entitled to all copyright of the software.
The software is released as open source software. You are authorized to use the software as long as you are in compliance with this agreement.
By installation of the software, you agree that a contractual relationship between you and me is automatically established.
You are obliged to fully comply with all the terms of this agreement unless you choose to stop using the software or you have signed additional agreement with me.
+3 -3
View File
@@ -4,11 +4,11 @@ $lang->action->label->task = 'Task|task|view|taskID=%s';
$lang->action->label->module = 'Katalog|tree|browse|productid=%s&type=story&currentModuleID=0&branch=all';
/* Object type. */
$lang->action->objectTypes['execution'] = 'Project' . $lang->executionCommon;
$lang->action->objectTypes['execution'] = $lang->projectCommon . $lang->executionCommon;
$lang->action->search = new stdclass();
$lang->action->search->objectTypeList[''] = '';
$lang->action->search->objectTypeList['project'] = 'Project';
$lang->action->search->objectTypeList['project'] = $lang->projectCommon;
$lang->action->search->objectTypeList['execution'] = 'Kanban';
$lang->action->search->objectTypeList['story'] = "$lang->SRCommon/$lang->URCommon";
$lang->action->search->objectTypeList['task'] = 'Task';
@@ -109,4 +109,4 @@ $lang->action->desc->linkparentstory = '$date, <strong>$actor</strong> Link
$lang->action->desc->unlinkparentstory = '$date, <strong>$actor</strong> From parent story<strong>$extra</strong>CanceledLink。' . "\n";
$lang->action->desc->deletechildrenstory = '$date, <strong>$actor</strong> Deleted child story<strong>$extra</strong>。' . "\n";
$lang->action->executionNoProject = 'The execution does not belong to a project,please restore the project first';
$lang->action->executionNoProject = "The execution does not belong to a {$lang->projectCommon},please restore the {$lang->projectCommon} first";
+3 -3
View File
@@ -4,11 +4,11 @@ $lang->action->label->task = 'Task|task|view|taskID=%s';
$lang->action->label->module = 'Catalog|tree|browse|productid=%s&type=story&currentModuleID=0&branch=all';
/* Object type. */
$lang->action->objectTypes['execution'] = 'Project' . $lang->executionCommon;
$lang->action->objectTypes['execution'] = $lang->projectCommon . $lang->executionCommon;
$lang->action->search = new stdclass();
$lang->action->search->objectTypeList[''] = '';
$lang->action->search->objectTypeList['project'] = 'Project';
$lang->action->search->objectTypeList['project'] = $lang->projectCommon;
$lang->action->search->objectTypeList['execution'] = 'Kanban';
$lang->action->search->objectTypeList['story'] = "$lang->SRCommon/$lang->URCommon";
$lang->action->search->objectTypeList['task'] = 'Task';
@@ -109,4 +109,4 @@ $lang->action->desc->linkparentstory = '$date, <strong>$actor</strong> Link
$lang->action->desc->unlinkparentstory = '$date, <strong>$actor</strong> From parent story<strong>$extra</strong>CanceledLink。' . "\n";
$lang->action->desc->deletechildrenstory = '$date, <strong>$actor</strong> Deleted child story<strong>$extra</strong>。' . "\n";
$lang->action->executionNoProject = 'The execution does not belong to a project,please restore the project first';
$lang->action->executionNoProject = "The execution does not belong to a {$lang->projectCommon},please restore the {$lang->projectCommon} first";
+3 -3
View File
@@ -4,11 +4,11 @@ $lang->action->label->task = 'Task|task|view|taskID=%s';
$lang->action->label->module = 'Table des matières|tree|browse|productid=%s&type=story&currentModuleID=0&branch=all';
/* Object type. */
$lang->action->objectTypes['execution'] = 'Project' . $lang->executionCommon;
$lang->action->objectTypes['execution'] = $lang->projectCommon . $lang->executionCommon;
$lang->action->search = new stdclass();
$lang->action->search->objectTypeList[''] = '';
$lang->action->search->objectTypeList['project'] = 'Project';
$lang->action->search->objectTypeList['project'] = $lang->projectCommon;
$lang->action->search->objectTypeList['execution'] = 'Kanban';
$lang->action->search->objectTypeList['story'] = "$lang->SRCommon/$lang->URCommon";
$lang->action->search->objectTypeList['task'] = 'Task';
@@ -109,4 +109,4 @@ $lang->action->desc->linkparentstory = '$date, <strong>$actor</strong> Link
$lang->action->desc->unlinkparentstory = '$date, <strong>$actor</strong> From parent story<strong>$extra</strong>CanceledLink。' . "\n";
$lang->action->desc->deletechildrenstory = '$date, <strong>$actor</strong> Deleted child story<strong>$extra</strong>。' . "\n";
$lang->action->executionNoProject = 'The execution does not belong to a project,please restore the project first';
$lang->action->executionNoProject = "The execution does not belong to a {$lang->projectCommon},please restore the {$lang->projectCommon} first";
@@ -4,11 +4,11 @@ $lang->action->label->task = '任务|task|view|taskID=%s';
$lang->action->label->module = '目录|tree|browse|productid=%s&type=story&currentModuleID=0&branch=all';
/* Object type. */
$lang->action->objectTypes['execution'] = '项目' . $lang->executionCommon;
$lang->action->objectTypes['execution'] = $lang->projectCommon . $lang->executionCommon;
$lang->action->search = new stdclass();
$lang->action->search->objectTypeList[''] = '';
$lang->action->search->objectTypeList['project'] = '项目';
$lang->action->search->objectTypeList['project'] = $lang->projectCommon;
$lang->action->search->objectTypeList['execution'] = '看板';
$lang->action->search->objectTypeList['story'] = "目标";
$lang->action->search->objectTypeList['task'] = '任务';
@@ -109,4 +109,4 @@ $lang->action->desc->linkparentstory = '$date, 由 <strong>$actor</strong>
$lang->action->desc->unlinkparentstory = '$date, 由 <strong>$actor</strong> 从父目标<strong>$extra</strong>取消关联。' . "\n";
$lang->action->desc->deletechildrenstory = '$date, 由 <strong>$actor</strong> 删除子目标<strong>$extra</strong>。' . "\n";
$lang->action->executionNoProject = '该项目看板没有所属的项目,请先还原项目再还原项目看板';
$lang->action->executionNoProject = "该{$lang->projectCommon}看板没有所属的{$lang->projectCommon},请先还原{$lang->projectCommon}再还原{$lang->projectCommon}看板";
@@ -20,15 +20,10 @@
<ul class='nav'>
<?php
$methodName = strtolower($this->app->getMethodName());
foreach($lang->attend->featurebar as $key => $menu)
foreach($lang->attend->featureBar['personal'] as $type => $name)
{
if(is_string($menu)) $link = $menu;
if(is_array($menu)) $link = $menu['link'];
list($name, $currentModule, $currentMethod, $params) = explode('|', $link);
$class = strtolower($key) == $methodName ? "class='active'" : '';
if(isset($menu['alias'])) $class = strpos(strtolower($menu['alias']), strtolower($key)) !== false ? "class='active'" : $class;
if(common::hasPriv($currentModule, $currentMethod)) echo "<li id='$key' $class>" . html::a($this->createLink($currentModule, $currentMethod, $params), $name) . '</li>';
$class = strtolower($type) == $methodName ? "class='active'" : '';
if(common::hasPriv('attend', $type)) echo "<li id='$type' $class>" . html::a($this->createLink('attend', $type), $name) . '</li>';
}
?>
</ul>
+2 -2
View File
@@ -33,13 +33,13 @@ $lang->block->default['full']['my']['5']['params']['count'] = '15';
$lang->block->modules['kanban']['index'] = new stdclass();
$lang->block->modules['kanban']['index']->availableBlocks = new stdclass();
$lang->block->modules['kanban']['index']->availableBlocks->scrumoverview = 'Project Overview';
$lang->block->modules['kanban']['index']->availableBlocks->scrumoverview = "{$lang->projectCommon} Overview";
$lang->block->modules['kanban']['index']->availableBlocks->scrumlist = $lang->executionCommon . ' List';
$lang->block->modules['kanban']['index']->availableBlocks->sprint = $lang->executionCommon . ' Overview';
$lang->block->modules['kanban']['index']->availableBlocks->projectdynamic = 'Dynamics';
$lang->block->modules['project']->availableBlocks = new stdclass();
$lang->block->modules['project']->availableBlocks->project = 'Project List';
$lang->block->modules['project']->availableBlocks->project = "{$lang->projectCommon} List";
$lang->block->modules['execution'] = new stdclass();
$lang->block->modules['execution']->availableBlocks = new stdclass();
+2 -2
View File
@@ -33,13 +33,13 @@ $lang->block->default['full']['my']['5']['params']['count'] = '15';
$lang->block->modules['kanban']['index'] = new stdclass();
$lang->block->modules['kanban']['index']->availableBlocks = new stdclass();
$lang->block->modules['kanban']['index']->availableBlocks->scrumoverview = 'Project Overview';
$lang->block->modules['kanban']['index']->availableBlocks->scrumoverview = "{$lang->projectCommon} Overview";
$lang->block->modules['kanban']['index']->availableBlocks->scrumlist = $lang->executionCommon . ' List';
$lang->block->modules['kanban']['index']->availableBlocks->sprint = $lang->executionCommon . ' Overview';
$lang->block->modules['kanban']['index']->availableBlocks->projectdynamic = 'Dynamics';
$lang->block->modules['project']->availableBlocks = new stdclass();
$lang->block->modules['project']->availableBlocks->project = 'Project List';
$lang->block->modules['project']->availableBlocks->project = "{$lang->projectCommon} List";
$lang->block->modules['execution'] = new stdclass();
$lang->block->modules['execution']->availableBlocks = new stdclass();
+2 -2
View File
@@ -33,13 +33,13 @@ $lang->block->default['full']['my']['5']['params']['count'] = '15';
$lang->block->modules['kanban']['index'] = new stdclass();
$lang->block->modules['kanban']['index']->availableBlocks = new stdclass();
$lang->block->modules['kanban']['index']->availableBlocks->scrumoverview = 'Project Overview';
$lang->block->modules['kanban']['index']->availableBlocks->scrumoverview = "{$lang->projectCommon} Overview";
$lang->block->modules['kanban']['index']->availableBlocks->scrumlist = $lang->executionCommon . ' List';
$lang->block->modules['kanban']['index']->availableBlocks->sprint = $lang->executionCommon . ' Overview';
$lang->block->modules['kanban']['index']->availableBlocks->projectdynamic = 'Dynamics';
$lang->block->modules['project']->availableBlocks = new stdclass();
$lang->block->modules['project']->availableBlocks->project = 'Project List';
$lang->block->modules['project']->availableBlocks->project = "{$lang->projectCommon} List";
$lang->block->modules['execution'] = new stdclass();
$lang->block->modules['execution']->availableBlocks = new stdclass();
+2 -2
View File
@@ -33,13 +33,13 @@ $lang->block->default['full']['my']['5']['params']['count'] = '15';
$lang->block->modules['kanban']['index'] = new stdclass();
$lang->block->modules['kanban']['index']->availableBlocks = new stdclass();
$lang->block->modules['kanban']['index']->availableBlocks->scrumoverview = '项目概况';
$lang->block->modules['kanban']['index']->availableBlocks->scrumoverview = "{$lang->projectCommon}概况";
$lang->block->modules['kanban']['index']->availableBlocks->scrumlist = $lang->executionCommon . '列表';
$lang->block->modules['kanban']['index']->availableBlocks->sprint = $lang->executionCommon . '总览';
$lang->block->modules['kanban']['index']->availableBlocks->projectdynamic = '最新动态';
$lang->block->modules['project']->availableBlocks = new stdclass();
$lang->block->modules['project']->availableBlocks->project = '项目列表';
$lang->block->modules['project']->availableBlocks->project = "{$lang->projectCommon}列表";
$lang->block->modules['execution'] = new stdclass();
$lang->block->modules['execution']->availableBlocks = new stdclass();
+9 -6
View File
@@ -7,7 +7,7 @@ $lang->story->common = 'Story';
/* Main Navigation. */
$lang->mainNav = new stdclass();
$lang->mainNav->my = "{$lang->navIcons['my']} {$lang->my->shortCommon}|my|index|";
$lang->mainNav->project = "{$lang->navIcons['project']} {$lang->project->common}|$projectModule|$projectMethod|";
$lang->mainNav->project = "{$lang->navIcons['project']} {$lang->projectCommon}|$projectModule|$projectMethod|";
$lang->mainNav->execution = "{$lang->navIcons['execution']} Task|$executionModule|$executionMethod|";
$lang->mainNav->kanban = "{$lang->navIcons['kanban']} {$lang->kanban->common}|kanban|space|";
$lang->mainNav->doc = "{$lang->navIcons['doc']} {$lang->doc->common}|doc|index|";
@@ -30,7 +30,7 @@ if($config->edition != 'open')
/* Menu order. */
$lang->mainNav->menuOrder = array();
$lang->mainNav->menuOrder[5] = 'my';
$lang->mainNav->menuOrder[10] = 'project';
$lang->mainNav->menuOrder[10] = $lang->projectCommon;
$lang->mainNav->menuOrder[15] = 'kanban';
$lang->mainNav->menuOrder[35] = 'doc';
$lang->mainNav->menuOrder[45] = 'system';
@@ -137,27 +137,30 @@ $lang->doc->menuOrder[5] = 'dashboard';
$lang->doc->menuOrder[10] = 'recent';
$lang->doc->menuOrder[15] = 'my';
$lang->doc->menuOrder[20] = 'collect';
$lang->doc->menuOrder[25] = 'project';
$lang->doc->menuOrder[25] = $lang->projectCommon;
$lang->doc->menuOrder[30] = 'custom';
$lang->doc->menu->project['subMenu'] = new stdclass();
$lang->doc->menu->custom['subMenu'] = new stdclass();
/* Admin menu. */
$lang->admin->menu = new stdclass();
/* adjust items of search. */
$lang->searchObjects['all'] = 'All';
$lang->searchObjects['todo'] = 'Todo';
$lang->searchObjects['story'] = 'Story';
$lang->searchObjects['task'] = 'Task';
$lang->searchObjects['doc'] = 'Doc';
$lang->searchObjects['project'] = 'Project';
$lang->searchObjects['project'] = $lang->projectCommon;
$lang->searchObjects['execution'] = 'Kanban';
$lang->searchObjects['user'] = 'User';
if($config->edition != 'open') $lang->searchObjects['feedback'] = 'Feedback';
if($config->visions == ',lite,') unset($lang->searchObjects['feedback']);
$lang->navGroup->task = 'project';
$lang->navGroup->execution = 'project';
$lang->navGroup->task = $lang->projectCommon;
$lang->navGroup->execution = $lang->projectCommon;
unset($lang->searchObjects['bug']);
unset($lang->searchObjects['testcase']);
+9 -6
View File
@@ -7,7 +7,7 @@ $lang->story->common = 'Story';
/* Main Navigation. */
$lang->mainNav = new stdclass();
$lang->mainNav->my = "{$lang->navIcons['my']} {$lang->my->shortCommon}|my|index|";
$lang->mainNav->project = "{$lang->navIcons['project']} {$lang->project->common}|$projectModule|$projectMethod|";
$lang->mainNav->project = "{$lang->navIcons['project']} {$lang->projectCommon}|$projectModule|$projectMethod|";
$lang->mainNav->execution = "{$lang->navIcons['execution']} Task|$executionModule|$executionMethod|";
$lang->mainNav->kanban = "{$lang->navIcons['kanban']} {$lang->kanban->common}|kanban|space|";
$lang->mainNav->doc = "{$lang->navIcons['doc']} {$lang->doc->common}|doc|index|";
@@ -30,7 +30,7 @@ if($config->edition != 'open')
/* Menu order. */
$lang->mainNav->menuOrder = array();
$lang->mainNav->menuOrder[5] = 'my';
$lang->mainNav->menuOrder[10] = 'project';
$lang->mainNav->menuOrder[10] = $lang->projectCommon;
$lang->mainNav->menuOrder[15] = 'kanban';
$lang->mainNav->menuOrder[35] = 'doc';
$lang->mainNav->menuOrder[45] = 'system';
@@ -137,27 +137,30 @@ $lang->doc->menuOrder[5] = 'dashboard';
$lang->doc->menuOrder[10] = 'recent';
$lang->doc->menuOrder[15] = 'my';
$lang->doc->menuOrder[20] = 'collect';
$lang->doc->menuOrder[25] = 'project';
$lang->doc->menuOrder[25] = $lang->projectCommon;
$lang->doc->menuOrder[30] = 'custom';
$lang->doc->menu->project['subMenu'] = new stdclass();
$lang->doc->menu->custom['subMenu'] = new stdclass();
/* Admin menu. */
$lang->admin->menu = new stdclass();
/* adjust items of search. */
$lang->searchObjects['all'] = 'All';
$lang->searchObjects['todo'] = 'Todo';
$lang->searchObjects['story'] = 'Story';
$lang->searchObjects['task'] = 'Task';
$lang->searchObjects['doc'] = 'Doc';
$lang->searchObjects['project'] = 'Project';
$lang->searchObjects['project'] = $lang->projectCommon;
$lang->searchObjects['execution'] = 'Kanban';
$lang->searchObjects['user'] = 'User';
if($config->edition != 'open') $lang->searchObjects['feedback'] = 'Feedback';
if($config->visions == ',lite,') unset($lang->searchObjects['feedback']);
$lang->navGroup->task = 'project';
$lang->navGroup->execution = 'project';
$lang->navGroup->task = $lang->projectCommon;
$lang->navGroup->execution = $lang->projectCommon;
unset($lang->searchObjects['bug']);
unset($lang->searchObjects['testcase']);
+9 -6
View File
@@ -7,7 +7,7 @@ $lang->story->common = 'Story';
/* Main Navigation. */
$lang->mainNav = new stdclass();
$lang->mainNav->my = "{$lang->navIcons['my']} {$lang->my->shortCommon}|my|index|";
$lang->mainNav->project = "{$lang->navIcons['project']} {$lang->project->common}|$projectModule|$projectMethod|";
$lang->mainNav->project = "{$lang->navIcons['project']} {$lang->projectCommon}|$projectModule|$projectMethod|";
$lang->mainNav->execution = "{$lang->navIcons['execution']} Task|$executionModule|$executionMethod|";
$lang->mainNav->kanban = "{$lang->navIcons['kanban']} {$lang->kanban->common}|kanban|space|";
$lang->mainNav->doc = "{$lang->navIcons['doc']} {$lang->doc->common}|doc|index|";
@@ -30,7 +30,7 @@ if($config->edition != 'open')
/* Menu order. */
$lang->mainNav->menuOrder = array();
$lang->mainNav->menuOrder[5] = 'my';
$lang->mainNav->menuOrder[10] = 'project';
$lang->mainNav->menuOrder[10] = $lang->projectCommon;
$lang->mainNav->menuOrder[15] = 'kanban';
$lang->mainNav->menuOrder[35] = 'doc';
$lang->mainNav->menuOrder[45] = 'system';
@@ -137,27 +137,30 @@ $lang->doc->menuOrder[5] = 'dashboard';
$lang->doc->menuOrder[10] = 'recent';
$lang->doc->menuOrder[15] = 'my';
$lang->doc->menuOrder[20] = 'collect';
$lang->doc->menuOrder[25] = 'project';
$lang->doc->menuOrder[25] = $lang->projectCommon;
$lang->doc->menuOrder[30] = 'custom';
$lang->doc->menu->project['subMenu'] = new stdclass();
$lang->doc->menu->custom['subMenu'] = new stdclass();
/* Admin menu. */
$lang->admin->menu = new stdclass();
/* adjust items of search. */
$lang->searchObjects['all'] = 'All';
$lang->searchObjects['todo'] = 'Todo';
$lang->searchObjects['story'] = 'Story';
$lang->searchObjects['task'] = 'Task';
$lang->searchObjects['doc'] = 'Doc';
$lang->searchObjects['project'] = 'Project';
$lang->searchObjects['project'] = $lang->projectCommon;
$lang->searchObjects['execution'] = 'Kanban';
$lang->searchObjects['user'] = 'User';
if($config->edition != 'open') $lang->searchObjects['feedback'] = 'Feedback';
if($config->visions == ',lite,') unset($lang->searchObjects['feedback']);
$lang->navGroup->task = 'project';
$lang->navGroup->execution = 'project';
$lang->navGroup->task = $lang->projectCommon;
$lang->navGroup->execution = $lang->projectCommon;
unset($lang->searchObjects['bug']);
unset($lang->searchObjects['testcase']);
@@ -7,7 +7,7 @@ $lang->story->common = '目标';
/* Main Navigation. */
$lang->mainNav = new stdclass();
$lang->mainNav->my = "{$lang->navIcons['my']} {$lang->my->shortCommon}|my|index|";
$lang->mainNav->project = "{$lang->navIcons['project']} {$lang->project->common}|$projectModule|$projectMethod|";
$lang->mainNav->project = "{$lang->navIcons['project']} {$lang->projectCommon}|$projectModule|$projectMethod|";
$lang->mainNav->execution = "{$lang->navIcons['execution']} 任务|$executionModule|$executionMethod|";
$lang->mainNav->kanban = "{$lang->navIcons['kanban']} {$lang->kanban->common}|kanban|space|";
$lang->mainNav->doc = "{$lang->navIcons['doc']} {$lang->doc->common}|doc|index|";
@@ -143,13 +143,16 @@ $lang->doc->menuOrder[30] = 'custom';
$lang->doc->menu->project['subMenu'] = new stdclass();
$lang->doc->menu->custom['subMenu'] = new stdclass();
/* Admin menu. */
$lang->admin->menu = new stdclass();
/* adjust items of search. */
$lang->searchObjects['all'] = '全部';
$lang->searchObjects['todo'] = '待办';
$lang->searchObjects['story'] = '目标';
$lang->searchObjects['task'] = '任务';
$lang->searchObjects['doc'] = '文档';
$lang->searchObjects['project'] = '项目';
$lang->searchObjects['project'] = $lang->projectCommon;
$lang->searchObjects['execution'] = '看板';
$lang->searchObjects['user'] = '用户';
+1 -1
View File
@@ -1,3 +1,3 @@
<?php
$lang->company->execution = 'Kanban';
$lang->company->product = 'Project';
$lang->company->product = $lang->projectCommon;
+1 -1
View File
@@ -1,3 +1,3 @@
<?php
$lang->company->execution = 'Kanban';
$lang->company->product = 'Project';
$lang->company->product = $lang->projectCommon;
+1 -1
View File
@@ -1,3 +1,3 @@
<?php
$lang->company->execution = 'Kanban';
$lang->company->product = 'Project';
$lang->company->product = $lang->projectCommon;
@@ -1,3 +1,3 @@
<?php
$lang->company->execution = '看板';
$lang->company->product = '项目';
$lang->company->product = $lang->projectCommon;
+4 -4
View File
@@ -16,9 +16,9 @@ $lang->dev->tableList['grouppriv'] = 'Group Privilege';
$lang->dev->tableList['history'] = 'History';
$lang->dev->tableList['lang'] = 'Language';
$lang->dev->tableList['module'] = 'Module';
$lang->dev->tableList['project'] = 'Project';
$lang->dev->tableList['projectproduct'] = 'Project' . $lang->productCommon;
$lang->dev->tableList['projectstory'] = 'Project' . $lang->SRCommon;
$lang->dev->tableList['project'] = $lang->projectCommon;
$lang->dev->tableList['projectproduct'] = $lang->projectCommon . $lang->productCommon;
$lang->dev->tableList['projectstory'] = $lang->projectCommon . $lang->SRCommon;
$lang->dev->tableList['execution'] = $lang->executionCommon;
$lang->dev->tableList['story'] = $lang->SRCommon;
$lang->dev->tableList['storyspec'] = "{$lang->SRCommon} Description";
@@ -73,7 +73,7 @@ $lang->dev->tableList['im_userdevice'] = 'Im User Device';
$lang->dev->groupList = array();
$lang->dev->groupList['my'] = 'My';
$lang->dev->groupList['project'] = 'Project';
$lang->dev->groupList['project'] = $lang->projectCommon;
$lang->dev->groupList['execution'] = $lang->executionCommon;
$lang->dev->groupList['doc'] = 'Document';
$lang->dev->groupList['company'] = 'Company';
+4 -4
View File
@@ -16,9 +16,9 @@ $lang->dev->tableList['grouppriv'] = 'Group Privilege';
$lang->dev->tableList['history'] = 'History';
$lang->dev->tableList['lang'] = 'Language';
$lang->dev->tableList['module'] = 'Module';
$lang->dev->tableList['project'] = 'Project';
$lang->dev->tableList['projectproduct'] = 'Project' . $lang->productCommon;
$lang->dev->tableList['projectstory'] = 'Project' . $lang->SRCommon;
$lang->dev->tableList['project'] = $lang->projectCommon;
$lang->dev->tableList['projectproduct'] = $lang->projectCommon . $lang->productCommon;
$lang->dev->tableList['projectstory'] = $lang->projectCommon . $lang->SRCommon;
$lang->dev->tableList['execution'] = $lang->executionCommon;
$lang->dev->tableList['story'] = $lang->SRCommon;
$lang->dev->tableList['storyspec'] = "{$lang->SRCommon} Description";
@@ -73,7 +73,7 @@ $lang->dev->tableList['im_userdevice'] = 'Im User Device';
$lang->dev->groupList = array();
$lang->dev->groupList['my'] = 'My';
$lang->dev->groupList['project'] = 'Project';
$lang->dev->groupList['project'] = $lang->projectCommon;
$lang->dev->groupList['execution'] = $lang->executionCommon;
$lang->dev->groupList['doc'] = 'Document';
$lang->dev->groupList['company'] = 'Company';
+4 -4
View File
@@ -16,9 +16,9 @@ $lang->dev->tableList['grouppriv'] = 'Group Privilege';
$lang->dev->tableList['history'] = 'History';
$lang->dev->tableList['lang'] = 'Language';
$lang->dev->tableList['module'] = 'Module';
$lang->dev->tableList['project'] = 'Project';
$lang->dev->tableList['projectproduct'] = 'Project' . $lang->productCommon;
$lang->dev->tableList['projectstory'] = 'Project' . $lang->SRCommon;
$lang->dev->tableList['project'] = $lang->projectCommon;
$lang->dev->tableList['projectproduct'] = $lang->projectCommon . $lang->productCommon;
$lang->dev->tableList['projectstory'] = $lang->projectCommon . $lang->SRCommon;
$lang->dev->tableList['execution'] = $lang->executionCommon;
$lang->dev->tableList['story'] = $lang->SRCommon;
$lang->dev->tableList['storyspec'] = "{$lang->SRCommon} Description";
@@ -73,7 +73,7 @@ $lang->dev->tableList['im_userdevice'] = 'Im User Device';
$lang->dev->groupList = array();
$lang->dev->groupList['my'] = 'My';
$lang->dev->groupList['project'] = 'Project';
$lang->dev->groupList['project'] = $lang->projectCommon;
$lang->dev->groupList['execution'] = $lang->executionCommon;
$lang->dev->groupList['doc'] = 'Document';
$lang->dev->groupList['company'] = 'Company';
+4 -4
View File
@@ -16,9 +16,9 @@ $lang->dev->tableList['grouppriv'] = '组权限';
$lang->dev->tableList['history'] = '操作历史';
$lang->dev->tableList['lang'] = '语言定义';
$lang->dev->tableList['module'] = '模块';
$lang->dev->tableList['project'] = '项目';
$lang->dev->tableList['projectproduct'] = '项目' . $lang->productCommon;
$lang->dev->tableList['projectstory'] = '项目' . $lang->SRCommon;
$lang->dev->tableList['project'] = $lang->projectCommon;
$lang->dev->tableList['projectproduct'] = $lang->projectCommon . $lang->productCommon;
$lang->dev->tableList['projectstory'] = $lang->projectCommon . $lang->SRCommon;
$lang->dev->tableList['execution'] = $lang->executionCommon;
$lang->dev->tableList['story'] = $lang->SRCommon;
$lang->dev->tableList['storyspec'] = "{$lang->SRCommon}描述";
@@ -73,7 +73,7 @@ $lang->dev->tableList['im_userdevice'] = 'im用户设备';
$lang->dev->groupList = array();
$lang->dev->groupList['my'] = '我的地盘';
$lang->dev->groupList['project'] = '项目';
$lang->dev->groupList['project'] = $lang->projectCommon;
$lang->dev->groupList['execution'] = $lang->executionCommon;
$lang->dev->groupList['doc'] = '文档';
$lang->dev->groupList['company'] = '组织';
+1 -1
View File
@@ -1,4 +1,4 @@
<?php
$lang->doc->libTypeList = array();
$lang->doc->libTypeList['project'] = 'Project Library';
$lang->doc->libTypeList['project'] = "{$lang->projectCommon} Library";
$lang->doc->libTypeList['custom'] = 'Custom Library';
+1 -1
View File
@@ -1,4 +1,4 @@
<?php
$lang->doc->libTypeList = array();
$lang->doc->libTypeList['project'] = 'Project Library';
$lang->doc->libTypeList['project'] = "{$lang->projectCommon} Library";
$lang->doc->libTypeList['custom'] = 'Custom Library';
+1 -1
View File
@@ -1,4 +1,4 @@
<?php
$lang->doc->libTypeList = array();
$lang->doc->libTypeList['project'] = 'Project Library';
$lang->doc->libTypeList['project'] = "{$lang->projectCommon} Library";
$lang->doc->libTypeList['custom'] = 'Custom Library';
+1 -1
View File
@@ -1,4 +1,4 @@
<?php
$lang->doc->libTypeList = array();
$lang->doc->libTypeList['project'] = '项目文档库';
$lang->doc->libTypeList['project'] = "{$lang->projectCommon}文档库";
$lang->doc->libTypeList['custom'] = '自定义文档库';
@@ -22,6 +22,6 @@ $lang->execution->icons['gantt'] = 'lane';
$lang->execution->icons['tree'] = 'treemap';
$lang->execution->icons['grouptask'] = 'sitemap';
$lang->execution->aclList['private'] = "Private (Accessible to team members and project leaders)";
$lang->execution->aclList['private'] = "Private (Accessible to team members and {$lang->projectCommon} leaders)";
$lang->execution->common = 'Project Execution';
$lang->execution->common = "{$lang->projectCommon} Execution";
@@ -22,6 +22,6 @@ $lang->execution->icons['gantt'] = 'lane';
$lang->execution->icons['tree'] = 'treemap';
$lang->execution->icons['grouptask'] = 'sitemap';
$lang->execution->aclList['private'] = "Private (Accessible to team members and project leaders)";
$lang->execution->aclList['private'] = "Private (Accessible to team members and {$lang->projectCommon} leaders)";
$lang->execution->common = 'Project Execution';
$lang->execution->common = "{$lang->projectCommon} Execution";
@@ -22,6 +22,6 @@ $lang->execution->icons['gantt'] = 'lane';
$lang->execution->icons['tree'] = 'treemap';
$lang->execution->icons['grouptask'] = 'sitemap';
$lang->execution->aclList['private'] = "Private (Accessible to team members and project leaders)";
$lang->execution->aclList['private'] = "Private (Accessible to team members and {$lang->projectCommon} leaders)";
$lang->execution->common = 'Project Execution';
$lang->execution->common = "{$lang->projectCommon} Execution";
@@ -22,6 +22,6 @@ $lang->execution->icons['gantt'] = 'lane';
$lang->execution->icons['tree'] = 'treemap';
$lang->execution->icons['grouptask'] = 'sitemap';
$lang->execution->aclList['private'] = "私有(团队成员和项目负责人可访问)";
$lang->execution->aclList['private'] = "私有(团队成员和{$lang->projectCommon}负责人可访问)";
$lang->execution->common = '项目看板';
$lang->execution->common = "{$lang->projectCommon}看板";
+3 -3
View File
@@ -11,11 +11,11 @@ enterprises. It enables every department and every employee in the company to ma
EOT;
$lang->install->links = <<<EOT
ZenTao Lite is developed by <strong><a href='https://en.easysoft.ltd' target='_blank' class='text-danger'>EasyCorp</a></strong>.
ZenTao Lite is developed by <strong><a href='https://en.easysoft.ltd' target='_blank' class='text-danger'>ZenTao Software</a></strong>.
Official Website: <a href='https://www.zentao.pm' target='_blank'>https://www.zentao.pm</a>
Technical Support: <a href='https://www.zentao.pm/forum/' target='_blank'>https://www.zentao.pm/forum/</a>
LinkedIn: <a href='https://www.linkedin.com/company/1156596/' target='_blank'>EasyCorp</a>
Facebook: <a href='https://www.facebook.com/natureeasysoft' target='_blank'>EasyCorp</a>
LinkedIn: <a href='https://www.linkedin.com/company/1156596/' target='_blank'>ZenTao Software</a>
Facebook: <a href='https://www.facebook.com/natureeasysoft' target='_blank'>ZenTao Software</a>
Twitter: <a href='https://twitter.com/ZentaoA' target='_blank'>ZenTao Lite</a>
+3 -3
View File
@@ -11,11 +11,11 @@ enterprises. It enables every department and every employee in the company to ma
EOT;
$lang->install->links = <<<EOT
ZenTao Lite is developed by <strong><a href='https://en.easysoft.ltd' target='_blank' class='text-danger'>EasyCorp</a></strong>.
ZenTao Lite is developed by <strong><a href='https://en.easysoft.ltd' target='_blank' class='text-danger'>ZenTao Software</a></strong>.
Official Website: <a href='https://www.zentao.pm' target='_blank'>https://www.zentao.pm</a>
Technical Support: <a href='https://www.zentao.pm/forum/' target='_blank'>https://www.zentao.pm/forum/</a>
LinkedIn: <a href='https://www.linkedin.com/company/1156596/' target='_blank'>EasyCorp</a>
Facebook: <a href='https://www.facebook.com/natureeasysoft' target='_blank'>EasyCorp</a>
LinkedIn: <a href='https://www.linkedin.com/company/1156596/' target='_blank'>ZenTao Software</a>
Facebook: <a href='https://www.facebook.com/natureeasysoft' target='_blank'>ZenTao Software</a>
Twitter: <a href='https://twitter.com/ZentaoA' target='_blank'>ZenTao Lite</a>
+3 -3
View File
@@ -11,11 +11,11 @@ enterprises. It enables every department and every employee in the company to ma
EOT;
$lang->install->links = <<<EOT
ZenTao Lite is developed by <strong><a href='https://en.easysoft.ltd' target='_blank' class='text-danger'>EasyCorp</a></strong>.
ZenTao Lite is developed by <strong><a href='https://en.easysoft.ltd' target='_blank' class='text-danger'>ZenTao Software</a></strong>.
Official Website: <a href='https://www.zentao.pm' target='_blank'>https://www.zentao.pm</a>
Technical Support: <a href='https://www.zentao.pm/forum/' target='_blank'>https://www.zentao.pm/forum/</a>
LinkedIn: <a href='https://www.linkedin.com/company/1156596/' target='_blank'>EasyCorp</a>
Facebook: <a href='https://www.facebook.com/natureeasysoft' target='_blank'>EasyCorp</a>
LinkedIn: <a href='https://www.linkedin.com/company/1156596/' target='_blank'>ZenTao Software</a>
Facebook: <a href='https://www.facebook.com/natureeasysoft' target='_blank'>ZenTao Software</a>
Twitter: <a href='https://twitter.com/ZentaoA' target='_blank'>ZenTao Lite</a>
+7
View File
@@ -0,0 +1,7 @@
<?php
$lang->my->featureBar['contribute']['task'] = array();
$lang->my->featureBar['contribute']['task']['assignedTo'] = 'AssignedToMe';
$lang->my->featureBar['contribute']['task']['openedBy'] = 'CreatedByMe';
$lang->my->featureBar['contribute']['task']['finishedBy'] = 'FinishedByMe';
$lang->my->featureBar['contribute']['task']['closedBy'] = 'ClosedByMe';
$lang->my->featureBar['contribute']['task']['canceledBy'] = 'CancelledByMe';
+7
View File
@@ -0,0 +1,7 @@
<?php
$lang->my->featureBar['contribute']['task'] = array();
$lang->my->featureBar['contribute']['task']['assignedTo'] = 'AssignedToMe';
$lang->my->featureBar['contribute']['task']['openedBy'] = 'CreatedByMe';
$lang->my->featureBar['contribute']['task']['finishedBy'] = 'FinishedByMe';
$lang->my->featureBar['contribute']['task']['closedBy'] = 'ClosedByMe';
$lang->my->featureBar['contribute']['task']['canceledBy'] = 'CancelledByMe';
+7
View File
@@ -0,0 +1,7 @@
<?php
$lang->my->featureBar['contribute']['task'] = array();
$lang->my->featureBar['contribute']['task']['assignedTo'] = 'AssignedToMe';
$lang->my->featureBar['contribute']['task']['openedBy'] = 'CreatedByMe';
$lang->my->featureBar['contribute']['task']['finishedBy'] = 'FinishedByMe';
$lang->my->featureBar['contribute']['task']['closedBy'] = 'ClosedByMe';
$lang->my->featureBar['contribute']['task']['canceledBy'] = 'CancelledByMe';
@@ -0,0 +1,7 @@
<?php
$lang->my->featureBar['contribute']['task'] = array();
$lang->my->featureBar['contribute']['task']['assignedTo'] = '指派给我';
$lang->my->featureBar['contribute']['task']['openedBy'] = '由我创建';
$lang->my->featureBar['contribute']['task']['finishedBy'] = '由我完成';
$lang->my->featureBar['contribute']['task']['closedBy'] = '由我关闭';
$lang->my->featureBar['contribute']['task']['canceledBy'] = '由我取消';
+4 -5
View File
@@ -19,11 +19,10 @@
<?php $recTotalLabel = " <span class='label label-light label-badge'>{$pager->recTotal}</span>"; ?>
<?php if($app->rawMethod == 'contribute'):?>
<?php
echo html::a(inlink($app->rawMethod, "mode=$mode&type=assignedTo"), "<span class='text'>{$lang->my->taskMenu->assignedToMe}</span>" . ($type == 'assignedTo' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'assignedTo' ? ' btn-active-text' : '') . "'");
echo html::a(inlink($app->rawMethod, "mode=$mode&type=openedBy"), "<span class='text'>{$lang->my->taskMenu->openedByMe}</span>" . ($type == 'openedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'openedBy' ? ' btn-active-text' : '') . "'");
echo html::a(inlink($app->rawMethod, "mode=$mode&type=finishedBy"), "<span class='text'>{$lang->my->taskMenu->finishedByMe}</span>" . ($type == 'finishedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'finishedBy' ? ' btn-active-text' : '') . "'");
echo html::a(inlink($app->rawMethod, "mode=$mode&type=closedBy"), "<span class='text'>{$lang->my->taskMenu->closedByMe}</span>" . ($type == 'closedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'closedBy' ? ' btn-active-text' : '') . "'");
echo html::a(inlink($app->rawMethod, "mode=$mode&type=canceledBy"), "<span class='text'>{$lang->my->taskMenu->canceledByMe}</span>" . ($type == 'canceledBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'canceledBy' ? ' btn-active-text' : '') . "'");
foreach($lang->my->featureBar[$app->rawMethod]['task'] as $key => $name)
{
echo html::a(inlink($app->rawMethod, "mode=$mode&type=$key"), "<span class='text'>{$name}</span>" . ($type == $key ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == $key ? ' btn-active-text' : '') . "'");
}
?>
<?php endif;?>
</div>
+1 -1
View File
@@ -4,4 +4,4 @@ $lang->project->doingExecutions = 'Doing Kanban';
$lang->project->select = "Select {$lang->project->common}";
$lang->project->noProject = "No {$lang->project->common} yet. ";
$lang->project->aclList['private'] = "Private (Accessible to project leaders and team members)";
$lang->project->aclList['private'] = "Private (Accessible to {$lang->projectCommon} leaders and team members)";
+1 -1
View File
@@ -4,4 +4,4 @@ $lang->project->doingExecutions = 'Doing Kanban';
$lang->project->select = "Select {$lang->project->common}";
$lang->project->noProject = "No {$lang->project->common} yet. ";
$lang->project->aclList['private'] = "Private (Accessible to project leaders and team members)";
$lang->project->aclList['private'] = "Private (Accessible to {$lang->projectCommon} leaders and team members)";
+1 -1
View File
@@ -4,4 +4,4 @@ $lang->project->doingExecutions = 'Doing Kanban';
$lang->project->select = "Select {$lang->project->common}";
$lang->project->noProject = "No {$lang->project->common} yet. ";
$lang->project->aclList['private'] = "Private (Accessible to project leaders and team members)";
$lang->project->aclList['private'] = "Private (Accessible to {$lang->projectCommon} leaders and team members)";
@@ -4,4 +4,4 @@ $lang->project->doingExecutions = '进行中的看板(最近1个)';
$lang->project->select = "请选择{$lang->project->common}";
$lang->project->noProject = "暂时没有{$lang->project->common}。";
$lang->project->aclList['private'] = "私有 (只有项目负责人、团队成员可访问)";
$lang->project->aclList['private'] = "私有 (只有{$lang->projectCommon}负责人、团队成员可访问)";
@@ -14,7 +14,7 @@
<div class='clearfix' id='mainMenu'>
<div class='btn-toolbar pull-left'>
<?php
foreach($lang->project->featureBar['browse'] as $label => $labelName)
foreach($lang->project->featureBar['execution'] as $label => $labelName)
{
$active = $status == $label ? 'btn-active-text' : '';
echo html::a($this->createLink('project', 'execution', "status=$label&projectID=$projectID"), '<span class="text">' . $labelName . '</span> ' . ($status == $label ? "<span class='label label-light label-badge'>" . (int)count($kanbanList) . '</span>' : ''), '', "class='btn btn-link $active'");
@@ -36,7 +36,7 @@
}
unset($visibleFields['module']);
?>
<form method='post' class='load-indicator main-form' enctype='multipart/form-data' target='hiddenwin' id="batchCreateForm">
<form method='post' class='load-indicator main-form form-ajax' enctype='multipart/form-data' id="batchCreateForm">
<div class="table-responsive">
<table class="table table-form">
<thead>
+1 -1
View File
@@ -61,7 +61,7 @@ $lang->task->confirmRecord = '"Left Hour" is 0. Do you want to set the t
$lang->task->confirmTransfer = '"Left Hour" is 0,Do you want to transfer task?';
$lang->task->noTask = 'No tasks yet. ';
$lang->task->kanbanDenied = 'Please create a Kanban first';
$lang->task->createDenied = 'Create Task is denied in this project';
$lang->task->createDenied = "Create Task is denied in this {$lang->projectCommon}";
$lang->task->cannotDeleteParent = 'Cannot delete parent task';
$lang->task->addChildTask = 'Because the task has cost hours, ZenTao will create a child task with the same name to record the cost housrs to ensure data consistency.';
+1 -1
View File
@@ -61,7 +61,7 @@ $lang->task->confirmRecord = '"Left Hour" is 0. Do you want to set the t
$lang->task->confirmTransfer = '"Left Hour" is 0,Do you want to transfer task?';
$lang->task->noTask = 'No tasks yet. ';
$lang->task->kanbanDenied = 'Please create a Kanban first';
$lang->task->createDenied = 'Create Task is denied in this project';
$lang->task->createDenied = "Create Task is denied in this {$lang->projectCommon}";
$lang->task->cannotDeleteParent = 'Cannot delete parent task';
$lang->task->addChildTask = 'Because the task has cost hours, ZenTao will create a child task with the same name to record the cost housrs to ensure data consistency.';
+1 -1
View File
@@ -61,7 +61,7 @@ $lang->task->confirmRecord = '"Left Hour" is 0. Do you want to set the t
$lang->task->confirmTransfer = '"Left Hour" is 0,Do you want to transfer task?';
$lang->task->noTask = 'No tasks yet. ';
$lang->task->kanbanDenied = 'Please create a Kanban first';
$lang->task->createDenied = 'Create Task is denied in this project';
$lang->task->createDenied = "Create Task is denied in this {$lang->projectCommon}";
$lang->task->cannotDeleteParent = 'Cannot delete parent task';
$lang->task->addChildTask = 'Because the task has cost hours, ZenTao will create a child task with the same name to record the cost housrs to ensure data consistency.';
+1 -1
View File
@@ -61,7 +61,7 @@ $lang->task->confirmRecord = '"剩余"为0,任务将标记为"已完
$lang->task->confirmTransfer = '"当前剩余"为0,任务将被转交,您确定吗?';
$lang->task->noTask = '暂时没有任务。';
$lang->task->kanbanDenied = '请先创建看板';
$lang->task->createDenied = '你不能在该项目添加任务';
$lang->task->createDenied = "你不能在该{$lang->projectCommon}添加任务";
$lang->task->cannotDeleteParent = '不能删除父任务。';
$lang->task->addChildTask = '因该任务已经产生消耗,为保证数据一致性,我们会帮您创建一条同名子任务记录该消耗。';
+56 -51
View File
@@ -2506,29 +2506,9 @@ class baseRouter
if($config and (!isset($config->$moduleName) or !is_object($config->$moduleName))) $config->$moduleName = new stdclass();
/* 初始化数组。Init the variables. */
$extConfigFiles = array();
$commonExtConfigFiles = array();
$siteExtConfigFiles = array();
/* 先获得模块的主配置文件。Get the main config file for current module first. */
$mainConfigFile = $this->getModulePath($appName, $moduleName) . 'config.php';
/* 查找扩展配置文件。Get extension config files. */
if($config->framework->extensionLevel > 0) $extConfigPath = $this->getModuleExtPath($appName, $moduleName, 'config');
if($config->framework->extensionLevel >= 1)
{
if(!empty($extConfigPath['common'])) $commonExtConfigFiles = helper::ls($extConfigPath['common'], '.php');
if(!empty($extConfigPath['xuan'])) $commonExtConfigFiles = array_merge($commonExtConfigFiles, helper::ls($extConfigPath['xuan'], '.php'));
if(!empty($extConfigPath['vision'])) $commonExtConfigFiles = array_merge($commonExtConfigFiles, helper::ls($extConfigPath['vision'], '.php'));
if(!empty($extConfigPath['saas'])) $commonExtConfigFiles = array_merge($commonExtConfigFiles, helper::ls($extConfigPath['saas'], '.php'));
if(!empty($extConfigPath['custom'])) $commonExtConfigFiles = array_merge($commonExtConfigFiles, helper::ls($extConfigPath['custom'], '.php'));
}
if($config->framework->extensionLevel == 2 and !empty($extConfigPath['site'])) $siteExtConfigFiles = helper::ls($extConfigPath['site'], '.php');
$extConfigFiles = array_merge($commonExtConfigFiles, $siteExtConfigFiles);
/* 将主配置文件和扩展配置文件合并在一起。Put the main config file and extension config files together. */
$configFiles = array_merge(array($mainConfigFile), $extConfigFiles);
$configFiles = $this->getMainAndExtFiles($moduleName, $appName, 'config');
if(empty($configFiles)) return false;
/* 加载每一个配置文件。Load every config file. */
static $loadedConfigs = array();
@@ -2670,36 +2650,8 @@ class baseRouter
*/
public function loadLang($moduleName, $appName = '')
{
/* 初始化变量。Init vars. */
$modulePath = $this->getModulePath($appName, $moduleName);
$extLangFiles = array();
$langFilesToLoad = array();
/* 判断主语言文件是否存在。Whether the main lang file exists or not. */
$mainLangFile = $this->getMainLangFile($moduleName, $appName);
if($mainLangFile) $langFilesToLoad[] = $mainLangFile;
/* 获取扩展语言文件。If extensionLevel > 0, get extension lang files. */
if($this->config->framework->extensionLevel > 0)
{
$commonExtLangFiles = array();
$siteExtLangFiles = array();
$extLangPath = $this->getModuleExtPath($appName, $moduleName, 'lang');
if($this->config->framework->extensionLevel >= 1)
{
if(!empty($extLangPath['common'])) $commonExtLangFiles = helper::ls($extLangPath['common'] . $this->clientLang, '.php');
if(!empty($extLangPath['xuan'])) $commonExtLangFiles = array_merge($commonExtLangFiles, helper::ls($extLangPath['xuan'] . $this->clientLang, '.php'));
if(!empty($extLangPath['vision'])) $commonExtLangFiles = array_merge($commonExtLangFiles, helper::ls($extLangPath['vision'] . $this->clientLang, '.php'));
if(!empty($extLangPath['custom'])) $commonExtLangFiles = array_merge($commonExtLangFiles, helper::ls($extLangPath['custom'] . $this->clientLang, '.php'));
if(!empty($extLangPath['saas'])) $commonExtLangFiles = array_merge($commonExtLangFiles, helper::ls($extLangPath['saas'] . $this->clientLang, '.php'));
}
if($this->config->framework->extensionLevel == 2 and !empty($extLangPath['site'])) $siteExtLangFiles = helper::ls($extLangPath['site'] . $this->clientLang, '.php');
$extLangFiles = array_merge($commonExtLangFiles, $siteExtLangFiles);
}
/* 计算最终要加载的语言文件。 Get the lang files to be loaded. */
$langFilesToLoad = array_merge($langFilesToLoad, $extLangFiles);
$langFilesToLoad = $this->getMainAndExtFiles($moduleName, $appName, 'lang');
if(empty($langFilesToLoad)) return false;
/* 加载语言文件。Load lang files. */
@@ -2972,6 +2924,59 @@ class baseRouter
{
return strtolower(getenv('IS_CONTAINER')) == 'true';
}
/**
* Get main file and ext files.
*
* @param string $moduleName
* @param string $appName
* @param string $type lang|config|control|model
* @access public
* @return array
*/
public function getMainAndExtFiles($moduleName, $appName = '', $type = 'lang')
{
/* 初始化变量。Init vars. */
$modulePath = $this->getModulePath($appName, $moduleName);
$extFiles = array();
$filesToLoad = array();
/* 判断主文件是否存在。Whether the main file exists or not. */
if($type == 'lang')
{
$mainFile = $this->getMainLangFile($moduleName, $appName);
}
else
{
$mainFile = $modulePath . $type . '.php';
}
if($mainFile) $filesToLoad[] = $mainFile;
/* 获取扩展文件。If extensionLevel > 0, get extension files. */
if($this->config->framework->extensionLevel > 0)
{
$commonExtFiles = array();
$siteExtFiles = array();
$extPath = $this->getModuleExtPath($appName, $moduleName, $type);
if($this->config->framework->extensionLevel >= 1)
{
$clientLang = $type == 'lang' ? $this->clientLang : '';
if(!empty($extPath['common'])) $commonExtFiles = helper::ls($extPath['common'] . $clientLang, '.php');
if(!empty($extPath['xuan'])) $commonExtFiles = array_merge($commonExtFiles, helper::ls($extPath['xuan'] . $clientLang, '.php'));
if(!empty($extPath['vision'])) $commonExtFiles = array_merge($commonExtFiles, helper::ls($extPath['vision'] . $clientLang, '.php'));
if(!empty($extPath['custom'])) $commonExtFiles = array_merge($commonExtFiles, helper::ls($extPath['custom'] . $clientLang, '.php'));
if(!empty($extPath['saas'])) $commonExtFiles = array_merge($commonExtFiles, helper::ls($extPath['saas'] . $clientLang, '.php'));
}
if($this->config->framework->extensionLevel == 2 and !empty($extPath['site'])) $siteExtFiles = helper::ls($extPath['site'] . $clientLang, '.php');
$extFiles = array_merge($commonExtFiles, $siteExtFiles);
}
/* 计算最终要加载的文件。 Get the files to be loaded. */
$filesToLoad = array_merge($filesToLoad, $extFiles);
if(empty($filesToLoad)) return false;
return $filesToLoad;
}
}
/**
+52 -17
View File
@@ -108,34 +108,65 @@ class router extends baseRouter
parent::loadLang($moduleName, $appName);
/* Replace main nav lang. */
if($moduleName == 'common' and $this->dbh and !empty($this->config->db->name))
{
$customMenus = $this->dbh->query('SELECT * FROM' . TABLE_LANG . "WHERE `module`='common' AND `section`='mainNav' AND `lang`='{$this->clientLang}' AND `vision`='{$this->config->vision}'")->fetchAll();
foreach($customMenus as $menu)
{
$menuKey = $menu->key;
if(isset($lang->mainNav->$menuKey)) $lang->mainNav->$menuKey = zget($lang->navIcons, $menuKey, '') . " {$menu->value}" . substr($lang->mainNav->$menuKey, strpos($lang->mainNav->$menuKey, '|'));
}
}
/* Merge from the db lang. */
if($moduleName != 'common' and isset($lang->db->custom[$moduleName]))
{
foreach($lang->db->custom[$moduleName] as $section => $fields)
{
if(isset($lang->{$moduleName}->{$section}['']))
if(in_array($section, array('featureBar', 'moreSelects')))
{
$nullKey = '';
$nullValue = $lang->{$moduleName}->{$section}[$nullKey];
foreach($fields as $featureBarMethod => $featureBarValues)
{
foreach($featureBarValues as $featureBarKey => $featureBarValue)
{
if(is_array($featureBarValue))
{
foreach($featureBarValue as $key => $value) $lang->{$moduleName}->{$section}[$featureBarMethod][$featureBarKey][$key] = $value;
}
else
{
$lang->{$moduleName}->{$section}[$featureBarMethod][$featureBarKey] = $featureBarValue;
}
}
}
}
elseif(isset($lang->{$moduleName}->{$section}[0]))
else
{
$nullKey = 0;
$nullValue = $lang->{$moduleName}->{$section}[0];
}
unset($lang->{$moduleName}->{$section});
if(isset($lang->{$moduleName}->{$section}['']))
{
$nullKey = '';
$nullValue = $lang->{$moduleName}->{$section}[$nullKey];
}
elseif(isset($lang->{$moduleName}->{$section}[0]))
{
$nullKey = 0;
$nullValue = $lang->{$moduleName}->{$section}[0];
}
unset($lang->{$moduleName}->{$section});
if(isset($nullKey))$lang->{$moduleName}->{$section}[$nullKey] = $nullValue;
foreach($fields as $key => $value)
{
if($section == 'priList' and $key > 0 and trim($value) === '') continue; // Fix bug #23538.
if(isset($nullKey))$lang->{$moduleName}->{$section}[$nullKey] = $nullValue;
foreach($fields as $key => $value)
{
if($section == 'priList' and $key > 0 and trim($value) === '') continue; // Fix bug #23538.
if(!isset($lang->{$moduleName})) $lang->{$moduleName} = new stdclass();
if(!isset($lang->{$moduleName}->{$section})) $lang->{$moduleName}->{$section} = array();
$lang->{$moduleName}->{$section}[$key] = $value;
if(!isset($lang->{$moduleName})) $lang->{$moduleName} = new stdclass();
if(!isset($lang->{$moduleName}->{$section})) $lang->{$moduleName}->{$section} = array();
$lang->{$moduleName}->{$section}[$key] = $value;
}
unset($nullKey);
unset($nullValue);
}
unset($nullKey);
unset($nullValue);
}
}
@@ -284,6 +315,10 @@ class router extends baseRouter
$lang->URCommon = isset($URPairs[$config->URSR]) ? $URPairs[$config->URSR] : reset($URPairs);
$lang->SRCommon = isset($SRPairs[$config->URSR]) ? $SRPairs[$config->URSR] : reset($SRPairs);
}
/* Replace common lang. */
$customMenus = $this->dbh->query('SELECT * FROM' . TABLE_LANG . "WHERE `module`='common' AND `lang`='{$this->clientLang}' AND `section`='' AND `vision`='{$config->vision}'")->fetchAll();
foreach($customMenus as $menu) if(isset($lang->{$menu->key})) $lang->{$menu->key} = $menu->value;
}
}
+21 -4
View File
@@ -1196,10 +1196,27 @@ EOT;
if($config->tabSession and helper::isWithTID()) $jsConfig->tid = zget($_GET, 'tid', '');
$jsLang = new stdclass();
$jsLang->submitting = isset($lang->loading) ? $lang->loading : '';
$jsLang->save = $jsConfig->save;
$jsLang->expand = isset($lang->expand) ? $lang->expand : '';
$jsLang->timeout = isset($lang->timeout) ? $lang->timeout : '';
$jsLang->submitting = isset($lang->loading) ? $lang->loading : '';
$jsLang->save = $jsConfig->save;
$jsLang->expand = isset($lang->expand) ? $lang->expand : '';
$jsLang->timeout = isset($lang->timeout) ? $lang->timeout : '';
$jsLang->confirmDraft = isset($lang->confirmDraft) ? $lang->confirmDraft : '';
$jsLang->resume = isset($lang->resume) ? $lang->resume : '';
$jsLang->program = zget($lang->program, 'common', '');
$jsLang->project = zget($lang->project, 'common', '');
$jsLang->product = zget($lang->product, 'common', '');
$jsLang->task = zget($lang->task, 'common', '');
$jsLang->story = zget($lang->story, 'common', '');
$jsLang->bug = zget($lang->bug, 'common', '');
$jsLang->testcase = zget($lang->testcase, 'common', '');
$jsLang->zahost = zget($lang->zahost, 'common', '');
$jsLang->zanode = zget($lang->zanode, 'common', '');
$jsLang->gitlab = zget($lang->gitlab, 'common', '');
$jsLang->gogs = zget($lang->gogs, 'common', '');
$jsLang->gitea = zget($lang->gitea, 'common', '');
$jsLang->jenkins = zget($lang->jenkins, 'common', '');
$jsLang->sonarqube = zget($lang->sonarqube, 'common', '');
$jsLang->repo = zget($lang->repo, 'common', '');
$js = static::start(false);
$js .= 'window.config=' . json_encode($jsConfig) . ";\n";
+23 -23
View File
@@ -13,11 +13,11 @@ class zfile
{
/**
* Copy a directory from an directory to another directory.
*
* @param string $from
* @param string $to
*
* @param string $from
* @param string $to
* @param bool $logLevel
* @param string $logFile
* @param string $logFile
* @param array $excludeFiles
* @param bool $toIsLink
* @access public
@@ -110,9 +110,9 @@ class zfile
/**
* Get count.
*
* @param string $dir
* @param array $excludeFiles
*
* @param string $dir
* @param array $excludeFiles
* @access public
* @return int
*/
@@ -136,8 +136,8 @@ class zfile
/**
* Remove a dir.
*
* @param string $dir
*
* @param string $dir
* @access public
* @return bool
*/
@@ -171,9 +171,9 @@ class zfile
/**
* Get files under a directory recursive.
*
* @param string $dir
* @param array $exceptions
*
* @param string $dir
* @param array $exceptions
* @access private
* @return array
*/
@@ -207,8 +207,8 @@ class zfile
/**
* Make a dir.
*
* @param string $dir
*
* @param string $dir
* @access public
* @return bool
*/
@@ -219,8 +219,8 @@ class zfile
/**
* Remove a file
*
* @param string $file
*
* @param string $file
* @access public
* @return bool
*/
@@ -232,7 +232,7 @@ class zfile
/**
* Batch remove files. use glob function.
*
*
* @param string $patern
* @access public
* @return void
@@ -245,7 +245,7 @@ class zfile
/**
* Remove a file
*
*
* @param string from
* @param string to
* @access public
@@ -258,7 +258,7 @@ class zfile
/**
* Rename a file or directory.
*
*
* @param string from
* @param string to
* @access public
@@ -271,8 +271,8 @@ class zfile
/**
* Get file size.
*
* @param string $file
*
* @param string $file
* @access public
* @return int
*/
@@ -283,10 +283,10 @@ class zfile
/**
* Get directory size.
*
*
* @param string $dir
* @access public
* @return int
* @return int
*/
public function getDirSize($dir)
{
+20 -28
View File
@@ -14,7 +14,7 @@ global $config;
$lang->action->common = 'Log';
$lang->action->id = 'ID';
$lang->action->product = $lang->productCommon;
$lang->action->project = 'Project';
$lang->action->project = $lang->projectCommon;
$lang->action->execution = $lang->execution->common;
$lang->action->objectType = 'Object Type';
$lang->action->objectID = 'ID';
@@ -56,7 +56,7 @@ $lang->action->needEdit = '%s existiert bereits. Bitte bearbeiten.';
$lang->action->historyEdit = 'Der Verlauf darf nicht leer sein.';
$lang->action->noDynamic = 'Kein Verlauf. ';
$lang->action->undeletedTips = 'This data did not participate in the merging process during the version upgrade process, so restore is not supported.';
$lang->action->executionNoProject = 'The execution does not belong to a project,please restore the project first';
$lang->action->executionNoProject = "The execution does not belong to a {$lang->projectCommon},please restore the {$lang->projectCommon} first";
$lang->action->repoNoServer = 'The repo does not belong to a server,please restore the server first';
$lang->action->hasCreatedTask = 'Tasks have been created in this parent phase and cannot be restored!';
$lang->action->hasDeletedParent = 'Restoring this phase requires restoring the deleted parent phase %s at the same time.';
@@ -91,14 +91,6 @@ $lang->action->dynamic->all = 'Alle';
$lang->action->dynamic->hidden = 'Versteckt';
$lang->action->dynamic->search = 'Suche';
$lang->action->periods['all'] = $lang->action->dynamic->all;
$lang->action->periods['today'] = $lang->action->dynamic->today;
$lang->action->periods['yesterday'] = $lang->action->dynamic->yesterday;
$lang->action->periods['thisweek'] = $lang->action->dynamic->thisWeek;
$lang->action->periods['lastweek'] = $lang->action->dynamic->lastWeek;
$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['branch'] = 'Branch';
$lang->action->objectTypes['story'] = $lang->SRCommon;
@@ -107,7 +99,7 @@ $lang->action->objectTypes['design'] = 'Design';
$lang->action->objectTypes['productplan'] = 'Plan';
$lang->action->objectTypes['release'] = 'Release';
$lang->action->objectTypes['program'] = 'Program';
$lang->action->objectTypes['project'] = 'Project';
$lang->action->objectTypes['project'] = $lang->projectCommon;
$lang->action->objectTypes['execution'] = $lang->executionCommon;
$lang->action->objectTypes['task'] = 'Aufgabe';
$lang->action->objectTypes['build'] = 'Build';
@@ -216,8 +208,8 @@ $lang->action->desc->managed = '$date, by <strong>$actor</strong> m
$lang->action->desc->estimated = '$date, by <strong>$actor</strong> estimated.' . "\n";
$lang->action->desc->run = '$date, by <strong>$actor</strong> executed.' . "\n";
$lang->action->desc->syncprogram = '$date, started by <strong>$actor</strong>(starting the project sets the program status as Ongoing).' . "\n";
$lang->action->desc->syncproject = '$date, starting the execution sets the project status as Ongoing.' . "\n";
$lang->action->desc->syncmultipleproject = '$date, starting the task sets the project status as Ongoing.' . "\n";
$lang->action->desc->syncproject = '$date, starting the execution sets the ' . $lang->projectCommon . ' status as Ongoing.' . "\n";
$lang->action->desc->syncmultipleproject = '$date, starting the task sets the ' . $lang->projectCommon . ' status as Ongoing.' . "\n";
$lang->action->desc->syncexecution = '$date, starting the task sets the execution status as Ongoing.' . "\n";
$lang->action->desc->syncexecutionbychild = '$date, starting the sub stage sets the execution status as Ongoing.' . "\n";
$lang->action->desc->importfromgitlab = '$date, Issue associate created from gitlab by <strong>$actor</strong>.' . "\n";
@@ -245,7 +237,7 @@ $lang->action->desc->boot = '$date, the ZenAgent Node is boot by
$lang->action->desc->relieved = '$date, relieved by <strong>$actor</strong> .' . "\n";
$lang->action->desc->switchtolight = '$date, Switch from ALM mode to light mode by <strong>'. $lang->admin->system .'</strong>.' . "\n";
$lang->action->desc->getvnc = '$date, Remote control <strong>$extra</strong> by <strong>$actor</strong> .' . "\n";
$lang->action->desc->unlinkproduct = '$date, the project is disassociated from the $extra, synchronization disassociates the ' . $lang->executionCommon . 's of the project from the $extra.' . "\n";
$lang->action->desc->unlinkproduct = '$date, the ' . $lang->projectCommon . ' is disassociated from the $extra, synchronization disassociates the ' . $lang->executionCommon . 's of the ' . $lang->projectCommon . ' from the $extra.' . "\n";
$lang->action->desc->createdsnapshot = '$date, <strong>$actor</strong> creates a snapshot <strong>$extra</strong>。' . "\n";
$lang->action->desc->restoredsnapshot = '$date, <strong>$actor</strong> restored a snapshot <strong>$extra</strong>。' . "\n";
$lang->action->desc->editsnapshot = '$date, <strong>$actor</strong> edited the snapshot <strong>$extra</strong>。' . "\n";
@@ -321,8 +313,8 @@ $lang->action->label->marked = 'marked';
$lang->action->label->linked2execution = "Link {$lang->executionCommon}";
$lang->action->label->unlinkedfromexecution = "Unlink {$lang->executionCommon}";
$lang->action->label->linked2kanban = 'linked to kanban';
$lang->action->label->linked2project = "Link Project";
$lang->action->label->unlinkedfromproject = "Unlink Project";
$lang->action->label->linked2project = "linked to {$lang->projectCommon}";
$lang->action->label->unlinkedfromproject = "unlinked from {$lang->projectCommon}";
$lang->action->label->unlinkedfrombuild = "Unlink Build";
$lang->action->label->linked2release = "Link Release";
$lang->action->label->unlinkedfromrelease = "Unlink Release";
@@ -431,7 +423,7 @@ $lang->action->label->relieved = 'relieved';
$lang->action->label->switchtolight = 'switch from ALM mode to light mode';
$lang->action->label->linkedrepo = 'Linked Code Repo';
$lang->action->label->unlinkedrepo = 'Unlinked Code Repo';
$lang->action->label->unlinkproduct = 'Unlinked Product';
$lang->action->label->unlinkproduct = "Unlinked {$lang->productCommon}";
$lang->action->label->createdsnapshot = 'create snapshot';
$lang->action->label->restoredsnapshot = 'create snapshot';
$lang->action->label->editsnapshot = 'edit snapshot';
@@ -455,12 +447,12 @@ $lang->action->dynamicAction->program['activated'] = 'Activate Program';
$lang->action->dynamicAction->program['deleted'] = 'Delete Program';
$lang->action->dynamicAction->program['closed'] = 'Close Program';
$lang->action->dynamicAction->project['opened'] = 'Create Project';
$lang->action->dynamicAction->project['edited'] = 'Edit Project';
$lang->action->dynamicAction->project['started'] = 'Start Project';
$lang->action->dynamicAction->project['suspended'] = 'Suspend Project';
$lang->action->dynamicAction->project['activated'] = 'Activate Project';
$lang->action->dynamicAction->project['closed'] = 'Close Project';
$lang->action->dynamicAction->project['opened'] = "Create {$lang->projectCommon}";
$lang->action->dynamicAction->project['edited'] = "Edit {$lang->projectCommon}";
$lang->action->dynamicAction->project['started'] = "Start {$lang->projectCommon}";
$lang->action->dynamicAction->project['suspended'] = "Suspend {$lang->projectCommon}";
$lang->action->dynamicAction->project['activated'] = "Activate {$lang->projectCommon}";
$lang->action->dynamicAction->project['closed'] = "Close {$lang->projectCommon}";
$lang->action->dynamicAction->project['switchtolight'] = 'Switch Mode';
$lang->action->dynamicAction->product['opened'] = 'Create ' . $lang->productCommon;
@@ -512,7 +504,7 @@ $lang->action->dynamicAction->story['linked2revision'] = 'Link Story to Re
$lang->action->dynamicAction->story['unlinkedfromrevision'] = 'Unlink Story from Revision';
$lang->action->dynamicAction->story['linked2build'] = 'Link Story to Build';
$lang->action->dynamicAction->story['unlinkedfrombuild'] = 'Unlink Story from Build';
$lang->action->dynamicAction->story['unlinkedfromproject'] = 'Unlink Project';
$lang->action->dynamicAction->story['unlinkedfromproject'] = "Unlink {$lang->projectCommon}";
$lang->action->dynamicAction->story['undeleted'] = 'Restore Story';
$lang->action->dynamicAction->story['hidden'] = 'Hide Story';
$lang->action->dynamicAction->story['linked2execution'] = "Link Story";
@@ -739,7 +731,7 @@ $lang->action->label->productplan = 'Plan|productplan|view|productID=%s';
$lang->action->label->release = 'Release|release|view|productID=%s';
$lang->action->label->story = 'Story|story|view|storyID=%s';
$lang->action->label->program = "Program|program|pgmproduct|programID=%s";
$lang->action->label->project = "Project|project|index|projectID=%s";
$lang->action->label->project = "{$lang->projectCommon}|project|index|projectID=%s";
$lang->action->label->execution = "Execution|execution|task|executionID=%s";
$lang->action->label->task = 'Aufgaben|task|view|taskID=%s';
@@ -780,7 +772,7 @@ $lang->action->search = new stdclass();
$lang->action->search->objectTypeList[''] = '';
$lang->action->search->objectTypeList['product'] = $lang->productCommon;
$lang->action->search->objectTypeList['program'] = 'Program';
$lang->action->search->objectTypeList['project'] = 'Project';
$lang->action->search->objectTypeList['project'] = $lang->projectCommon;
$lang->action->search->objectTypeList['execution'] = 'Execution';
$lang->action->search->objectTypeList['bug'] = 'Bug';
$lang->action->search->objectTypeList['case'] = 'Fälle';
@@ -919,8 +911,8 @@ $lang->action->apiTitle->marked = 'Marked';
$lang->action->apiTitle->linked2execution = "Linked to {$lang->executionCommon}";
$lang->action->apiTitle->unlinkedfromexecution = "Unlinked from {$lang->executionCommon}";
$lang->action->apiTitle->linked2kanban = 'Linked to Kanban';
$lang->action->apiTitle->linked2project = "Linked to project";
$lang->action->apiTitle->unlinkedfromproject = "Unlinked from project";
$lang->action->apiTitle->linked2project = "Linked to {$lang->projectCommon}";
$lang->action->apiTitle->unlinkedfromproject = "Unlinked from {$lang->projectCommon}";
$lang->action->apiTitle->unlinkedfrombuild = "Unlinked from build";
$lang->action->apiTitle->linked2release = "Linked to release";
$lang->action->apiTitle->unlinkedfromrelease = "Unlinked from release";
+20 -28
View File
@@ -14,7 +14,7 @@ global $config;
$lang->action->common = 'Log';
$lang->action->id = 'ID';
$lang->action->product = $lang->productCommon;
$lang->action->project = 'Project';
$lang->action->project = $lang->projectCommon;
$lang->action->execution = $lang->execution->common;
$lang->action->objectType = 'Object Type';
$lang->action->objectID = 'ID';
@@ -56,7 +56,7 @@ $lang->action->needEdit = '%s that you want to restore. Please edit it
$lang->action->historyEdit = 'The history EditBy cannot be empty.';
$lang->action->noDynamic = 'No dynamics. ';
$lang->action->undeletedTips = 'This data did not participate in the merging process during the version upgrade process, so restore is not supported.';
$lang->action->executionNoProject = 'The execution does not belong to a project,please restore the project first';
$lang->action->executionNoProject = "The execution does not belong to a {$lang->projectCommon},please restore the {$lang->projectCommon} first";
$lang->action->repoNoServer = 'The repo does not belong to a server,please restore the server first';
$lang->action->hasCreatedTask = 'Tasks have been created in this parent phase and cannot be restored!';
$lang->action->hasDeletedParent = 'Restoring this phase requires restoring the deleted parent phase %s at the same time.';
@@ -91,14 +91,6 @@ $lang->action->dynamic->all = 'All';
$lang->action->dynamic->hidden = 'Hidden';
$lang->action->dynamic->search = 'Search';
$lang->action->periods['all'] = $lang->action->dynamic->all;
$lang->action->periods['today'] = $lang->action->dynamic->today;
$lang->action->periods['yesterday'] = $lang->action->dynamic->yesterday;
$lang->action->periods['thisweek'] = $lang->action->dynamic->thisWeek;
$lang->action->periods['lastweek'] = $lang->action->dynamic->lastWeek;
$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['branch'] = 'Branch';
$lang->action->objectTypes['story'] = $lang->SRCommon;
@@ -107,7 +99,7 @@ $lang->action->objectTypes['design'] = 'Design';
$lang->action->objectTypes['productplan'] = 'Plan';
$lang->action->objectTypes['release'] = 'Release';
$lang->action->objectTypes['program'] = 'Program';
$lang->action->objectTypes['project'] = 'Project';
$lang->action->objectTypes['project'] = $lang->projectCommon;
$lang->action->objectTypes['execution'] = $lang->executionCommon;
$lang->action->objectTypes['task'] = 'Task';
$lang->action->objectTypes['build'] = 'Build';
@@ -216,8 +208,8 @@ $lang->action->desc->managed = '$date, by <strong>$actor</strong> m
$lang->action->desc->estimated = '$date, by <strong>$actor</strong> estimated.' . "\n";
$lang->action->desc->run = '$date, by <strong>$actor</strong> executed.' . "\n";
$lang->action->desc->syncprogram = '$date, started by <strong>$actor</strong>(starting the project sets the program status as Ongoing).' . "\n";
$lang->action->desc->syncproject = '$date, starting the execution sets the project status as Ongoing.' . "\n";
$lang->action->desc->syncmultipleproject = '$date, starting the task sets the project status as Ongoing.' . "\n";
$lang->action->desc->syncproject = '$date, starting the execution sets the ' . $lang->projectCommon . ' status as Ongoing.' . "\n";
$lang->action->desc->syncmultipleproject = '$date, starting the task sets the ' . $lang->projectCommon . ' status as Ongoing.' . "\n";
$lang->action->desc->syncexecution = '$date, starting the task sets the execution status as Ongoing.' . "\n";
$lang->action->desc->syncexecutionbychild = '$date, starting the sub stage sets the execution status as Ongoing.' . "\n";
$lang->action->desc->importfromgitlab = '$date, Issue associate created from gitlab by <strong>$actor</strong>.' . "\n";
@@ -245,7 +237,7 @@ $lang->action->desc->boot = '$date, the ZenAgent Node is boot by
$lang->action->desc->relieved = '$date, relieved by <strong>$actor</strong> .' . "\n";
$lang->action->desc->switchtolight = '$date, Switch from ALM mode to light mode by <strong>'. $lang->admin->system .'</strong>.' . "\n";
$lang->action->desc->getvnc = '$date, Remote control <strong>$extra</strong> by <strong>$actor</strong> .' . "\n";
$lang->action->desc->unlinkproduct = '$date, the project is disassociated from the $extra, synchronization disassociates the ' . $lang->executionCommon . 's of the project from the $extra.' . "\n";
$lang->action->desc->unlinkproduct = '$date, the ' . $lang->projectCommon . ' is disassociated from the $extra, synchronization disassociates the ' . $lang->executionCommon . 's of the ' . $lang->projectCommon . ' from the $extra.' . "\n";
$lang->action->desc->createdsnapshot = '$date, <strong>$actor</strong> creates a snapshot <strong>$extra</strong>。' . "\n";
$lang->action->desc->restoredsnapshot = '$date, <strong>$actor</strong> restored a snapshot <strong>$extra</strong>。' . "\n";
$lang->action->desc->editsnapshot = '$date, <strong>$actor</strong> edited the snapshot <strong>$extra</strong>。' . "\n";
@@ -321,8 +313,8 @@ $lang->action->label->marked = 'marked';
$lang->action->label->linked2execution = "linked to {$lang->executionCommon}";
$lang->action->label->unlinkedfromexecution = "unlinked from {$lang->executionCommon}";
$lang->action->label->linked2kanban = 'linked to kanban';
$lang->action->label->linked2project = "linked to project";
$lang->action->label->unlinkedfromproject = "unlinked from project";
$lang->action->label->linked2project = "linked to {$lang->projectCommon}";
$lang->action->label->unlinkedfromproject = "unlinked from {$lang->projectCommon}";
$lang->action->label->unlinkedfrombuild = "unlinked Build ";
$lang->action->label->linked2release = "linked Release ";
$lang->action->label->unlinkedfromrelease = "unlinked Release ";
@@ -431,7 +423,7 @@ $lang->action->label->relieved = 'relieved';
$lang->action->label->switchtolight = 'switch from ALM mode to light mode';
$lang->action->label->linkedrepo = 'Linked Code Repo';
$lang->action->label->unlinkedrepo = 'Unlinked Code Repo';
$lang->action->label->unlinkproduct = 'Unlinked Product';
$lang->action->label->unlinkproduct = "Unlinked {$lang->productCommon}";
$lang->action->label->createdsnapshot = 'create snapshot';
$lang->action->label->restoredsnapshot = 'create snapshot';
$lang->action->label->editsnapshot = 'edit snapshot';
@@ -455,12 +447,12 @@ $lang->action->dynamicAction->program['activated'] = 'Activate Program';
$lang->action->dynamicAction->program['deleted'] = 'Delete Program';
$lang->action->dynamicAction->program['closed'] = 'Close Program';
$lang->action->dynamicAction->project['opened'] = 'Create Project';
$lang->action->dynamicAction->project['edited'] = 'Edit Project';
$lang->action->dynamicAction->project['started'] = 'Start Project';
$lang->action->dynamicAction->project['suspended'] = 'Suspend Project';
$lang->action->dynamicAction->project['activated'] = 'Activate Project';
$lang->action->dynamicAction->project['closed'] = 'Close Project';
$lang->action->dynamicAction->project['opened'] = "Create {$lang->projectCommon}";
$lang->action->dynamicAction->project['edited'] = "Edit {$lang->projectCommon}";
$lang->action->dynamicAction->project['started'] = "Start {$lang->projectCommon}";
$lang->action->dynamicAction->project['suspended'] = "Suspend {$lang->projectCommon}";
$lang->action->dynamicAction->project['activated'] = "Activate {$lang->projectCommon}";
$lang->action->dynamicAction->project['closed'] = "Close {$lang->projectCommon}";
$lang->action->dynamicAction->project['switchtolight'] = 'Switch Mode';
$lang->action->dynamicAction->product['opened'] = 'Create ' . $lang->productCommon;
@@ -512,7 +504,7 @@ $lang->action->dynamicAction->story['linked2revision'] = 'Link Story to Re
$lang->action->dynamicAction->story['unlinkedfromrevision'] = 'Unlink Story from Revision';
$lang->action->dynamicAction->story['linked2build'] = 'Link Story to Build';
$lang->action->dynamicAction->story['unlinkedfrombuild'] = 'Unlink Story from Build';
$lang->action->dynamicAction->story['unlinkedfromproject'] = 'Unlink Project';
$lang->action->dynamicAction->story['unlinkedfromproject'] = "Unlink {$lang->projectCommon}";
$lang->action->dynamicAction->story['undeleted'] = 'Restore Story';
$lang->action->dynamicAction->story['hidden'] = 'Hide Story';
$lang->action->dynamicAction->story['linked2execution'] = "Link Story";
@@ -739,7 +731,7 @@ $lang->action->label->productplan = 'Plan|productplan|view|productID=%s';
$lang->action->label->release = 'Release|release|view|productID=%s';
$lang->action->label->story = 'Story|story|view|storyID=%s';
$lang->action->label->program = "Program|program|product|programID=%s";
$lang->action->label->project = "Project|project|index|projectID=%s";
$lang->action->label->project = "{$lang->projectCommon}|project|index|projectID=%s";
$lang->action->label->execution = "Execution|execution|task|executionID=%s";
$lang->action->label->task = 'Task|task|view|taskID=%s';
@@ -780,7 +772,7 @@ $lang->action->search = new stdclass();
$lang->action->search->objectTypeList[''] = '';
$lang->action->search->objectTypeList['product'] = $lang->productCommon;
$lang->action->search->objectTypeList['program'] = 'Program';
$lang->action->search->objectTypeList['project'] = 'Project';
$lang->action->search->objectTypeList['project'] = $lang->projectCommon;
$lang->action->search->objectTypeList['execution'] = 'Execution';
$lang->action->search->objectTypeList['bug'] = 'Bug';
$lang->action->search->objectTypeList['case'] = 'Case';
@@ -919,8 +911,8 @@ $lang->action->apiTitle->marked = 'Marked';
$lang->action->apiTitle->linked2execution = "Linked to {$lang->executionCommon}";
$lang->action->apiTitle->unlinkedfromexecution = "Unlinked from {$lang->executionCommon}";
$lang->action->apiTitle->linked2kanban = 'Linked to Kanban';
$lang->action->apiTitle->linked2project = "Linked to project";
$lang->action->apiTitle->unlinkedfromproject = "Unlinked from project";
$lang->action->apiTitle->linked2project = "Linked to {$lang->projectCommon}";
$lang->action->apiTitle->unlinkedfromproject = "Unlinked from {$lang->projectCommon}";
$lang->action->apiTitle->unlinkedfrombuild = "Unlinked from build";
$lang->action->apiTitle->linked2release = "Linked to release";
$lang->action->apiTitle->unlinkedfromrelease = "Unlinked from release";
+20 -28
View File
@@ -14,7 +14,7 @@ global $config;
$lang->action->common = 'Log';
$lang->action->id = 'ID';
$lang->action->product = $lang->productCommon;
$lang->action->project = 'Project';
$lang->action->project = $lang->projectCommon;
$lang->action->execution = $lang->execution->common;
$lang->action->objectType = "Type d'objet";
$lang->action->objectID = 'ID';
@@ -56,7 +56,7 @@ $lang->action->needEdit = '%s que vous voulez restaurer. SVP éditez l
$lang->action->historyEdit = "l'historique Edité Par ne peut pas être vide.";
$lang->action->noDynamic = "Pas d'historique.";
$lang->action->undeletedTips = 'This data did not participate in the merging process during the version upgrade process, so restore is not supported.';
$lang->action->executionNoProject = 'The execution does not belong to a project,please restore the project first';
$lang->action->executionNoProject = "The execution does not belong to a {$lang->projectCommon},please restore the {$lang->projectCommon} first";
$lang->action->repoNoServer = 'The repo does not belong to a server,please restore the server first';
$lang->action->hasCreatedTask = 'Tasks have been created in this parent phase and cannot be restored!';
$lang->action->hasDeletedParent = 'Restoring this phase requires restoring the deleted parent phase %s at the same time.';
@@ -91,14 +91,6 @@ $lang->action->dynamic->all = 'Tout';
$lang->action->dynamic->hidden = 'Caché';
$lang->action->dynamic->search = 'Rechercher';
$lang->action->periods['all'] = $lang->action->dynamic->all;
$lang->action->periods['today'] = $lang->action->dynamic->today;
$lang->action->periods['yesterday'] = $lang->action->dynamic->yesterday;
$lang->action->periods['thisweek'] = $lang->action->dynamic->thisWeek;
$lang->action->periods['lastweek'] = $lang->action->dynamic->lastWeek;
$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['branch'] = 'Branche';
$lang->action->objectTypes['story'] = $lang->SRCommon;
@@ -107,7 +99,7 @@ $lang->action->objectTypes['design'] = 'Design';
$lang->action->objectTypes['productplan'] = 'Plan';
$lang->action->objectTypes['release'] = 'Release';
$lang->action->objectTypes['program'] = 'Program';
$lang->action->objectTypes['project'] = 'Project';
$lang->action->objectTypes['project'] = $lang->projectCommon;
$lang->action->objectTypes['execution'] = $lang->executionCommon;
$lang->action->objectTypes['task'] = 'Tâche';
$lang->action->objectTypes['build'] = 'Build';
@@ -216,8 +208,8 @@ $lang->action->desc->managed = '$date, by <strong>$actor</strong> m
$lang->action->desc->estimated = '$date, by <strong>$actor</strong> estimated.' . "\n";
$lang->action->desc->run = '$date, by <strong>$actor</strong> executed.' . "\n";
$lang->action->desc->syncprogram = '$date, started by <strong>$actor</strong>(starting the project sets the program status as Ongoing).' . "\n";
$lang->action->desc->syncproject = '$date, starting the execution sets the project status as Ongoing.' . "\n";
$lang->action->desc->syncmultipleproject = '$date, starting the task sets the project status as Ongoing.' . "\n";
$lang->action->desc->syncproject = '$date, starting the execution sets the ' . $lang->projectCommon . ' status as Ongoing.' . "\n";
$lang->action->desc->syncmultipleproject = '$date, starting the task sets the ' . $lang->projectCommon . ' status as Ongoing.' . "\n";
$lang->action->desc->syncexecution = '$date, starting the task sets the execution status as Ongoing.' . "\n";
$lang->action->desc->syncexecutionbychild = '$date, starting the sub stage sets the execution status as Ongoing.' . "\n";
$lang->action->desc->importfromgitlab = '$date, Issue associate created from gitlab by <strong>$actor</strong>.' . "\n";
@@ -245,7 +237,7 @@ $lang->action->desc->boot = '$date, the ZenAgent Node is boot by
$lang->action->desc->relieved = '$date, relieved by <strong>$actor</strong> .' . "\n";
$lang->action->desc->switchtolight = '$date, Switch from ALM mode to light mode by <strong>'. $lang->admin->system .'</strong>.' . "\n";
$lang->action->desc->getvnc = '$date, Remote control <strong>$extra</strong> by <strong>$actor</strong> .' . "\n";
$lang->action->desc->unlinkproduct = '$date, the project is disassociated from the $extra, synchronization disassociates the ' . $lang->executionCommon . 's of the project from the $extra.' . "\n";
$lang->action->desc->unlinkproduct = '$date, the ' . $lang->projectCommon . ' is disassociated from the $extra, synchronization disassociates the ' . $lang->executionCommon . 's of the ' . $lang->projectCommon . ' from the $extra.' . "\n";
$lang->action->desc->createdsnapshot = '$date, <strong>$actor</strong> creates a snapshot <strong>$extra</strong>。' . "\n";
$lang->action->desc->restoredsnapshot = '$date, <strong>$actor</strong> restored a snapshot <strong>$extra</strong>。' . "\n";
$lang->action->desc->editsnapshot = '$date, <strong>$actor</strong> edited the snapshot <strong>$extra</strong>。' . "\n";
@@ -321,8 +313,8 @@ $lang->action->label->marked = 'a marqué';
$lang->action->label->linked2execution = "a ajouté à {$lang->executionCommon}";
$lang->action->label->unlinkedfromexecution = "a enlevé de {$lang->executionCommon}";
$lang->action->label->linked2kanban = 'linked to kanban';
$lang->action->label->linked2project = "Link Project";
$lang->action->label->unlinkedfromproject = "Unlink Project";
$lang->action->label->linked2project = "linked to {$lang->projectCommon}";
$lang->action->label->unlinkedfromproject = "unlinked from {$lang->projectCommon}";
$lang->action->label->unlinkedfrombuild = "a enlevé du Build ";
$lang->action->label->linked2release = "a ajouté à une Release ";
$lang->action->label->unlinkedfromrelease = "a enlevé de la Release ";
@@ -431,7 +423,7 @@ $lang->action->label->relieved = 'relieved';
$lang->action->label->switchtolight = 'switch from ALM mode to light mode';
$lang->action->label->linkedrepo = 'Linked Code Repo';
$lang->action->label->unlinkedrepo = 'Unlinked Code Repo';
$lang->action->label->unlinkproduct = 'Unlinked Product';
$lang->action->label->unlinkproduct = "Unlinked {$lang->productCommon}";
$lang->action->label->createdsnapshot = 'create snapshot';
$lang->action->label->restoredsnapshot = 'create snapshot';
$lang->action->label->editsnapshot = 'edit snapshot';
@@ -455,12 +447,12 @@ $lang->action->dynamicAction->program['activated'] = 'Activate Program';
$lang->action->dynamicAction->program['deleted'] = 'Delete Program';
$lang->action->dynamicAction->program['closed'] = 'Close Program';
$lang->action->dynamicAction->project['opened'] = 'Créer ' . $lang->executionCommon;
$lang->action->dynamicAction->project['edited'] = 'Editer ' . $lang->executionCommon;
$lang->action->dynamicAction->project['started'] = 'Commencer ' . $lang->executionCommon;
$lang->action->dynamicAction->project['suspended'] = 'Suspendre ' . $lang->executionCommon;
$lang->action->dynamicAction->project['activated'] = 'Activer ' . $lang->executionCommon;
$lang->action->dynamicAction->project['closed'] = 'Fermer ' . $lang->executionCommon;
$lang->action->dynamicAction->project['opened'] = "Create {$lang->projectCommon}";
$lang->action->dynamicAction->project['edited'] = "Edit {$lang->projectCommon}";
$lang->action->dynamicAction->project['started'] = "Start {$lang->projectCommon}";
$lang->action->dynamicAction->project['suspended'] = "Suspend {$lang->projectCommon}";
$lang->action->dynamicAction->project['activated'] = "Activate {$lang->projectCommon}";
$lang->action->dynamicAction->project['closed'] = "Close {$lang->projectCommon}";
$lang->action->dynamicAction->project['switchtolight'] = 'Switch Mode';
$lang->action->dynamicAction->product['opened'] = 'Créer ' . $lang->productCommon;
@@ -512,7 +504,7 @@ $lang->action->dynamicAction->story['linked2revision'] = 'Inclure Story à
$lang->action->dynamicAction->story['unlinkedfromrevision'] = 'Unlink Story from Revision';
$lang->action->dynamicAction->story['linked2build'] = 'Ajouter Story au Build';
$lang->action->dynamicAction->story['unlinkedfrombuild'] = 'Détacher Story du Build';
$lang->action->dynamicAction->story['unlinkedfromproject'] = 'Détacher du Project';
$lang->action->dynamicAction->story['unlinkedfromproject'] = "Unlink {$lang->projectCommon}";
$lang->action->dynamicAction->story['undeleted'] = 'Restaurer Story';
$lang->action->dynamicAction->story['hidden'] = 'Masquer Story';
$lang->action->dynamicAction->story['linked2execution'] = "Link Story";
@@ -739,7 +731,7 @@ $lang->action->label->productplan = 'Plan|productplan|view|productID=%s';
$lang->action->label->release = 'Release|release|view|productID=%s';
$lang->action->label->story = 'Story|story|view|storyID=%s';
$lang->action->label->program = "Program|program|pgmproduct|programID=%s";
$lang->action->label->project = "Project|program|index|projectID=%s";
$lang->action->label->project = "{$lang->projectCommon}|project|index|projectID=%s";
$lang->action->label->execution = "Execution|execution|task|executionID=%s";
$lang->action->label->task = 'Tâche|task|view|taskID=%s';
@@ -780,7 +772,7 @@ $lang->action->search = new stdclass();
$lang->action->search->objectTypeList[''] = '';
$lang->action->search->objectTypeList['product'] = $lang->productCommon;
$lang->action->search->objectTypeList['program'] = 'Program';
$lang->action->search->objectTypeList['project'] = 'Project';
$lang->action->search->objectTypeList['project'] = $lang->projectCommon;
$lang->action->search->objectTypeList['execution'] = 'Execution';
$lang->action->search->objectTypeList['bug'] = 'Bug';
$lang->action->search->objectTypeList['case'] = 'CasTest';
@@ -919,8 +911,8 @@ $lang->action->apiTitle->marked = 'Marked';
$lang->action->apiTitle->linked2execution = "Linked to {$lang->executionCommon}";
$lang->action->apiTitle->unlinkedfromexecution = "Unlinked from {$lang->executionCommon}";
$lang->action->apiTitle->linked2kanban = 'Linked to Kanban';
$lang->action->apiTitle->linked2project = "Linked to project";
$lang->action->apiTitle->unlinkedfromproject = "Unlinked from project";
$lang->action->apiTitle->linked2project = "Linked to {$lang->projectCommon}";
$lang->action->apiTitle->unlinkedfromproject = "Unlinked from {$lang->projectCommon}";
$lang->action->apiTitle->unlinkedfrombuild = "Unlinked from build";
$lang->action->apiTitle->linked2release = "Linked to release";
$lang->action->apiTitle->unlinkedfromrelease = "Unlinked from release";
-8
View File
@@ -60,14 +60,6 @@ $lang->action->dynamic->all = 'Tất cả';
$lang->action->dynamic->hidden = 'Ẩn';
$lang->action->dynamic->search = 'Tìm kiếm';
$lang->action->periods['all'] = $lang->action->dynamic->all;
$lang->action->periods['today'] = $lang->action->dynamic->today;
$lang->action->periods['yesterday'] = $lang->action->dynamic->yesterday;
$lang->action->periods['thisweek'] = $lang->action->dynamic->thisWeek;
$lang->action->periods['lastweek'] = $lang->action->dynamic->lastWeek;
$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['branch'] = 'Nhánh';
$lang->action->objectTypes['story'] = $lang->SRCommon;
+29 -37
View File
@@ -14,7 +14,7 @@ global $config;
$lang->action->common = '系统日志';
$lang->action->id = '编号';
$lang->action->product = $lang->productCommon;
$lang->action->project = '项目';
$lang->action->project = $lang->projectCommon;
$lang->action->execution = $lang->execution->common;
$lang->action->objectType = '对象类型';
$lang->action->objectID = '对象ID';
@@ -56,7 +56,7 @@ $lang->action->needEdit = '要还原%s的名称或代号已经存在
$lang->action->historyEdit = '历史记录编辑不能为空。';
$lang->action->noDynamic = '暂时没有动态。';
$lang->action->undeletedTips = '该数据在版本升级过程中未参与数据归并流程,不支持还原。';
$lang->action->executionNoProject = '该执行没有所属的项目,请先还原项目再还原执行';
$lang->action->executionNoProject = "该执行没有所属的{$lang->projectCommon},请先还原{$lang->projectCommon}再还原执行";
$lang->action->repoNoServer = '该代码库没有所属的服务器,请先还原服务器再还原代码库';
$lang->action->hasCreatedTask = '该父阶段已创建任务,无法恢复!';
$lang->action->hasDeletedParent = '恢复该阶段需要同时恢复已删除的父阶段%s,';
@@ -91,14 +91,6 @@ $lang->action->dynamic->all = '所有';
$lang->action->dynamic->hidden = '已隐藏';
$lang->action->dynamic->search = '搜索';
$lang->action->periods['all'] = '全部';
$lang->action->periods['today'] = $lang->action->dynamic->today;
$lang->action->periods['yesterday'] = $lang->action->dynamic->yesterday;
$lang->action->periods['thisweek'] = $lang->action->dynamic->thisWeek;
$lang->action->periods['lastweek'] = $lang->action->dynamic->lastWeek;
$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['branch'] = '分支';
$lang->action->objectTypes['story'] = $lang->SRCommon;
@@ -107,7 +99,7 @@ $lang->action->objectTypes['design'] = '设计';
$lang->action->objectTypes['productplan'] = '计划';
$lang->action->objectTypes['release'] = '发布';
$lang->action->objectTypes['program'] = '项目集';
$lang->action->objectTypes['project'] = '项目';
$lang->action->objectTypes['project'] = $lang->projectCommon;
$lang->action->objectTypes['execution'] = '执行';
$lang->action->objectTypes['task'] = '任务';
$lang->action->objectTypes['build'] = '版本';
@@ -215,19 +207,19 @@ $lang->action->desc->resolved = '$date, 由 <strong>$actor</strong>
$lang->action->desc->managed = '$date, 由 <strong>$actor</strong> 维护。' . "\n";
$lang->action->desc->estimated = '$date, 由 <strong>$actor</strong> 估算。' . "\n";
$lang->action->desc->run = '$date, 由 <strong>$actor</strong> 执行。' . "\n";
$lang->action->desc->syncprogram = '$date, 由 <strong>$actor</strong> 启动(因项目开始而启动项目集)。' . "\n";
$lang->action->desc->syncproject = '$date, 系统判断由于' . $lang->executionCommon .'开始,将项目状态置为进行中。' . "\n";
$lang->action->desc->syncmultipleproject = '$date, 系统判断由于任务开始,将项目状态置为进行中。' . "\n";
$lang->action->desc->syncprogram = '$date, 由 <strong>$actor</strong> 启动(因' . $lang->projectCommon . '开始而启动项目集)。' . "\n";
$lang->action->desc->syncproject = '$date, 系统判断由于' . $lang->executionCommon .'开始,将' . $lang->projectCommon . '状态置为进行中。' . "\n";
$lang->action->desc->syncmultipleproject = '$date, 系统判断由于任务开始,将' . $lang->projectCommon . '状态置为进行中。' . "\n";
$lang->action->desc->syncexecution = '$date, 系统判断由于任务开始,将' . $lang->executionCommon . '状态置为进行中。' . "\n";
$lang->action->desc->syncexecutionbychild = '$date, 系统判断由于子阶段开始,将' . $lang->executionCommon . '状态置为进行中。' . "\n";
$lang->action->desc->importfromgitlab = '$date, 由 <strong>$actor</strong> 从Gitlab的Issue关联创建。' . "\n";
$lang->action->desc->archived = '$date, 由 <strong>$actor</strong> 归档。' . "\n";
$lang->action->desc->restore = '$date, 由 <strong>$actor</strong> 还原。' . "\n";
$lang->action->desc->importedcard = '$date, 由 <strong>$actor</strong> 从看板 <strong>$extra</strong> 导入。' . "\n";
$lang->action->desc->importedproductplan = '$date, 由 <strong>$actor</strong> 从产品计划 <strong>$extra</strong> 导入。' . "\n";
$lang->action->desc->importedrelease = '$date, 由 <strong>$actor</strong> 从产品发布 <strong>$extra</strong> 导入。' . "\n";
$lang->action->desc->importedexecution = '$date, 由 <strong>$actor</strong> 从项目执行 <strong>$extra</strong> 导入。' . "\n";
$lang->action->desc->importedbuild = '$date, 由 <strong>$actor</strong> 从项目版本 <strong>$extra</strong> 导入。' . "\n";
$lang->action->desc->importedproductplan = '$date, 由 <strong>$actor</strong> 从' . $lang->productCommon . '计划 <strong>$extra</strong> 导入。' . "\n";
$lang->action->desc->importedrelease = '$date, 由 <strong>$actor</strong> 从' . $lang->productCommon . '发布 <strong>$extra</strong> 导入。' . "\n";
$lang->action->desc->importedexecution = '$date, 由 <strong>$actor</strong> 从' . $lang->projectCommon . '执行 <strong>$extra</strong> 导入。' . "\n";
$lang->action->desc->importedbuild = '$date, 由 <strong>$actor</strong> 从' . $lang->projectCommon . '版本 <strong>$extra</strong> 导入。' . "\n";
$lang->action->desc->importedticket = '$date, 由 <strong>$actor</strong> 从反馈工单 <strong>$extra</strong> 导入。' . "\n";
$lang->action->desc->fromsonarqube = '$date, 由 <strong>$actor</strong> 从<strong>SonarQube问题</strong>转化而来。' . "\n";
$lang->action->desc->tolib = '$date, 由 <strong>$actor</strong> 导入。' . "\n";
@@ -243,9 +235,9 @@ $lang->action->desc->reboot = '$date, 由 <strong>$actor</strong>
$lang->action->desc->destroy = '$date, 由 <strong>$actor</strong> 关闭。' . "\n";
$lang->action->desc->boot = '$date, 由 <strong>$actor</strong> 启动。' . "\n";
$lang->action->desc->relieved = '$date, 由 <strong>$actor</strong> 解除孪生需求关系。' . "\n";
$lang->action->desc->switchtolight = '$date, 由于 <strong>'. $lang->admin->system .'</strong> 从全生命周期管理模式切换为轻量管理模式,项目访问控制由项目集内公开调整为私有。' . "\n";
$lang->action->desc->switchtolight = '$date, 由于 <strong>'. $lang->admin->system .'</strong> 从全生命周期管理模式切换为轻量管理模式,' . $lang->projectCommon . '访问控制由项目集内公开调整为私有。' . "\n";
$lang->action->desc->getvnc = '$date, <strong>$actor</strong>对执行节点 <strong>$extra</strong> 进行了远程操控。' . "\n";
$lang->action->desc->unlinkproduct = '$date, 系统判断由于' . $lang->executionCommon . '所属项目与$extra取消关联,同步将' . $lang->executionCommon . '与$extra取消关联。' . "\n";
$lang->action->desc->unlinkproduct = '$date, 系统判断由于' . $lang->executionCommon . '所属' . $lang->projectCommon . '与$extra取消关联,同步将' . $lang->executionCommon . '与$extra取消关联。' . "\n";
$lang->action->desc->createdsnapshot = '$date, <strong>$actor</strong> 创建了快照 <strong>$extra</strong>。' . "\n";
$lang->action->desc->restoredsnapshot = '$date, <strong>$actor</strong> 还原了快照 <strong>$extra</strong>。' . "\n";
$lang->action->desc->editsnapshot = '$date, <strong>$actor</strong> 编辑了快照 <strong>$extra</strong>。' . "\n";
@@ -321,8 +313,8 @@ $lang->action->label->marked = '编辑了';
$lang->action->label->linked2execution = "关联了{$lang->executionCommon}";
$lang->action->label->unlinkedfromexecution = "移除了{$lang->executionCommon}";
$lang->action->label->linked2kanban = '关联了看板';
$lang->action->label->linked2project = "关联了项目";
$lang->action->label->unlinkedfromproject = "移除了项目";
$lang->action->label->linked2project = "关联了{$lang->projectCommon}";
$lang->action->label->unlinkedfromproject = "移除了{$lang->projectCommon}";
$lang->action->label->unlinkedfrombuild = "移除了版本";
$lang->action->label->linked2release = "关联了发布";
$lang->action->label->unlinkedfromrelease = "移除了发布";
@@ -384,7 +376,7 @@ $lang->action->label->syncprogram = '开始了';
$lang->action->label->syncproject = '开始了';
$lang->action->label->syncexecution = '开始了';
$lang->action->label->syncexecutionbychild = '开始了';
$lang->action->label->startProgram = '(因项目开始而启动项目集)';
$lang->action->label->startProgram = "(因{$lang->projectCommon}开始而启动项目集)";
$lang->action->label->createmr = '合并请求关联了';
$lang->action->label->deletemr = '合并请求取消了';
$lang->action->label->mergedmr = '合并请求合并了';
@@ -430,8 +422,8 @@ $lang->action->label->synctwins = '同步修改了';
$lang->action->label->relieved = '解除了';
$lang->action->label->switchtolight = '从全生命周期管理模式切换为轻量管理模式';
$lang->action->label->linkedrepo = '关联代码库到';
$lang->action->label->unlinkedrepo = '取消了项目与代码库的关联';
$lang->action->label->unlinkproduct = '取消了与产品的关联';
$lang->action->label->unlinkedrepo = "取消了{$lang->projectCommon}与代码库的关联";
$lang->action->label->unlinkproduct = "取消了与{$lang->productCommon}的关联";
$lang->action->label->createdsnapshot = '创建了快照';
$lang->action->label->restoredsnapshot = '还原了快照';
$lang->action->label->editsnapshot = '编辑了快照';
@@ -455,12 +447,12 @@ $lang->action->dynamicAction->program['activated'] = '激活项目集';
$lang->action->dynamicAction->program['deleted'] = '删除项目集';
$lang->action->dynamicAction->program['closed'] = '关闭项目集';
$lang->action->dynamicAction->project['opened'] = '创建项目';
$lang->action->dynamicAction->project['edited'] = '编辑项目';
$lang->action->dynamicAction->project['started'] = '开始项目';
$lang->action->dynamicAction->project['suspended'] = '延期项目';
$lang->action->dynamicAction->project['activated'] = '激活项目';
$lang->action->dynamicAction->project['closed'] = '关闭项目';
$lang->action->dynamicAction->project['opened'] = "创建{$lang->projectCommon}";
$lang->action->dynamicAction->project['edited'] = "编辑{$lang->projectCommon}";
$lang->action->dynamicAction->project['started'] = "开始{$lang->projectCommon}";
$lang->action->dynamicAction->project['suspended'] = "延期{$lang->projectCommon}";
$lang->action->dynamicAction->project['activated'] = "激活{$lang->projectCommon}";
$lang->action->dynamicAction->project['closed'] = "关闭{$lang->projectCommon}";
$lang->action->dynamicAction->project['switchtolight'] = '切换模式';
$lang->action->dynamicAction->product['opened'] = '创建' . $lang->productCommon;
@@ -512,7 +504,7 @@ $lang->action->dynamicAction->story['linked2revision'] = "{$lang->SRCommon
$lang->action->dynamicAction->story['unlinkedfromrevision'] = "{$lang->SRCommon}取消关联代码提交";
$lang->action->dynamicAction->story['linked2build'] = "{$lang->SRCommon}关联版本";
$lang->action->dynamicAction->story['unlinkedfrombuild'] = "版本移除{$lang->SRCommon}";
$lang->action->dynamicAction->story['unlinkedfromproject'] = '移除项目';
$lang->action->dynamicAction->story['unlinkedfromproject'] = "移除{$lang->projectCommon}";
$lang->action->dynamicAction->story['undeleted'] = "还原{$lang->SRCommon}";
$lang->action->dynamicAction->story['hidden'] = "隐藏{$lang->SRCommon}";
$lang->action->dynamicAction->story['linked2execution'] = "关联$lang->SRCommon";
@@ -739,7 +731,7 @@ $lang->action->label->productplan = "计划|productplan|view|productID=%s";
$lang->action->label->release = '发布|release|view|productID=%s';
$lang->action->label->story = "{$lang->SRCommon}|story|view|storyID=%s";
$lang->action->label->program = "项目集|program|product|programID=%s";
$lang->action->label->project = "项目|project|index|projectID=%s";
$lang->action->label->project = "{$lang->projectCommon}|project|index|projectID=%s";
$lang->action->label->execution = "执行|execution|task|executionID=%s";
$lang->action->label->task = '任务|task|view|taskID=%s';
@@ -780,7 +772,7 @@ $lang->action->search = new stdclass();
$lang->action->search->objectTypeList[''] = '';
$lang->action->search->objectTypeList['product'] = $lang->productCommon;
$lang->action->search->objectTypeList['program'] = '项目集';
$lang->action->search->objectTypeList['project'] = '项目';
$lang->action->search->objectTypeList['project'] = $lang->projectCommon;
$lang->action->search->objectTypeList['execution'] = '执行';
$lang->action->search->objectTypeList['bug'] = 'Bug';
$lang->action->search->objectTypeList['case'] = '用例';
@@ -919,8 +911,8 @@ $lang->action->apiTitle->marked = '编辑';
$lang->action->apiTitle->linked2execution = "关联{$lang->executionCommon}";
$lang->action->apiTitle->unlinkedfromexecution = "移除{$lang->executionCommon}";
$lang->action->apiTitle->linked2kanban = '关联看板';
$lang->action->apiTitle->linked2project = "关联项目";
$lang->action->apiTitle->unlinkedfromproject = "移除项目";
$lang->action->apiTitle->linked2project = "关联{$lang->projectCommon}";
$lang->action->apiTitle->unlinkedfromproject = "移除{$lang->projectCommon}";
$lang->action->apiTitle->unlinkedfrombuild = "移除版本";
$lang->action->apiTitle->linked2release = "关联发布";
$lang->action->apiTitle->unlinkedfromrelease = "移除发布";
@@ -959,4 +951,4 @@ $lang->action->desc->mergedmr = '$date, 由 <strong>$actor</
$lang->action->desc->approve = '$date, 由 <strong>$actor</strong> 审核通过。';
$lang->action->desc->reject = '$date, 由 <strong>$actor</strong> 拒绝。';
$lang->action->desc->linkedrepo = '$date, 由 <strong>$actor</strong> 关联代码库 $extra';
$lang->action->desc->unlinkedrepo = '$date, 由 <strong>$actor</strong> 取消了项目与代码库 $extra 的关联';
$lang->action->desc->unlinkedrepo = '$date, 由 <strong>$actor</strong> 取消了' . $lang->projectCommon . '与代码库 $extra 的关联';
+13 -3
View File
@@ -482,9 +482,19 @@ class actionModel extends model
if($name) $action->extra = common::hasPriv('testtask', 'view') ? html::a(helper::createLink('testtask', 'view', "taskID=$action->extra"), $name) : $name;
}
elseif(strpos('feedback,ticket', $action->objectType) === false and $actionName == 'tostory')
{
$title = $this->dao->select('title')->from(TABLE_STORY)->where('id')->eq($action->extra)->fetch('title');
if($title) $action->extra = common::hasPriv('story', 'view') ? html::a(helper::createLink('story', 'view', "storyID=$action->extra"), "#$action->extra " . $title) : "#$action->extra " . $title;
{
$productShadow = $this->dao->select('*')->from(TABLE_PRODUCT)->where('id')->in($action->product)->fetch('shadow');
$title = $this->dao->select('title')->from(TABLE_STORY)->where('id')->eq($action->extra)->fetch('title');
$defaultExtra = "#$action->extra ". $title;
if($productShadow === "1")
{
$projectID = $this->dao->select('project')->from(TABLE_PROJECTPRODUCT)->where('product')->in($action->product)->fetch('project');
if($title) $action->extra = common::hasPriv('projectstory', 'story') && $projectID ? html::a(helper::createLink('projectstory', 'story', "projectID=$projectID"), $defaultExtra) : $defaultExtra;
}
else
{
if($title) $action->extra = common::hasPriv('story', 'view') ? html::a(helper::createLink('story', 'view', "storyID=$action->extra"), $defaultExtra) : $defaultExtra;
}
}
elseif($actionName == 'importedcard')
{
+1 -1
View File
@@ -14,7 +14,7 @@
<div id='mainMenu' class='clearfix'>
<div class='btn-toolbar pull-left'>
<?php $activeClass = $currentObjectType == 'all' ? 'btn-active-text' : '';?>
<?php echo html::a($this->createLink('action', 'trash', "objectType=all&type=$type"), "<span class='text'>" . $lang->action->periods['all'] . "</span>", '', "class='btn btn-link $activeClass'");?>
<?php echo html::a($this->createLink('action', 'trash', "objectType=all&type=$type"), "<span class='text'>" . $lang->all . "</span>", '', "class='btn btn-link $activeClass'");?>
<?php
/* Output the objectType order by preferredTypeConfig. */
foreach($preferredTypeConfig as $objectType)
+2 -2
View File
@@ -10,11 +10,11 @@ if(!isset($config->safe->weak)) $config->safe->weak = '123456,password,12345,123
$config->admin->menuGroup['system'] = array('custom|mode', 'backup', 'cron', 'action|trash', 'admin|xuanxuan', 'setting|xuanxuan', 'admin|license', 'admin|checkweak', 'admin|resetpwdsetting', 'admin|safe', 'custom|timezone', 'search|buildindex', 'admin|tableengine', 'ldap', 'custom|libreoffice', 'conference', 'client');
$config->admin->menuGroup['company'] = array('dept', 'company', 'user', 'group', 'tutorial');
$config->admin->menuGroup['switch'] = array('admin|setmodule');
$config->admin->menuGroup['model'] = array('auditcl', 'stage', 'design', 'cmcl', 'reviewcl', 'custom|required', 'custom|set', 'custom|flow', 'custom|code', 'custom|estimate', 'custom|hours', 'subject', 'process', 'activity', 'zoutput', 'classify', 'holiday', 'reviewsetting');
$config->admin->menuGroup['model'] = array('auditcl', 'stage', 'design', 'cmcl', 'reviewcl', 'custom|required', 'custom|set', 'custom|flow', 'custom|code', 'custom|percent','custom|estimate', 'custom|hours', 'subject', 'process', 'activity', 'zoutput', 'classify', 'holiday', 'reviewsetting');
$config->admin->menuGroup['feature'] = array('custom|set', 'custom|product', 'custom|execution', 'custom|required', 'custom|kanban', 'approvalflow', 'measurement', 'meetingroom', 'custom|browsestoryconcept', 'custom|kanban', 'sqlbuilder', 'report');
$config->admin->menuGroup['template'] = array('custom|set', 'baseline');
$config->admin->menuGroup['message'] = array('mail', 'webhook', 'sms', 'message');
$config->admin->menuGroup['dev'] = array('dev', 'entry');
$config->admin->menuGroup['dev'] = array('dev', 'entry', 'editor');
$config->admin->menuGroup['extension'] = array('extension');
$config->admin->menuGroup['convert'] = array('convert');
+37 -8
View File
@@ -53,23 +53,52 @@ class admin extends control
$this->loadModel('misc');
$hasInternet = $this->admin->checkInternet();
$clientLang = $this->app->getClientLang();
$langNotCN = common::checkNotCN();
$dateUsed = $this->admin->genDateUsed();
$clientLang = $this->app->getClientLang();
$langNotCN = common::checkNotCN();
$dateUsed = $this->admin->genDateUsed();
$zentaoData = $this->admin->getZentaoData();
$hasInternet = $zentaoData->hasData;
$this->view->title = $this->lang->admin->common;
$this->view->position[] = $this->lang->admin->index;
$this->view->plugins = $this->admin->getExtensionsByAPI('plugin', $langNotCN ? 5 : 6, $hasInternet);
$this->view->patches = $this->admin->getExtensionsByAPI('patch', 5, $hasInternet);
$this->view->plugins = $zentaoData->plugins;
$this->view->patches = $zentaoData->patches;
$this->view->dateUsed = $dateUsed;
$this->view->hasInternet = $hasInternet;
$this->view->dynamics = ($hasInternet and !$langNotCN) ? $this->admin->getDynamicsByAPI(3) : array();
$this->view->publicClass = ($hasInternet and !$langNotCN) ? $this->admin->getPublicClassByAPI(3) : array();
$this->view->dynamics = $zentaoData->news;
$this->view->publicClass = $zentaoData->publicclass;
$this->view->langNotCN = $langNotCN;
$this->display();
}
/**
* Get zentao.net data by api.
*
* @access public
* @return void
*/
public function ajaxSetZentaoData()
{
$hasInternet = $this->admin->checkInternet();
if($hasInternet)
{
$nextWeek = date('Y-m-d', strtotime('-7 days'));
$zentaoData = $this->loadModel('block')->getZentaoData($nextWeek);
if(empty($zentaoData))
{
$this->admin->setExtensionsByAPI('plugin', 6);
$this->admin->setExtensionsByAPI('patch', 5);
$this->admin->setDynamicsByAPI(3);
$this->admin->setPublicClassByAPI(3);
}
}
return $this->send(array('result' => 'success'));
}
/**
* Ignore notice of register and bind.
*
+1
View File
@@ -85,6 +85,7 @@
/* css for without internet */
.main.without-internet {display: flex; flex-wrap: wrap;}
.main.without-internet > .plug.panel {flex: 1 1 60%; margin-bottom: unset; margin-right: 16px;}
.main.without-internet > .bottom {flex: 1 1 30%;}
.main.without-internet > .bottom > .official.panel {margin-right: unset;}
.main.without-internet > .bottom > .official.panel > .main-panel {flex-direction: row-reverse;}
+2
View File
@@ -10,4 +10,6 @@ $(function()
{
window.open($(this).data('link'));
});
if(!hasInternet) $.get(createLink('admin', 'ajaxSetZentaoData'));
});
+11 -7
View File
@@ -89,15 +89,17 @@ if(helper::hasFeature('waterfall') or helper::hasFeature('waterfallplus')) $lang
$lang->admin->menuList->model['tabMenu']['common']['build'] = array('link' => "{$lang->build->common}|custom|required|module=build", 'alias' => 'set', 'exclude' => 'custom');
$lang->admin->menuList->model['tabMenu']['common']['flow'] = array('link' => "{$lang->custom->flow}|custom|flow|", 'divider' => true);
$lang->admin->menuList->model['tabMenu']['common']['code'] = array('link' => "{$lang->code}|custom|code|");
$lang->admin->menuList->model['tabMenu']['common']['percent'] = array('link' => "{$lang->stage->percent}|custom|percent|");
$lang->admin->menuList->model['tabMenu']['common']['hours'] = array('link' => "{$lang->workingHour}|custom|hours|", 'subModule' => 'holiday', 'links' => array('holiday|browse|', 'custom|hours|'));
if(helper::hasFeature('waterfall')) $lang->admin->menuList->model['tabMenu']['waterfall']['stage'] = array('link' => "{$lang->stage->list}|stage|browse|", 'subModule' => 'stage', 'exclude' => 'stage-plusbrowse');
if(helper::hasFeature('waterfallplus')) $lang->admin->menuList->model['tabMenu']['waterfallplus']['stage'] = array('link' => "{$lang->stage->list}|stage|plusbrowse|", 'subModule' => 'stage', 'exclude' => 'stage-browse');
$lang->admin->menuList->model['tabMenu']['menuOrder']['common']['5'] = 'project';
if(helper::hasFeature('waterfall') or helper::hasFeature('waterfallplus')) $lang->admin->menuList->model['tabMenu']['menuOrder']['common']['7'] = 'stage';
$lang->admin->menuList->model['tabMenu']['menuOrder']['common']['10'] = 'build';
$lang->admin->menuList->model['tabMenu']['menuOrder']['common']['35'] = 'flow';
$lang->admin->menuList->model['tabMenu']['menuOrder']['common']['40'] = 'code';
$lang->admin->menuList->model['tabMenu']['menuOrder']['common']['43'] = 'percent';
$lang->admin->menuList->model['tabMenu']['menuOrder']['common']['45'] = 'hours';
if(helper::hasFeature('waterfall')) $lang->admin->menuList->model['tabMenu']['menuOrder']['waterfall']['5'] = 'stage';
if(helper::hasFeature('waterfallplus')) $lang->admin->menuList->model['tabMenu']['menuOrder']['waterfallplus']['5'] = 'stage';
@@ -163,15 +165,17 @@ $lang->admin->menuList->message['menuOrder']['10'] = 'webhook';
$lang->admin->menuList->message['menuOrder']['20'] = 'browser';
$lang->admin->menuList->message['menuOrder']['25'] = 'setting';
$lang->admin->menuList->dev['subMenu']['api'] = array('link' => "{$lang->api->doc}|dev|api|module=index");
$lang->admin->menuList->dev['subMenu']['db'] = array('link' => "{$lang->database}|dev|db|table=" . trim(TABLE_EFFORT, '`'));
$lang->admin->menuList->dev['subMenu']['editor'] = array('link' => "{$lang->editor}|dev|editor|");
$lang->admin->menuList->dev['subMenu']['entry'] = array('link' => "{$lang->admin->entry}|entry|browse|", 'subModule' => 'entry');
$lang->admin->menuList->dev['subMenu']['api'] = array('link' => "{$lang->api->doc}|dev|api|module=index");
$lang->admin->menuList->dev['subMenu']['db'] = array('link' => "{$lang->database}|dev|db|table=" . trim(TABLE_EFFORT, '`'));
$lang->admin->menuList->dev['subMenu']['langItem'] = array('link' => "{$lang->langItem}|dev|langitem|");
$lang->admin->menuList->dev['subMenu']['editor'] = array('link' => "{$lang->editor->common}|dev|editor|", 'subModule' => 'editor');
$lang->admin->menuList->dev['subMenu']['entry'] = array('link' => "{$lang->admin->entry}|entry|browse|", 'subModule' => 'entry');
$lang->admin->menuList->dev['menuOrder']['5'] = 'api';
$lang->admin->menuList->dev['menuOrder']['10'] = 'db';
$lang->admin->menuList->dev['menuOrder']['15'] = 'editor';
$lang->admin->menuList->dev['menuOrder']['20'] = 'entry';
$lang->admin->menuList->dev['menuOrder']['15'] = 'langItem';
$lang->admin->menuList->dev['menuOrder']['20'] = 'editor';
$lang->admin->menuList->dev['menuOrder']['25'] = 'entry';
if($config->edition != 'max')
{
+1 -1
View File
@@ -61,7 +61,7 @@ $lang->admin->info->account = "您的禅道社区账户为%s。";
$lang->admin->info->log = '超出存天数的日志会被删除,需要开启计划任务。';
$lang->admin->notice = new stdclass();
$lang->admin->notice->register = "可%s禅道社区 www.zentao.net, 及时获得禅道最新信息。";
$lang->admin->notice->register = "可%s禅道社区 www.zentao.net,及时获得禅道最新信息。";
$lang->admin->notice->ignore = "不再提示";
$lang->admin->notice->int = "『%s』应当是正整数。";
+96 -57
View File
@@ -333,6 +333,13 @@ class adminModel extends model
/* Check sub menu priv. */
foreach($subMenuList as $subMenuKey => $subMenu)
{
if($menuKey == 'message' and $subMenuKey == 'mail')
{
$this->loadModel('mail');
if(!$this->config->mail->turnon and !$this->session->mailConfig) $subMenu['link'] = $this->lang->mail->common . '|mail|detect|';
}
if($menuKey == 'dev' and $subMenuKey == 'editor' and !empty($this->config->global->editor)) $subMenu['link'] = $this->lang->editor->common . '|editor|index|';
$link = array();
if(isset($menu['tabMenu'][$subMenuKey]))
{
@@ -362,12 +369,6 @@ class adminModel extends model
}
else
{
if($menuKey == 'message' and $subMenuKey == 'mail')
{
$this->loadModel('mail');
if(!$this->config->mail->turnon and !$this->session->mailConfig) $subMenu['link'] = $this->lang->mail->common . '|mail|detect|';
}
$link = $this->getHasPrivLink($subMenu);
}
@@ -506,7 +507,7 @@ class adminModel extends model
}
/**
* Get extensions from zentao.net.
* Set extensions from zentao.net.
*
* @param string $type plugin|patch
* @param int $limit
@@ -514,41 +515,22 @@ class adminModel extends model
* @access public
* @return array
*/
public function getExtensionsByAPI($type = 'plugin', $limit = 6, $hasInternet = true)
public function setExtensionsByAPI($type = 'plugin', $limit = 5)
{
if($hasInternet)
$searchType = $type == 'plugin' ? 'byModule,offcial' : 'byModule';
$param = $type == 'plugin' ? '' : 'MTIxOA==';
$extensions = $this->loadModel('extension')->getExtensionsByAPI($searchType, $param, 0, $limit);
$extensions = isset($extensions->extensions) ? (array)$extensions->extensions : array();
$plugins = array();
foreach($extensions as $extension)
{
$searchType = $type == 'plugin' ? 'byUpdatedTime,offcial' : 'byModule';
$param = $type == 'plugin' ? '' : 'MTIxOA==';
$extensions = $this->loadModel('extension')->getExtensionsByAPI($searchType, $param, 0, $limit);
$plugins = isset($extensions->extensions) ? (array)$extensions->extensions : array();
foreach($plugins as $id => $plugin)
{
$plugin->viewLink = str_replace(array('info', 'client'), '', $plugin->viewLink);
if($type == 'patch' and !isset($plugin->compatibleRelease)) unset($plugins[$id]);
}
}
else
{
if($this->config->edition == 'open')
{
$plugins = array(
$this->config->admin->plugins[27],
$this->config->admin->plugins[26],
$this->config->admin->plugins[30]
);
}
else
{
$plugins = array(
$this->config->admin->plugins[198],
$this->config->admin->plugins[194],
$this->config->admin->plugins[203]
);
}
if($type == 'patch' and !isset($extension->compatibleRelease)) continue;
$extension->viewLink = str_replace(array('info', 'client'), '', $extension->viewLink);
$plugins[] = $extension;
}
return $plugins;
return $this->loadModel('block')->setZentaoData($type, $plugins);
}
/**
@@ -572,13 +554,13 @@ class adminModel extends model
}
/**
* Get public class from zentao.net.
* Set public class from zentao.net.
*
* @param int $limit
* @access public
* @return array
* @return void
*/
public function getPublicClassByAPI($limit = 2)
public function setPublicClassByAPI($limit = 3)
{
$apiURL = $this->config->admin->videoAPIURL;
$data = $this->fetchAPI($apiURL);
@@ -596,24 +578,25 @@ class adminModel extends model
$publicClass[$index]->viewLink = $this->config->admin->apiRoot . '/publicclass/' . ($course->alias ? "{$course->alias}-" : '') . "{$course->id}.html";
$index ++;
}
return $publicClass;
return $this->loadModel('block')->setZentaoData('publicclass', $publicClass);
}
/**
* Get dynamics by API.
* Set dynamics by API.
*
* @param int $limit
* @access public
* @return array
* @return void
*/
public function getDynamicsByAPI($limit = 2)
public function setDynamicsByAPI($limit = 2)
{
$apiURL = $this->config->admin->downloadAPIURL;
$data = $this->fetchAPI($apiURL);
$articles = $data->articles;
$index = 1;
$downloads = array();
$index = 1;
$news = array();
foreach($articles as $article)
{
if($index > $limit) break;
@@ -622,14 +605,15 @@ class adminModel extends model
if(!isset($this->lang->admin->$tagKey)) break;
if(!preg_match("/{$this->lang->admin->$tagKey}\d/", $article->title)) continue;
$downloads[$index] = new stdClass();
$downloads[$index]->id = $article->id;
$downloads[$index]->title = $article->title;
$downloads[$index]->addedDate = $article->addedDate;
$downloads[$index]->link = $this->config->admin->apiRoot . "/download/{$article->alias}-{$article->id}.html";
$news[$index] = new stdClass();
$news[$index]->id = $article->id;
$news[$index]->title = $article->title;
$news[$index]->addedDate = $article->addedDate;
$news[$index]->link = $this->config->admin->apiRoot . "/download/{$article->alias}-{$article->id}.html";
$index ++;
}
return $downloads;
return $this->loadModel('block')->setZentaoData('news', $news);
}
/**
@@ -640,17 +624,18 @@ class adminModel extends model
*/
public function checkInternet()
{
$curl = curl_init();
$timeout = 3;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $this->config->admin->apiSite);
curl_setopt($curl, CURLOPT_TIMEOUT_MS, 1000);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT_MS, 1000);
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
$connected = curl_exec($curl);
curl_close($curl);
return (bool)$connected;
return $connected ? true : false;
}
/**
@@ -670,4 +655,58 @@ class adminModel extends model
return helper::getDateInterval($firstUseDate);
}
/**
* Get zentao.net data.
*
* @access public
* @return object
*/
public function getZentaoData()
{
$zentaoData = $this->loadModel('block')->getZentaoData();
$data = new stdclass();
$data->hasData = true;
$news = array();
$publicclass = array();
$plugins = array();
$patches = array();
if(empty($zentaoData))
{
$data->hasData = false;
if($this->config->edition == 'open')
{
$plugins = array(
$this->config->admin->plugins[27],
$this->config->admin->plugins[26],
$this->config->admin->plugins[30]
);
}
else
{
$plugins = array(
$this->config->admin->plugins[198],
$this->config->admin->plugins[194],
$this->config->admin->plugins[203]
);
}
}
else
{
$news = json_decode($zentaoData['news']);
$publicclass = json_decode($zentaoData['publicclass']);
$plugins = json_decode($zentaoData['plugin']);
$patches = json_decode($zentaoData['patch']);
if(common::checkNotCN()) array_pop($plugins);
}
$data->news = $news;
$data->publicclass = $publicclass;
$data->plugins = $plugins;
$data->patches = $patches;
return $data;
}
}
+1 -1
View File
@@ -26,7 +26,7 @@
<img src="static/svg/admin-<?php echo $menuKey;?>.svg"/>
<?php echo $menu['name'];?>
</div>
<?php echo html::a($config->admin->helpURL[$menuKey], "<i class='icon icon-help'></i> ", '_blank', 'class="text-muted setting-help"');?>
<?php echo html::a($config->admin->helpURL[$menuKey], "<i title='{$lang->help}' class='icon icon-help'></i> ", '_blank', 'class="text-muted setting-help"');?>
</h4>
<p class="text-muted setting-desc" title="<?php echo $menu['desc'];?>"><?php echo $menu['desc'];?></p>
</button>
-1
View File
@@ -41,7 +41,6 @@ var app = new Vue({
},
methods: {
changeAttr(val) {
// console.log('更新之前', JSON.stringify(val))
this.body = val;
},
changeType(val) {
-1
View File
@@ -58,7 +58,6 @@ var app = new Vue({
},
methods: {
changeAttr(val) {
// console.log('新的值', JSON.stringify(val))
this.body = val
},
changeType(val) {
+35 -35
View File
@@ -76,7 +76,7 @@ $lang->block->consumedHours = 'Cost';
$lang->block->time = 'No';
$lang->block->week = 'Week';
$lang->block->month = 'Month';
$lang->block->selectProduct = 'Product selection';
$lang->block->selectProduct = "{$lang->productCommon} selection";
$lang->block->of = ' von ';
$lang->block->remain = 'Left';
$lang->block->allStories = 'All';
@@ -114,10 +114,10 @@ $lang->block->left = 'Remain';
$lang->block->titleList['flowchart'] = 'Flow Chart';
$lang->block->titleList['guide'] = 'Guides';
$lang->block->titleList['statistic'] = 'Statistic';
$lang->block->titleList['recentproject'] = 'Recent Project';
$lang->block->titleList['recentproject'] = "Recent {$lang->projectCommon}";
$lang->block->titleList['assigntome'] = 'Assign to me';
$lang->block->titleList['projectteam'] = 'Project manpower input';
$lang->block->titleList['project'] = 'Project List';
$lang->block->titleList['projectteam'] = "{$lang->projectCommon} manpower input";
$lang->block->titleList['project'] = "{$lang->projectCommon} List";
$lang->block->titleList['dynamic'] = 'Dynamic';
$lang->block->titleList['list'] = 'Todo List';
$lang->block->titleList['contribute'] = 'Contribute';
@@ -125,7 +125,7 @@ $lang->block->titleList['scrumoverview'] = 'Scrumoverview';
$lang->block->titleList['scrumtest'] = 'Scrum Test';
$lang->block->titleList['scrumlist'] = 'Scrum List';
$lang->block->titleList['sprint'] = 'Sprint';
$lang->block->titleList['projectdynamic'] = 'Project Dynamic';
$lang->block->titleList['projectdynamic'] = "{$lang->projectCommon} Dynamic";
$lang->block->titleList['bug'] = 'Bug';
$lang->block->titleList['case'] = 'Case';
$lang->block->titleList['testtask'] = 'Test Task';
@@ -142,7 +142,7 @@ $lang->block->default['waterfall']['project']['6']['source'] = 'project';
$lang->block->default['waterfallplus'] = $lang->block->default['waterfall'];
$lang->block->default['scrum']['project']['1']['title'] = 'Project Overall';
$lang->block->default['scrum']['project']['1']['title'] = $lang->projectCommon . ' Overall';
$lang->block->default['scrum']['project']['1']['block'] = 'scrumoverview';
$lang->block->default['scrum']['project']['1']['grid'] = 8;
@@ -288,7 +288,7 @@ $lang->block->default['full']['my']['4']['grid'] = 4;
$lang->block->default['full']['my']['4']['source'] = 'todo';
$lang->block->default['full']['my']['4']['params']['count'] = '20';
$lang->block->default['full']['my']['5']['title'] = 'Project Statistic';
$lang->block->default['full']['my']['5']['title'] = "{$lang->projectCommon} Statistic";
$lang->block->default['full']['my']['5']['block'] = 'statistic';
$lang->block->default['full']['my']['5']['source'] = 'project';
$lang->block->default['full']['my']['5']['grid'] = 8;
@@ -299,8 +299,8 @@ $lang->block->default['full']['my']['6']['block'] = 'contribute';
$lang->block->default['full']['my']['6']['source'] = '';
$lang->block->default['full']['my']['6']['grid'] = 4;
$lang->block->default['full']['my']['7']['title'] = 'Recent Project';
$lang->block->default['full']['my']['7']['block'] = 'recentproject';
$lang->block->default['full']['my']['7']['title'] = "Recent {$lang->projectCommon}s";
$lang->block->default['full']['my']['7']['block'] = "recent{$lang->projectCommon}";
$lang->block->default['full']['my']['7']['source'] = 'project';
$lang->block->default['full']['my']['7']['grid'] = 8;
@@ -324,8 +324,8 @@ $lang->block->default['full']['my']['9']['block'] = 'project';
$lang->block->default['full']['my']['9']['source'] = 'project';
$lang->block->default['full']['my']['9']['grid'] = 8;
$lang->block->default['full']['my']['10']['title'] = 'Project List';
$lang->block->default['full']['my']['10']['block'] = 'project';
$lang->block->default['full']['my']['10']['title'] = "{$lang->projectCommon} List";
$lang->block->default['full']['my']['10']['block'] = $lang->projectCommon;
$lang->block->default['full']['my']['10']['source'] = 'project';
$lang->block->default['full']['my']['10']['grid'] = 8;
@@ -356,21 +356,21 @@ $lang->block->availableBlocks->feedback = 'Feedbacks';
$lang->block->availableBlocks->ticket = 'Tickets';
$lang->block->moduleList['product'] = $lang->productCommon;
$lang->block->moduleList['project'] = 'Project';
$lang->block->moduleList['project'] = $lang->projectCommon;
$lang->block->moduleList['execution'] = $lang->execution->common;
$lang->block->moduleList['qa'] = 'QA';
$lang->block->moduleList['todo'] = 'Todos';
$lang->block->modules['project'] = new stdclass();
$lang->block->modules['project']->availableBlocks = new stdclass();
$lang->block->modules['project']->availableBlocks->project = 'Project List';
$lang->block->modules['project']->availableBlocks->recentproject = 'Recent Project';
$lang->block->modules['project']->availableBlocks->statistic = 'Project Statistic';
$lang->block->modules['project']->availableBlocks->projectteam = 'Project Human Input';
$lang->block->modules['project']->availableBlocks->project = "{$lang->projectCommon} List";
$lang->block->modules['project']->availableBlocks->recentproject = "Recent {$lang->projectCommon}";
$lang->block->modules['project']->availableBlocks->statistic = "{$lang->projectCommon} Statistic";
$lang->block->modules['project']->availableBlocks->projectteam = "{$lang->projectCommon} Manpower Input";
$lang->block->modules['scrum']['index'] = new stdclass();
$lang->block->modules['scrum']['index']->availableBlocks = new stdclass();
$lang->block->modules['scrum']['index']->availableBlocks->scrumoverview = 'Project Overview';
$lang->block->modules['scrum']['index']->availableBlocks->scrumoverview = "{$lang->projectCommon} Overview";
$lang->block->modules['scrum']['index']->availableBlocks->scrumlist = $lang->executionCommon . ' List';
$lang->block->modules['scrum']['index']->availableBlocks->sprint = $lang->executionCommon . ' Overview';
$lang->block->modules['scrum']['index']->availableBlocks->scrumtest = 'Test Version';
@@ -423,10 +423,10 @@ $lang->block->orderByList->product['status_asc'] = 'Status Aufsteigend';
$lang->block->orderByList->product['status_desc'] = 'Status Absteigend';
$lang->block->orderByList->project = array();
$lang->block->orderByList->project['id_asc'] = 'ID Aufsteigend';
$lang->block->orderByList->project['id_desc'] = 'ID Absteigend';
$lang->block->orderByList->project['status_asc'] = 'Status Aufsteigend';
$lang->block->orderByList->project['status_desc'] = 'Status Absteigend';
$lang->block->orderByList->project['id_asc'] = "{$lang->projectCommon} ID ASC";
$lang->block->orderByList->project['id_desc'] = "{$lang->projectCommon} ID DESC";
$lang->block->orderByList->project['status_asc'] = "{$lang->projectCommon} Status ASC";
$lang->block->orderByList->project['status_desc'] = "{$lang->projectCommon} Status DESC";
$lang->block->orderByList->execution = array();
$lang->block->orderByList->execution['id_asc'] = 'ID Aufsteigend';
@@ -529,18 +529,18 @@ $lang->block->typeList->testtask['done'] = 'Erledigt';
$lang->block->typeList->testtask['all'] = 'Alle';
$lang->block->modules['project']->moreLinkList = new stdclass();
$lang->block->modules['project']->moreLinkList->recentproject = 'project|browse|';
$lang->block->modules['project']->moreLinkList->statistic = 'project|browse|';
$lang->block->modules['project']->moreLinkList->project = 'project|browse|';
$lang->block->modules['project']->moreLinkList->recentproject = "project|browse|";
$lang->block->modules['project']->moreLinkList->statistic = "project|browse|";
$lang->block->modules['project']->moreLinkList->project = "project|browse|";
$lang->block->modules['project']->moreLinkList->cmmireport = 'weekly|index|';
$lang->block->modules['project']->moreLinkList->cmmiestimate = 'workestimation|index|';
$lang->block->modules['project']->moreLinkList->cmmiissue = 'issue|browse|';
$lang->block->modules['project']->moreLinkList->cmmirisk = 'risk|browse|';
$lang->block->modules['project']->moreLinkList->scrumlist = 'project|execution|';
$lang->block->modules['project']->moreLinkList->scrumlist = "project|execution|";
$lang->block->modules['project']->moreLinkList->scrumtest = 'testtask|browse|';
$lang->block->modules['project']->moreLinkList->scrumproduct = 'product|all|';
$lang->block->modules['project']->moreLinkList->sprint = 'project|execution|';
$lang->block->modules['project']->moreLinkList->projectdynamic = 'project|dynamic|';
$lang->block->modules['project']->moreLinkList->sprint = "project|execution|";
$lang->block->modules['project']->moreLinkList->projectdynamic = "project|dynamic|";
$lang->block->modules['product']->moreLinkList = new stdclass();
$lang->block->modules['product']->moreLinkList->list = 'product|all|';
@@ -572,9 +572,9 @@ $lang->block->gridOptions[4] = 'Rechts';
$lang->block->flowchart = array();
$lang->block->flowchart['admin'] = array('Administrator', 'Add Departments', 'Benutzer erstellen', 'Rechte pflegen');
if($config->systemMode == 'ALM') $lang->block->flowchart['program'] = array('Program Owner', 'Create Program', 'Link Product', "Create Project", "Budgeting and planning", 'Add Stakeholder');
if($config->systemMode == 'ALM') $lang->block->flowchart['program'] = array('Program Owner', 'Create Program', "Link {$lang->productCommon}", "Create {$lang->projectCommon}", "Budgeting and planning", 'Add Stakeholder');
$lang->block->flowchart['product'] = array($lang->productCommon . ' Besitzer', $lang->productCommon . ' erstellen', 'Module pflegen', 'Pläne pflegen', 'Storys pflegen', 'Release erstellen');
$lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->execution->common . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
$lang->block->flowchart['project'] = array('Project Manager', "Add {$lang->productCommon}s and " . $lang->execution->common . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
$lang->block->flowchart['dev'] = array('Entwickler', 'Aufgabe/Bugs anfordern', 'Update Status', 'Aufgaben/Bugs abschließen');
$lang->block->flowchart['tester'] = array('QS Team', 'Fälle erstellen', 'Fälle ausführen', 'Bug Berichte', 'Bugs überprüfen', 'Bugs schließen');
@@ -587,8 +587,8 @@ $lang->block->zentaoapp->allStorySum = 'Total Stories';
$lang->block->zentaoapp->storyCompleteRate = 'Story CompleteRate';
$lang->block->zentaoapp->latestExecution = 'Latest Execution';
$lang->block->zentaoapp->involvedExecution = 'Involved Execution';
$lang->block->zentaoapp->mangedProduct = 'Manged Product';
$lang->block->zentaoapp->involvedProject = 'Involved Project';
$lang->block->zentaoapp->mangedProduct = "Manged {$lang->productCommon}";
$lang->block->zentaoapp->involvedProject = "Involved {$lang->projectCommon}";
$lang->block->zentaoapp->customIndexCard = 'Custom Index Cards';
$lang->block->zentaoapp->createStory = 'Story Create';
$lang->block->zentaoapp->createEffort = 'Effort Create';
@@ -599,7 +599,7 @@ $lang->block->zentaoapp->notSupportKanban = 'The mobile terminal does not su
$lang->block->zentaoapp->notSupportVersion = 'This version of ZenTao is not currently supported on the mobile terminal';
$lang->block->zentaoapp->incompatibleVersion = 'The current version of ZenTao is lower, please upgrade to the latest version and try again';
$lang->block->zentaoapp->canNotGetVersion = 'Failed to get ZenTao version, please confirm if the URL is correct';
$lang->block->zentaoapp->desc = 'ZenTao mobile app provides you with a mobile work environment, which is convenient for managing personal to-do tasks at any time, tracking project progress, and enhancing the flexibility and agility of project management.';
$lang->block->zentaoapp->desc = "ZenTao mobile app provides you with a mobile work environment, which is convenient for managing personal to-do tasks at any time, tracking {$lang->projectCommon} progress, and enhancing the flexibility and agility of {$lang->projectCommon} management.";
$lang->block->zentaoapp->downloadTip = 'Scan QR code to download';
$lang->block->zentaoclient = new stdClass();
@@ -632,11 +632,11 @@ $lang->block->visionTitle = 'The user interface of ZenTao is divided
$lang->block->visions['rnd'] = new stdclass();
$lang->block->visions['rnd']->key = 'rnd';
$lang->block->visions['rnd']->title = 'Full feature interface';
$lang->block->visions['rnd']->text = 'Integrate the program, product, project, execution, test, etc., and provide the lifecycle project management solution.';
$lang->block->visions['rnd']->text = "Integrate the program, {$lang->productCommon}, {$lang->projectCommon}, execution, test, etc., and provide the lifecycle {$lang->projectCommon} management solution.";
$lang->block->visions['lite'] = new stdclass();
$lang->block->visions['lite']->key = 'lite';
$lang->block->visions['lite']->title = 'Operation Management Interface';
$lang->block->visions['lite']->text = 'Specially designed for Non-R&D teams, and based on the visual Kanban project management model.';
$lang->block->visions['lite']->text = "Specially designed for Non-R&D teams, and based on the visual Kanban {$lang->projectCommon} management model.";
$lang->block->customModes['light'] = 'Light Mode';
$lang->block->customModes['ALM'] = 'ALM Mode';
@@ -644,4 +644,4 @@ $lang->block->customModes['ALM'] = 'ALM Mode';
$lang->block->customModeTip = new stdClass();
$lang->block->customModeTip->common = 'There are 2 running modes of ZenTao: Light Mode and ALM Mode.';
$lang->block->customModeTip->ALM = 'The concept is more complete and rigorous, and the function is more abundant. It is suitable for medium and large R&D teams.';
$lang->block->customModeTip->light = 'Provides the core function of project management, suitable for small R&D teams.';
$lang->block->customModeTip->light = "Provides the core function of {$lang->projectCommon} management, suitable for small R&D teams.";
+35 -35
View File
@@ -76,7 +76,7 @@ $lang->block->consumedHours = 'Cost';
$lang->block->time = 'No';
$lang->block->week = 'Week';
$lang->block->month = 'Month';
$lang->block->selectProduct = 'Product selection';
$lang->block->selectProduct = "{$lang->productCommon} selection";
$lang->block->of = ' of ';
$lang->block->remain = 'Left';
$lang->block->allStories = 'All';
@@ -114,10 +114,10 @@ $lang->block->left = 'Remain';
$lang->block->titleList['flowchart'] = 'Flow Chart';
$lang->block->titleList['guide'] = 'Guides';
$lang->block->titleList['statistic'] = 'Statistic';
$lang->block->titleList['recentproject'] = 'Recent Project';
$lang->block->titleList['recentproject'] = "Recent {$lang->projectCommon}";
$lang->block->titleList['assigntome'] = 'Assign to me';
$lang->block->titleList['projectteam'] = 'Project manpower input';
$lang->block->titleList['project'] = 'Project List';
$lang->block->titleList['projectteam'] = "{$lang->projectCommon} manpower input";
$lang->block->titleList['project'] = "{$lang->projectCommon} List";
$lang->block->titleList['dynamic'] = 'Dynamic';
$lang->block->titleList['list'] = 'Todo List';
$lang->block->titleList['contribute'] = 'Contribute';
@@ -125,7 +125,7 @@ $lang->block->titleList['scrumoverview'] = 'Scrumoverview';
$lang->block->titleList['scrumtest'] = 'Scrum Test';
$lang->block->titleList['scrumlist'] = 'Scrum List';
$lang->block->titleList['sprint'] = 'Sprint';
$lang->block->titleList['projectdynamic'] = 'Project Dynamic';
$lang->block->titleList['projectdynamic'] = "{$lang->projectCommon} Dynamic";
$lang->block->titleList['bug'] = 'Bug';
$lang->block->titleList['case'] = 'Case';
$lang->block->titleList['testtask'] = 'Test Task';
@@ -142,7 +142,7 @@ $lang->block->default['waterfall']['project']['6']['source'] = 'project';
$lang->block->default['waterfallplus'] = $lang->block->default['waterfall'];
$lang->block->default['scrum']['project']['1']['title'] = 'Project Overview';
$lang->block->default['scrum']['project']['1']['title'] = $lang->projectCommon . ' Overview';
$lang->block->default['scrum']['project']['1']['block'] = 'scrumoverview';
$lang->block->default['scrum']['project']['1']['grid'] = 8;
@@ -288,7 +288,7 @@ $lang->block->default['full']['my']['4']['grid'] = 4;
$lang->block->default['full']['my']['4']['source'] = 'todo';
$lang->block->default['full']['my']['4']['params']['count'] = '20';
$lang->block->default['full']['my']['5']['title'] = 'Project Statistic';
$lang->block->default['full']['my']['5']['title'] = "{$lang->projectCommon} Statistic";
$lang->block->default['full']['my']['5']['block'] = 'statistic';
$lang->block->default['full']['my']['5']['source'] = 'project';
$lang->block->default['full']['my']['5']['grid'] = 8;
@@ -299,8 +299,8 @@ $lang->block->default['full']['my']['6']['block'] = 'contribute';
$lang->block->default['full']['my']['6']['source'] = '';
$lang->block->default['full']['my']['6']['grid'] = 4;
$lang->block->default['full']['my']['7']['title'] = 'Recent Projects';
$lang->block->default['full']['my']['7']['block'] = 'recentproject';
$lang->block->default['full']['my']['7']['title'] = "Recent {$lang->projectCommon}s";
$lang->block->default['full']['my']['7']['block'] = "recent{$lang->projectCommon}";
$lang->block->default['full']['my']['7']['source'] = 'project';
$lang->block->default['full']['my']['7']['grid'] = 8;
@@ -324,8 +324,8 @@ $lang->block->default['full']['my']['9']['block'] = 'projectteam';
$lang->block->default['full']['my']['9']['source'] = 'project';
$lang->block->default['full']['my']['9']['grid'] = 8;
$lang->block->default['full']['my']['10']['title'] = 'Project List';
$lang->block->default['full']['my']['10']['block'] = 'project';
$lang->block->default['full']['my']['10']['title'] = "{$lang->projectCommon} List";
$lang->block->default['full']['my']['10']['block'] = $lang->projectCommon;
$lang->block->default['full']['my']['10']['source'] = 'project';
$lang->block->default['full']['my']['10']['grid'] = 8;
@@ -356,21 +356,21 @@ $lang->block->availableBlocks->feedback = 'Feedbacks';
$lang->block->availableBlocks->ticket = 'Tickets';
$lang->block->moduleList['product'] = $lang->productCommon;
$lang->block->moduleList['project'] = 'Project';
$lang->block->moduleList['project'] = $lang->projectCommon;
$lang->block->moduleList['execution'] = $lang->execution->common;
$lang->block->moduleList['qa'] = 'Test';
$lang->block->moduleList['todo'] = 'Todo';
$lang->block->modules['project'] = new stdclass();
$lang->block->modules['project']->availableBlocks = new stdclass();
$lang->block->modules['project']->availableBlocks->project = 'Project List';
$lang->block->modules['project']->availableBlocks->recentproject = 'Recent Project';
$lang->block->modules['project']->availableBlocks->statistic = 'Project Statistic';
$lang->block->modules['project']->availableBlocks->projectteam = 'Project Manpower Input';
$lang->block->modules['project']->availableBlocks->project = "{$lang->projectCommon} List";
$lang->block->modules['project']->availableBlocks->recentproject = "Recent {$lang->projectCommon}";
$lang->block->modules['project']->availableBlocks->statistic = "{$lang->projectCommon} Statistic";
$lang->block->modules['project']->availableBlocks->projectteam = "{$lang->projectCommon} Manpower Input";
$lang->block->modules['scrum']['index'] = new stdclass();
$lang->block->modules['scrum']['index']->availableBlocks = new stdclass();
$lang->block->modules['scrum']['index']->availableBlocks->scrumoverview = 'Project Overview';
$lang->block->modules['scrum']['index']->availableBlocks->scrumoverview = "{$lang->projectCommon} Overview";
$lang->block->modules['scrum']['index']->availableBlocks->scrumlist = $lang->executionCommon . ' List';
$lang->block->modules['scrum']['index']->availableBlocks->sprint = $lang->executionCommon . ' Overview';
$lang->block->modules['scrum']['index']->availableBlocks->scrumtest = 'Test Version';
@@ -423,10 +423,10 @@ $lang->block->orderByList->product['status_asc'] = 'Product Status ASC';
$lang->block->orderByList->product['status_desc'] = 'Product Status DESC';
$lang->block->orderByList->project = array();
$lang->block->orderByList->project['id_asc'] = 'Project ID ASC';
$lang->block->orderByList->project['id_desc'] = 'Project ID DESC';
$lang->block->orderByList->project['status_asc'] = 'Project Status ASC';
$lang->block->orderByList->project['status_desc'] = 'Project Status DESC';
$lang->block->orderByList->project['id_asc'] = "{$lang->projectCommon} ID ASC";
$lang->block->orderByList->project['id_desc'] = "{$lang->projectCommon} ID DESC";
$lang->block->orderByList->project['status_asc'] = "{$lang->projectCommon} Status ASC";
$lang->block->orderByList->project['status_desc'] = "{$lang->projectCommon} Status DESC";
$lang->block->orderByList->execution = array();
$lang->block->orderByList->execution['id_asc'] = 'Execution ID ASC';
@@ -529,18 +529,18 @@ $lang->block->typeList->testtask['done'] = 'Done';
$lang->block->typeList->testtask['all'] = 'All';
$lang->block->modules['project']->moreLinkList = new stdclass();
$lang->block->modules['project']->moreLinkList->recentproject = 'project|browse|';
$lang->block->modules['project']->moreLinkList->statistic = 'project|browse|';
$lang->block->modules['project']->moreLinkList->project = 'project|browse|';
$lang->block->modules['project']->moreLinkList->recentproject = "project|browse|";
$lang->block->modules['project']->moreLinkList->statistic = "project|browse|";
$lang->block->modules['project']->moreLinkList->project = "project|browse|";
$lang->block->modules['project']->moreLinkList->cmmireport = 'weekly|index|';
$lang->block->modules['project']->moreLinkList->cmmiestimate = 'workestimation|index|';
$lang->block->modules['project']->moreLinkList->cmmiissue = 'issue|browse|';
$lang->block->modules['project']->moreLinkList->cmmirisk = 'risk|browse|';
$lang->block->modules['project']->moreLinkList->scrumlist = 'project|execution|';
$lang->block->modules['project']->moreLinkList->scrumlist = "project|execution|";
$lang->block->modules['project']->moreLinkList->scrumtest = 'testtask|browse|';
$lang->block->modules['project']->moreLinkList->scrumproduct = 'product|all|';
$lang->block->modules['project']->moreLinkList->sprint = 'project|execution|';
$lang->block->modules['project']->moreLinkList->projectdynamic = 'project|dynamic|';
$lang->block->modules['project']->moreLinkList->sprint = "project|execution|";
$lang->block->modules['project']->moreLinkList->projectdynamic = "project|dynamic|";
$lang->block->modules['product']->moreLinkList = new stdclass();
$lang->block->modules['product']->moreLinkList->list = 'product|all|';
@@ -572,9 +572,9 @@ $lang->block->gridOptions[4] = 'Right';
$lang->block->flowchart = array();
$lang->block->flowchart['admin'] = array('Administrator', 'Add Departments', 'Add Users', 'Maintain Privileges');
if($config->systemMode == 'ALM') $lang->block->flowchart['program'] = array('Program Owner', 'Create Program', 'Link Product', "Create Project", "Budgeting and planning", 'Add Stakeholder');
if($config->systemMode == 'ALM') $lang->block->flowchart['program'] = array('Program Owner', 'Create Program', "Link {$lang->productCommon}", "Create {$lang->projectCommon}", "Budgeting and planning", 'Add Stakeholder');
$lang->block->flowchart['product'] = array($lang->productCommon . ' Owner', 'Add ' . $lang->productCommon, 'Maintain Modules', 'Maintain Plans', 'Maintain Stories', 'Create Releases');
$lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->execution->common . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
$lang->block->flowchart['project'] = array('Project Manager', "Add {$lang->productCommon}s and " . $lang->execution->common . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
$lang->block->flowchart['dev'] = array('Dev Team', 'Claim Tasks/Bugs', 'Design', 'Update Status', 'Finish Tasks/Bugs', 'Commit Code');
$lang->block->flowchart['tester'] = array('Test Team', 'Write Cases', 'Run Cases', 'Report Bugs', 'Verify Bugs', 'Close Bugs');
@@ -587,8 +587,8 @@ $lang->block->zentaoapp->allStorySum = 'Total Stories';
$lang->block->zentaoapp->storyCompleteRate = 'Story CompleteRate';
$lang->block->zentaoapp->latestExecution = 'Latest Execution';
$lang->block->zentaoapp->involvedExecution = 'Involved Execution';
$lang->block->zentaoapp->mangedProduct = 'Manged Product';
$lang->block->zentaoapp->involvedProject = 'Involved Project';
$lang->block->zentaoapp->mangedProduct = "Manged {$lang->productCommon}";
$lang->block->zentaoapp->involvedProject = "Involved {$lang->projectCommon}";
$lang->block->zentaoapp->customIndexCard = 'Custom Index Cards';
$lang->block->zentaoapp->createStory = 'Story Create';
$lang->block->zentaoapp->createEffort = 'Effort Create';
@@ -599,7 +599,7 @@ $lang->block->zentaoapp->notSupportKanban = 'The mobile terminal does not su
$lang->block->zentaoapp->notSupportVersion = 'This version of ZenTao is not currently supported on the mobile terminal';
$lang->block->zentaoapp->incompatibleVersion = 'The current version of ZenTao is lower, please upgrade to the latest version and try again';
$lang->block->zentaoapp->canNotGetVersion = 'Failed to get ZenTao version, please confirm if the URL is correct';
$lang->block->zentaoapp->desc = 'ZenTao mobile app provides you with a mobile work environment, which is convenient for managing personal to-do tasks at any time, tracking project progress, and enhancing the flexibility and agility of project management.';
$lang->block->zentaoapp->desc = "ZenTao mobile app provides you with a mobile work environment, which is convenient for managing personal to-do tasks at any time, tracking {$lang->projectCommon} progress, and enhancing the flexibility and agility of {$lang->projectCommon} management.";
$lang->block->zentaoapp->downloadTip = 'Scan QR code to download';
$lang->block->zentaoclient = new stdClass();
@@ -632,11 +632,11 @@ $lang->block->visionTitle = 'The user interface of ZenTao is divided
$lang->block->visions['rnd'] = new stdclass();
$lang->block->visions['rnd']->key = 'rnd';
$lang->block->visions['rnd']->title = 'Full feature interface';
$lang->block->visions['rnd']->text = 'Integrate the program, product, project, execution, test, etc., and provide the lifecycle project management solution.';
$lang->block->visions['rnd']->text = "Integrate the program, {$lang->productCommon}, {$lang->projectCommon}, execution, test, etc., and provide the lifecycle {$lang->projectCommon} management solution.";
$lang->block->visions['lite'] = new stdclass();
$lang->block->visions['lite']->key = 'lite';
$lang->block->visions['lite']->title = 'Operation Management Interface';
$lang->block->visions['lite']->text = 'Specially designed for Non-R&D teams, and based on the visual Kanban project management model.';
$lang->block->visions['lite']->text = "Specially designed for Non-R&D teams, and based on the visual Kanban {$lang->projectCommon} management model.";
$lang->block->customModes['light'] = 'Light Mode';
$lang->block->customModes['ALM'] = 'ALM Mode';
@@ -644,4 +644,4 @@ $lang->block->customModes['ALM'] = 'ALM Mode';
$lang->block->customModeTip = new stdClass();
$lang->block->customModeTip->common = 'There are 2 running modes of ZenTao: Light Mode and ALM Mode.';
$lang->block->customModeTip->ALM = 'The concept is more complete and rigorous, and the function is more abundant. It is suitable for medium and large R&D teams.';
$lang->block->customModeTip->light = 'Provides the core function of project management, suitable for small R&D teams.';
$lang->block->customModeTip->light = "Provides the core function of {$lang->projectCommon} management, suitable for small R&D teams.";
+38 -38
View File
@@ -76,7 +76,7 @@ $lang->block->consumedHours = 'Cost';
$lang->block->time = 'No';
$lang->block->week = 'Week';
$lang->block->month = 'Month';
$lang->block->selectProduct = 'Product selection';
$lang->block->selectProduct = "{$lang->productCommon} selection";
$lang->block->of = ' di ';
$lang->block->remain = 'Left';
$lang->block->allStories = 'All';
@@ -114,10 +114,10 @@ $lang->block->left = 'Remain';
$lang->block->titleList['flowchart'] = 'Flow Chart';
$lang->block->titleList['guide'] = 'Guides';
$lang->block->titleList['statistic'] = 'Statistic';
$lang->block->titleList['recentproject'] = 'Recent Project';
$lang->block->titleList['recentproject'] = "Recent {$lang->projectCommon}";
$lang->block->titleList['assigntome'] = 'Assign to me';
$lang->block->titleList['projectteam'] = 'Project manpower input';
$lang->block->titleList['project'] = 'Project List';
$lang->block->titleList['projectteam'] = "{$lang->projectCommon} manpower input";
$lang->block->titleList['project'] = "{$lang->projectCommon} List";
$lang->block->titleList['dynamic'] = 'Dynamic';
$lang->block->titleList['list'] = 'Todo List';
$lang->block->titleList['contribute'] = 'Contribute';
@@ -125,7 +125,7 @@ $lang->block->titleList['scrumoverview'] = 'Scrumoverview';
$lang->block->titleList['scrumtest'] = 'Scrum Test';
$lang->block->titleList['scrumlist'] = 'Scrum List';
$lang->block->titleList['sprint'] = 'Sprint';
$lang->block->titleList['projectdynamic'] = 'Project Dynamic';
$lang->block->titleList['projectdynamic'] = "{$lang->projectCommon} Dynamic";
$lang->block->titleList['bug'] = 'Bug';
$lang->block->titleList['case'] = 'Case';
$lang->block->titleList['testtask'] = 'Test Task';
@@ -136,13 +136,13 @@ $lang->block->default['waterfall']['project']['3']['source'] = 'project';
$lang->block->default['waterfall']['project']['3']['grid'] = 8;
$lang->block->default['waterfall']['project']['6']['title'] = 'Dynamic';
$lang->block->default['waterfall']['project']['6']['block'] = 'dynamic';
$lang->block->default['waterfall']['project']['6']['block'] = 'projectdynamic';
$lang->block->default['waterfall']['project']['6']['grid'] = 4;
$lang->block->default['waterfall']['project']['6']['source'] = '';
$lang->block->default['waterfall']['project']['6']['source'] = 'project';
$lang->block->default['waterfallplus'] = $lang->block->default['waterfall'];
$lang->block->default['scrum']['project']['1']['title'] = 'Project Overall';
$lang->block->default['scrum']['project']['1']['title'] = $lang->projectCommon . ' Overall';
$lang->block->default['scrum']['project']['1']['block'] = 'scrumoverview';
$lang->block->default['scrum']['project']['1']['grid'] = 8;
@@ -288,7 +288,7 @@ $lang->block->default['full']['my']['4']['grid'] = 4;
$lang->block->default['full']['my']['4']['source'] = 'todo';
$lang->block->default['full']['my']['4']['params']['count'] = '20';
$lang->block->default['full']['my']['5']['title'] = 'Project Statistic';
$lang->block->default['full']['my']['5']['title'] = "{$lang->projectCommon} Statistic";
$lang->block->default['full']['my']['5']['block'] = 'statistic';
$lang->block->default['full']['my']['5']['source'] = 'project';
$lang->block->default['full']['my']['5']['grid'] = 8;
@@ -299,9 +299,9 @@ $lang->block->default['full']['my']['6']['block'] = 'recentproject';
$lang->block->default['full']['my']['6']['source'] = 'project';
$lang->block->default['full']['my']['6']['grid'] = 8;
$lang->block->default['full']['my']['7']['title'] = 'Todo';
$lang->block->default['full']['my']['7']['block'] = 'assigntome';
$lang->block->default['full']['my']['7']['source'] = '';
$lang->block->default['full']['my']['7']['title'] = "Recent {$lang->projectCommon}s";
$lang->block->default['full']['my']['7']['block'] = "recent{$lang->projectCommon}";
$lang->block->default['full']['my']['7']['source'] = 'project';
$lang->block->default['full']['my']['7']['grid'] = 8;
$lang->block->default['full']['my']['8']['title'] = 'Human Input';
@@ -324,8 +324,8 @@ $lang->block->default['full']['my']['9']['block'] = 'project';
$lang->block->default['full']['my']['9']['source'] = 'project';
$lang->block->default['full']['my']['9']['grid'] = 8;
$lang->block->default['full']['my']['10']['title'] = 'Project List';
$lang->block->default['full']['my']['10']['block'] = 'project';
$lang->block->default['full']['my']['10']['title'] = "{$lang->projectCommon} List";
$lang->block->default['full']['my']['10']['block'] = $lang->projectCommon;
$lang->block->default['full']['my']['10']['source'] = 'project';
$lang->block->default['full']['my']['10']['grid'] = 8;
@@ -356,21 +356,21 @@ $lang->block->availableBlocks->feedback = 'Feedbacks';
$lang->block->availableBlocks->ticket = 'Tickets';
$lang->block->moduleList['product'] = $lang->productCommon;
$lang->block->moduleList['project'] = 'Project';
$lang->block->moduleList['project'] = $lang->projectCommon;
$lang->block->moduleList['execution'] = $lang->execution->common;
$lang->block->moduleList['qa'] = 'Test';
$lang->block->moduleList['todo'] = 'Todo';
$lang->block->modules['project'] = new stdclass();
$lang->block->modules['project']->availableBlocks = new stdclass();
$lang->block->modules['project']->availableBlocks->project = 'Project List';
$lang->block->modules['project']->availableBlocks->recentproject = 'Recent Projects';
$lang->block->modules['project']->availableBlocks->statistic = 'Project Statistic';
$lang->block->modules['project']->availableBlocks->projectteam = 'Project Human Input';
$lang->block->modules['project']->availableBlocks->project = "{$lang->projectCommon} List";
$lang->block->modules['project']->availableBlocks->recentproject = "Recent {$lang->projectCommon}";
$lang->block->modules['project']->availableBlocks->statistic = "{$lang->projectCommon} Statistic";
$lang->block->modules['project']->availableBlocks->projectteam = "{$lang->projectCommon} Manpower Input";
$lang->block->modules['scrum']['index'] = new stdclass();
$lang->block->modules['scrum']['index']->availableBlocks = new stdclass();
$lang->block->modules['scrum']['index']->availableBlocks->scrumoverview = 'Project Overview';
$lang->block->modules['scrum']['index']->availableBlocks->scrumoverview = "{$lang->projectCommon} Overview";
$lang->block->modules['scrum']['index']->availableBlocks->scrumlist = $lang->executionCommon . ' List';
$lang->block->modules['scrum']['index']->availableBlocks->sprint = $lang->executionCommon . ' Overview';
$lang->block->modules['scrum']['index']->availableBlocks->scrumtest = 'Test Version';
@@ -423,10 +423,10 @@ $lang->block->orderByList->product['status_asc'] = 'Tri par Statut ASC';
$lang->block->orderByList->product['status_desc'] = 'Tri par Statut DESC';
$lang->block->orderByList->project = array();
$lang->block->orderByList->project['id_asc'] = 'Tri par ID Projet ASC';
$lang->block->orderByList->project['id_desc'] = 'Tri par ID Projet DESC';
$lang->block->orderByList->project['status_asc'] = 'Tri par Statut ASC';
$lang->block->orderByList->project['status_desc'] = 'Tri par Statut DESC';
$lang->block->orderByList->project['id_asc'] = "{$lang->projectCommon} ID ASC";
$lang->block->orderByList->project['id_desc'] = "{$lang->projectCommon} ID DESC";
$lang->block->orderByList->project['status_asc'] = "{$lang->projectCommon} Status ASC";
$lang->block->orderByList->project['status_desc'] = "{$lang->projectCommon} Status DESC";
$lang->block->orderByList->execution = array();
$lang->block->orderByList->execution['id_asc'] = 'Tri par ID Execution ASC';
@@ -529,18 +529,18 @@ $lang->block->typeList->testtask['done'] = 'Jouées';
$lang->block->typeList->testtask['all'] = 'Toutes';
$lang->block->modules['project']->moreLinkList = new stdclass();
$lang->block->modules['project']->moreLinkList->recentproject = 'project|browse|';
$lang->block->modules['project']->moreLinkList->statistic = 'project|browse|';
$lang->block->modules['project']->moreLinkList->project = 'project|browse|';
$lang->block->modules['project']->moreLinkList->recentproject = "project|browse|";
$lang->block->modules['project']->moreLinkList->statistic = "project|browse|";
$lang->block->modules['project']->moreLinkList->project = "project|browse|";
$lang->block->modules['project']->moreLinkList->cmmireport = 'weekly|index|';
$lang->block->modules['project']->moreLinkList->cmmiestimate = 'workestimation|index|';
$lang->block->modules['project']->moreLinkList->cmmiissue = 'issue|browse|';
$lang->block->modules['project']->moreLinkList->cmmirisk = 'risk|browse|';
$lang->block->modules['project']->moreLinkList->scrumlist = 'project|execution|';
$lang->block->modules['project']->moreLinkList->scrumlist = "project|execution|";
$lang->block->modules['project']->moreLinkList->scrumtest = 'testtask|browse|';
$lang->block->modules['project']->moreLinkList->scrumproduct = 'product|all|';
$lang->block->modules['project']->moreLinkList->sprint = 'project|execution|';
$lang->block->modules['project']->moreLinkList->projectdynamic = 'project|dynamic|';
$lang->block->modules['project']->moreLinkList->sprint = "project|execution|";
$lang->block->modules['project']->moreLinkList->projectdynamic = "project|dynamic|";
$lang->block->modules['product']->moreLinkList = new stdclass();
$lang->block->modules['product']->moreLinkList->list = 'product|all|';
@@ -572,9 +572,9 @@ $lang->block->gridOptions[4] = 'Right';
$lang->block->flowchart = array();
$lang->block->flowchart['admin'] = array('Administrateur', 'Add Departments', 'Ajoute Utilisateurs', 'Administre Privilèges');
if($config->systemMode == 'ALM') $lang->block->flowchart['program'] = array('Program Owner', 'Create Program', 'Link Product', "Create Project", "Budgeting and planning", 'Add Stakeholder');
if($config->systemMode == 'ALM') $lang->block->flowchart['program'] = array('Program Owner', 'Create Program', "Link {$lang->productCommon}", "Create {$lang->projectCommon}", "Budgeting and planning", 'Add Stakeholder');
$lang->block->flowchart['product'] = array($lang->productCommon . ' Owner', 'Ajoute ' . $lang->productCommon . '/Modules', 'Ajoute ' . $lang->executionCommon . 's', 'Ajoute Stories', 'Maintient Plans', 'Crée Releases');
$lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->execution->common . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
$lang->block->flowchart['project'] = array('Project Manager', "Add {$lang->productCommon}s and " . $lang->execution->common . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
$lang->block->flowchart['dev'] = array('Développeurs', 'Réclament Tâches/Bugs', 'Effectuent Tâches', 'Corrigent Bugs', 'MàJ Statuts', 'Terminent Tâches/Bugs');
$lang->block->flowchart['tester'] = array('Testeurs', 'Rédigent CasTests', 'Jouent CasTests', 'Détectent Bugs', 'Vérifient Corrections', 'Ferment Bugs');
@@ -587,8 +587,8 @@ $lang->block->zentaoapp->allStorySum = 'Total Stories';
$lang->block->zentaoapp->storyCompleteRate = 'Story CompleteRate';
$lang->block->zentaoapp->latestExecution = 'Latest Execution';
$lang->block->zentaoapp->involvedExecution = 'Involved Execution';
$lang->block->zentaoapp->mangedProduct = 'Manged Product';
$lang->block->zentaoapp->involvedProject = 'Involved Project';
$lang->block->zentaoapp->mangedProduct = "Manged {$lang->productCommon}";
$lang->block->zentaoapp->involvedProject = "Involved {$lang->projectCommon}";
$lang->block->zentaoapp->customIndexCard = 'Custom Index Cards';
$lang->block->zentaoapp->createStory = 'Story Create';
$lang->block->zentaoapp->createEffort = 'Effort Create';
@@ -599,7 +599,7 @@ $lang->block->zentaoapp->notSupportKanban = 'The mobile terminal does not su
$lang->block->zentaoapp->notSupportVersion = 'This version of ZenTao is not currently supported on the mobile terminal';
$lang->block->zentaoapp->incompatibleVersion = 'The current version of ZenTao is lower, please upgrade to the latest version and try again';
$lang->block->zentaoapp->canNotGetVersion = 'Failed to get ZenTao version, please confirm if the URL is correct';
$lang->block->zentaoapp->desc = 'ZenTao mobile app provides you with a mobile work environment, which is convenient for managing personal to-do tasks at any time, tracking project progress, and enhancing the flexibility and agility of project management.';
$lang->block->zentaoapp->desc = "ZenTao mobile app provides you with a mobile work environment, which is convenient for managing personal to-do tasks at any time, tracking {$lang->projectCommon} progress, and enhancing the flexibility and agility of {$lang->projectCommon} management.";
$lang->block->zentaoapp->downloadTip = 'Scan QR code to download';
$lang->block->zentaoclient = new stdClass();
@@ -632,11 +632,11 @@ $lang->block->visionTitle = 'The user interface of ZenTao is divided
$lang->block->visions['rnd'] = new stdclass();
$lang->block->visions['rnd']->key = 'rnd';
$lang->block->visions['rnd']->title = 'Full feature interface';
$lang->block->visions['rnd']->text = 'Integrate the program, product, project, execution, test, etc., and provide the lifecycle project management solution.';
$lang->block->visions['rnd']->text = "Integrate the program, {$lang->productCommon}, {$lang->projectCommon}, execution, test, etc., and provide the lifecycle {$lang->projectCommon} management solution.";
$lang->block->visions['lite'] = new stdclass();
$lang->block->visions['lite']->key = 'lite';
$lang->block->visions['lite']->title = 'Operation Management Interface';
$lang->block->visions['lite']->text = 'Specially designed for Non-R&D teams, and based on the visual Kanban project management model.';
$lang->block->visions['lite']->text = "Specially designed for Non-R&D teams, and based on the visual Kanban {$lang->projectCommon} management model.";
$lang->block->customModes['light'] = 'Light Mode';
$lang->block->customModes['ALM'] = 'ALM Mode';
@@ -644,4 +644,4 @@ $lang->block->customModes['ALM'] = 'ALM Mode';
$lang->block->customModeTip = new stdClass();
$lang->block->customModeTip->common = 'There are 2 running modes of ZenTao: Light Mode and ALM Mode.';
$lang->block->customModeTip->ALM = 'The concept is more complete and rigorous, and the function is more abundant. It is suitable for medium and large R&D teams.';
$lang->block->customModeTip->light = 'Provides the core function of project management, suitable for small R&D teams.';
$lang->block->customModeTip->light = "Provides the core function of {$lang->projectCommon} management, suitable for small R&D teams.";
+27 -27
View File
@@ -76,7 +76,7 @@ $lang->block->consumedHours = '已消耗';
$lang->block->time = '第';
$lang->block->week = '周';
$lang->block->month = '月';
$lang->block->selectProduct = '选择产品';
$lang->block->selectProduct = "选择{$lang->productCommon}";
$lang->block->of = '的';
$lang->block->remain = '剩余工时';
$lang->block->allStories = '总需求';
@@ -113,15 +113,15 @@ $lang->block->left = '剩余';
$lang->block->titleList['flowchart'] = '流程图';
$lang->block->titleList['guide'] = '使用帮助';
$lang->block->titleList['statistic'] = '项目统计';
$lang->block->titleList['recentproject'] = '我近期参与的项目';
$lang->block->titleList['statistic'] = "{$lang->projectCommon}统计";
$lang->block->titleList['recentproject'] = "我近期参与的{$lang->projectCommon}";
$lang->block->titleList['assigntome'] = '待处理';
$lang->block->titleList['projectteam'] = '项目人力投入';
$lang->block->titleList['project'] = '项目列表';
$lang->block->titleList['projectteam'] = "{$lang->projectCommon}人力投入";
$lang->block->titleList['project'] = "{$lang->projectCommon}列表";
$lang->block->titleList['dynamic'] = '最新动态';
$lang->block->titleList['list'] = '我的待办';
$lang->block->titleList['contribute'] = '我的贡献';
$lang->block->titleList['scrumoverview'] = '项目概况';
$lang->block->titleList['scrumoverview'] = "{$lang->projectCommon}概况";
$lang->block->titleList['scrumtest'] = '待测版本';
$lang->block->titleList['scrumlist'] = '迭代列表';
$lang->block->titleList['sprint'] = '迭代总览';
@@ -130,7 +130,7 @@ $lang->block->titleList['bug'] = '指派给我的Bug';
$lang->block->titleList['case'] = '指派给我的用例';
$lang->block->titleList['testtask'] = '待测版本列表';
$lang->block->default['waterfall']['project']['3']['title'] = "项目计划";
$lang->block->default['waterfall']['project']['3']['title'] = "{$lang->projectCommon}计划";
$lang->block->default['waterfall']['project']['3']['block'] = 'waterfallgantt';
$lang->block->default['waterfall']['project']['3']['source'] = 'project';
$lang->block->default['waterfall']['project']['3']['grid'] = 8;
@@ -142,7 +142,7 @@ $lang->block->default['waterfall']['project']['6']['source'] = 'project';
$lang->block->default['waterfallplus'] = $lang->block->default['waterfall'];
$lang->block->default['scrum']['project']['1']['title'] = '项目概况';
$lang->block->default['scrum']['project']['1']['title'] = $lang->projectCommon . '概况';
$lang->block->default['scrum']['project']['1']['block'] = 'scrumoverview';
$lang->block->default['scrum']['project']['1']['grid'] = 8;
@@ -288,7 +288,7 @@ $lang->block->default['full']['my']['4']['grid'] = 4;
$lang->block->default['full']['my']['4']['source'] = 'todo';
$lang->block->default['full']['my']['4']['params']['count'] = '20';
$lang->block->default['full']['my']['5']['title'] = '项目统计';
$lang->block->default['full']['my']['5']['title'] = "{$lang->projectCommon}统计";
$lang->block->default['full']['my']['5']['block'] = 'statistic';
$lang->block->default['full']['my']['5']['source'] = 'project';
$lang->block->default['full']['my']['5']['grid'] = 8;
@@ -299,7 +299,7 @@ $lang->block->default['full']['my']['6']['block'] = 'contribute';
$lang->block->default['full']['my']['6']['source'] = '';
$lang->block->default['full']['my']['6']['grid'] = 4;
$lang->block->default['full']['my']['7']['title'] = '我近期参与的项目';
$lang->block->default['full']['my']['7']['title'] = "我近期参与的{$lang->projectCommon}";
$lang->block->default['full']['my']['7']['block'] = 'recentproject';
$lang->block->default['full']['my']['7']['source'] = 'project';
$lang->block->default['full']['my']['7']['grid'] = 8;
@@ -319,12 +319,12 @@ $lang->block->default['full']['my']['8']['params']['reviewCount'] = '20';
$lang->block->default['full']['my']['8']['params']['meetingCount'] = '20';
$lang->block->default['full']['my']['8']['params']['feedbackCount'] = '20';
$lang->block->default['full']['my']['9']['title'] = '项目人力投入';
$lang->block->default['full']['my']['9']['title'] = "{$lang->projectCommon}人力投入";
$lang->block->default['full']['my']['9']['block'] = 'projectteam';
$lang->block->default['full']['my']['9']['source'] = 'project';
$lang->block->default['full']['my']['9']['grid'] = 8;
$lang->block->default['full']['my']['10']['title'] = '项目列表';
$lang->block->default['full']['my']['10']['title'] = "{$lang->projectCommon}列表";
$lang->block->default['full']['my']['10']['block'] = 'project';
$lang->block->default['full']['my']['10']['source'] = 'project';
$lang->block->default['full']['my']['10']['grid'] = 8;
@@ -356,21 +356,21 @@ $lang->block->availableBlocks->feedback = '反馈';
$lang->block->availableBlocks->ticket = '工单';
$lang->block->moduleList['product'] = $lang->productCommon;
$lang->block->moduleList['project'] = '项目';
$lang->block->moduleList['project'] = $lang->projectCommon;
$lang->block->moduleList['execution'] = $lang->execution->common;
$lang->block->moduleList['qa'] = '测试';
$lang->block->moduleList['todo'] = '待办';
$lang->block->modules['project'] = new stdclass();
$lang->block->modules['project']->availableBlocks = new stdclass();
$lang->block->modules['project']->availableBlocks->project = '项目列表';
$lang->block->modules['project']->availableBlocks->recentproject = '近期项目';
$lang->block->modules['project']->availableBlocks->statistic = '项目统计';
$lang->block->modules['project']->availableBlocks->projectteam = '项目人力投入';
$lang->block->modules['project']->availableBlocks->project = "{$lang->projectCommon}列表";
$lang->block->modules['project']->availableBlocks->recentproject = "近期{$lang->projectCommon}";
$lang->block->modules['project']->availableBlocks->statistic = "{$lang->projectCommon}统计";
$lang->block->modules['project']->availableBlocks->projectteam = "{$lang->projectCommon}人力投入";
$lang->block->modules['scrum']['index'] = new stdclass();
$lang->block->modules['scrum']['index']->availableBlocks = new stdclass();
$lang->block->modules['scrum']['index']->availableBlocks->scrumoverview = '项目概况';
$lang->block->modules['scrum']['index']->availableBlocks->scrumoverview = "{$lang->projectCommon}概况";
$lang->block->modules['scrum']['index']->availableBlocks->scrumlist = $lang->executionCommon . '列表';
$lang->block->modules['scrum']['index']->availableBlocks->sprint = $lang->executionCommon . '总览';
$lang->block->modules['scrum']['index']->availableBlocks->scrumtest = '待测版本';
@@ -380,7 +380,7 @@ $lang->block->modules['agileplus']['index'] = $lang->block->modules['scrum']['in
$lang->block->modules['waterfall']['index'] = new stdclass();
$lang->block->modules['waterfall']['index']->availableBlocks = new stdclass();
$lang->block->modules['waterfall']['index']->availableBlocks->waterfallgantt = "项目计划";
$lang->block->modules['waterfall']['index']->availableBlocks->waterfallgantt = "{$lang->projectCommon}计划";
$lang->block->modules['waterfall']['index']->availableBlocks->projectdynamic = '最新动态';
$lang->block->modules['waterfallplus']['index'] = $lang->block->modules['waterfall']['index'];
@@ -572,9 +572,9 @@ $lang->block->gridOptions[4] = '右侧';
$lang->block->flowchart = array();
$lang->block->flowchart['admin'] = array('管理员', '维护部门', '添加用户', '维护权限');
if($config->systemMode == 'ALM') $lang->block->flowchart['program'] = array('项目集负责人', '创建项目集', '关联产品', "创建项目", "制定预算和规划", '添加干系人');
if($config->systemMode == 'ALM') $lang->block->flowchart['program'] = array('项目集负责人', '创建项目集', "关联{$lang->productCommon}", "创建{$lang->projectCommon}", "制定预算和规划", '添加干系人');
$lang->block->flowchart['product'] = array($lang->productCommon . '经理', '创建' . $lang->productCommon, '维护模块', "维护计划", "维护需求", '创建发布');
$lang->block->flowchart['project'] = array('项目经理', '创建项目、' . $lang->execution->common, '维护团队', "关联需求", '分解任务', '跟踪进度');
$lang->block->flowchart['project'] = array('项目经理', "创建{$lang->productCommon}、" . $lang->execution->common, '维护团队', "关联需求", '分解任务', '跟踪进度');
$lang->block->flowchart['dev'] = array('研发人员', '领取任务和Bug', '设计实现方案', '更新状态', '完成任务和Bug', '提交代码');
$lang->block->flowchart['tester'] = array('测试人员', '撰写用例', '执行用例', '提交Bug', '验证Bug', '关闭Bug');
@@ -587,8 +587,8 @@ $lang->block->zentaoapp->allStorySum = '需求总数';
$lang->block->zentaoapp->storyCompleteRate = '需求完成率';
$lang->block->zentaoapp->latestExecution = '近期执行';
$lang->block->zentaoapp->involvedExecution = '我参与的执行';
$lang->block->zentaoapp->mangedProduct = '负责产品';
$lang->block->zentaoapp->involvedProject = '参与项目';
$lang->block->zentaoapp->mangedProduct = "负责{$lang->productCommon}";
$lang->block->zentaoapp->involvedProject = "参与{$lang->projectCommon}";
$lang->block->zentaoapp->customIndexCard = '定制首页卡片';
$lang->block->zentaoapp->createStory = '提需求';
$lang->block->zentaoapp->createEffort = '记日志';
@@ -599,7 +599,7 @@ $lang->block->zentaoapp->notSupportKanban = '移动端暂不支持研发看
$lang->block->zentaoapp->notSupportVersion = '移动端暂不支持该禅道版本';
$lang->block->zentaoapp->incompatibleVersion = '当前禅道版本较低,请升级至最新版本后再试';
$lang->block->zentaoapp->canNotGetVersion = '获取禅道版本失败,请确认网址是否正确';
$lang->block->zentaoapp->desc = '禅道移动端为您提供移动办公的环境,方便随时管理个人待办事务,跟进项目进度,增强了项目管理的灵活性和敏捷性。';
$lang->block->zentaoapp->desc = "禅道移动端为您提供移动办公的环境,方便随时管理个人待办事务,跟进{$lang->projectCommon}进度,增强了{$lang->projectCommon}管理的灵活性和敏捷性。";
$lang->block->zentaoapp->downloadTip = '扫描二维码下载';
$lang->block->zentaoclient = new stdClass();
@@ -632,11 +632,11 @@ $lang->block->visionTitle = '禅道使用界面分为【研发综合
$lang->block->visions['rnd'] = new stdclass();
$lang->block->visions['rnd']->key = 'rnd';
$lang->block->visions['rnd']->title = '研发综合界面';
$lang->block->visions['rnd']->text = '集项目集、产品、项目、执行、测试等多维度管理于一体,提供全过程项目管理解决方案。';
$lang->block->visions['rnd']->text = "集项目集、{$lang->productCommon}、{$lang->projectCommon}、执行、测试等多维度管理于一体,提供全过程{$lang->projectCommon}管理解决方案。";
$lang->block->visions['lite'] = new stdclass();
$lang->block->visions['lite']->key = 'lite';
$lang->block->visions['lite']->title = '运营管理界面';
$lang->block->visions['lite']->text = '专为非研发团队打造,主要以直观、可视化的看板项目管理模型为主。';
$lang->block->visions['lite']->text = "专为非研发团队打造,主要以直观、可视化的看板{$lang->projectCommon}管理模型为主。";
$lang->block->customModes['light'] = '轻量管理模式';
$lang->block->customModes['ALM'] = '全生命周期管理模式';
@@ -644,4 +644,4 @@ $lang->block->customModes['ALM'] = '全生命周期管理模式';
$lang->block->customModeTip = new stdClass();
$lang->block->customModeTip->common = '禅道运行模式分为【轻量级管理模式】和【全生命周期管理模式】。';
$lang->block->customModeTip->ALM = '适用于中大型团队的管理模式,概念更加完整、严谨,功能更丰富。';
$lang->block->customModeTip->light = '适用于小型研发团队的管理模式,提供项目管理的核心功能。';
$lang->block->customModeTip->light = "适用于小型研发团队的管理模式,提供{$lang->projectCommon}管理的核心功能。";
+39
View File
@@ -1072,4 +1072,43 @@ class blockModel extends model
{
return $this->dao->select('count(estimate) as estimate')->from(TABLE_STORY)->where('id')->in($storyID)->fetch('estimate');
}
/**
* Get zentao.net data.
*
* @param string $minTime
* @access public
* @return array
*/
public function getZentaoData($minTime = '')
{
return $this->dao->select('type,params')->from(TABLE_BLOCK)
->where('account')->eq('system')
->andWhere('vision')->eq('rnd')
->andWhere('module')->eq('zentao')
->beginIF($minTime)->andWhere('source')->ge($minTime)->fi()
->andWhere('type')->in('plugin,patch,publicclass,news')
->fetchPairs('type');
}
/**
* Set zentao data.
*
* @param string $type
* @param string $params
* @access public
* @return void
*/
public function setZentaoData($type = 'patch', $params = '')
{
$data = new stdclass();
$data->account = 'system';
$data->vision = 'rnd';
$data->module = 'zentao';
$data->type = $type;
$data->source = date('Y-m-d');
$data->params = json_encode($params);
$this->dao->replace(TABLE_BLOCK)->data($data)->exec();
}
}
+3 -3
View File
@@ -53,7 +53,6 @@
.picker-single .picker-option.picker-option-selected.picker-option-active.option-ursr > .border,
.picker-single .picker-option.picker-option-selected.picker-option-active.option-ursr > .border {
background: rgba(230,240,255, 0.4)!important;
border: 1px solid #2E7FFF;
}
#pickerDropMenu-pk_URSR > .picker-option-list {
display: flex;
@@ -173,7 +172,7 @@ function initPreference() {
$option.addClass('option-ursr');
$option.parent().addClass('list-ursr');
$option.empty();
$option.prepend('<div class="border"><div class="value"><p>' + (b.$_index + 1) + '</p></div><div class="context">' + b.text + '</div></div>');
$option.prepend('<div class="border shadow-primary-hover"><div class="value"><p>' + (b.$_index + 1) + '</p></div><div class="context">' + b.text + '</div></div>');
}
return $option;
}
@@ -204,4 +203,5 @@ $(function()
initPreference();
})
</script>
</script>
@@ -205,7 +205,7 @@ $(function()
<div class='col-7'>
<div class='progress progress-text-left'>
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="<?php echo $project->executions[0]->hours->progress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $project->executions[0]->hours->progress;?>%">
<span class='progress-text'><?php echo $project->executions[0]->hours->progress . '%';?></span>
<span class='progress-text'><?php echo !empty($project->executions[0]->hours->progress) ? $project->executions[0]->hours->progress . '%' : '0%';?></span>
</div>
</div>
</div>
+1 -1
View File
@@ -33,7 +33,7 @@
$typeName = '';
if(isset($lang->{$review->type}->common)) $typeName = $lang->{$review->type}->common;
if($type == 'story') $typeName = $lang->my->auditMenu->audit->story;
if($type == 'story') $typeName = $lang->SRCommon;
if($review->type == 'projectreview') $typeName = $lang->project->common;
if(isset($flows[$review->type])) $typeName = $flows[$review->type];
+2 -2
View File
@@ -27,7 +27,7 @@ $lang->branch->mergeBranch = 'Merge branch';
$lang->branch->mergeBranchAction = 'Merge branch';
$lang->branch->id = 'ID';
$lang->branch->product = 'Produkt';
$lang->branch->product = $lang->productCommon;
$lang->branch->name = 'Name';
$lang->branch->status = 'Status';
$lang->branch->createdDate = 'Created Date';
@@ -51,7 +51,7 @@ $lang->branch->targetBranchTips = 'You can merge it into an existing branch, me
$lang->branch->confirmMerge = 'The data of "mergedBranch" will be merged into "targetBranch", please confirm whether you want to perform the branch merge operation, the data will not be restored after the merge!';
$lang->branch->noData = 'No branches.';
$lang->branch->mainBranch = 'The default main branch of the product.';
$lang->branch->mainBranch = "The default main %s of the {$lang->productCommon}.";
$lang->branch->statusList = array();
$lang->branch->statusList['active'] = 'Active';
+2 -2
View File
@@ -27,7 +27,7 @@ $lang->branch->mergeBranch = 'Merge branch';
$lang->branch->mergeBranchAction = 'Merge branch';
$lang->branch->id = 'ID';
$lang->branch->product = 'Product';
$lang->branch->product = $lang->productCommon;
$lang->branch->name = 'Name';
$lang->branch->status = 'Status';
$lang->branch->createdDate = 'Created Date';
@@ -51,7 +51,7 @@ $lang->branch->targetBranchTips = 'You can merge it into an existing branch, me
$lang->branch->confirmMerge = 'The data of "mergedBranch" will be merged into "targetBranch", please confirm whether you want to perform the branch merge operation, the data will not be restored after the merge!';
$lang->branch->noData = 'No branches.';
$lang->branch->mainBranch = 'The default main %s of the product.';
$lang->branch->mainBranch = "The default main %s of the {$lang->productCommon}.";
$lang->branch->statusList = array();
$lang->branch->statusList['active'] = 'Active';
+2 -2
View File
@@ -27,7 +27,7 @@ $lang->branch->mergeBranch = 'Merge branch';
$lang->branch->mergeBranchAction = 'Merge branch';
$lang->branch->id = 'ID';
$lang->branch->product = 'Product';
$lang->branch->product = $lang->productCommon;
$lang->branch->name = 'Nom';
$lang->branch->status = 'Status';
$lang->branch->createdDate = 'Created Date';
@@ -51,7 +51,7 @@ $lang->branch->targetBranchTips = 'You can merge it into an existing branch, me
$lang->branch->confirmMerge = 'The data of "mergedBranch" will be merged into "targetBranch", please confirm whether you want to perform the branch merge operation, the data will not be restored after the merge!';
$lang->branch->noData = 'No branches.';
$lang->branch->mainBranch = 'The default main branch of the product.';
$lang->branch->mainBranch = "The default main %s of the {$lang->productCommon}.";
$lang->branch->statusList = array();
$lang->branch->statusList['active'] = 'Active';
+2 -2
View File
@@ -27,7 +27,7 @@ $lang->branch->mergeBranch = '合并@branch@';
$lang->branch->mergeBranchAction = '合并分支';
$lang->branch->id = 'ID';
$lang->branch->product = '所属产品';
$lang->branch->product = "所属{$lang->productCommon}";
$lang->branch->name = '%s名称';
$lang->branch->status = '状态';
$lang->branch->createdDate = '创建时间';
@@ -51,7 +51,7 @@ $lang->branch->targetBranchTips = '您可以将其合并到已有的一个@bran
$lang->branch->confirmMerge = '"mergedBranch"的数据将被合并到"targetBranch",请确认是否要执行分支合并操作,合并后数据将不可再恢复!';
$lang->branch->noData = '暂时没有分支。';
$lang->branch->mainBranch = '产品默认主干%s。';
$lang->branch->mainBranch = "{$lang->productCommon}默认主干%s。";
$lang->branch->statusList = array();
$lang->branch->statusList['active'] = '激活';
Regular → Executable
+1 -1
View File
@@ -223,7 +223,7 @@ $config->bug->datatable->fieldList['execution']['title'] = 'execution';
$config->bug->datatable->fieldList['execution']['fixed'] = 'no';
$config->bug->datatable->fieldList['execution']['width'] = '120';
$config->bug->datatable->fieldList['execution']['required'] = 'no';
$config->bug->datatable->fieldList['execution']['dataSource'] = array('module' => 'product', 'method' =>'getAllExecutionPairsByProduct', 'params' => '$productID&$branch');
$config->bug->datatable->fieldList['execution']['dataSource'] = array('module' => 'product', 'method' =>'getAllExecutionPairsByProduct', 'params' => '$productID&$branch&0&stagefilter');
$config->bug->datatable->fieldList['plan']['title'] = 'plan';
$config->bug->datatable->fieldList['plan']['fixed'] = 'no';
+16 -5
View File
@@ -636,7 +636,7 @@ class bug extends control
/* Get executions. */
$executions = array(0 => '');
if(isset($projects[$projectID])) $executions += $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID, !$projectID ? 'multiple' : '');
if(isset($projects[$projectID])) $executions += $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID, !$projectID ? 'multiple|stagefilter' : 'stagefilter');
$execution = $executionID ? $this->loadModel('execution')->getByID($executionID) : '';
$executions = isset($executions[$executionID]) ? $executions : $executions + array($executionID => $execution->name);
@@ -859,7 +859,7 @@ class bug extends control
$this->view->users = $this->user->getPairs('devfirst|noclosed');
$this->view->projects = array('' => '') + $this->product->getProjectPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID);
$this->view->projectID = $projectID;
$this->view->executions = array('' => '') + $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID, 'multiple');
$this->view->executions = array('' => '') + $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID, 'multiple,stagefilter');
$this->view->executionID = $executionID;
$this->view->moduleOptionMenu = $this->tree->getOptionMenu($productID, $viewType = 'bug', $startModuleID = 0, $branch === 'all' ? 0 : $branch);
$this->view->moduleID = $moduleID;
@@ -1165,6 +1165,16 @@ class bug extends control
$productBugs = $this->bug->getProductBugPairs($productID, $branch);
unset($productBugs[$bugID]);
$executions = array(0 => '') + $this->product->getExecutionPairsByProduct($bug->product, $bug->branch, 'id_desc', $bug->project);
if(!empty($bug->execution) and empty($executions[$bug->execution])) $executions[$execution->id] = $execution->name . "({$this->lang->bug->deleted})";
$projects = array(0 => '') + $this->product->getProjectPairsByProduct($productID, $bug->branch);
if(!empty($bug->project) and empty($projects[$bug->project]))
{
$project = $this->loadModel('project')->getByID($bug->project);
$projects[$project->id] = $project->name . "({$this->lang->bug->deleted})";
}
if($product->shadow) $this->view->project = $this->loadModel('project')->getByShadowProduct($bug->product);
$this->view->bug = $bug;
@@ -1173,11 +1183,11 @@ class bug extends control
$this->view->productBugs = $productBugs;
$this->view->productName = $this->products[$productID];
$this->view->plans = $this->loadModel('productplan')->getPairs($productID, $bug->branch, '', true);
$this->view->projects = array(0 => '') + $this->product->getProjectPairsByProduct($productID, $bug->branch, $bug->project);
$this->view->projects = $projects;
$this->view->projectExecutionPairs = $this->loadModel('project')->getProjectExecutionPairs();
$this->view->moduleOptionMenu = $moduleOptionMenu;
$this->view->currentModuleID = $currentModuleID;
$this->view->executions = array(0 => '') + $this->product->getExecutionPairsByProduct($bug->product, $bug->branch, 'id_desc', $bug->project);
$this->view->executions = $executions;
$this->view->stories = $bug->execution ? $this->story->getExecutionStoryPairs($bug->execution) : $this->story->getProductStoryPairs($bug->product, $bug->branch, 0, 'all', 'id_desc', 0, 'full', 'story', false);
$this->view->branchOption = $branchOption;
$this->view->branchTagOption = $branchTagOption;
@@ -1398,7 +1408,7 @@ class bug extends control
}
/* Set users. */
$users = $this->user->getPairs('devfirst', '', $this->config->maxCount);
$users = $this->user->getPairs('devfirst');
$users = array('' => '', 'ditto' => $this->lang->bug->ditto) + $users;
/* Assign. */
@@ -2490,6 +2500,7 @@ class bug extends control
public function ajaxGetProductBugs($productID, $bugID)
{
$product = $this->loadModel('product')->getById($productID);
$bug = $this->bug->getById($bugID);
$branch = $product->type == 'branch' ? ($bug->branch > 0 ? $bug->branch . ',0' : '0') : '';
$productBugs = $this->bug->getProductBugPairs($productID, $branch);
unset($productBugs[$bugID]);
+1 -1
View File
@@ -369,7 +369,7 @@ function loadProductExecutions(productID, projectID = 0)
var execution = $('#execution').val();
}
link = createLink('product', 'ajaxGetExecutions', 'productID=' + productID + '&projectID=' + projectID + '&branch=' + branch + '&number=&executionID=' + execution);
link = createLink('product', 'ajaxGetExecutions', 'productID=' + productID + '&projectID=' + projectID + '&branch=' + branch + '&number=&executionID=' + execution + '&from=&mode=stagefilter');
$('#executionIdBox').load(link, function()
{
$(this).find('select').chosen();
+15 -15
View File
@@ -17,7 +17,7 @@ $lang->bug->branch = 'Branch/Platform';
$lang->bug->productplan = 'Plan';
$lang->bug->module = 'Modul';
$lang->bug->moduleAB = 'Modul';
$lang->bug->project = 'Project';
$lang->bug->project = $lang->projectCommon;
$lang->bug->execution = $lang->execution->common;
$lang->bug->kanban = 'Kanban';
$lang->bug->story = 'Story';
@@ -95,9 +95,9 @@ $lang->bug->toCase = 'Zu Fall';
$lang->bug->colorTag = 'Farb Tag';
$lang->bug->fixedRate = 'Fixed Rate';
$lang->bug->noticefeedbackBy = 'NoticeFeedbackBy';
$lang->bug->selectProjects = 'Select Projects';
$lang->bug->selectProjects = "Select {$lang->projectCommon}s";
$lang->bug->nextStep = 'Next Step';
$lang->bug->noProject = 'Haven’t chosen a project yet.';
$lang->bug->noProject = "Haven’t chosen a {$lang->projectCommon} yet.";
$lang->bug->noExecution = 'Haven’t chosen a ' . strtolower($lang->execution->common) . ' yet.';
/* Method list. */
@@ -154,7 +154,7 @@ $lang->bug->overdueBugs = 'Überfällig';
$lang->bug->allBugs = 'Alle';
$lang->bug->byQuery = 'Suche';
$lang->bug->needConfirm = 'Story geändert';
$lang->bug->allProject = 'All Projects';
$lang->bug->allProject = "All {$lang->projectCommon}s";
$lang->bug->allProduct = 'Alle' . $lang->productCommon;
$lang->bug->my = 'Meine';
$lang->bug->yesterdayResolved = 'Gestern gelöst ';
@@ -166,7 +166,7 @@ $lang->bug->openedByMeAB = 'Von mir erstellt';
$lang->bug->resolvedByMeAB = 'Von mir gelöst';
$lang->bug->ditto = 'Dito';
$lang->bug->dittoNotice = 'This bug is not linked to the same product as the last one!';
$lang->bug->dittoNotice = "This bug is not linked to the same {$lang->productCommon} as the last one is!";
$lang->bug->noAssigned = 'Zuweisen';
$lang->bug->noBug = 'Keine Bugs. ';
$lang->bug->noModule = '<div>Sie haben keine Module</div><div>Jetzt verwalten</div>';
@@ -192,8 +192,8 @@ global $config;
/* Legend list. */
$lang->bug->legendBasicInfo = 'Basis Info';
$lang->bug->legendAttatch = 'Anlagen';
$lang->bug->legendPRJExecStoryTask = 'Project/' . $lang->executionCommon . '/Story/Task';
$lang->bug->legendExecStoryTask = 'Porject/Story/Task';
$lang->bug->legendPRJExecStoryTask = "{$lang->SRCommon}/{$lang->executionCommon}/Story/Task";
$lang->bug->legendExecStoryTask = "{$lang->SRCommon}/Story/Task";
$lang->bug->lblTypeAndSeverity = 'Typ/Schwere';
$lang->bug->lblSystemBrowserAndHardware = 'System/Browser';
$lang->bug->legendSteps = 'Reproduktionsschritte';
@@ -426,11 +426,11 @@ $lang->bug->featureBar['browse']['resolvedbyme'] = $lang->bug->resolvedByMe;
$lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featureBar['browse']['more'] = $lang->more;
$lang->bug->moreSelects['assignedbyme'] = $lang->bug->assignedByMe;
$lang->bug->moreSelects['unconfirmed'] = $lang->bug->unconfirmed;
$lang->bug->moreSelects['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->moreSelects['longlifebugs'] = $lang->bug->longLifeBugs;
$lang->bug->moreSelects['toclosed'] = $lang->bug->toClosed;
$lang->bug->moreSelects['postponedbugs'] = $lang->bug->postponedBugs;
$lang->bug->moreSelects['overduebugs'] = $lang->bug->overdueBugs;
$lang->bug->moreSelects['needconfirm'] = $lang->bug->needConfirm;
$lang->bug->moreSelects['browse']['more']['assignedbyme'] = $lang->bug->assignedByMe;
$lang->bug->moreSelects['browse']['more']['unconfirmed'] = $lang->bug->unconfirmed;
$lang->bug->moreSelects['browse']['more']['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->moreSelects['browse']['more']['longlifebugs'] = $lang->bug->longLifeBugs;
$lang->bug->moreSelects['browse']['more']['toclosed'] = $lang->bug->toClosed;
$lang->bug->moreSelects['browse']['more']['postponedbugs'] = $lang->bug->postponedBugs;
$lang->bug->moreSelects['browse']['more']['overduebugs'] = $lang->bug->overdueBugs;
$lang->bug->moreSelects['browse']['more']['needconfirm'] = $lang->bug->needConfirm;
+14 -14
View File
@@ -17,7 +17,7 @@ $lang->bug->branch = 'Branch/Platform';
$lang->bug->productplan = 'Plan';
$lang->bug->module = 'Module';
$lang->bug->moduleAB = 'Module';
$lang->bug->project = 'Project';
$lang->bug->project = $lang->projectCommon;
$lang->bug->execution = $lang->execution->common;
$lang->bug->kanban = 'Kanban';
$lang->bug->story = 'Story';
@@ -95,9 +95,9 @@ $lang->bug->toCase = 'To Case';
$lang->bug->colorTag = 'Color';
$lang->bug->fixedRate = 'Fixed Rate';
$lang->bug->noticefeedbackBy = 'NoticeFeedbackBy';
$lang->bug->selectProjects = 'Select Projects';
$lang->bug->selectProjects = "Select {$lang->projectCommon}s";
$lang->bug->nextStep = 'Next Step';
$lang->bug->noProject = 'Haven’t chosen a project yet.';
$lang->bug->noProject = "Haven’t chosen a {$lang->projectCommon} yet.";
$lang->bug->noExecution = 'Haven’t chosen a ' . strtolower($lang->execution->common) . ' yet.';
/* Method list. */
@@ -166,7 +166,7 @@ $lang->bug->openedByMeAB = 'ReportedByMe';
$lang->bug->resolvedByMeAB = 'ResolvedByMe';
$lang->bug->ditto = 'Ditto';
$lang->bug->dittoNotice = 'This bug is not linked to the same product as the last one is!';
$lang->bug->dittoNotice = "This bug is not linked to the same {$lang->productCommon} as the last one is!";
$lang->bug->noAssigned = 'Unassigned';
$lang->bug->noBug = 'No bugs yet.';
$lang->bug->noModule = '<div>You have no modules.</div><div>Manage now</div>';
@@ -192,8 +192,8 @@ global $config;
/* Legend list. */
$lang->bug->legendBasicInfo = 'Basic Info';
$lang->bug->legendAttatch = 'Files';
$lang->bug->legendPRJExecStoryTask = 'Project/' . $lang->executionCommon . '/Story/Task';
$lang->bug->legendExecStoryTask = 'Porject/Story/Task';
$lang->bug->legendPRJExecStoryTask = "{$lang->SRCommon}/{$lang->executionCommon}/Story/Task";
$lang->bug->legendExecStoryTask = "{$lang->SRCommon}/Story/Task";
$lang->bug->lblTypeAndSeverity = 'Type/Severity';
$lang->bug->lblSystemBrowserAndHardware = 'System/Browser';
$lang->bug->legendSteps = 'Repro Steps';
@@ -426,11 +426,11 @@ $lang->bug->featureBar['browse']['resolvedbyme'] = $lang->bug->resolvedByMe;
$lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featureBar['browse']['more'] = $lang->more;
$lang->bug->moreSelects['assignedbyme'] = $lang->bug->assignedByMe;
$lang->bug->moreSelects['unconfirmed'] = $lang->bug->unconfirmed;
$lang->bug->moreSelects['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->moreSelects['longlifebugs'] = $lang->bug->longLifeBugs;
$lang->bug->moreSelects['toclosed'] = $lang->bug->toClosed;
$lang->bug->moreSelects['postponedbugs'] = $lang->bug->postponedBugs;
$lang->bug->moreSelects['overduebugs'] = $lang->bug->overdueBugs;
$lang->bug->moreSelects['needconfirm'] = $lang->bug->needConfirm;
$lang->bug->moreSelects['browse']['more']['assignedbyme'] = $lang->bug->assignedByMe;
$lang->bug->moreSelects['browse']['more']['unconfirmed'] = $lang->bug->unconfirmed;
$lang->bug->moreSelects['browse']['more']['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->moreSelects['browse']['more']['longlifebugs'] = $lang->bug->longLifeBugs;
$lang->bug->moreSelects['browse']['more']['toclosed'] = $lang->bug->toClosed;
$lang->bug->moreSelects['browse']['more']['postponedbugs'] = $lang->bug->postponedBugs;
$lang->bug->moreSelects['browse']['more']['overduebugs'] = $lang->bug->overdueBugs;
$lang->bug->moreSelects['browse']['more']['needconfirm'] = $lang->bug->needConfirm;
+15 -15
View File
@@ -17,7 +17,7 @@ $lang->bug->branch = 'Branche/Plateforme';
$lang->bug->productplan = 'Plan';
$lang->bug->module = 'Module';
$lang->bug->moduleAB = 'Module';
$lang->bug->project = 'Project';
$lang->bug->project = $lang->projectCommon;
$lang->bug->execution = $lang->execution->common;
$lang->bug->kanban = 'Kanban';
$lang->bug->story = 'Story';
@@ -95,9 +95,9 @@ $lang->bug->toCase = 'vers CasTest';
$lang->bug->colorTag = 'Couleur';
$lang->bug->fixedRate = 'Repair Rate';
$lang->bug->noticefeedbackBy = 'NoticeFeedbackBy';
$lang->bug->selectProjects = 'Select Projects';
$lang->bug->selectProjects = "Select {$lang->projectCommon}s";
$lang->bug->nextStep = 'Next Step';
$lang->bug->noProject = 'Haven’t chosen a project yet.';
$lang->bug->noProject = "Haven’t chosen a {$lang->projectCommon} yet.";
$lang->bug->noExecution = 'Haven’t chosen a ' . strtolower($lang->execution->common) . ' yet.';
/* Method list. */
@@ -154,7 +154,7 @@ $lang->bug->overdueBugs = 'Retard';
$lang->bug->allBugs = 'Tous';
$lang->bug->byQuery = 'Rechercher';
$lang->bug->needConfirm = 'Story Changée';
$lang->bug->allProject = 'All Projects';
$lang->bug->allProject = "All {$lang->projectCommon}s";
$lang->bug->allProduct = 'Tous les ' . $lang->productCommon . 's';
$lang->bug->my = 'Mes';
$lang->bug->yesterdayResolved = 'Bugs Résolus Hier ';
@@ -166,7 +166,7 @@ $lang->bug->openedByMeAB = 'Signalés par Moi';
$lang->bug->resolvedByMeAB = 'Résolus par Moi';
$lang->bug->ditto = 'Idem';
$lang->bug->dittoNotice = "Ce bug n'est pas lié au même product que le précédent !";
$lang->bug->dittoNotice = 'This bug is not linked to the same product as the last one!';
$lang->bug->noAssigned = 'Non affectés';
$lang->bug->noBug = "Pas de bug pour l'instant. Bravo !";
$lang->bug->noModule = "<div>Vous n'avez pas de modules.</div><div>Gérer Modules maintenant</div>";
@@ -192,8 +192,8 @@ global $config;
/* Legend list. */
$lang->bug->legendBasicInfo = 'Infos de Base';
$lang->bug->legendAttatch = 'Fichiers';
$lang->bug->legendPRJExecStoryTask = 'Project/' . $lang->executionCommon . '/Story/Task';
$lang->bug->legendExecStoryTask = 'Porject/Story/Task';
$lang->bug->legendPRJExecStoryTask = "{$lang->SRCommon}/{$lang->executionCommon}/Story/Task";
$lang->bug->legendExecStoryTask = "{$lang->SRCommon}/Story/Task";
$lang->bug->lblTypeAndSeverity = 'Type/Severité';
$lang->bug->lblSystemBrowserAndHardware = 'Système/Browser';
$lang->bug->legendSteps = 'Etapes Repro';
@@ -426,11 +426,11 @@ $lang->bug->featureBar['browse']['resolvedbyme'] = $lang->bug->resolvedByMe;
$lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featureBar['browse']['more'] = $lang->more;
$lang->bug->moreSelects['assignedbyme'] = $lang->bug->assignedByMe;
$lang->bug->moreSelects['unconfirmed'] = $lang->bug->unconfirmed;
$lang->bug->moreSelects['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->moreSelects['longlifebugs'] = $lang->bug->longLifeBugs;
$lang->bug->moreSelects['toclosed'] = $lang->bug->toClosed;
$lang->bug->moreSelects['postponedbugs'] = $lang->bug->postponedBugs;
$lang->bug->moreSelects['overduebugs'] = $lang->bug->overdueBugs;
$lang->bug->moreSelects['needconfirm'] = $lang->bug->needConfirm;
$lang->bug->moreSelects['browse']['more']['assignedbyme'] = $lang->bug->assignedByMe;
$lang->bug->moreSelects['browse']['more']['unconfirmed'] = $lang->bug->unconfirmed;
$lang->bug->moreSelects['browse']['more']['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->moreSelects['browse']['more']['longlifebugs'] = $lang->bug->longLifeBugs;
$lang->bug->moreSelects['browse']['more']['toclosed'] = $lang->bug->toClosed;
$lang->bug->moreSelects['browse']['more']['postponedbugs'] = $lang->bug->postponedBugs;
$lang->bug->moreSelects['browse']['more']['overduebugs'] = $lang->bug->overdueBugs;
$lang->bug->moreSelects['browse']['more']['needconfirm'] = $lang->bug->needConfirm;
+14 -14
View File
@@ -17,7 +17,7 @@ $lang->bug->branch = '平台/分支';
$lang->bug->productplan = '所属' . '计划';
$lang->bug->module = '所属模块';
$lang->bug->moduleAB = '模块';
$lang->bug->project = '所属项目';
$lang->bug->project = '所属' . $lang->projectCommon;
$lang->bug->execution = '所属' . $lang->execution->common;
$lang->bug->kanban = '所属看板';
$lang->bug->story = "相关需求";
@@ -95,9 +95,9 @@ $lang->bug->toCase = '生成用例';
$lang->bug->colorTag = '颜色标签';
$lang->bug->fixedRate = '修复率';
$lang->bug->noticefeedbackBy = '通知反馈者';
$lang->bug->selectProjects = '选择项目';
$lang->bug->selectProjects = '选择' . $lang->projectCommon;
$lang->bug->nextStep = '下一步';
$lang->bug->noProject = '还没有选择项目!';
$lang->bug->noProject = "还没有选择{$lang->projectCommon}!";
$lang->bug->noExecution = "还没有选择{$lang->execution->common}!";
/* 方法列表。*/
@@ -154,7 +154,7 @@ $lang->bug->overdueBugs = '过期Bug';
$lang->bug->allBugs = '所有';
$lang->bug->byQuery = '搜索';
$lang->bug->needConfirm = "{$lang->SRCommon}变动";
$lang->bug->allProject = '所有项目';
$lang->bug->allProject = '所有' . $lang->projectCommon;
$lang->bug->allProduct = '所有' . $lang->productCommon;
$lang->bug->my = '我的';
$lang->bug->yesterdayResolved = '昨天解决Bug数';
@@ -166,7 +166,7 @@ $lang->bug->openedByMeAB = '由我创建';
$lang->bug->resolvedByMeAB = '由我解决';
$lang->bug->ditto = '同上';
$lang->bug->dittoNotice = '该bug与上一bug不属于同一产品!';
$lang->bug->dittoNotice = "该bug与上一bug不属于同一{$lang->productCommon}!";
$lang->bug->noAssigned = '未指派';
$lang->bug->noBug = '暂时没有Bug。';
$lang->bug->noModule = '<div>您现在还没有模块信息</div><div>请维护测试模块</div>';
@@ -192,8 +192,8 @@ global $config;
/* legend列表。*/
$lang->bug->legendBasicInfo = '基本信息';
$lang->bug->legendAttatch = '附件';
$lang->bug->legendPRJExecStoryTask = "项目/{$lang->executionCommon}/{$lang->SRCommon}/任务";
$lang->bug->legendExecStoryTask = "项目/{$lang->SRCommon}/任务";
$lang->bug->legendPRJExecStoryTask = "{$lang->projectCommon}/{$lang->executionCommon}/{$lang->SRCommon}/任务";
$lang->bug->legendExecStoryTask = "{$lang->projectCommon}/{$lang->SRCommon}/任务";
$lang->bug->lblTypeAndSeverity = '类型/严重程度';
$lang->bug->lblSystemBrowserAndHardware = '系统/浏览器';
$lang->bug->legendSteps = '重现步骤';
@@ -427,10 +427,10 @@ $lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featureBar['browse']['more'] = $lang->more;
$lang->bug->moreSelects['unconfirmed'] = $lang->bug->unconfirmed;
$lang->bug->moreSelects['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->moreSelects['longlifebugs'] = $lang->bug->longLifeBugs;
$lang->bug->moreSelects['toclosed'] = $lang->bug->toClosed;
$lang->bug->moreSelects['postponedbugs'] = $lang->bug->postponedBugs;
$lang->bug->moreSelects['overduebugs'] = $lang->bug->overdueBugs;
$lang->bug->moreSelects['needconfirm'] = $lang->bug->needConfirm;
$lang->bug->moreSelects['browse']['more']['unconfirmed'] = $lang->bug->unconfirmed;
$lang->bug->moreSelects['browse']['more']['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->moreSelects['browse']['more']['longlifebugs'] = $lang->bug->longLifeBugs;
$lang->bug->moreSelects['browse']['more']['toclosed'] = $lang->bug->toClosed;
$lang->bug->moreSelects['browse']['more']['postponedbugs'] = $lang->bug->postponedBugs;
$lang->bug->moreSelects['browse']['more']['overduebugs'] = $lang->bug->overdueBugs;
$lang->bug->moreSelects['browse']['more']['needconfirm'] = $lang->bug->needConfirm;
-3
View File
@@ -74,9 +74,6 @@
</thead>
<tbody>
<?php foreach($bugs as $bugID => $bug):?>
<?php
if(!empty($this->config->user->moreLink)) $this->config->moreLinks["assignedTos[$bugID]"] = $this->config->user->moreLink;
?>
<tr>
<td><?php echo $bugID . html::hidden("bugIDList[$bugID]", $bugID);?></td>
<td <?php echo zget($visibleFields, 'type', "class='hidden'")?>><?php echo html::select("types[$bugID]", $typeList, $bug->type, 'class=form-control');?></td>
+5 -4
View File
@@ -66,18 +66,19 @@ $currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($brow
}
elseif($menuItem->name == 'more')
{
if(!empty($lang->bug->moreSelects))
$moreSelects = isset($lang->bug->moreSelects[$app->rawMethod]['more']) ? $lang->bug->moreSelects[$app->rawMethod]['more'] : array();
if(!empty($moreSelects))
{
$moreLabel = $lang->more;
$moreLabelActive = '';
if(isset($lang->bug->moreSelects[$this->session->bugBrowseType]))
if(isset($moreSelects[$this->session->bugBrowseType]))
{
$moreLabel = "<span class='text'>{$lang->bug->moreSelects[$this->session->bugBrowseType]}</span> <span class='label label-light label-badge'>{$pager->recTotal}</span>";
$moreLabel = "<span class='text'>{$moreSelects[$this->session->bugBrowseType]}</span> <span class='label label-light label-badge'>{$pager->recTotal}</span>";
$moreLabelActive = 'btn-active-text';
}
echo "<div class='btn-group'><a href='javascript:;' data-toggle='dropdown' class='btn btn-link {$moreLabelActive}'>{$moreLabel} <span class='caret'></span></a>";
echo "<ul class='dropdown-menu'>";
foreach($lang->bug->moreSelects as $menuBrowseType => $label)
foreach($moreSelects as $menuBrowseType => $label)
{
$active = $menuBrowseType == $this->session->bugBrowseType ? 'btn-active-text' : '';
echo '<li>' . html::a($this->createLink('bug', 'browse', "productid=$productID&branch=$branch&browseType=$menuBrowseType"), "<span class='text'>{$label}</span>", '', "class='btn btn-link $active'") . '</li>';
+1 -1
View File
@@ -125,7 +125,7 @@ if($this->app->tab == 'project') js::set('objectID', $bug->project);
</div>
</td>
</tr>
<tr class='<?php if(!($product->shadow and zget($project, 'model') == 'scrum' and $project->multiple)) echo 'hide'?>'>
<tr class='<?php if($product->shadow and isset($project) and !$project->multiple) echo 'hide'?>'>
<th><?php echo $lang->bug->productplan;?></th>
<td>
<span id="planIdBox"><?php echo html::select('plan', $plans, $bug->plan, "class='form-control chosen'");?></span>
+2 -2
View File
@@ -161,7 +161,7 @@
<th><?php echo $lang->bug->fromCase;?></th>
<td><?php if($bug->case) echo html::a(helper::createLink('testcase', 'view', "caseID=$bug->case&version=$bug->caseVersion", '', true), "<i class='icon icon-sitemap'></i> {$lang->bug->fromCase}$lang->colon$bug->case", '', isonlybody() ? '' : "data-toggle='modal' data-type='iframe' data-width='80%'");?></td>
</tr>
<tr valign='middle' class='<?php if(!($product->shadow and zget($project, 'model') == 'scrum' and $project->multiple)) echo 'hide'?>'>
<tr valign='middle' class='<?php if($product->shadow and isset($project) and !$project->multiple) echo 'hide'?>'>
<th><?php echo $lang->bug->productplan;?></th>
<td><?php if(!$bug->plan or !common::printLink('productplan', 'view', "planID=$bug->plan&type=bug", $bug->planName)) echo $bug->planName;?></td>
</tr>
@@ -251,7 +251,7 @@
<?php if($browserList):?>
<p class='browserContent'>
<?php foreach($browserList as $browser):?>
<?php if($os) echo "<span class='label label-outline'>" . zget($lang->bug->browserList, $browser) . "</span>";?>
<?php if($browser) echo "<span class='label label-outline'>" . zget($lang->bug->browserList, $browser) . "</span>";?>
<?php endforeach;?>
</p>
<?php endif;?>
+7 -5
View File
@@ -66,6 +66,7 @@ class build extends control
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $this->createLink('build', 'view', "buildID=$buildID") . "#app={$this->app->tab}"));
}
$status = empty($this->config->CRProduct) ? 'noclosed' : '';
$this->loadModel('product');
$this->loadModel('project');
/* Set menu. */
@@ -74,7 +75,7 @@ class build extends control
$this->project->setMenu($projectID);
$executions = $this->execution->getPairs($projectID, 'all', 'stagefilter|leaf|order_asc');
$executionID = empty($executionID) ? key($executions) : $executionID;
$productGroups = $executionID ? $this->product->getProducts($executionID) : array();
$productGroups = $executionID ? $this->product->getProducts($executionID, $status) : array();
$branchGroups = $executionID ? $this->project->getBranchesByProject($executionID) : array();
$this->session->set('project', $projectID);
}
@@ -83,7 +84,7 @@ class build extends control
$execution = $this->execution->getByID($executionID);
$executions = $this->execution->getPairs($execution->project, 'all', 'stagefilter|leaf|order_asc');
$projectID = $execution->project;
$productGroups = $this->product->getProducts($executionID);
$productGroups = $this->product->getProducts($executionID, $status);
$branchGroups = $this->project->getBranchesByProject($executionID);
$this->execution->setMenu($executionID);
$this->session->set('project', $execution->project);
@@ -93,7 +94,7 @@ class build extends control
$execution = $this->execution->getByID($executionID);
$projectID = $execution ? $execution->project : 0;
$executions = $this->execution->getPairs($projectID, 'all', 'stagefilter|leaf');
$productGroups = $this->product->getProducts($executionID);
$productGroups = $this->product->getProducts($executionID, $status);
$branchGroups = $this->project->getBranchesByProject($executionID);
}
@@ -171,14 +172,15 @@ class build extends control
if($this->app->tab == 'execution') $this->execution->setMenu($build->execution);
$builds = array();
$status = empty($this->config->CRProduct) ? 'noclosed' : '';
if($build->execution)
{
$productGroups = $this->product->getProducts($build->execution);
$productGroups = $this->product->getProducts($build->execution, $status);
$branches = $this->loadModel('branch')->getList($build->product, $build->execution, 'all');
}
else
{
$productGroups = $this->product->getProducts($build->project);
$productGroups = $this->product->getProducts($build->project, $status);
$branches = $this->loadModel('branch')->getList($build->product, $build->project, 'all');
$builds = $this->build->getBuildPairs($build->product, 'all', 'noempty,notrunk,singled,separate', $build->project, 'project', $build->builds, false);
}
+2 -2
View File
@@ -29,7 +29,7 @@ $lang->build->basicInfo = 'Basis Info';
$lang->build->id = 'ID';
$lang->build->product = $lang->productCommon;
$lang->build->project = 'Project';
$lang->build->project = $lang->projectCommon;
$lang->build->branch = 'Platform/Branch';
$lang->build->branchAll = 'All associated %s';
$lang->build->branchName = '%s';
@@ -64,7 +64,7 @@ $lang->build->notice = new stdclass();
$lang->build->notice->changeProduct = "The {$lang->SRCommon}, bug, or the version of the submitted test order has been linked, and its {$lang->productCommon} cannot be modified";
$lang->build->notice->changeExecution = "The version of the submitted test order cannot be modified {$lang->executionCommon}";
$lang->build->notice->changeBuilds = "The version of the submitted test order cannot be modified builds";
$lang->build->notice->autoRelation = "The completed requirements, resolved bugs, and generated bugs under the relevant version will be automatically associated with the project version";
$lang->build->notice->autoRelation = "The completed requirements, resolved bugs, and generated bugs under the relevant version will be automatically associated with the {$lang->projectCommon} version";
$lang->build->notice->createTest = "The execution of this version has been deleted, and the test cannot be submitted";
$lang->build->confirmChangeBuild = "After branch『%s』disassociation,under the %s have %s {$lang->SRCommon} and %s Bug will remove synchronization from version, whether to cancel?";
+1 -1
View File
@@ -29,7 +29,7 @@ $lang->build->basicInfo = 'Basic Info';
$lang->build->id = 'ID';
$lang->build->product = $lang->productCommon;
$lang->build->project = 'Project';
$lang->build->project = $lang->projectCommon;
$lang->build->branch = 'Platform/Branch';
$lang->build->branchAll = 'All associated %s';
$lang->build->branchName = '%s';

Some files were not shown because too many files have changed in this diff Show More