Merge branch 'master' of https://github.com/easysoft/zentaopms
Conflicts: module/common/lang/en.php module/common/lang/zh-cn.php
This commit is contained in:
@@ -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
@@ -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
|
||||
|
||||
@@ -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'),
|
||||
|
||||
@@ -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管理
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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] = '不檢查';
|
||||
|
||||
@@ -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
@@ -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 = '類型';
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
|
||||
@@ -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¶m=%s';
|
||||
$lang->bug->menu->all = 'All|bug|browse|productID=%s&branch=%s&browseType=all¶m=%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¶m=%s';
|
||||
$lang->bug->menu->postponedbugs = 'PostPoned|bug|browse|productID=%s&branch=%s&browseType=postponedbugs¶m=%s';
|
||||
$lang->bug->menu->overduebugs = 'Overdue|bug|browse|productID=%s&branch=%s&browseType=overduebugs¶m=%s';
|
||||
=======
|
||||
$lang->bug->menu->product = array('link' => '%s', 'fixed' => true);
|
||||
$lang->bug->menu->unclosed = 'Unclosed|bug|browse|productID=%s&branch=%s&browseType=unclosed¶m=%s';
|
||||
$lang->bug->menu->all = 'All|bug|browse|productID=%s&branch=%s&browseType=all¶m=%s';
|
||||
$lang->bug->menu->assigntome = 'Assign to me|bug|browse|productID=%s&branch=%s&browseType=assigntome¶m=%s';
|
||||
$lang->bug->menu->openedbyme = 'Opened by me|bug|browse|productID=%s&branch=%s&browseType=openedbyme¶m=%s';
|
||||
$lang->bug->menu->resolvedbyme = 'Resolved by me|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme¶m=%s';
|
||||
$lang->bug->menu->unconfirmed = 'Unconfirmed|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s';
|
||||
$lang->bug->menu->assigntonull = 'Unassigned|bug|browse|productID=%s&branch=%s&browseType=assigntonull¶m=%s';
|
||||
$lang->bug->menu->unresolved = 'Unresolved|bug|browse|productID=%s&branch=%s&browseType=unresolved¶m=%s';
|
||||
$lang->bug->menu->toclosed = 'To closed|bug|browse|productID=%s&branch=%s&browseType=toclosed¶m=%s';
|
||||
$lang->bug->menu->longlifebugs = 'Long life bugs|bug|browse|productID=%s&branch=%s&browseType=longlifebugs¶m=%s';
|
||||
$lang->bug->menu->postponedbugs = 'Postponed bugs|bug|browse|productID=%s&branch=%s&browseType=postponedbugs¶m=%s';
|
||||
$lang->bug->menu->overduebugs = 'Overdue Bug|bug|browse|productID=%s&branch=%s&browseType=overduebugs¶m=%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';
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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¶m=%s';
|
||||
$lang->bug->menu->all = '所有|bug|browse|productID=%s&branch=%s&browseType=all¶m=%s';
|
||||
$lang->bug->menu->assigntome = '指派給我|bug|browse|productID=%s&branch=%s&browseType=assigntome¶m=%s';
|
||||
$lang->bug->menu->openedbyme = '由我創建|bug|browse|productID=%s&branch=%s&browseType=openedbyme¶m=%s';
|
||||
$lang->bug->menu->resolvedbyme = '由我解決|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme¶m=%s';
|
||||
$lang->bug->menu->unconfirmed = '未確認|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s';
|
||||
$lang->bug->menu->assigntonull = '未指派|bug|browse|productID=%s&branch=%s&browseType=assigntonull¶m=%s';
|
||||
$lang->bug->menu->unresolved = '未解決|bug|browse|productID=%s&branch=%s&browseType=unresolved¶m=%s';
|
||||
$lang->bug->menu->toclosed = '待關閉|bug|browse|productID=%s&branch=%s&browseType=toclosed¶m=%s';
|
||||
$lang->bug->menu->longlifebugs = '久未處理|bug|browse|productID=%s&branch=%s&browseType=longlifebugs¶m=%s';
|
||||
$lang->bug->menu->postponedbugs = '被延期|bug|browse|productID=%s&branch=%s&browseType=postponedbugs¶m=%s';
|
||||
$lang->bug->menu->overduebugs = '過期Bug|bug|browse|productID=%s&branch=%s&browseType=overduebugs¶m=%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,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 = '保存失敗!';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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 = '删除分类';
|
||||
|
||||
@@ -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'] = '私有';
|
||||
|
||||
@@ -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"格式的圖片,程序會以檔案名作為標題,以圖片作為內容。';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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')
|
||||
{
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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 = '禪道社區註冊';
|
||||
|
||||
@@ -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 = '是否需要驗證';
|
||||
|
||||
@@ -57,6 +57,7 @@ $lang->misc->copyright = "© 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 = "您可能初次使用禪道,是否進入新手模式?";
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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'] = '平台';
|
||||
|
||||
@@ -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>';
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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']);
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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 = "批量修改階段";
|
||||
|
||||
@@ -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 = "導出數據";
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 = '測試版本';
|
||||
|
||||
@@ -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 = '暫時不設定時間';
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user