Merge branch '15.0.beta3' of https://gitlab.zcorp.cc/easycorp/zentaopms into 15.0.beta3

This commit is contained in:
wangyidong
2021-03-31 10:39:13 +08:00
31 changed files with 146 additions and 140 deletions
+1 -1
View File
@@ -13,7 +13,7 @@
<?php include '../../common/view/header.html.php';?>
<div id='mainMenu' class='clearfix'>
<div class='btn-toolbar pull-left'>
<div class='btn-toolbar pull-left'><?php common::printAdminSubMenu('system');?></div>
<div class='btn-toolbar pull-left'><?php //common::printAdminSubMenu('system');?></div>
</div>
</div>
<div class="main-row">
+1 -1
View File
@@ -12,7 +12,7 @@
?>
<?php include '../../common/view/header.html.php'; ?>
<div id="mainMenu" class="clearfix">
<div class="btn-toolbar pull-left"><?php common::printAdminSubMenu('sso');?></div>
<div class="btn-toolbar pull-left"><?php //common::printAdminSubMenu('sso');?></div>
</div>
<div id='mainContent' class='main-content'>
<div class='center-block'>
+1
View File
@@ -72,6 +72,7 @@ $lang->api = new stdclass();
$lang->file = new stdclass();
$lang->misc = new stdclass();
$lang->projectbuild = new stdclass();
$lang->projectrelease = new stdclass();
$lang->projectstory = new stdclass();
+1 -1
View File
@@ -109,7 +109,7 @@ $lang->select = '选择';
$lang->selectAll = '全选';
$lang->selectReverse = '反选';
$lang->loading = '稍候...';
$lang->notFound = '抱歉,您访问的对象不存在!';
$lang->notFound = '抱歉,您访问的对象不存在!';
$lang->notPage = '抱歉,您访问的功能正在开发中!';
$lang->showAll = '[[全部显示]]';
$lang->selectedItems = '已选择 <strong>{0}</strong> 项';
-1
View File
@@ -314,7 +314,6 @@ class commonModel extends model
echo '<li>' . html::a(helper::createLink('my', 'profile', '', '', true), "<i class='icon icon-account'></i> " . $lang->profile, '', "class='iframe' data-width='600'") . '</li>';
echo '<li>' . html::a(helper::createLink('my', 'preference', '', '', true), "<i class='icon icon-controls'></i> " . $lang->preference, '', "class='iframe' data-width='650'") . '</li>';
echo '<li>' . html::a(helper::createLink('my', 'changepassword', '', '', true), "<i class='icon icon-cog-outline'></i> " . $lang->changePassword, '', "class='iframe' data-width='600'") . '</li>';
echo "<li id='menuToggleItem'><a type='button' class='menu-toggle'><i class='icon icon-sm icon-menu-collapse'></i> <span class='is-unfold'>$lang->unfoldMenu</span><span class='is-collapse'>$lang->collapseMenu</span></a></li>";
echo "<li class='divider'></li>";
}
+8 -1
View File
@@ -11,10 +11,17 @@ include 'chosen.html.php';
<div id='mainHeader'>
<div class='container'>
<div id='heading'>
<?php common::printHomeButton($app->openApp);?>
<?php common::printHomeButton($app->openApp);?>
<?php echo isset($lang->switcherMenu) ? $lang->switcherMenu : '';?>
</div>
<nav id='navbar'><?php $activeMenu = commonModel::printMainMenu();?></nav>
<div id='toolbar'>
<div id='userMenu'>
<ul id="userNav" class="nav nav-default">
<li class='dropdown dropdown-hover has-avatar'><?php common::printUserBar();?></li>
</ul>
</div>
</div>
</div>
</div>
<?php if(isset($lang->{$app->openApp}->menu->$activeMenu) and isset($lang->{$app->openApp}->menu->{$activeMenu}['subMenu'])):?>
-3
View File
@@ -11,9 +11,6 @@
*/
?>
<?php include '../../common/view/header.html.php';?>
<div id='mainMenu' class='clearfix'>
<div class='btn-toolbar pull-left'><?php common::printAdminSubMenu('system');?></div>
</div>
<div id='mainContent' class='main-content'>
<div class='center-block'>
<div class='main-header'>
-3
View File
@@ -11,9 +11,6 @@
*/
?>
<?php include '../../common/view/header.html.php';?>
<div id='mainMenu' class='clearfix'>
<div class='btn-toolbar pull-left'><?php common::printAdminSubMenu('system');?></div>
</div>
<div id='mainContent' class='main-content'>
<div class='center-block'>
<div class='main-header'>
+5 -1
View File
@@ -19,7 +19,11 @@ class custom extends control
*/
public function index()
{
if(common::hasPriv('custom', 'set')) die(js::locate(inlink('set', "module=project&field=" . key($this->lang->custom->project->fields))));
if(($this->config->systemMode == 'new') and common::hasPriv('custom', 'set'))
{
die(js::locate(inlink('set', "module=project&field=" . key($this->lang->custom->project->fields))));
}
if(common::hasPriv('custom', 'product')) die(js::locate(inlink('product')));
if(common::hasPriv('custom', 'execution')) die(js::locate(inlink('execution')));
+10 -6
View File
@@ -1,4 +1,6 @@
<?php
global $config;
$lang->custom->common = 'Custom';
$lang->custom->index = 'Home';
$lang->custom->set = 'Customize';
@@ -19,7 +21,6 @@ $lang->custom->score = 'Score';
$lang->custom->timezone = 'Timezone';
$lang->custom->scoreReset = 'Reset Score';
$lang->custom->scoreTitle = 'Point Feature';
$lang->custom->execution = 'Execution';
$lang->custom->product = $lang->productCommon;
$lang->custom->convertFactor = 'Convert factor';
$lang->custom->region = 'Interval';
@@ -46,6 +47,9 @@ $lang->custom->switch = "Switch";
$lang->custom->oneUnit = "One {$lang->hourCommon}";
$lang->custom->convertRelationTitle = "Please set the conversion factor of {$lang->hourCommon} to %s first";
if($config->systemMode == 'new') $lang->custom->execution = 'Execution';
if($config->systemMode == 'classic') $lang->custom->execution = $lang->executionCommon;
$lang->custom->unitList['efficiency'] = 'Working Hours/';
$lang->custom->unitList['manhour'] = 'Man-hour/';
$lang->custom->unitList['cost'] = 'Yuan/Hour';
@@ -71,12 +75,12 @@ $lang->custom->saveTips = 'After clicking save, the current %s will b
$lang->custom->numberError = 'The interval must be greater than zero!';
$lang->custom->closedExecution = 'Closed Executions';
$lang->custom->closedExecution = 'Closed ' . $lang->executionCommon;
$lang->custom->closedProduct = 'Closed ' . $lang->productCommon;
$lang->custom->object['project'] = 'Project';
if($config->systemMode == 'new') $lang->custom->object['project'] = 'Project';
$lang->custom->object['product'] = $lang->productCommon;
$lang->custom->object['execution'] = 'Execution';
$lang->custom->object['execution'] = $lang->custom->execution;
$lang->custom->object['story'] = 'Story';
$lang->custom->object['task'] = 'Task';
$lang->custom->object['bug'] = 'Bug';
@@ -164,7 +168,7 @@ $lang->custom->notice->required = 'The selected field is required.';
$lang->custom->notice->conceptResult = 'According to your preference, <b> %s-%s </b> is set for you. Use <b>%s</b> + <b> %s</b>。';
$lang->custom->notice->conceptPath = 'Go to Admin -> Custom -> Concept to set it.';
$lang->custom->notice->readOnlyOfProduct = 'If Change Forbidden, any change on stories, bugs, cases, efforts, releases and plans of the closed product is also forbidden.';
$lang->custom->notice->readOnlyOfExecution = "If Change Forbidden, any change on tasks, builds, efforts and stories of the closed execution is also forbidden.";
$lang->custom->notice->readOnlyOfExecution = "If Change Forbidden, any change on tasks, builds, efforts and stories of the closed {$lang->executionCommon} is also forbidden.";
$lang->custom->notice->URSREmpty = 'Custom requirement name can not be empty!';
$lang->custom->notice->confirmDelete = 'Are you sure you want to delete it?';
@@ -221,7 +225,7 @@ $lang->custom->CRExecution[0] = 'Change Forbidden';
$lang->custom->moduleName['product'] = $lang->productCommon;
$lang->custom->moduleName['productplan'] = 'Plan';
$lang->custom->moduleName['execution'] = 'Execution';
$lang->custom->moduleName['execution'] = $lang->custom->execution;
$lang->custom->conceptQuestions['overview'] = "1. Which combination of management fits your company?";
$lang->custom->conceptQuestions['URAndSR'] = "2. Do you want to use the concept of {$lang->URCommon} and {$lang->SRCommon} in ZenTao?";
+10 -6
View File
@@ -1,4 +1,6 @@
<?php
global $config;
$lang->custom->common = 'Custom';
$lang->custom->index = 'Home';
$lang->custom->set = 'Customize';
@@ -19,7 +21,6 @@ $lang->custom->score = 'Point';
$lang->custom->timezone = 'Timezone';
$lang->custom->scoreReset = 'Reset Points';
$lang->custom->scoreTitle = 'Point Feature';
$lang->custom->execution = 'Execution';
$lang->custom->product = $lang->productCommon;
$lang->custom->convertFactor = 'Convert factor';
$lang->custom->region = 'Interval';
@@ -46,6 +47,9 @@ $lang->custom->switch = "Switch";
$lang->custom->oneUnit = "One {$lang->hourCommon}";
$lang->custom->convertRelationTitle = "Please set the conversion factor of {$lang->hourCommon} to %s first";
if($config->systemMode == 'new') $lang->custom->execution = 'Execution';
if($config->systemMode == 'classic') $lang->custom->execution = $lang->executionCommon;
$lang->custom->unitList['efficiency'] = 'Working Hours/';
$lang->custom->unitList['manhour'] = 'Man-hour/';
$lang->custom->unitList['cost'] = 'Yuan/Hour';
@@ -71,12 +75,12 @@ $lang->custom->saveTips = 'After clicking save, the current %s will b
$lang->custom->numberError = 'The interval must be greater than zero!';
$lang->custom->closedExecution = 'Closed Executions';
$lang->custom->closedExecution = 'Closed ' . $lang->executionCommon;
$lang->custom->closedProduct = 'Closed ' . $lang->productCommon;
$lang->custom->object['project'] = 'Project';
if($config->systemMode == 'new') $lang->custom->object['project'] = 'Project';
$lang->custom->object['product'] = $lang->productCommon;
$lang->custom->object['execution'] = 'Execution';
$lang->custom->object['execution'] = $lang->custom->execution;
$lang->custom->object['story'] = 'Story';
$lang->custom->object['task'] = 'Task';
$lang->custom->object['bug'] = 'Bug';
@@ -164,7 +168,7 @@ $lang->custom->notice->required = 'The selected field is required.';
$lang->custom->notice->conceptResult = 'According to your preference, <b> %s-%s </b> is set for you. Use <b>%s</b> + <b> %s</b>.';
$lang->custom->notice->conceptPath = 'Go to Admin -> Custom -> Concept to set it.';
$lang->custom->notice->readOnlyOfProduct = 'If Change Forbidden, any change on stories, bugs, cases, efforts, releases and plans of the closed product is also forbidden.';
$lang->custom->notice->readOnlyOfExecution = "If Change Forbidden, any change on tasks, builds, efforts and stories of the closed execution is also forbidden.";
$lang->custom->notice->readOnlyOfExecution = "If Change Forbidden, any change on tasks, builds, efforts and stories of the closed {$lang->executionCommon} is also forbidden.";
$lang->custom->notice->URSREmpty = 'Custom requirement name can not be empty!';
$lang->custom->notice->confirmDelete = 'Are you sure you want to delete it?';
@@ -221,7 +225,7 @@ $lang->custom->CRExecution[0] = 'Change Forbidden';
$lang->custom->moduleName['product'] = $lang->productCommon;
$lang->custom->moduleName['productplan'] = 'Plan';
$lang->custom->moduleName['execution'] = 'Execution';
$lang->custom->moduleName['execution'] = $lang->custom->execution;
$lang->custom->conceptQuestions['overview'] = "1. Which combination of management fits your company?";
$lang->custom->conceptQuestions['URAndSR'] = "2. Do you want to use the concept of {$lang->URCommon} and {$lang->SRCommon} in ZenTao?";
+10 -6
View File
@@ -1,4 +1,6 @@
<?php
global $config;
$lang->custom->common = 'Personnalisation';
$lang->custom->index = 'Accueil';
$lang->custom->set = 'Personnaliser';
@@ -19,7 +21,6 @@ $lang->custom->score = 'Point';
$lang->custom->timezone = 'Timezone';
$lang->custom->scoreReset = 'Réinit Points';
$lang->custom->scoreTitle = 'Fonctionnalité des Points';
$lang->custom->execution = 'Execution';
$lang->custom->product = $lang->productCommon;
$lang->custom->convertFactor = 'Convert factor';
$lang->custom->region = 'Interval';
@@ -46,6 +47,9 @@ $lang->custom->switch = "Switch";
$lang->custom->oneUnit = "One {$lang->hourCommon}";
$lang->custom->convertRelationTitle = "Please set the conversion factor of {$lang->hourCommon} to %s first";
if($config->systemMode == 'new') $lang->custom->execution = 'Execution';
if($config->systemMode == 'classic') $lang->custom->execution = $lang->executionCommon;
$lang->custom->unitList['efficiency'] = 'Working Hours/';
$lang->custom->unitList['manhour'] = 'Man-hour/';
$lang->custom->unitList['cost'] = 'Yuan/Hour';
@@ -71,12 +75,12 @@ $lang->custom->saveTips = 'After clicking save, the current %s will b
$lang->custom->numberError = 'The interval must be greater than zero!';
$lang->custom->closedExecution = 'Closed Executions';
$lang->custom->closedExecution = 'Closed ' . $lang->executionCommon;
$lang->custom->closedProduct = 'Closed ' . $lang->productCommon;
$lang->custom->object['project'] = 'Project';
if($config->systemMode == 'new') $lang->custom->object['project'] = 'Project';
$lang->custom->object['product'] = $lang->productCommon;
$lang->custom->object['execution'] = 'Execution';
$lang->custom->object['execution'] = $lang->custom->execution;
$lang->custom->object['story'] = 'Story';
$lang->custom->object['task'] = 'Tâche';
$lang->custom->object['bug'] = 'Bug';
@@ -164,7 +168,7 @@ $lang->custom->notice->required = 'Le champ sélectionné est obligat
$lang->custom->notice->conceptResult = 'Selon votre préférence, <b> %s-%s </b> peut être fixé pour vous. Utilisez <b>%s</b> + <b> %s</b>。';
$lang->custom->notice->conceptPath = 'Allez à Admin -> Custom -> Concept pour le paramétrer.';
$lang->custom->notice->readOnlyOfProduct = 'If Change Forbidden, any change on stories, bugs, cases, efforts, releases and plans of the closed product is also forbidden.';
$lang->custom->notice->readOnlyOfExecution = "If Change Forbidden, any change on tasks, builds, efforts and stories of the closed execution is also forbidden.";
$lang->custom->notice->readOnlyOfExecution = "If Change Forbidden, any change on tasks, builds, efforts and stories of the closed {$lang->executionCommon} is also forbidden.";
$lang->custom->notice->URSREmpty = 'Custom requirement name can not be empty!';
$lang->custom->notice->confirmDelete = 'Are you sure you want to delete it?';
@@ -221,7 +225,7 @@ $lang->custom->CRExecution[0] = 'Change Forbidden';
$lang->custom->moduleName['product'] = $lang->productCommon;
$lang->custom->moduleName['productplan'] = 'Plan';
$lang->custom->moduleName['execution'] = 'Execution';
$lang->custom->moduleName['execution'] = $lang->custom->execution;
$lang->custom->conceptQuestions['overview'] = "1. Quelle combinaison de gestion convient le mieux à votre entreprise ?";
$lang->custom->conceptQuestions['URAndSR'] = "2. Do you want to use the concept of {$lang->URCommon} and {$lang->SRCommon} in ZenTao?";
+10 -6
View File
@@ -1,4 +1,6 @@
<?php
global $config;
$lang->custom->common = 'Tùy biến';
$lang->custom->index = 'Trang chủ';
$lang->custom->set = 'Tùy biến';
@@ -19,7 +21,6 @@ $lang->custom->score = 'Điểm';
$lang->custom->timezone = 'Timezone';
$lang->custom->scoreReset = 'Thiết lập lại điểm';
$lang->custom->scoreTitle = 'Tính năng điểm';
$lang->custom->execution = 'Execution';
$lang->custom->product = $lang->productCommon;
$lang->custom->convertFactor = 'Convert factor';
$lang->custom->region = 'Interval';
@@ -46,6 +47,9 @@ $lang->custom->switch = "Switch";
$lang->custom->oneUnit = "One {$lang->hourCommon}";
$lang->custom->convertRelationTitle = "Please set the conversion factor of {$lang->hourCommon} to %s first";
if($config->systemMode == 'new') $lang->custom->execution = 'Execution';
if($config->systemMode == 'classic') $lang->custom->execution = $lang->executionCommon;
$lang->custom->unitList['efficiency'] = 'Working Hours/';
$lang->custom->unitList['manhour'] = 'Man-hour/';
$lang->custom->unitList['cost'] = 'Yuan/Hour';
@@ -71,12 +75,12 @@ $lang->custom->saveTips = 'After clicking save, the current %s will b
$lang->custom->numberError = 'The interval must be greater than zero!';
$lang->custom->closedExecution = 'Closed Executions';
$lang->custom->closedExecution = 'Closed ' . $lang->executionCommon;
$lang->custom->closedProduct = 'Closed ' . $lang->productCommon;
$lang->custom->object['project'] = 'Project';
if($config->systemMode == 'new') $lang->custom->object['project'] = 'Project';
$lang->custom->object['product'] = $lang->productCommon;
$lang->custom->object['execution'] = 'Execution';
$lang->custom->object['execution'] = $lang->custom->execution;
$lang->custom->object['story'] = 'Câu chuyện';
$lang->custom->object['task'] = 'Nhiệm vụ';
$lang->custom->object['bug'] = 'Bug';
@@ -164,7 +168,7 @@ $lang->custom->notice->required = 'Trường được chọn là bắ
$lang->custom->notice->conceptResult = 'According to your preference, <b> %s-%s </b> is set for you. Sử dụng <b>%s</b> + <b> %s</b>.';
$lang->custom->notice->conceptPath = 'Vào Quản trị -> Tùy biến -> Mô hình để thiết lập nó.';
$lang->custom->notice->readOnlyOfProduct = 'If Change Forbidden, any change on stories, bugs, cases, efforts, releases and plans of the closed product is also forbidden.';
$lang->custom->notice->readOnlyOfExecution = "If Change Forbidden, any change on tasks, builds, efforts and stories of the closed execution is also forbidden.";
$lang->custom->notice->readOnlyOfExecution = "If Change Forbidden, any change on tasks, builds, efforts and stories of the closed {$lang->executionCommon} is also forbidden.";
$lang->custom->notice->URSREmpty = 'Custom requirement name can not be empty!';
$lang->custom->notice->confirmDelete = 'Are you sure you want to delete it?';
@@ -221,7 +225,7 @@ $lang->custom->CRExecution[0] = 'Change Forbidden';
$lang->custom->moduleName['product'] = $lang->productCommon;
$lang->custom->moduleName['productplan'] = 'Kế hoạch';
$lang->custom->moduleName['execution'] = 'Execution';
$lang->custom->moduleName['execution'] = $lang->custom->execution;
$lang->custom->conceptQuestions['overview'] = "1. Sự kết hợp quản lý nào phù hợp với công ty của bạn?";
$lang->custom->conceptQuestions['URAndSR'] = "2. Do you want to use the concept of {$lang->URCommon} and {$lang->SRCommon} in ZenTao?";
+28 -24
View File
@@ -1,4 +1,6 @@
<?php
global $config;
$lang->custom->common = '自定义';
$lang->custom->index = '首页';
$lang->custom->set = '自定义配置';
@@ -19,7 +21,6 @@ $lang->custom->score = '积分';
$lang->custom->timezone = '时区';
$lang->custom->scoreReset = '重置积分';
$lang->custom->scoreTitle = '积分功能';
$lang->custom->execution = '执行';
$lang->custom->product = $lang->productCommon;
$lang->custom->convertFactor = '换算系数';
$lang->custom->region = '区间';
@@ -46,6 +47,9 @@ $lang->custom->switch = "切换";
$lang->custom->oneUnit = "一个{$lang->hourCommon}";
$lang->custom->convertRelationTitle = "请先设置{$lang->hourCommon}转换为%s的换算系数";
if($config->systemMode == 'new') $lang->custom->execution = '执行';
if($config->systemMode == 'classic') $lang->custom->execution = $lang->executionCommon;
$lang->custom->unitList['efficiency'] = '工时/';
$lang->custom->unitList['manhour'] = '人时/';
$lang->custom->unitList['cost'] = '元/小时';
@@ -71,12 +75,12 @@ $lang->custom->saveTips = '点击保存后,则以当前%s为默认
$lang->custom->numberError = '区间必须大于零';
$lang->custom->closedExecution = '已关闭执行';
$lang->custom->closedExecution = '已关闭' . $lang->custom->execution;
$lang->custom->closedProduct = '已关闭' . $lang->productCommon;
$lang->custom->object['project'] = '项目';
if($config->systemMode == 'new') $lang->custom->object['project'] = '项目';
$lang->custom->object['product'] = $lang->productCommon;
$lang->custom->object['execution'] = '执行';
$lang->custom->object['execution'] = $lang->custom->execution;
$lang->custom->object['story'] = $lang->SRCommon;
$lang->custom->object['task'] = '任务';
$lang->custom->object['bug'] = 'Bug';
@@ -151,26 +155,26 @@ $lang->custom->allLang = '适用所有语言';
$lang->custom->confirmRestore = '是否要恢复默认配置?';
$lang->custom->notice = new stdclass();
$lang->custom->notice->userFieldNotice = '控制以上字段在用户相关页面是否显示,留空则全部显示';
$lang->custom->notice->canNotAdd = '该项参与运算,不提供自定义添加功能';
$lang->custom->notice->forceReview = "指定人提交的%s必须评审。";
$lang->custom->notice->forceNotReview = "指定人提交的%s不需要评审。";
$lang->custom->notice->longlife = 'Bug列表页面的久未处理标签中,列出设置天数之前未处理的Bug。';
$lang->custom->notice->invalidNumberKey = '键值应为不大于255的数字';
$lang->custom->notice->invalidStringKey = '键值应当为小写英文字母、数字或下划线的组合';
$lang->custom->notice->cannotSetTimezone = 'date_default_timezone_set方法不存在或禁用,不能设置时区。';
$lang->custom->notice->noClosedBlock = '没有永久关闭的区块';
$lang->custom->notice->required = '页面提交时,选中的字段必填';
$lang->custom->notice->conceptResult = '我们已经根据您的选择为您设置了<b> %s-%s </b>模式,使用<b>%s</b> + <b> %s</b>。';
$lang->custom->notice->conceptPath = '您可以在:后台 -> 自定义 -> 流程页面修改。';
$lang->custom->notice->readOnlyOfProduct = '禁止修改后,已关闭' . $lang->productCommon . '下的' . $lang->SRCommon . '、Bug、用例、日志、发布、计划都禁止修改。';
$lang->custom->notice->readOnlyOfExecution = '禁止修改后,已关闭执行下的任务、版本、日志以及关联需求都禁止修改。';
$lang->custom->notice->URSREmpty = '自定义需求名称不能为空!';
$lang->custom->notice->confirmDelete = '您确定要删除吗?';
$lang->custom->notice->userFieldNotice = '控制以上字段在用户相关页面是否显示,留空则全部显示';
$lang->custom->notice->canNotAdd = '该项参与运算,不提供自定义添加功能';
$lang->custom->notice->forceReview = "指定人提交的%s必须评审。";
$lang->custom->notice->forceNotReview = "指定人提交的%s不需要评审。";
$lang->custom->notice->longlife = 'Bug列表页面的久未处理标签中,列出设置天数之前未处理的Bug。';
$lang->custom->notice->invalidNumberKey = '键值应为不大于255的数字';
$lang->custom->notice->invalidStringKey = '键值应当为小写英文字母、数字或下划线的组合';
$lang->custom->notice->cannotSetTimezone = 'date_default_timezone_set方法不存在或禁用,不能设置时区。';
$lang->custom->notice->noClosedBlock = '没有永久关闭的区块';
$lang->custom->notice->required = '页面提交时,选中的字段必填';
$lang->custom->notice->conceptResult = '我们已经根据您的选择为您设置了<b> %s-%s </b>模式,使用<b>%s</b> + <b> %s</b>。';
$lang->custom->notice->conceptPath = '您可以在:后台 -> 自定义 -> 流程页面修改。';
$lang->custom->notice->readOnlyOfProduct = '禁止修改后,已关闭' . $lang->productCommon . '下的' . $lang->SRCommon . '、Bug、用例、日志、发布、计划都禁止修改。';
$lang->custom->notice->readOnlyOfExecution = "禁止修改后,已关闭{$lang->custom->execution}下的任务、版本、日志以及关联需求都禁止修改。";
$lang->custom->notice->URSREmpty = '自定义需求名称不能为空!';
$lang->custom->notice->confirmDelete = '您确定要删除吗?';
$lang->custom->notice->indexPage['product'] = "从8.2版本起增加了产品主页视图,是否默认进入产品主页?";
$lang->custom->notice->indexPage['project'] = "从8.2版本起增加了项目主页视图,是否默认进入项目主页?";
$lang->custom->notice->indexPage['qa'] = "从8.2版本起增加了测试主页视图,是否默认进入测试主页?";
$lang->custom->notice->indexPage['product'] = "从8.2版本起增加了产品主页视图,是否默认进入产品主页?";
$lang->custom->notice->indexPage['project'] = "从8.2版本起增加了项目主页视图,是否默认进入项目主页?";
$lang->custom->notice->indexPage['qa'] = "从8.2版本起增加了测试主页视图,是否默认进入测试主页?";
$lang->custom->notice->invalidStrlen['ten'] = '键的长度必须小于10个字符!';
$lang->custom->notice->invalidStrlen['twenty'] = '键的长度必须小于20个字符!';
@@ -221,7 +225,7 @@ $lang->custom->CRExecution[0] = '禁止修改';
$lang->custom->moduleName['product'] = $lang->productCommon;
$lang->custom->moduleName['productplan'] = '计划';
$lang->custom->moduleName['execution'] = '执行';
$lang->custom->moduleName['execution'] = $lang->custom->execution;
$lang->custom->conceptQuestions['overview'] = "1. 下述哪种组合方式更适合您公司的管理现状?";
$lang->custom->conceptQuestions['URAndSR'] = "2. 是否启用{$lang->URCommon}{$lang->SRCommon}概念?";
+7 -3
View File
@@ -1150,10 +1150,14 @@ class executionModel extends model
{
$link = helper::createLink($module, $method, "executionID=%s&type=$extra");
}
elseif($module == 'execution' && ($method == 'index' or $method == 'all'))
elseif($module == 'execution' and ($method == 'index' or $method == 'all'))
{
$link = helper::createLink($module, 'task', "executionID=%s");
}
elseif($module == 'bug' and $method == 'create' and $this->app->openApp == 'execution')
{
$link = helper::createLink($module, $method, "productID=0&branch=0&extra=executionID=%s");
}
else
{
$link = helper::createLink($module, $method, "executionID=%s");
@@ -2818,7 +2822,7 @@ class executionModel extends model
* @access public
* @return void
*/
public function buildBugSearchForm($products, $queryID, $actionURL)
public function buildBugSearchForm($products, $queryID, $actionURL, $type = 'execution')
{
$modules = array();
$builds = array('' => '', 'trunk' => $this->lang->trunk);
@@ -2863,7 +2867,7 @@ class executionModel extends model
}
}
$this->config->bug->search['module'] = 'executionBug';
$this->config->bug->search['module'] = $type == 'execution' ? 'executionBug' : 'projectBug';
$this->config->bug->search['actionURL'] = $actionURL;
$this->config->bug->search['queryID'] = $queryID;
unset($this->config->bug->search['fields']['execution']);
@@ -24,13 +24,13 @@ foreach($executions as $execution)
$executionName = $config->systemMode == 'new' ? zget($projects, $execution->project) . '/' . $execution->name : $execution->name;
if($execution->status != 'done' and $execution->status != 'closed' and ($execution->PM == $this->app->user->account or isset($execution->teams[$this->app->user->account])))
{
$myProjectsHtml .= html::a(sprintf($link, $execution->id), "<i class='icon icon-{$lang->icons[$execution->type]}'></i> " . $executionName, '', "class='text-important $selected' title='{$executionName}' data-key='" . zget($executionsPinYin, $execution->name, '') . "'");
$myProjectsHtml .= html::a(sprintf($link, $execution->id), "<i class='icon icon-{$lang->icons[$execution->type]}'></i> " . $executionName, '', "class='text-important $selected' title='{$executionName}' data-key='" . zget($executionsPinYin, $execution->name, '') . "' data-app='{$this->app->openApp}'");
}
else if($execution->status != 'done' and $execution->status != 'closed' and $execution->PM != $this->app->user->account and !isset($execution->teams[$this->app->user->account]))
{
$normalProjectsHtml .= html::a(sprintf($link, $execution->id), "<i class='icon icon-{$lang->icons[$execution->type]}'></i> " . $executionName, '', "class='$selected' title='{$executionName}' data-key='" . zget($executionsPinYin, $execution->name, '') . "'");
$normalProjectsHtml .= html::a(sprintf($link, $execution->id), "<i class='icon icon-{$lang->icons[$execution->type]}'></i> " . $executionName, '', "class='$selected' title='{$executionName}' data-key='" . zget($executionsPinYin, $execution->name, '') . "' data-app='{$this->app->openApp}'");
}
else if($execution->status == 'done' or $execution->status == 'closed') $closedProjectsHtml .= html::a(sprintf($link, $execution->id), "<i class='icon icon-{$lang->icons[$execution->type]}'></i> " . $executionName, '', "class='$selected' title='{$executionName}' data-key='" . zget($executionsPinYin, $execution->name, '') . "'");
else if($execution->status == 'done' or $execution->status == 'closed') $closedProjectsHtml .= html::a(sprintf($link, $execution->id), "<i class='icon icon-{$lang->icons[$execution->type]}'></i> " . $executionName, '', "class='$selected' title='{$executionName}' data-key='" . zget($executionsPinYin, $execution->name, '') . "' data-app='{$this->app->openApp}'");
}
?>
<div class="table-row">
+1 -1
View File
@@ -189,7 +189,7 @@ if($config->systemMode == 'new')
$lang->resource->project = new stdclass();
$lang->resource->project->index = 'index';
$lang->resource->project->browse = 'browse';
$lang->resource->project->projectTitle = 'moduleOpen';
$lang->resource->project->programTitle = 'moduleOpen';
$lang->resource->project->create = 'create';
$lang->resource->project->edit = 'edit';
$lang->resource->project->batchEdit = 'batchEdit';
+10 -11
View File
@@ -18,7 +18,6 @@ body.menu-hide {padding-left: 0;}
.menu-toggle .is-unfold, .menu-hide .menu-toggle .is-collapse {display: none;}
.menu-hide .menu-toggle .is-unfold {display: inline;}
#menuToggleItem,
.menu-hide #menuToggleMenu {display: none;}
.menu-hide #menuToggleItem {display: list-item;}
.menu-hide #menu .nav > li {padding: 4px;}
.menu-hide #menu .nav > li > a {padding: 6px 4px; text-align: center;}
@@ -60,16 +59,16 @@ body.menu-hide {padding-left: 0;}
#bars > li.active:after {content: ' '; display: block; position: absolute; height: 3px; left: 5px; right: 5px; bottom: 0; border-radius: 2px;}
#bars > li.divider{margin-right: 5px; margin-top: 10px; height: 20px; border-right: 1px solid #d9d9d9;}
#userNav {float: none; margin: 0;}
#userNav>li {text-align: center;}
#userNav>li>.dropdown-menu {left: 100%; bottom: 0; top: auto; width: 140px; text-align: left; background: #3c495c;}
#userNav>li>.dropdown-menu a {color: #fff;}
#userNav>li>.dropdown-menu .dropdown-menu {left: 100%; text-align: left; background: #3c495c;}
#userNav>li .top .dropdown-menu {top: -60px;}
#userNav .dropdown-menu>li>a>.icon {position: relative; top: 0; display: inline;}
#userNav li.open>a {background: #0c64eb;}
#userNav li.divider {opacity: .24; border-top: 1px solid; height: 2px;}
#userNav .dropdown-submenu:focus > a, #userNav .dropdown-submenu:hover > a {background-color: rgba(0,0,0,.2);}
#flodNav {float: none; margin: 0;}
#flodNav>li {text-align: center;}
#flodNav>li>.dropdown-menu {left: 100%; bottom: 0; top: auto; width: 140px; text-align: left; background: #3c495c;}
#flodNav>li>.dropdown-menu a {color: #fff;}
#flodNav>li>.dropdown-menu .dropdown-menu {left: 100%; text-align: left; background: #3c495c;}
#flodNav>li .top .dropdown-menu {top: -60px;}
#flodNav .dropdown-menu>li>a>.icon {position: relative; top: 0; display: inline;}
#flodNav li.open>a {background: #0c64eb;}
#flodNav li.divider {opacity: .24; border-top: 1px solid; height: 2px;}
#flodNav .dropdown-submenu:focus > a, #flodNav .dropdown-submenu:hover > a {background-color: rgba(0,0,0,.2);}
#poweredBy {width: 40%; position: absolute; top: 4px; right: 0; padding: 0;}
#globalSearchDiv {width: 52%; float: right; margin-right: 4px;}
+7 -3
View File
@@ -55,9 +55,13 @@ js::set('defaultOpen', $open);
</div>
</div>
<div id='menuFooter'>
<ul id="userNav" class="nav">
<li id='menuToggleMenu'><a type='button' class='menu-toggle'><i class='icon icon-sm icon-menu-collapse'></i></a></li>
<li class='dropdown dropdown-hover has-avatar'><?php common::printUserBar();?></li>
<ul id="flodNav" class="nav">
<li id='menuToggleMenu'>
<a type='button' class='menu-toggle'>
<i class='icon icon-sm icon-menu-collapse'></i>
<i class='icon icon-sm icon-menu-unfold'></i>
</a>
</li>
</ul>
</div>
</div>
+1 -1
View File
@@ -34,7 +34,7 @@
<tr class='text-left'>
<th class='w-id'><?php echo $lang->idAB;?></th>
<th class='c-name text-left'><?php echo $lang->my->name;?></th>
<th class='c-name text-left'><?php echo $lang->my->project;?></th>
<th class='c-name text-left'><?php echo $lang->my->projects;?></th>
<th class='c-date'><?php echo $lang->execution->begin;?></th>
<th class='c-date'><?php echo $lang->execution->end;?></th>
<th class='c-status'><?php echo $lang->statusAB;?></th>
+2 -2
View File
@@ -35,8 +35,8 @@ js::set('deptID', $deptID);
</div>
<?php endif;?>
<div class="main-col">
<?php if(!empty($personnelList)):?>
<div id="queryBox" class="cell" data-module="accessible"></div>
<div id="queryBox" class="cell <?php if($browseType == 'bysearch') echo ' show';?>" data-module="accessible"></div>
<?php if(!empty($personnelList)):?>
<form class="main-table table-personnel" action="" data-ride="table">
<table id="accessibleList" class="table has-sort-head">
<thead>
+8 -8
View File
@@ -208,8 +208,8 @@ class project extends control
$pager = new pager($recTotal, $recPerPage, $pageID);
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
$projectTitle = $this->loadModel('setting')->getItem('owner=' . $this->app->user->account . '&module=project&key=projectTitle');
$projectStats = $this->loadModel('program')->getProjectStats($programID, $browseType, $queryID, $orderBy, $pager, $projectTitle);
$programTitle = $this->loadModel('setting')->getItem('owner=' . $this->app->user->account . '&module=project&key=programTitle');
$projectStats = $this->loadModel('program')->getProjectStats($programID, $browseType, $queryID, $orderBy, $pager, $programTitle);
$this->view->title = $this->lang->project->browse;
$this->view->position[] = $this->lang->project->browse;
@@ -233,17 +233,17 @@ class project extends control
* @access public
* @return void
*/
public function projectTitle()
public function programTitle()
{
$this->loadModel('setting');
if($_POST)
{
$projectTitle = $this->post->projectTitle;
$this->setting->setItem($this->app->user->account . '.project.projectTitle', $projectTitle);
$programTitle = $this->post->programTitle;
$this->setting->setItem($this->app->user->account . '.project.programTitle', $programTitle);
die(js::reload('parent.parent'));
}
$status = $this->setting->getItem('owner=' . $this->app->user->account . '&module=project&key=projectTitle');
$status = $this->setting->getItem('owner=' . $this->app->user->account . '&module=project&key=programTitle');
$this->view->status = empty($status) ? '0' : $status;
$this->display();
}
@@ -629,7 +629,7 @@ class project extends control
$this->view->position[] = html::a($this->createLink('project', 'browse', "projectID=$projectID"), $project->name);
$this->view->position[] = $this->lang->project->dynamic;
$this->view->userIdPairs = $this->project->getTeamMemberPairs($project->parent);
$this->view->userIdPairs = $this->project->getTeamMemberPairs($projectID);
$this->view->accountPairs = $this->loadModel('user')->getPairs('noletter|nodeleted');
/* Assign. */
@@ -723,7 +723,7 @@ class project extends control
/* Build the search form. */
$actionURL = $this->createLink('project', 'bug', "projectID=$projectID&orderBy=$orderBy&build=$build&type=bysearch&queryID=myQueryID");
$this->loadModel('execution')->buildBugSearchForm($products, $queryID, $actionURL);
$this->loadModel('execution')->buildBugSearchForm($products, $queryID, $actionURL, 'project');
/* Assign. */
$this->view->title = $title;
+1 -1
View File
@@ -86,7 +86,7 @@ $lang->project->leftStories = '剩余需求';
$lang->project->leftTasks = '剩余任务';
$lang->project->leftBugs = '剩余Bug';
$lang->project->children = '子项目';
$lang->project->parent = '项目集';
$lang->project->parent = '所属项目集';
$lang->project->allStories = '总需求';
$lang->project->doneStories = '已完成';
$lang->project->doneProjects = '已结束';
+2 -3
View File
@@ -645,11 +645,10 @@ class projectModel extends model
public function createManageLink($project)
{
$link = $project->type == 'program' ? helper::createLink('project', 'browse', "projectID={$project->id}&status=all") : helper::createLink('project', 'index', "projectID={$project->id}", '', '', $project->id);
$icon = $project->type == 'program' ? "<i class='icon icon-program'></i> " : "<i class='icon icon-project'></i> ";
if($this->app->rawModule == 'execution') $link = helper::createLink('execution', 'all', "status=all&projectID={$project->id}");
return html::a($link, $icon . $project->name, '_self', "id=program{$project->id} title='{$project->name}' class='text-ellipsis'");
return html::a($link, $project->name, '_self', "id=program{$project->id} title='{$project->name}' class='text-ellipsis'");
}
/**
@@ -1239,7 +1238,7 @@ class projectModel extends model
{
$canOrder = common::hasPriv('project', 'updateOrder');
$canBatchEdit = common::hasPriv('project', 'batchEdit');
$projectLink = $this->config->systemMode == 'new' ? helper::createLink('project', 'index', "projectID=$project->id", '', '', $project->id) : helper::createLink('project', 'task', "projectID=$project->id");
$projectLink = $this->config->systemMode == 'new' ? helper::createLink('project', 'index', "projectID=$project->id", '', '', $project->id) : helper::createLink('execution', 'task', "projectID=$project->id");
$account = $this->app->user->account;
$id = $col->id;
+2 -2
View File
@@ -24,7 +24,7 @@ js::set('browseType', $browseType);
<?php if($this->config->systemMode == 'new'):?>
<div id="sidebarHeader">
<div class="title">
<?php echo $programID ? $program->name : $lang->project->common;?>
<?php echo $programID ? $program->name : $lang->project->parent;?>
<?php if($programID) echo html::a(inLink('browse', 'programID=0'), "<i class='icon icon-sm icon-close'></i>", '', 'class="text-muted"');?>
</div>
</div>
@@ -55,7 +55,7 @@ js::set('browseType', $browseType);
<div class="cell">
<?php echo $programTree;?>
<div class="text-center">
<?php common::printLink('project', 'projectProgramTitle', '', $lang->project->moduleSetting, '', "class='btn btn-info btn-wide iframe'", true, true);?>
<?php common::printLink('project', 'programTitle', '', $lang->project->moduleSetting, '', "class='btn btn-info btn-wide iframe'", true, true);?>
</div>
</div>
</div>
-32
View File
@@ -1,32 +0,0 @@
<?php
/**
* The prjprojecttitle view file of project module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package project
* @version $Id: prjprojecttitle.html.php 4769 2013-05-05 07:24:21Z wwccss $
* @link http://www.zentao.net
*/
?>
<?php include '../../common/view/header.lite.html.php';?>
<div class="modal-header">
<h4 class="modal-title"><i class="icon-cog"></i><?php echo $lang->project->moduleSetting;?></h4>
</div>
<div class="modal-body" style="max-height: 564px; overflow: visible;">
<form class="form-condensed" method="post" target="hiddenwin">
<table class="table table-form">
<tbody>
<tr>
<td class="w-180px"><?php echo $lang->project->moduleOpen;?></td>
<td><?php echo html::radio('programTitle', $lang->project->programTitle, $status);?></td>
</tr>
<tr>
<td colspan="2" class="text-center"><?php echo html::submitButton();?></td>
</tr>
</tbody>
</table>
</form>
</div>
<?php include '../../common/view/footer.html.php';?>
+1 -1
View File
@@ -676,7 +676,7 @@ class task extends control
/* Set menu. */
$execution = $this->execution->getById($task->execution);
$this->execution->setMenu($this->execution->getPairs(), $execution->id);
$this->execution->setMenu($execution->id);
$this->executeHooks($taskID);
+2 -2
View File
@@ -1274,12 +1274,12 @@ class testtask extends control
{
$this->loadModel('qa')->setMenu($this->products, $productID);
}
$this->app->rawModule = 'testcase';
$this->app->loadLang('job');
$this->app->rawModule = 'testcase';
$productID = $productID ? $productID : key($this->products);
$projectID = $this->lang->navGroup->testtask == 'qa' ? 0 : $this->session->project;
$projectID = $this->app->openApp == 'qa' ? 0 : $this->session->project;
$executions = empty($productID) ? array() : $this->loadModel('product')->getExecutionPairsByProduct($productID, 0, 'id_desc', $projectID);
$builds = empty($productID) ? array() : $this->loadModel('build')->getProductBuildPairs($productID, 0, 'notrunk');
+1 -1
View File
@@ -1494,7 +1494,7 @@ class testtaskModel extends model
common::printIcon('testcase', 'createBug', "product=$run->product&branch=$run->branch&extra=executionID=$task->execution,buildID=$task->build,caseID=$run->case,version=$run->version,runID=$run->id,testtask=$task->id", $run, 'list', 'bug', '', 'iframe', '', "data-width='90%'");
common::printIcon('testtask', 'results', "id=$run->id", $run, 'list', '', '', 'iframe', '', "data-width='90%'");
common::printIcon('testtask', 'runCase', "id=$run->id", $run, 'list', '', '', 'runCase iframe', false, "data-width='95%'");
common::printIcon('testtask', 'runCase', "id=$run->id", $run, 'list', 'play', '', 'runCase iframe', false, "data-width='95%'");
if(common::hasPriv('testtask', 'unlinkCase', $run))
{
+3 -3
View File
File diff suppressed because one or more lines are too long
+10 -3
View File
@@ -44,8 +44,15 @@ a.showMoreImage:hover {opacity: 1;}
.table-actions .btn {background: #78bdf5; color: #fff; border-color: #78bdf5}
.table-footer .checked+div .btn, .table-actions .btn:hover {background: #16a8f8; border-color: #16a8f8}
#header #toolbar a{color: #fff; font-size: 13px; line-height: 15px; border: #84a2e2 1px solid}
#header #toolbar a{color: #3c4353; font-size: 13px; line-height: 15px;}
#header #toolbar i{font-size: 16px;}
#navbar .nav>li.divider {margin: 15px 8px 15px 8px;}
#navbar .nav>li>a { padding: 10px 10px;}
#toolbar {top: 6px;}
#userNav {float: none; margin: 0;}
#userNav>li {text-align: center}
#userNav>li>a {padding: 6px 6px;color: #000; opacity: .9;margin-left: 0px}
#userNav>li>a:hover {background: #0c64eb;}
#userNav>li>.dropdown-menu {text-align: left;}
#userNav>li>.dropdown-menu a {color: #fff}
#userNav>li .lang .dropdown-menu, #userNav>li .theme .dropdown-menu {top: -60px}
#userNav .dropdown-menu>li>a>.icon { position: initial; display: inline;}