Conflicts:
	module/common/lang/en.php
	module/common/lang/zh-cn.php
This commit is contained in:
daitingting
2017-05-16 14:51:26 +08:00
46 changed files with 640 additions and 61 deletions
-1
View File
@@ -47,7 +47,6 @@ pms:
chmod 777 zentaopms/www
chmod a+rx zentaopms/bin/*
find zentaopms/ -name ext |xargs chmod -R 777
echo full > zentaopms/.flow
zip -r -9 ZenTaoPMS.$(VERSION).zip zentaopms
rm -fr zentaopms
deb:
+1 -1
View File
@@ -1 +1 @@
9.1.2
9.2.stable
+1 -1
View File
@@ -17,7 +17,7 @@ if(!function_exists('getWebRoot')){function getWebRoot(){}}
/* Basic settings. */
$config = new config();
$config->version = '9.1.2'; // The version of zentaopms. Don't change it.
$config->version = '9.2'; // The version of zentaopms. Don't change it.
$config->charset = 'UTF-8'; // The charset of zentaopms.
$config->cookieLife = time() + 2592000; // The cookie life time.
$config->timezone = 'Asia/Shanghai'; // The time zone setting, for more see http://www.php.net/manual/en/timezones.php
+29
View File
@@ -901,6 +901,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(1, 'cron', 'toggle'),
(1, 'cron', 'turnon'),
(1, 'custom', 'flow'),
(1, 'custom', 'working'),
(1, 'custom', 'index'),
(1, 'custom', 'restore'),
(1, 'custom', 'set'),
@@ -923,6 +924,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(1, 'doc', 'objectLibs'),
(1, 'doc', 'showFiles'),
(1, 'doc', 'view'),
(1, 'doc', 'sort'),
(1, 'editor', 'delete'),
(1, 'editor', 'edit'),
(1, 'editor', 'extend'),
@@ -995,6 +997,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(1, 'product', 'project'),
(1, 'product', 'roadmap'),
(1, 'product', 'view'),
(1, 'product', 'build'),
(1, 'product', 'updateOrder'),
(1, 'branch', 'manage'),
(1, 'branch', 'sort'),
@@ -1166,6 +1169,10 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(1, 'testsuite', 'library'),
(1, 'testsuite', 'createLib'),
(1, 'testsuite', 'createCase'),
(1, 'testsuite', 'exportTemplet'),
(1, 'testsuite', 'batchCreateCase'),
(1, 'testsuite', 'import'),
(1, 'testsuite', 'showImport'),
(1, 'testsuite', 'libView'),
(1, 'testtask', 'batchAssign'),
(1, 'testtask', 'batchRun'),
@@ -1293,6 +1300,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(2, 'product', 'project'),
(2, 'product', 'roadmap'),
(2, 'product', 'view'),
(2, 'product', 'build'),
(2, 'productplan', 'browse'),
(2, 'productplan', 'view'),
(2, 'project', 'browse'),
@@ -1471,6 +1479,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(3, 'product', 'project'),
(3, 'product', 'roadmap'),
(3, 'product', 'view'),
(3, 'product', 'build'),
(3, 'productplan', 'browse'),
(3, 'productplan', 'view'),
(3, 'project', 'browse'),
@@ -1707,6 +1716,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(4, 'product', 'project'),
(4, 'product', 'roadmap'),
(4, 'product', 'view'),
(4, 'product', 'build'),
(4, 'productplan', 'browse'),
(4, 'productplan', 'view'),
(4, 'project', 'activate'),
@@ -1932,6 +1942,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(5, 'product', 'project'),
(5, 'product', 'roadmap'),
(5, 'product', 'view'),
(5, 'product', 'build'),
(5, 'product', 'updateOrder'),
(5, 'branch', 'manage'),
(5, 'branch', 'sort'),
@@ -2057,6 +2068,10 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(5, 'testsuite', 'library'),
(5, 'testsuite', 'createLib'),
(5, 'testsuite', 'createCase'),
(5, 'testsuite', 'exportTemplet'),
(5, 'testsuite', 'batchCreateCase'),
(5, 'testsuite', 'import'),
(5, 'testsuite', 'showImport'),
(5, 'testsuite', 'libView'),
(5, 'testtask', 'browse'),
(5, 'testtask', 'cases'),
@@ -2187,6 +2202,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(6, 'product', 'project'),
(6, 'product', 'roadmap'),
(6, 'product', 'view'),
(6, 'product', 'build'),
(6, 'productplan', 'browse'),
(6, 'productplan', 'view'),
(6, 'project', 'activate'),
@@ -2410,6 +2426,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(7, 'product', 'project'),
(7, 'product', 'roadmap'),
(7, 'product', 'view'),
(7, 'product', 'build'),
(7, 'product', 'updateOrder'),
(7, 'branch', 'manage'),
(7, 'branch', 'sort'),
@@ -2519,6 +2536,10 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(7, 'testsuite', 'library'),
(7, 'testsuite', 'createLib'),
(7, 'testsuite', 'createCase'),
(7, 'testsuite', 'exportTemplet'),
(7, 'testsuite', 'batchCreateCase'),
(7, 'testsuite', 'import'),
(7, 'testsuite', 'showImport'),
(7, 'testsuite', 'libView'),
(7, 'testtask', 'browse'),
(7, 'testtask', 'cases'),
@@ -2643,6 +2664,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(8, 'product', 'project'),
(8, 'product', 'roadmap'),
(8, 'product', 'view'),
(8, 'product', 'build'),
(8, 'productplan', 'browse'),
(8, 'productplan', 'view'),
(8, 'project', 'bug'),
@@ -2753,6 +2775,10 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(8, 'testsuite', 'library'),
(8, 'testsuite', 'createLib'),
(8, 'testsuite', 'createCase'),
(8, 'testsuite', 'exportTemplet'),
(8, 'testsuite', 'batchCreateCase'),
(8, 'testsuite', 'import'),
(8, 'testsuite', 'showImport'),
(8, 'testsuite', 'libView'),
(8, 'testtask', 'batchAssign'),
(8, 'testtask', 'batchRun'),
@@ -2872,6 +2898,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(9, 'product', 'project'),
(9, 'product', 'roadmap'),
(9, 'product', 'view'),
(9, 'product', 'build'),
(9, 'productplan', 'browse'),
(9, 'productplan', 'view'),
(9, 'project', 'browse'),
@@ -3009,6 +3036,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(10, 'product', 'all'),
(10, 'product', 'roadmap'),
(10, 'product', 'view'),
(10, 'product', 'build'),
(10, 'productplan', 'browse'),
(10, 'productplan', 'view'),
(10, 'project', 'browse'),
@@ -3100,6 +3128,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(11, 'product', 'all'),
(11, 'product', 'roadmap'),
(11, 'product', 'view'),
(11, 'product', 'build'),
(11, 'productplan', 'browse'),
(11, 'productplan', 'view'),
(11, 'project', 'browse'),
+62
View File
@@ -1,3 +1,65 @@
2017-05-16 9.2.stable
完成的需求
1883 windows一键安装包提示安装vC环境改为可选
1982 支持多种工作模式
2143 需求、bug、用例增加批量修改所属分支的功能
2164 文档库增加排序功能
2207 创建产品的时候多平台多分支增加说明
2239 项目关联需求的时候将需求的研发阶段也列出来
2240 备份的时候将禅道的代码目录也备份下来
2241 文档视图中的产品和项目文档库中的权限控制增加团队成员允许访问的功能
2246 批量添加需求时在需求标题后面增加复制按钮
2247 文档库中的附件库增加搜索功能
2253 批量执行用例界面把前置条件显示出来
2254 将每日邮件通知里面的s去掉
2260 每日提醒的邮件发送时间调整下
2261 调整各个列表页面的表头的对齐方式。
2262 发信设置里面的发信域名改为禅道域名。
2265 分支或者平台下面的模块应该列出有需求的公共模块
2266 公共用例库增加导入和批量添加的功能
2267 公共用例库增加重名判断,用例库名称增加必填项标识,用例库图标和产品图标做区别。
2271 优化下数据库检查修复页面的排版
2272 调整测试套件列表页面
2273 调整测试用例的评审功能
2274 从公共用例库导入用例时完善模块对照逻辑
2275 测试总结报告保存按钮上调。
2276 用例步骤分组重新调整。
2277 Bug导为任务时需要处理截止日期
2278 任务列表的批量操作增加取消。
2279 燃尽图修改首天工时时将那一天的剩余工时也修改了
2280 cron表崩溃之后能够自动修复
2282 禅道如果和然之集成后,样式做调整
2283 表单里面一行多个控件必填项的展示需要调整
2284 维护模块的时候可以从中间插入一个记录
2285 测试报告中相应列表页面增加链接
2286 项目导入bug的时候,将解决方案等于延期的也列出来
2287 在详情页面切换产品列表跳转到该产品的需求列表页面
2288 禅道多图上传可以直接用多图上传的插件。
2290 禅道迁移目录之后,model临时文件能够自动重新生成。
2291 计划关联需求时,需求可以弹窗查看。
2292 升级windows一键安装包
2293 升级linux一键安装包
修复的Bug
1086 测试-版本生成报告页面切换分支报错
1085 bug详情电池所属计划显示乱码
1082 项目--需求列表,把鼠标放在T B C上不显示提示文字。
1079 用例添加步骤后,用例列表步骤显示为00
1071 文档上传附件图片查看文档详情的时候无法关闭预览
1066 编辑bug影响版本看不到删除按钮
1065 xampp集成包经常出现无法访问重启服务后可以正常访问
1064 编辑需求删除关联的计划无效
1063 测试-报告页面切换分支报错
1059 bug编辑无法显示关联需求
1057 用例编辑修改步骤后列表页面用例步骤数不会发生改变
1056 windows一件安装包修改端口报错
1052 图片预览功能显示太小无法看清楚
1046 重复修改模块所属的产品时,列出的模块列表有重复
1044 测试视图版本选择里面的全部产品应当根据流程设置进行修改
1039 测试-版本中查看用例详情点击转bug按钮影响版本和所属项目等信息没有带到提bug页面
1017 当产品-需求的模块数量在1000个左右访问禅道产品-需求页面加载速度最少需要2-5秒
1008 我的地盘首页的待办点击后跳转到组织-用户-待办页面
1003 报表中的安装模块统计不显示平台分支信息导致名称一致不好识别
2017-03-23 9.1.stable
完成的需求
104 test suite管理
+1 -1
View File
@@ -43,7 +43,7 @@ class router extends baseRouter
global $config;
if(!isset($config->global)) $config->global = new stdclass();
$flow = $this->dbh->query('SELECT value FROM' . TABLE_CONFIG . "WHERE `owner`='system' AND `module`='common' AND `key`='flow'")->fetch();
if($flow) $config->global->flow = $flow->value;
$config->global->flow = $flow ? $flow->value : 'full';
try
{
+7 -6
View File
@@ -45,12 +45,13 @@ $lang->admin->bind->caption = '關聯社區帳號';
$lang->admin->bind->success = "關聯賬戶成功";
$lang->admin->safe = new stdclass();
$lang->admin->safe->common = '安全';
$lang->admin->safe->set = '密碼安全設置';
$lang->admin->safe->password = '密碼安全';
$lang->admin->safe->weak = '常用弱口令';
$lang->admin->safe->reason = '類型';
$lang->admin->safe->checkWeak = '弱口令掃瞄';
$lang->admin->safe->common = '安全策略';
$lang->admin->safe->set = '密碼安全設置';
$lang->admin->safe->password = '密碼安全';
$lang->admin->safe->weak = '常用弱口令';
$lang->admin->safe->reason = '類型';
$lang->admin->safe->checkWeak = '弱口令掃瞄';
$lang->admin->safe->changeWeak = '修改弱口令密碼';
$lang->admin->safe->modifyPasswordFirstLogin = '首次登陸修改密碼';
$lang->admin->safe->modeList[0] = '不檢查';
+2
View File
@@ -16,6 +16,7 @@ $lang->backup->waitting = '<span id="backupType"></span>正在進行中,
$lang->backup->confirmDelete = '是否刪除備份?';
$lang->backup->confirmRestore = '是否還原該備份?';
$lang->backup->holdDays = '備份保留最近 %s 天';
$lang->backup->restoreTip = '還原功能只還原附件和資料庫,如果需要還原代碼,可以手動還原。';
$lang->backup->success = new stdclass();
$lang->backup->success->backup = '備份成功!';
@@ -27,3 +28,4 @@ $lang->backup->error->noDelete = "檔案 %s 無法刪除,修改權限或手
$lang->backup->error->restoreSQL = "資料庫還原失敗,錯誤:%s";
$lang->backup->error->restoreFile = "附件還原失敗,錯誤:%s";
$lang->backup->error->backupFile = "附件備份失敗,錯誤:%s";
$lang->backup->error->backupCode = "代碼備份失敗,錯誤:%s";
+73 -25
View File
@@ -93,31 +93,79 @@ $lang->block->default['qa']['3']['params']['num'] = 15;
$lang->block->default['qa']['3']['params']['orderBy'] = 'id_desc';
$lang->block->default['qa']['3']['params']['type'] = 'wait';
$lang->block->default['my']['1']['title'] = '流程圖';
$lang->block->default['my']['1']['block'] = 'flowchart';
$lang->block->default['my']['1']['grid'] = 8;
$lang->block->default['my']['1']['source'] = '';
$lang->block->default['my']['2']['title'] = '最新動態';
$lang->block->default['my']['2']['block'] = 'dynamic';
$lang->block->default['my']['2']['grid'] = 4;
$lang->block->default['my']['2']['source'] = '';
$lang->block->default['my']['3'] = $lang->block->default['project']['1'];
$lang->block->default['my']['3']['source'] = 'project';
$lang->block->default['my']['4']['title'] = '我的待辦';
$lang->block->default['my']['4']['block'] = 'list';
$lang->block->default['my']['4']['grid'] = 4;
$lang->block->default['my']['4']['source'] = 'todo';
$lang->block->default['my']['4']['params']['num'] = '20';
$lang->block->default['my']['5'] = $lang->block->default['product']['1'];
$lang->block->default['my']['5']['source'] = 'product';
$lang->block->default['my']['6'] = $lang->block->default['project']['2'];
$lang->block->default['my']['6']['source'] = 'project';
$lang->block->default['my']['7'] = $lang->block->default['qa']['1'];
$lang->block->default['my']['7']['source'] = 'qa';
$lang->block->default['my']['8'] = $lang->block->default['product']['2'];
$lang->block->default['my']['8']['source'] = 'product';
$lang->block->default['my']['9'] = $lang->block->default['qa']['2'];
$lang->block->default['my']['9']['source'] = 'qa';
$lang->block->default['full']['my']['1']['title'] = '流程圖';
$lang->block->default['full']['my']['1']['block'] = 'flowchart';
$lang->block->default['full']['my']['1']['grid'] = 8;
$lang->block->default['full']['my']['1']['source'] = '';
$lang->block->default['full']['my']['2']['title'] = '最新動態';
$lang->block->default['full']['my']['2']['block'] = 'dynamic';
$lang->block->default['full']['my']['2']['grid'] = 4;
$lang->block->default['full']['my']['2']['source'] = '';
$lang->block->default['full']['my']['3'] = $lang->block->default['project']['1'];
$lang->block->default['full']['my']['3']['source'] = 'project';
$lang->block->default['full']['my']['4']['title'] = '我的待辦';
$lang->block->default['full']['my']['4']['block'] = 'list';
$lang->block->default['full']['my']['4']['grid'] = 4;
$lang->block->default['full']['my']['4']['source'] = 'todo';
$lang->block->default['full']['my']['4']['params']['num'] = '20';
$lang->block->default['full']['my']['5'] = $lang->block->default['product']['1'];
$lang->block->default['full']['my']['5']['source'] = 'product';
$lang->block->default['full']['my']['6'] = $lang->block->default['project']['2'];
$lang->block->default['full']['my']['6']['source'] = 'project';
$lang->block->default['full']['my']['7'] = $lang->block->default['qa']['1'];
$lang->block->default['full']['my']['7']['source'] = 'qa';
$lang->block->default['full']['my']['8'] = $lang->block->default['product']['2'];
$lang->block->default['full']['my']['8']['source'] = 'product';
$lang->block->default['full']['my']['9'] = $lang->block->default['qa']['2'];
$lang->block->default['full']['my']['9']['source'] = 'qa';
$lang->block->default['onlyTest']['my']['1'] = $lang->block->default['qa']['1'];
$lang->block->default['onlyTest']['my']['1']['source'] = 'qa';
$lang->block->default['onlyTest']['my']['1']['grid'] = '8';
$lang->block->default['onlyTest']['my']['2']['title'] = '最新動態';
$lang->block->default['onlyTest']['my']['2']['block'] = 'dynamic';
$lang->block->default['onlyTest']['my']['2']['grid'] = 4;
$lang->block->default['onlyTest']['my']['2']['source'] = '';
$lang->block->default['onlyTest']['my']['3']['title'] = '我的待辦';
$lang->block->default['onlyTest']['my']['3']['block'] = 'list';
$lang->block->default['onlyTest']['my']['3']['grid'] = 6;
$lang->block->default['onlyTest']['my']['3']['source'] = 'todo';
$lang->block->default['onlyTest']['my']['3']['params']['num'] = '20';
$lang->block->default['onlyTest']['my']['4'] = $lang->block->default['qa']['2'];
$lang->block->default['onlyTest']['my']['4']['source'] = 'qa';
$lang->block->default['onlyTest']['my']['4']['grid'] = '6';
$lang->block->default['onlyStory']['my']['1'] = $lang->block->default['product']['1'];
$lang->block->default['onlyStory']['my']['1']['source'] = 'product';
$lang->block->default['onlyStory']['my']['1']['grid'] = '8';
$lang->block->default['onlyStory']['my']['2']['title'] = '最新動態';
$lang->block->default['onlyStory']['my']['2']['block'] = 'dynamic';
$lang->block->default['onlyStory']['my']['2']['grid'] = 4;
$lang->block->default['onlyStory']['my']['2']['source'] = '';
$lang->block->default['onlyStory']['my']['3']['title'] = '我的待辦';
$lang->block->default['onlyStory']['my']['3']['block'] = 'list';
$lang->block->default['onlyStory']['my']['3']['grid'] = 6;
$lang->block->default['onlyStory']['my']['3']['source'] = 'todo';
$lang->block->default['onlyStory']['my']['3']['params']['num'] = '20';
$lang->block->default['onlyStory']['my']['4'] = $lang->block->default['product']['2'];
$lang->block->default['onlyStory']['my']['4']['source'] = 'product';
$lang->block->default['onlyStory']['my']['4']['grid'] = '4';
$lang->block->default['onlyTask']['my']['1'] = $lang->block->default['project']['1'];
$lang->block->default['onlyTask']['my']['1']['source'] = 'project';
$lang->block->default['onlyTask']['my']['1']['grid'] = '8';
$lang->block->default['onlyTask']['my']['2']['title'] = '最新動態';
$lang->block->default['onlyTask']['my']['2']['block'] = 'dynamic';
$lang->block->default['onlyTask']['my']['2']['grid'] = 4;
$lang->block->default['onlyTask']['my']['2']['source'] = '';
$lang->block->default['onlyTask']['my']['3']['title'] = '我的待辦';
$lang->block->default['onlyTask']['my']['3']['block'] = 'list';
$lang->block->default['onlyTask']['my']['3']['grid'] = 6;
$lang->block->default['onlyTask']['my']['3']['source'] = 'todo';
$lang->block->default['onlyTask']['my']['3']['params']['num'] = '20';
$lang->block->default['onlyTask']['my']['4'] = $lang->block->default['project']['2'];
$lang->block->default['onlyTask']['my']['4']['source'] = 'project';
$lang->block->default['onlyTask']['my']['4']['grid'] = 6;
$lang->block->num = '數量';
$lang->block->type = '類型';
+5 -2
View File
@@ -33,9 +33,12 @@ $(document).ready(function()
var navWidth = $('#modulemenu > .nav').width();
var leftWidth = 0;
var rightWidth = 0;
$('#modulemenu > .nav > li.right').each(function(){rightWidth += $(this).width();})
var maxWidth = navWidth - $('#modulemenu > .nav > #bysearchTab').width() - rightWidth - 80;
$rightNav = $('#modulemenu > .nav > li.right');
rightLength = $rightNav.length;
for(i = 0; i < rightLength; i++) rightWidth += $rightNav.eq(i).width();
var maxWidth = navWidth - $('#modulemenu > .nav > #bysearchTab').width() - rightWidth - 100;
$('#modulemenu > .nav > li:not(.right)').each(function()
{
+53
View File
@@ -668,6 +668,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of bug module. */
$lang->bug->menu = new stdclass();
<<<<<<< HEAD
$lang->bug->menu->product = array('link' => '%s', 'fixed' => true);
$lang->bug->menu->unclosed = 'Open|bug|browse|productID=%s&branch=%s&browseType=unclosed&param=%s';
$lang->bug->menu->all = 'All|bug|browse|productID=%s&branch=%s&browseType=all&param=%s';
@@ -681,6 +682,21 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
$lang->bug->menu->longlifebugs = 'Pending|bug|browse|productID=%s&branch=%s&browseType=longlifebugs&param=%s';
$lang->bug->menu->postponedbugs = 'PostPoned|bug|browse|productID=%s&branch=%s&browseType=postponedbugs&param=%s';
$lang->bug->menu->overduebugs = 'Overdue|bug|browse|productID=%s&branch=%s&browseType=overduebugs&param=%s';
=======
$lang->bug->menu->product = array('link' => '%s', 'fixed' => true);
$lang->bug->menu->unclosed = 'Unclosed|bug|browse|productID=%s&branch=%s&browseType=unclosed&param=%s';
$lang->bug->menu->all = 'All|bug|browse|productID=%s&branch=%s&browseType=all&param=%s';
$lang->bug->menu->assigntome = 'Assign to me|bug|browse|productID=%s&branch=%s&browseType=assigntome&param=%s';
$lang->bug->menu->openedbyme = 'Opened by me|bug|browse|productID=%s&branch=%s&browseType=openedbyme&param=%s';
$lang->bug->menu->resolvedbyme = 'Resolved by me|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme&param=%s';
$lang->bug->menu->unconfirmed = 'Unconfirmed|bug|browse|productID=%s&branch=%s&browseType=unconfirmed&param=%s';
$lang->bug->menu->assigntonull = 'Unassigned|bug|browse|productID=%s&branch=%s&browseType=assigntonull&param=%s';
$lang->bug->menu->unresolved = 'Unresolved|bug|browse|productID=%s&branch=%s&browseType=unresolved&param=%s';
$lang->bug->menu->toclosed = 'To closed|bug|browse|productID=%s&branch=%s&browseType=toclosed&param=%s';
$lang->bug->menu->longlifebugs = 'Long life bugs|bug|browse|productID=%s&branch=%s&browseType=longlifebugs&param=%s';
$lang->bug->menu->postponedbugs = 'Postponed bugs|bug|browse|productID=%s&branch=%s&browseType=postponedbugs&param=%s';
$lang->bug->menu->overduebugs = 'Overdue Bug|bug|browse|productID=%s&branch=%s&browseType=overduebugs&param=%s';
>>>>>>> 12c288a4e7a20122e9feaae8a11662d295ab2e6c
$lang->bug->menuOrder[5] = 'product';
$lang->bug->menuOrder[10] = 'unclosed';
@@ -698,10 +714,17 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of testcase. */
$lang->testcase->menu = new stdclass();
<<<<<<< HEAD
$lang->testcase->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testcase->menu->all = 'All|testcase|browse|productID=%s&branch=%s&browseType=all';
$lang->testcase->menu->wait = 'Wait|testcase|browse|productID=%s&branch=%s&browseType=wait';
$lang->testcase->menu->suite = array('link' => '%s', 'fixed' => true);
=======
$lang->testcase->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testcase->menu->all = '所有|testcase|browse|productID=%s&branch=%s&browseType=all';
$lang->testcase->menu->wait = '待评审|testcase|browse|productID=%s&branch=%s&browseType=wait';
$lang->testcase->menu->suite = '%s';
>>>>>>> 12c288a4e7a20122e9feaae8a11662d295ab2e6c
$lang->testcase->menuOrder[5] = 'product';
$lang->testcase->menuOrder[10] = 'all';
@@ -710,14 +733,20 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
/* Adjust sub menu of bug module. */
$lang->testsuite->menu = new stdclass();
<<<<<<< HEAD
$lang->testsuite->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testsuite->menu->create = array('link' => "<i class='icon-plus'></i> Create Suite|testsuite|create|productID=%s", 'float' => 'right');
=======
$lang->testsuite->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testsuite->menu->create = array('link' => "<i class='icon-plus'></i> 建套件|testsuite|create|productID=%s", 'float' => 'right');
>>>>>>> 12c288a4e7a20122e9feaae8a11662d295ab2e6c
$lang->testsuite->menuOrder[5] = 'product';
$lang->testsuite->menuOrder[10] = 'create';
/* Adjust sub menu of testtask. */
$lang->testtask->menu = new stdclass();
<<<<<<< HEAD
$lang->testtask->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testtask->menu->scope = array('link' => '%s', 'fixed' => true);
$lang->testtask->menu->wait = 'Build to be Tested|testtask|browse|productID=%s&branch=%s&type=%s,wait';
@@ -727,6 +756,17 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
$lang->testtask->menu->totalStatus = 'All|testtask|browse|productID=%s&branch=%s&type=%s,totalStatus';
$lang->testtask->menu->report = array('link' => 'Report|testreport|browse');
$lang->testtask->menu->create = array('link' => "<i class='icon-plus'></i> Create|testtask|create|productID=%s", 'float' => 'right');
=======
$lang->testtask->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testtask->menu->scope = '%s';
$lang->testtask->menu->wait = 'Wait|testtask|browse|productID=%s&branch=%s&type=%s,wait';
$lang->testtask->menu->doing = 'Doing|testtask|browse|productID=%s&branch=%s&type=%s,doing';
$lang->testtask->menu->blocked = 'Blocked|testtask|browse|productID=%s&branch=%s&type=%s,blocked';
$lang->testtask->menu->done = 'Done|testtask|browse|productID=%s&branch=%s&type=%s,done';
$lang->testtask->menu->totalStatus = 'All|testtask|browse|productID=%s&branch=%s&type=%s,totalStatus';
$lang->testtask->menu->report = array('link' => 'Report|testreport|browse', 'alias' => 'view,create,edit');
$lang->testtask->menu->create = array('link' => "<i class='icon-plus'></i> Test|testtask|create|productID=%s", 'float' => 'right');
>>>>>>> 12c288a4e7a20122e9feaae8a11662d295ab2e6c
$lang->testtask->menuOrder[5] = 'product';
$lang->testtask->menuOrder[10] = 'scope';
@@ -739,6 +779,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
$lang->testtask->menuOrder[45] = 'create';
/* Adjust sub menu of report module. */
<<<<<<< HEAD
$lang->testreport->menu = new stdclass();
$lang->testreport->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testreport->menu->scope = array('link' => '%s', 'fixed' => true);
@@ -767,6 +808,18 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
$lang->caselib->menu->wait = 'Wait|testsuite|library|libID=%s&browseType=wait';
$lang->caselib->menu->view = 'View|testsuite|libview|libID=%s';
$lang->caselib->menu->create = array('link' => "<i class='icon-plus'></i> Create Library|testsuite|createLib", 'float' => 'right');
=======
$lang->testreport->menu = $lang->testtask->menu;
$lang->testreport->menuOrder = $lang->testtask->menuOrder;
/* Adjust sub menu of caselib module. */
$lang->caselib->menu = new stdclass();
$lang->caselib->menu->lib = array('link' => '%s', 'fixed' => true);
$lang->caselib->menu->all = 'All|testsuite|library|libID=%s&browseType=all';
$lang->caselib->menu->wait = 'Wait|testsuite|library|libID=%s&browseType=wait';
$lang->caselib->menu->view = 'View|testsuite|libview|libID=%s';
$lang->caselib->menu->create = array('link' => "<i class='icon-plus'></i> Create Lib|testsuite|createLib", 'float' => 'right');
>>>>>>> 12c288a4e7a20122e9feaae8a11662d295ab2e6c
$lang->caselib->menuOrder[5] = 'lib';
$lang->caselib->menuOrder[10] = 'all';
+6 -1
View File
@@ -725,7 +725,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
$lang->testtask->menu->blocked = '被阻塞版本|testtask|browse|productID=%s&branch=%s&type=%s,blocked';
$lang->testtask->menu->done = '已测版本|testtask|browse|productID=%s&branch=%s&type=%s,done';
$lang->testtask->menu->totalStatus = '全部|testtask|browse|productID=%s&branch=%s&type=%s,totalStatus';
$lang->testtask->menu->report = array('link' => '报告|testreport|browse');
$lang->testtask->menu->report = array('link' => '报告|testreport|browse', 'alias' => 'view,create,edit');
$lang->testtask->menu->create = array('link' => "<i class='icon-plus'></i> 提交测试|testtask|create|productID=%s", 'float' => 'right');
$lang->testtask->menuOrder[5] = 'product';
@@ -739,6 +739,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
$lang->testtask->menuOrder[45] = 'create';
/* Adjust sub menu of report module. */
<<<<<<< HEAD
$lang->testreport->menu = new stdclass();
$lang->testreport->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testreport->menu->scope = array('link' => '%s', 'fixed' => true);
@@ -759,6 +760,10 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
$lang->testreport->menuOrder[35] = 'totalStatus';
$lang->testreport->menuOrder[40] = 'report';
$lang->testreport->menuOrder[45] = 'testtask';
=======
$lang->testreport->menu = $lang->testtask->menu;
$lang->testreport->menuOrder = $lang->testtask->menuOrder;
>>>>>>> 12c288a4e7a20122e9feaae8a11662d295ab2e6c
/* Adjust sub menu of caselib module. */
$lang->caselib->menu = new stdclass();
+237 -1
View File
@@ -284,7 +284,7 @@ $lang->caselib->menu->testcase = array('link' => '用例|testcase|browse|');
$lang->caselib->menu->testtask = array('link' => '版本|testtask|browse|');
$lang->caselib->menu->testsuite = array('link' => '套件|testsuite|browse|');
$lang->caselib->menu->report = array('link' => '報告|testreport|browse|');
$lang->caselib->menu->caselib = array('link' => '用例庫|testsuite|library', 'alias' => 'createlib,createcase,libview,edit', 'subModule' => 'tree,testcase');
$lang->caselib->menu->caselib = array('link' => '用例庫|testsuite|library', 'alias' => 'createlib,createcase,libview,edit,batchcreatecase,showimport', 'subModule' => 'tree,testcase');
$lang->caselib->menu->create = array('link' => "<i class='icon-plus'></i>創建庫|testsuite|createLib|", 'float' => 'right');
$lang->caselib->menu->index = array('link' => "<i class='icon-home'></i>測試主頁|qa|index|locate=no&productID=%s", 'float' => 'right');
@@ -553,3 +553,239 @@ $lang->icons['unlock'] = 'unlock-alt';
$lang->icons['confirmStoryChange'] = 'search';
include (dirname(__FILE__) . '/menuOrder.php');
global $config;
if(isset($config->global->flow) and $config->global->flow == 'onlyStory')
{
/* Remove project, report and qa module. */
unset($lang->menu->project);
unset($lang->menu->report);
unset($lang->menu->qa);
unset($lang->menuOrder[15]);
unset($lang->menuOrder[20]);
unset($lang->menuOrder[30]);
/* Adjust sub menu of my dashboard. */
unset($lang->my->menu->bug);
unset($lang->my->menu->testtask);
unset($lang->my->menu->task);
unset($lang->my->menu->myProject);
/* Adjust sub menu of product module. */
unset($lang->product->menu->project);
unset($lang->product->menu->doc);
/* Rename product module. */
$lang->menu->product = '產品|product|index';
/* Adjust search items. */
unset($lang->searchObjects['bug']);
unset($lang->searchObjects['task']);
unset($lang->searchObjects['testcase']);
unset($lang->searchObjects['project']);
unset($lang->searchObjects['build']);
unset($lang->searchObjects['testtask']);
}
if(isset($config->global->flow) and $config->global->flow == 'onlyTask')
{
/* Remove product, report and qa module. */
unset($lang->menu->product);
unset($lang->menu->report);
unset($lang->menu->qa);
unset($lang->menuOrder[10]);
unset($lang->menuOrder[20]);
unset($lang->menuOrder[30]);
/* Adjust sub menu of my dashboard. */
unset($lang->my->menu->bug);
unset($lang->my->menu->testtask);
unset($lang->my->menu->story);
/* Adjust sub menu of project module. */
unset($lang->project->menu->story);
unset($lang->project->menu->build);
unset($lang->project->menu->bug);
unset($lang->project->menu->testtask);
unset($lang->project->menu->product);
unset($lang->project->menu->doc);
/* Remove sub menu of product module. */
unset($lang->product->menu);
unset($lang->product->menuOrder);
$lang->project->menu->task['subModule'] = 'task';
$lang->project->menu->task['alias'] = 'grouptask,importtask';
unset($lang->searchObjects['bug']);
unset($lang->searchObjects['story']);
unset($lang->searchObjects['product']);
unset($lang->searchObjects['testcase']);
unset($lang->searchObjects['build']);
unset($lang->searchObjects['release']);
unset($lang->searchObjects['productplan']);
unset($lang->searchObjects['testtask']);
}
if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
{
/* Remove project and test module. */
unset($lang->menu->project);
unset($lang->menu->qa);
unset($lang->menu->report);
unset($lang->menuOrder[15]);
unset($lang->menuOrder[20]);
unset($lang->menuOrder[30]);
/* Rename product module. */
$lang->menu->product = '產品|product|index';
/* Adjust sub menu of my dashboard. */
unset($lang->my->menu->task);
unset($lang->my->menu->myProject);
unset($lang->my->menu->story);
/* Remove sub menu of project module. */
unset($lang->project->menu);
unset($lang->project->menuOrder);
/* Add bug, testcase and testtask module. */
$lang->menu->bug = 'Bug|bug|index';
$lang->menu->testcase = '用例|testcase|index';
$lang->menu->testsuite = '套件|testsuite|index';
$lang->menu->testtask = '測試|testtask|index';
$lang->menu->caselib = '用例庫|testsuite|library';
$lang->menuOrder[6] = 'bug';
$lang->menuOrder[7] = 'testcase';
$lang->menuOrder[8] = 'testsuite';
$lang->menuOrder[9] = 'testtask';
$lang->menuOrder[10] = 'caselib';
$lang->menuOrder[11] = 'product';
/* Adjust sub menu of bug module. */
$lang->bug->menu = new stdclass();
$lang->bug->menu->product = array('link' => '%s', 'fixed' => true);
$lang->bug->menu->unclosed = '未關閉|bug|browse|productID=%s&branch=%s&browseType=unclosed&param=%s';
$lang->bug->menu->all = '所有|bug|browse|productID=%s&branch=%s&browseType=all&param=%s';
$lang->bug->menu->assigntome = '指派給我|bug|browse|productID=%s&branch=%s&browseType=assigntome&param=%s';
$lang->bug->menu->openedbyme = '由我創建|bug|browse|productID=%s&branch=%s&browseType=openedbyme&param=%s';
$lang->bug->menu->resolvedbyme = '由我解決|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme&param=%s';
$lang->bug->menu->unconfirmed = '未確認|bug|browse|productID=%s&branch=%s&browseType=unconfirmed&param=%s';
$lang->bug->menu->assigntonull = '未指派|bug|browse|productID=%s&branch=%s&browseType=assigntonull&param=%s';
$lang->bug->menu->unresolved = '未解決|bug|browse|productID=%s&branch=%s&browseType=unresolved&param=%s';
$lang->bug->menu->toclosed = '待關閉|bug|browse|productID=%s&branch=%s&browseType=toclosed&param=%s';
$lang->bug->menu->longlifebugs = '久未處理|bug|browse|productID=%s&branch=%s&browseType=longlifebugs&param=%s';
$lang->bug->menu->postponedbugs = '被延期|bug|browse|productID=%s&branch=%s&browseType=postponedbugs&param=%s';
$lang->bug->menu->overduebugs = '過期Bug|bug|browse|productID=%s&branch=%s&browseType=overduebugs&param=%s';
$lang->bug->menuOrder[5] = 'product';
$lang->bug->menuOrder[10] = 'unclosed';
$lang->bug->menuOrder[15] = 'all';
$lang->bug->menuOrder[20] = 'assigntome';
$lang->bug->menuOrder[25] = 'openedbyme';
$lang->bug->menuOrder[30] = 'resolvedbyme';
$lang->bug->menuOrder[35] = 'unresolved';
$lang->bug->menuOrder[40] = 'assigntonull';
$lang->bug->menuOrder[45] = 'unresolved';
$lang->bug->menuOrder[50] = 'toclosed';
$lang->bug->menuOrder[55] = 'longlifebugs';
$lang->bug->menuOrder[60] = 'postponedbugs';
$lang->bug->menuOrder[65] = 'overduebugs';
/* Adjust sub menu of testcase. */
$lang->testcase->menu = new stdclass();
$lang->testcase->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testcase->menu->all = '所有|testcase|browse|productID=%s&branch=%s&browseType=all';
$lang->testcase->menu->wait = '待評審|testcase|browse|productID=%s&branch=%s&browseType=wait';
$lang->testcase->menu->suite = array('link' => '%s', 'fixed' => true);
$lang->testcase->menuOrder[5] = 'product';
$lang->testcase->menuOrder[10] = 'all';
$lang->testcase->menuOrder[15] = 'wait';
$lang->testcase->menuOrder[20] = 'suite';
/* Adjust sub menu of bug module. */
$lang->testsuite->menu = new stdclass();
$lang->testsuite->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testsuite->menu->create = array('link' => "<i class='icon-plus'></i> 建套件|testsuite|create|productID=%s", 'float' => 'right');
$lang->testsuite->menuOrder[5] = 'product';
$lang->testsuite->menuOrder[10] = 'create';
/* Adjust sub menu of testtask. */
$lang->testtask->menu = new stdclass();
$lang->testtask->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testtask->menu->scope = array('link' => '%s', 'fixed' => true);
$lang->testtask->menu->wait = '待測版本|testtask|browse|productID=%s&branch=%s&type=%s,wait';
$lang->testtask->menu->doing = '測試中版本|testtask|browse|productID=%s&branch=%s&type=%s,doing';
$lang->testtask->menu->blocked = '被阻塞版本|testtask|browse|productID=%s&branch=%s&type=%s,blocked';
$lang->testtask->menu->done = '已測版本|testtask|browse|productID=%s&branch=%s&type=%s,done';
$lang->testtask->menu->totalStatus = '全部|testtask|browse|productID=%s&branch=%s&type=%s,totalStatus';
$lang->testtask->menu->report = array('link' => '報告|testreport|browse');
$lang->testtask->menu->create = array('link' => "<i class='icon-plus'></i> 提交測試|testtask|create|productID=%s", 'float' => 'right');
$lang->testtask->menuOrder[5] = 'product';
$lang->testtask->menuOrder[10] = 'scope';
$lang->testtask->menuOrder[15] = 'wait';
$lang->testtask->menuOrder[20] = 'doing';
$lang->testtask->menuOrder[25] = 'blocked';
$lang->testtask->menuOrder[30] = 'done';
$lang->testtask->menuOrder[35] = 'totalStatus';
$lang->testtask->menuOrder[40] = 'report';
$lang->testtask->menuOrder[45] = 'create';
/* Adjust sub menu of report module. */
$lang->testreport->menu = $lang->testtask->menu;
$lang->testreport->menuOrder = $lang->testtask->menuOrder;
/* Adjust sub menu of caselib module. */
$lang->caselib->menu = new stdclass();
$lang->caselib->menu->lib = array('link' => '%s', 'fixed' => true);
$lang->caselib->menu->all = '所有|testsuite|library|libID=%s&browseType=all';
$lang->caselib->menu->wait = '待評審|testsuite|library|libID=%s&browseType=wait';
$lang->caselib->menu->view = '概況|testsuite|libview|libID=%s';
$lang->caselib->menu->create = array('link' => "<i class='icon-plus'></i> 創建庫|testsuite|createLib", 'float' => 'right');
$lang->caselib->menuOrder[5] = 'lib';
$lang->caselib->menuOrder[10] = 'all';
$lang->caselib->menuOrder[15] = 'wait';
$lang->caselib->menuOrder[20] = 'view';
/* Adjust sub menu of product module. */
unset($lang->product->menu->story);
unset($lang->product->menu->project);
unset($lang->product->menu->release);
unset($lang->product->menu->dynamic);
unset($lang->product->menu->plan);
unset($lang->product->menu->roadmap);
unset($lang->product->menu->doc);
unset($lang->product->menu->module);
unset($lang->product->menu->index);
$lang->product->menu->build = array('link' => '版本|product|build', 'subModule' => 'build');
$lang->product->menuOrder[5] = 'build';
$lang->product->menuOrder[10] = 'view';
$lang->product->menuOrder[15] = 'order';
$lang->build->menu = $lang->product->menu;
$lang->build->menuOrder = $lang->product->menuOrder;
/* Adjust menu group. */
$lang->menugroup->bug = 'bug';
$lang->menugroup->testcase = 'testcase';
$lang->menugroup->testtask = 'testtask';
$lang->menugroup->testsuite = 'testsuite';
$lang->menugroup->testreport = 'testtask';
$lang->menugroup->build = 'product';
/* Adjust search objects. */
unset($lang->searchObjects['story']);
unset($lang->searchObjects['task']);
unset($lang->searchObjects['release']);
unset($lang->searchObjects['productplan']);
}
+6
View File
@@ -6,6 +6,7 @@ $lang->custom->restore = '恢復預設';
$lang->custom->key = '鍵';
$lang->custom->value = '值';
$lang->custom->flow = '流程';
$lang->custom->working = '工作方式';
$lang->custom->select = '請選擇流程:';
$lang->custom->branch = '多分支';
@@ -100,5 +101,10 @@ $lang->custom->productProject->relation['1_1'] = '項目 - 迭代';
$lang->custom->productProject->notice = '請根據實際情況選擇適合自己團隊的概念。';
$lang->custom->workingList['full'] = '完整研發管理工具';
$lang->custom->workingList['onlyTest'] = '測試管理工具';
$lang->custom->workingList['onlyStory'] = '需求管理工具';
$lang->custom->workingList['onlyTask'] = '任務管理工具';
$lang->custom->menuTip = '點擊顯示或隱藏導航條目,拖拽來更改顯示順序。';
$lang->custom->saveFail = '保存失敗!';
+1
View File
@@ -52,6 +52,7 @@ $lang->doc->delete = 'Delete';
$lang->doc->browse = 'List';
$lang->doc->view = 'Details';
$lang->doc->diff = 'Diff';
$lang->doc->sort = 'Sort';
$lang->doc->manageType = 'Manage Category';
$lang->doc->editType = 'Edit';
$lang->doc->deleteType = 'Delete';
+1
View File
@@ -52,6 +52,7 @@ $lang->doc->delete = '删除文档';
$lang->doc->browse = '文档列表';
$lang->doc->view = '文档详情';
$lang->doc->diff = '对比';
$lang->doc->sort = '排序';
$lang->doc->manageType = '维护分类';
$lang->doc->editType = '编辑分类';
$lang->doc->deleteType = '删除分类';
+9
View File
@@ -35,6 +35,7 @@ $lang->doc->fileObject = '所屬對象';
$lang->doc->whiteList = '白名單';
$lang->doc->contentType = '文檔格式';
$lang->doc->separator = "<i class='icon-angle-right'></i>";
$lang->doc->fileTitle = '附件名';
$lang->doc->moduleDoc = '按模組瀏覽';
$lang->doc->searchDoc = '搜索';
@@ -51,6 +52,7 @@ $lang->doc->delete = '刪除文檔';
$lang->doc->browse = '文檔列表';
$lang->doc->view = '文檔詳情';
$lang->doc->diff = '對比';
$lang->doc->sort = '排序';
$lang->doc->manageType = '維護分類';
$lang->doc->editType = '編輯分類';
$lang->doc->deleteType = '刪除分類';
@@ -68,6 +70,7 @@ $lang->doc->editLib = '編輯文檔庫';
$lang->doc->deleteLib = '刪除文檔庫';
$lang->doc->fixedMenu = '固定到菜單欄';
$lang->doc->removeMenu = '從菜單欄移除';
$lang->doc->search = '搜索';
/* 查詢條件列表 */
$lang->doc->allProduct = '所有' . $lang->productCommon;
@@ -80,6 +83,12 @@ $lang->doc->libTypeList['custom'] = '自定義文檔庫';
$lang->doc->systemLibs['product'] = $lang->productCommon;
$lang->doc->systemLibs['project'] = $lang->projectCommon;
global $config;
if($config->global->flow == 'onlyStory' or $config->global->flow == 'onlyTest') unset($lang->doc->systemLibs['project']);
if($config->global->flow == 'onlyStory' or $config->global->flow == 'onlyTest') unset($lang->doc->libTypeList['project']);
if($config->global->flow == 'onlyTask') unset($lang->doc->systemLibs['product']);
if($config->global->flow == 'onlyTask') unset($lang->doc->libTypeList['product']);
$lang->doc->aclList['open'] = '公開';
$lang->doc->aclList['custom'] = '自定義';
$lang->doc->aclList['private'] = '私有';
+7 -5
View File
@@ -26,17 +26,19 @@ $lang->file->exportFields = "要導出欄位";
$lang->file->defaultTPL = "預設模板";
$lang->file->setExportTPL = "設置";
$lang->file->preview = "預覽";
$lang->file->addFile = '添加檔案';
$lang->file->beginUpload = '開始上傳';
$lang->file->uploadSuccess = '上傳成功';
$lang->file->dragFile = '請拖拽檔案到此處';
$lang->file->errorNotExists = "<span class='red'>檔案夾 '%s' 不存在</span>";
$lang->file->errorCanNotWrite = "<span class='red'>檔案夾 '%s' 不可寫,請改變檔案夾的權限。在linux中輸入指令:sudo chmod -R 777 '%s'</span>";
$lang->file->confirmDelete = " 您確定刪除該附件嗎?";
$lang->file->errorFileSize = " 檔案大小已經超過限制,可能不能成功上傳!";
$lang->file->errorFileUpload = " 檔案上傳失敗,檔案大小可能超出限制";
$lang->file->errorFileFormate = " 檔案上傳失敗,檔案格式不在規定範圍內";
$lang->file->errorFileMove = " 檔案上傳失敗,移動檔案時出錯";
$lang->file->dangerFile = " 您選擇的檔案存在安全風險,系統將不予上傳。";
$lang->file->errorSuffix = '壓縮包格式錯誤,只能上傳zip壓縮包!';
$lang->file->errorExtract = '解壓縮失敗!可能檔案已經損壞,或壓縮包裡含有非法上傳檔案。';
$lang->file->uploadImagesExplain = <<<EOD
<p>1、上傳檔案為包含圖片的zip壓縮包,程序會以檔案名作為標題,以圖片作為內容。</p>
<p>2、如果檔案名開頭含有 數字+下劃線,以方便排序,程序會將他們忽略。</p>
<p>3、圖片格式:jpg|jpeg|gif|png。</p>
EOD;
$lang->file->uploadImagesExplain = '註:請上傳"jpg|jpeg|gif|png"格式的圖片,程序會以檔案名作為標題,以圖片作為內容。';
+1
View File
@@ -46,6 +46,7 @@ $lang->group->copyOptions['copyPriv'] = 'Copy Privilege';
$lang->group->copyOptions['copyUser'] = 'Copy User';
$lang->group->versions[''] = 'History';
$lang->group->versions['9_2'] = 'ZenTao9.2';
$lang->group->versions['9_1'] = 'ZenTao9.1';
$lang->group->versions['9_0'] = 'ZenTao9.0';
$lang->group->versions['8_4'] = 'ZenTao8.4';
+18
View File
@@ -139,6 +139,7 @@ $lang->resource->product->project = 'project';
$lang->resource->product->close = 'close';
$lang->resource->product->updateOrder = 'updateOrder';
$lang->resource->product->all = 'all';
$lang->resource->product->build = 'build';
$lang->product->methodOrder[0] = 'index';
$lang->product->methodOrder[5] = 'browse';
@@ -154,6 +155,7 @@ $lang->product->methodOrder[55] = 'project';
$lang->product->methodOrder[60] = 'close';
$lang->product->methodOrder[65] = 'updateOrder';
$lang->product->methodOrder[70] = 'all';
$lang->product->methodOrder[75] = 'build';
/* Branch. */
$lang->resource->branch = new stdclass();
@@ -614,6 +616,10 @@ $lang->resource->testsuite->delete = 'delete';
$lang->resource->testsuite->linkCase = 'linkCase';
$lang->resource->testsuite->unlinkCase = 'unlinkCase';
$lang->resource->testsuite->batchUnlinkCases = 'batchUnlinkCases';
$lang->resource->testsuite->batchCreateCase = 'batchCreateCase';
$lang->resource->testsuite->exportTemplet = 'exportTemplet';
$lang->resource->testsuite->import = 'import';
$lang->resource->testsuite->showImport = 'showImport';
$lang->testsuite->methodOrder[0] = 'index';
$lang->testsuite->methodOrder[5] = 'browse';
@@ -624,6 +630,10 @@ $lang->testsuite->methodOrder[25] = 'delete';
$lang->testsuite->methodOrder[30] = 'linkCase';
$lang->testsuite->methodOrder[35] = 'unlinkCase';
$lang->testsuite->methodOrder[40] = 'batchUnlinkCases';
$lang->testsuite->methodOrder[45] = 'batchCreateCase';
$lang->testsuite->methodOrder[50] = 'exportTemplet';
$lang->testsuite->methodOrder[55] = 'import';
$lang->testsuite->methodOrder[60] = 'showImport';
$lang->resource->caselib = new stdclass();
$lang->resource->caselib->library = 'library';
@@ -1304,6 +1314,14 @@ $lang->changelog['9.1'][] = 'testtask-activate';
$lang->changelog['9.1'][] = 'testtask-block';
$lang->changelog['9.1'][] = 'testtask-report';
$lang->changelog['9.2'][] = 'custom-working';
$lang->changelog['9.2'][] = 'doc-sort';
$lang->changelog['9.2'][] = 'product-build';
$lang->changelog['9.2'][] = 'testsuite-batchCreateCase';
$lang->changelog['9.2'][] = 'testsuite-exportTemplet';
$lang->changelog['9.2'][] = 'testsuite-import';
$lang->changelog['9.2'][] = 'testsuite-showImport';
global $config;
if($config->global->flow != 'full')
{
+1
View File
@@ -46,6 +46,7 @@ $lang->group->copyOptions['copyPriv'] = '复制权限';
$lang->group->copyOptions['copyUser'] = '复制用户';
$lang->group->versions[''] = '修改历史';
$lang->group->versions['9_2'] = '禅道9.2';
$lang->group->versions['9_1'] = '禅道9.1';
$lang->group->versions['9_0'] = '禅道9.0';
$lang->group->versions['8_4'] = '禅道8.4';
+1
View File
@@ -46,6 +46,7 @@ $lang->group->copyOptions['copyPriv'] = '複製權限';
$lang->group->copyOptions['copyUser'] = '複製用戶';
$lang->group->versions[''] = '修改歷史';
$lang->group->versions['9_2'] = '禪道9.2';
$lang->group->versions['9_1'] = '禪道9.1';
$lang->group->versions['9_0'] = '禪道9.0';
$lang->group->versions['8_4'] = '禪道8.4';
+1
View File
@@ -20,6 +20,7 @@
</li>
<?php foreach($lang->menu as $module => $title):?>
<?php if(!is_string($title)) continue;?>
<li <?php echo $menu == $module ? "class='active'" : ""?>>
<?php echo html::a(inlink('managePriv', sprintf($params, $module)), substr($title, 0, strpos($title, '|')))?>
</li>
+14
View File
@@ -81,10 +81,16 @@ $lang->install->dbName = 'PMS使用的庫';
$lang->install->dbPrefix = '建表使用的首碼';
$lang->install->clearDB = '清空現有數據';
$lang->install->importDemoData = '導入demo數據';
$lang->install->working = '工作方式';
$lang->install->requestTypes['GET'] = '普通方式';
$lang->install->requestTypes['PATH_INFO'] = '靜態友好方式';
$lang->install->workingList['full'] = '完整研發管理工具';
$lang->install->workingList['onlyTest'] = '測試管理工具';
$lang->install->workingList['onlyStory'] = '需求管理工具';
$lang->install->workingList['onlyTask'] = '任務管理工具';
$lang->install->errorConnectDB = '資料庫連接失敗 ';
$lang->install->errorDBName = '資料庫名不能含有 “.” ';
$lang->install->errorCreateDB = '資料庫創建失敗';
@@ -127,6 +133,14 @@ $lang->install->groupList['TOP']['desc'] = '高層管理';
$lang->install->groupList['OTHERS']['name'] = '其他';
$lang->install->groupList['OTHERS']['desc'] = '其他';
$lang->install->cronList[''] = '監控定時任務';
$lang->install->cronList['moduleName=project&methodName=computeburn'] = '更新燃盡圖';
$lang->install->cronList['moduleName=report&methodName=remind'] = '每日任務提醒';
$lang->install->cronList['moduleName=svn&methodName=run'] = '同步SVN';
$lang->install->cronList['moduleName=git&methodName=run'] = '同步GIT';
$lang->install->cronList['moduleName=backup&methodName=backup'] = '備份數據和附件';
$lang->install->cronList['moduleName=mail&methodName=asyncSend'] = '非同步發信';
$lang->install->success = "安裝成功";
$lang->install->login = '登錄禪道管理系統';
$lang->install->register = '禪道社區註冊';
+1 -1
View File
@@ -20,7 +20,7 @@ $lang->mail->turnon = '是否打開';
$lang->mail->async = '非同步發送';
$lang->mail->fromAddress = '發信郵箱';
$lang->mail->fromName = '發信人';
$lang->mail->domain = '發信域名';
$lang->mail->domain = '禪道域名';
$lang->mail->host = 'smtp伺服器';
$lang->mail->port = 'smtp連接埠號';
$lang->mail->auth = '是否需要驗證';
+1
View File
@@ -57,6 +57,7 @@ $lang->misc->copyright = "&copy; 2009 - 2016 <a href='http://www.cnezsoft.com'
$lang->misc->checkTable = "檢查修復數據表";
$lang->misc->needRepair = "修復表";
$lang->misc->repairTable = "資料庫表可以因為斷電原因損壞,需要檢查修復!!";
$lang->misc->repairFail = "修復失敗,請到該資料庫的數據目錄下,嘗試執行<code>myisamchk -r -f %s.MYI</code>進行修復。";
$lang->misc->tableName = "表名";
$lang->misc->tableStatus = "狀態";
$lang->misc->novice = "您可能初次使用禪道,是否進入新手模式?";
+3 -2
View File
@@ -49,10 +49,12 @@ class product extends control
*/
public function index($locate = 'auto', $productID = 0, $status = 'noclosed', $orderBy = 'order_desc', $recTotal = 0, $recPerPage = 10, $pageID = 1)
{
if($this->config->global->flow == 'onlyTest') $this->locate($this->createLink($this->moduleName, 'build'));
if($this->app->user->account == 'guest' or commonModel::isTutorialMode()) $this->config->product->homepage = 'index';
if(!isset($this->config->product->homepage))
{
if($this->products) die($this->fetch('custom', 'ajaxSetHomepage', "module=product"));
if($this->products and $this->app->getViewType() != 'mhtml') die($this->fetch('custom', 'ajaxSetHomepage', "module=product"));
$this->config->product->homepage = 'index';
$this->fetch('custom', 'ajaxSetHomepage', "module=product&page=index");
@@ -61,7 +63,6 @@ class product extends control
$homepage = $this->config->product->homepage;
if($homepage == 'browse' and $locate == 'auto') $locate = 'yes';
if($this->config->global->flow == 'onlyTest') $this->locate($this->createLink($this->moduleName, 'build'));
if($locate == 'yes') $this->locate($this->createLink($this->moduleName, 'browse'));
if($this->app->getViewType() != 'mhtml') unset($this->lang->product->menu->index);
+5
View File
@@ -40,6 +40,7 @@ $lang->product->builds = 'BUILD數';
$lang->product->roadmap = '路線圖';
$lang->product->doc = '文檔列表';
$lang->product->project = $lang->projectCommon . '列表';
$lang->product->build = '版本列表';
$lang->product->confirmDelete = " 您確定刪除該{$lang->productCommon}嗎?";
@@ -80,6 +81,10 @@ $lang->product->typeList['normal'] = '正常';
$lang->product->typeList['branch'] = '多分支';
$lang->product->typeList['platform'] = '多平台';
$lang->product->typeTips = array();
$lang->product->typeTips['branch'] = '(適用於客戶定製場景)';
$lang->product->typeTips['platform'] = '(適用於跨平台應用開發,比如ios、安卓、pc端等)';
$lang->product->branchName['normal'] = '';
$lang->product->branchName['branch'] = '分支';
$lang->product->branchName['platform'] = '平台';
+2 -2
View File
@@ -97,8 +97,8 @@ class productModel extends model
if($this->config->global->flow == 'onlyTest' and $moduleType)
{
$modules = $this->loadModel('tree')->getModulePairs($productID, $moduleType);
$moduleName = ($module && isset($modules[$module])) ? $modules[$module] : $this->lang->tree->all;
if($module) $module = $this->loadModel('tree')->getById($module);
$moduleName = $module ? $module->name : $this->lang->tree->all;
if(!$isMobile)
{
$output .= '</li><li>';
+1 -1
View File
@@ -42,7 +42,7 @@ class project extends control
if($this->app->user->account == 'guest' or commonModel::isTutorialMode()) $this->config->project->homepage = 'index';
if(!isset($this->config->project->homepage))
{
if($this->projects) die($this->fetch('custom', 'ajaxSetHomepage', "module=project"));
if($this->projects and $this->app->viewType != 'mhtml') die($this->fetch('custom', 'ajaxSetHomepage', "module=project"));
$this->config->project->homepage = 'index';
$this->fetch('custom', 'ajaxSetHomepage', "module=project&page=index");
+8
View File
@@ -207,6 +207,7 @@ $lang->project->goback = "返回任務列表";
$lang->project->noweekend = '去除周末';
$lang->project->withweekend = '顯示周末';
$lang->project->interval = '間隔';
$lang->project->fixFirstWithLeft = '修改剩餘工時';
/* 統計。*/
$lang->project->charts = new stdclass();
@@ -261,3 +262,10 @@ $lang->project->treeLevel['root'] = '全部摺疊';
$lang->project->treeLevel['story'] = '顯示需求';
$lang->project->treeLevel['task'] = '顯示任務';
$lang->project->treeLevel['all'] = '全部展開';
global $config;
if($config->global->flow == 'onlyTask')
{
unset($lang->project->groups['story']);
unset($lang->project->featureBar['task']['needconfirm']);
}
+1 -1
View File
@@ -23,7 +23,7 @@ class qa extends control
if($this->app->user->account == 'guest' or commonModel::isTutorialMode()) $this->config->qa->homepage = 'index';
if(!isset($this->config->qa->homepage))
{
if($this->products) die($this->fetch('custom', 'ajaxSetHomepage', "module=qa"));
if($this->products and $this->app->viewType != 'mhtml') die($this->fetch('custom', 'ajaxSetHomepage', "module=qa"));
$this->config->qa->homepage = 'index';
$this->fetch('custom', 'ajaxSetHomepage', "module=qa&page=index");
+1
View File
@@ -38,6 +38,7 @@ $lang->story->export = "導出數據";
$lang->story->zeroCase = "零用例需求";
$lang->story->zeroTask = "只列零任務需求";
$lang->story->reportChart = "統計報表";
$lang->story->copyTitle = "同需求名稱";
$lang->story->batchChangePlan = "批量修改計劃";
$lang->story->batchChangeBranch = "批量修改分支";
$lang->story->batchChangeStage = "批量修改階段";
+2 -1
View File
@@ -14,6 +14,8 @@ $lang->task->create = "建任務";
$lang->task->batchCreate = "批量添加";
$lang->task->batchEdit = "批量編輯";
$lang->task->batchChangeModule = "批量修改模組";
$lang->task->batchClose = "批量關閉";
$lang->task->batchCancel = "批量取消";
$lang->task->edit = "編輯";
$lang->task->delete = "刪除";
$lang->task->deleted = "已刪除";
@@ -26,7 +28,6 @@ $lang->task->restart = "繼續";
$lang->task->finish = "完成";
$lang->task->pause = "暫停";
$lang->task->close = "關閉";
$lang->task->batchClose = "批量關閉";
$lang->task->cancel = "取消";
$lang->task->activate = "激活";
$lang->task->export = "導出數據";
+4 -2
View File
@@ -70,11 +70,13 @@
<tr>
<th><?php echo $lang->task->module;?></th>
<td id="moduleIdBox"><?php echo html::select('module', $modules, $task->module, 'class="form-control chosen" onchange="loadModuleRelated()"');?></td>
</tr>
</tr>
<?php if($config->global->flow != 'onlyTask')?>
<tr>
<th><?php echo $lang->task->story;?></th>
<td><span id="storyIdBox"><?php echo html::select('story', $stories, $task->story, "class='form-control chosen'");?></span></td>
</tr>
</tr>
<?php endif;?>
<tr>
<th><?php echo $lang->task->assignedTo;?></th>
<td><span id="assignedToIdBox"><?php echo html::select('assignedTo', $members, $task->assignedTo, "class='form-control chosen'");?></span></td>
+3 -1
View File
@@ -21,7 +21,9 @@ $lang->testsuite->unlinkCase = "Unlink";
$lang->testsuite->batchUnlinkCases = "Batch unlink cases";
$lang->testsuite->deleted = 'deleted';
$lang->testsuite->exportTemplet = 'Export template';
$lang->testsuite->importFile = 'Import';
$lang->testsuite->batchCreateCase = 'Batch create case';
$lang->testsuite->import = 'Import';
$lang->testsuite->showImport = 'Show import data';
$lang->testsuite->common = 'Test Suite';
$lang->testsuite->product = $lang->productCommon;
+3 -1
View File
@@ -21,7 +21,9 @@ $lang->testsuite->unlinkCase = "移除";
$lang->testsuite->batchUnlinkCases = "批量移除用例";
$lang->testsuite->deleted = '已删除';
$lang->testsuite->exportTemplet = '导出模板';
$lang->testsuite->importFile = '导入';
$lang->testsuite->batchCreateCase = '批量创建用例';
$lang->testsuite->import = '导入';
$lang->testsuite->showImport = '显示导入数据';
$lang->testsuite->common = '套件';
$lang->testsuite->product = '所属' . $lang->productCommon;
+4
View File
@@ -20,6 +20,10 @@ $lang->testsuite->linkVersion = "版本";
$lang->testsuite->unlinkCase = "移除";
$lang->testsuite->batchUnlinkCases = "批量移除用例";
$lang->testsuite->deleted = '已刪除';
$lang->testsuite->exportTemplet = '導出模板';
$lang->testsuite->batchCreateCase = '批量創建用例';
$lang->testsuite->import = '導入';
$lang->testsuite->showImport = '顯示導入數據';
$lang->testsuite->common = '套件';
$lang->testsuite->product = '所屬' . $lang->productCommon;
+1 -1
View File
@@ -39,7 +39,7 @@ $lang->testtask->testing = "測試中版本";
$lang->testtask->blocked = "被阻塞版本";
$lang->testtask->done = "已測版本";
$lang->testtask->totalStatus = "全部";
$lang->testtask->all = "全部產品";
$lang->testtask->all = "全部" . $lang->productCommon;
$lang->testtask->id = '編號';
$lang->testtask->common = '測試版本';
+4
View File
@@ -57,6 +57,10 @@ $lang->todo->typeList['custom'] = '自定義';
$lang->todo->typeList['bug'] = 'Bug';
$lang->todo->typeList['task'] = $lang->projectCommon . '任務';
global $config;
if($config->global->flow == 'onlyTest' or $config->global->flow == 'onlyStory') unset($lang->todo->typeList['task']);
if($config->global->flow == 'onlyTask' or $config->global->flow == 'onlyStory') unset($lang->todo->typeList['bug']);
$lang->todo->confirmDelete = "您確定要刪除這條待辦嗎?";
$lang->todo->thisIsPrivate = '這是一條私人事務。:)';
$lang->todo->lblDisableDate = '暫時不設定時間';
+1 -1
View File
@@ -9,7 +9,7 @@
<?php
foreach($modules as $moduleID => $module)
{
echo "<li data-id='{$moduleID}' data-key='{$modulesPinyin[$module]}'>" . html::a(sprintf($link, $productID, $moduleID), "<i class='icon-cube'></i> " . $module, '', "class='text-important'"). "</li>";
echo "<li data-id='{$moduleID}' data-key='{$modulesPinyin[$module]}'>" . html::a(sprintf($link, $productID, $moduleID), $module, '', "class='text-important'") . "</li>";
}
?>
</ul>
+1
View File
@@ -119,3 +119,4 @@ $lang->upgrade->fromVersions['9_0'] = '9.0';
$lang->upgrade->fromVersions['9_0_1'] = '9.0.1';
$lang->upgrade->fromVersions['9_1'] = '9.1';
$lang->upgrade->fromVersions['9_1_1'] = '9.1.1';
$lang->upgrade->fromVersions['9_1_2'] = '9.1.2';
+1
View File
@@ -119,3 +119,4 @@ $lang->upgrade->fromVersions['9_0'] = '9.0';
$lang->upgrade->fromVersions['9_0_1'] = '9.0.1';
$lang->upgrade->fromVersions['9_1'] = '9.1';
$lang->upgrade->fromVersions['9_1_1'] = '9.1.1';
$lang->upgrade->fromVersions['9_1_2'] = '9.1.2';
+1
View File
@@ -119,3 +119,4 @@ $lang->upgrade->fromVersions['9_0'] = '9.0';
$lang->upgrade->fromVersions['9_0_1'] = '9.0.1';
$lang->upgrade->fromVersions['9_1'] = '9.1';
$lang->upgrade->fromVersions['9_1_1'] = '9.1.1';
$lang->upgrade->fromVersions['9_1_2'] = '9.1.2';
+46
View File
@@ -177,6 +177,7 @@ class upgradeModel extends model
case '9_1_2':
$this->execSQL($this->getUpgradeFile('9.1.2'));
$this->processCustomMenus();
$this->adjustPriv9_2();
}
$this->deletePatch();
@@ -1646,6 +1647,50 @@ class upgradeModel extends model
return true;
}
/**
* Adjust priv for 9.2.
*
* @access public
* @return void
*/
public function adjustPriv9_2()
{
$groups = $this->dao->select('`group`')->from(TABLE_GROUPPRIV)->where('module')->eq('testsuite')->andWhere('method')->eq('createCase')->fetchPairs('group', 'group');
foreach($groups as $groupID)
{
$data = new stdclass();
$data->group = $groupID;
$data->module = 'testsuite';
$newMethods = array('batchCreateCase', 'exportTemplet', 'import', 'showImport');
foreach($newMethods as $method)
{
$data->method = $method;
$this->dao->replace(TABLE_GROUPPRIV)->data($data)->exec();
}
}
$groups = $this->dao->select('`group`')->from(TABLE_GROUPPRIV)->where('module')->eq('product')->andWhere('method')->eq('index')->fetchPairs('group', 'group');
foreach($groups as $groupID)
{
$data = new stdclass();
$data->group = $groupID;
$data->module = 'product';
$data->method = 'build';
$this->dao->replace(TABLE_GROUPPRIV)->data($data)->exec();
}
$groups = $this->dao->select('`group`')->from(TABLE_GROUPPRIV)->where('module')->eq('custom')->andWhere('method')->eq('flow')->fetchPairs('group', 'group');
foreach($groups as $groupID)
{
$data = new stdclass();
$data->group = $groupID;
$data->module = 'custom';
$data->method = 'working';
$this->dao->replace(TABLE_GROUPPRIV)->data($data)->exec();
}
return true;
}
/**
* Judge any error occers.
*
@@ -1704,6 +1749,7 @@ class upgradeModel extends model
*/
public function processCustomMenus()
{
$this->loadModel('setting')->setItem('system.common.global.flow', 'full');
$customMenus = $this->dao->select('*')->from(TABLE_CONFIG)->where('section')->eq('customMenu')->fetchAll();
foreach($customMenus as $customMenu)
+9 -3
View File
@@ -4,6 +4,9 @@
*/
/* Define an emtpty control class as the base class of every module. */
class control {}
$config = new stdclass();
$config->global = new stdclass();
$config->global->flow = 'full';
/* set module root path and included the resource of group module. */
$moduleRoot = '../module/';
@@ -174,9 +177,12 @@ foreach(glob($moduleRoot . '*') as $modulePath)
}
else
{
list($mainKey, $mainValue) = explode('=', $line);
list($key, $value) = explode('=', $lines[$lineNO]);
if(trim($mainKey) != trim($key))
if(strpos($line, '=') !== false)
{
list($mainKey, $mainValue) = explode('=', $line);
list($key, $value) = explode('=', $lines[$lineNO]);
}
if((strpos($line, '=') === false and $line != $lines[$lineNO]) or trim($mainKey) != trim($key))
{
$key = trim($key);
$lineNO = $lineNO + 1;