From 277dc2c2ec7bed922029c7f750ff19c0232b7fe7 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Tue, 16 Jan 2018 14:06:16 +0800 Subject: [PATCH] * change for upgrade. --- VERSION | 2 +- config/config.php | 2 +- db/zentao.sql | 19 +++- module/block/lang/en.php | 35 +++--- module/block/lang/zh-tw.php | 41 ++++--- module/bug/lang/en.php | 1 - module/common/lang/zh-tw.php | 163 ++++++++++++++-------------- module/dev/lang/zh-tw.php | 2 + module/group/lang/en.php | 1 + module/group/lang/resource.php | 137 +++++++++++++---------- module/group/lang/zh-cn.php | 1 + module/group/lang/zh-tw.php | 1 + module/install/lang/zh-tw.php | 1 + module/mail/lang/en.php | 4 +- module/mail/lang/zh-tw.php | 10 +- module/message/control.php | 11 +- module/message/lang/en.php | 1 + module/message/lang/zh-cn.php | 1 + module/message/lang/zh-tw.php | 8 ++ module/message/view/header.html.php | 2 +- module/misc/lang/zh-tw.php | 19 +++- module/productplan/lang/zh-tw.php | 22 ++-- module/project/lang/en.php | 81 +++++++------- module/project/lang/zh-cn.php | 81 +++++++------- module/project/lang/zh-tw.php | 100 +++++++++-------- module/project/view/story.html.php | 15 ++- module/report/lang/zh-tw.php | 8 ++ module/story/lang/zh-tw.php | 1 + module/testcase/lang/zh-tw.php | 34 +++--- module/testreport/lang/zh-tw.php | 1 + module/todo/lang/en.php | 1 + module/todo/lang/zh-cn.php | 1 + module/todo/lang/zh-tw.php | 36 +++++- module/upgrade/lang/en.php | 1 + module/upgrade/lang/zh-cn.php | 1 + module/upgrade/lang/zh-tw.php | 1 + module/upgrade/model.php | 63 ++++++++++- 37 files changed, 554 insertions(+), 355 deletions(-) create mode 100644 module/message/lang/zh-tw.php diff --git a/VERSION b/VERSION index c05b5267dc..31cd979036 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -9.7.stable +9.8.stable diff --git a/config/config.php b/config/config.php index 5cb5e74efa..60ff25b5be 100644 --- a/config/config.php +++ b/config/config.php @@ -16,7 +16,7 @@ if(!class_exists('config')){class config{}} if(!function_exists('getWebRoot')){function getWebRoot(){}} /* 基本设置。Basic settings. */ -$config->version = '9.7'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it. +$config->version = '9.8'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it. $config->charset = 'UTF-8'; // ZenTaoPHP的编码。 The encoding of ZenTaoPHP. $config->cookieLife = time() + 2592000; // Cookie的生存时间。The cookie life time. $config->timezone = 'Asia/Shanghai'; // 时区设置。 The time zone setting, for more see http://www.php.net/manual/en/timezones.php. diff --git a/db/zentao.sql b/db/zentao.sql index f1f705b2a0..c3180eb72f 100644 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -545,7 +545,7 @@ CREATE TABLE IF NOT EXISTS `zt_story` ( `estimate` float unsigned NOT NULL, `status` enum('','changed','active','draft','closed') NOT NULL default '', `color` char(7) NOT NULL, - `stage` enum('','wait','planned','projected','developing','developed','testing','tested','verified','released') NOT NULL DEFAULT 'wait', + `stage` enum('','wait','planned','projected','developing','developed','testing','tested','verified','released', 'closed') NOT NULL DEFAULT 'wait', `mailto` text, `openedBy` varchar(30) NOT NULL default '', `openedDate` datetime NOT NULL, @@ -1088,6 +1088,8 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (1, 'mail', 'reset'), (1, 'mail', 'save'), (1, 'mail', 'test'), +(1, 'message', 'index'), +(1, 'message', 'setting'), (1, 'misc', 'ping'), (1, 'my', 'bug'), (1, 'my', 'changePassword'), @@ -1155,6 +1157,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (1, 'project', 'index'), (1, 'project', 'all'), (1, 'project', 'linkStory'), +(1, 'project', 'importPlanStories'), (1, 'project', 'manageMembers'), (1, 'project', 'manageProducts'), (1, 'project', 'order'), @@ -1318,6 +1321,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (1, 'todo', 'batchEdit'), (1, 'todo', 'batchFinish'), (1, 'todo', 'create'), +(1, 'todo', 'createCycle'), (1, 'todo', 'delete'), (1, 'todo', 'edit'), (1, 'todo', 'export'), @@ -1512,6 +1516,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (2, 'todo', 'batchEdit'), (2, 'todo', 'batchFinish'), (2, 'todo', 'create'), +(2, 'todo', 'createCycle'), (2, 'todo', 'delete'), (2, 'todo', 'edit'), (2, 'todo', 'export'), @@ -1730,6 +1735,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (3, 'todo', 'batchEdit'), (3, 'todo', 'batchFinish'), (3, 'todo', 'create'), +(3, 'todo', 'createCycle'), (3, 'todo', 'delete'), (3, 'todo', 'edit'), (3, 'todo', 'export'), @@ -1867,6 +1873,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (4, 'project', 'index'), (4, 'project', 'all'), (4, 'project', 'linkStory'), +(4, 'project', 'importPlanStories'), (4, 'project', 'manageMembers'), (4, 'project', 'manageProducts'), (4, 'project', 'order'), @@ -1954,6 +1961,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (4, 'todo', 'batchEdit'), (4, 'todo', 'batchFinish'), (4, 'todo', 'create'), +(4, 'todo', 'createCycle'), (4, 'todo', 'delete'), (4, 'todo', 'edit'), (4, 'todo', 'export'), @@ -2110,6 +2118,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (5, 'project', 'index'), (5, 'project', 'all'), (5, 'project', 'linkStory'), +(5, 'project', 'importPlanStories'), (5, 'project', 'manageMembers'), (5, 'project', 'manageProducts'), (5, 'project', 'order'), @@ -2214,6 +2223,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (5, 'todo', 'batchEdit'), (5, 'todo', 'batchFinish'), (5, 'todo', 'create'), +(5, 'todo', 'createCycle'), (5, 'todo', 'delete'), (5, 'todo', 'edit'), (5, 'todo', 'export'), @@ -2361,6 +2371,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (6, 'project', 'index'), (6, 'project', 'all'), (6, 'project', 'linkStory'), +(6, 'project', 'importPlanStories'), (6, 'project', 'manageMembers'), (6, 'project', 'manageProducts'), (6, 'project', 'order'), @@ -2446,6 +2457,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (6, 'todo', 'batchEdit'), (6, 'todo', 'batchFinish'), (6, 'todo', 'create'), +(6, 'todo', 'createCycle'), (6, 'todo', 'delete'), (6, 'todo', 'edit'), (6, 'todo', 'export'), @@ -2592,6 +2604,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (7, 'project', 'index'), (7, 'project', 'all'), (7, 'project', 'linkStory'), +(7, 'project', 'importPlanStories'), (7, 'project', 'manageProducts'), (7, 'project', 'story'), (7, 'project', 'task'), @@ -2690,6 +2703,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (7, 'todo', 'batchEdit'), (7, 'todo', 'batchFinish'), (7, 'todo', 'create'), +(7, 'todo', 'createCycle'), (7, 'todo', 'delete'), (7, 'todo', 'edit'), (7, 'todo', 'export'), @@ -2946,6 +2960,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (8, 'todo', 'batchEdit'), (8, 'todo', 'batchFinish'), (8, 'todo', 'create'), +(8, 'todo', 'createCycle'), (8, 'todo', 'delete'), (8, 'todo', 'edit'), (8, 'todo', 'export'), @@ -3115,6 +3130,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (9, 'todo', 'batchEdit'), (9, 'todo', 'batchFinish'), (9, 'todo', 'create'), +(9, 'todo', 'createCycle'), (9, 'todo', 'delete'), (9, 'todo', 'edit'), (9, 'todo', 'export'), @@ -3232,6 +3248,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (10, 'todo', 'batchEdit'), (10, 'todo', 'batchFinish'), (10, 'todo', 'create'), +(10, 'todo', 'createCycle'), (10, 'todo', 'delete'), (10, 'todo', 'edit'), (10, 'todo', 'export'), diff --git a/module/block/lang/en.php b/module/block/lang/en.php index a88800e0f7..95d9eef98a 100644 --- a/module/block/lang/en.php +++ b/module/block/lang/en.php @@ -29,6 +29,7 @@ $lang->block->lblBlock = 'Block'; $lang->block->lblNum = 'Number'; $lang->block->lblHtml = 'HTML'; $lang->block->dynamic = 'Dynamic'; +$lang->block->assignToMe = 'Assign To Me'; $lang->block->lblFlowchart = 'Workflow'; $lang->block->assignToMeList['todo'] = 'Todo'; @@ -117,21 +118,25 @@ $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'] = 'My Todo'; -$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['full']['my']['4']['title'] = '指派给我'; +$lang->block->default['full']['my']['4']['block'] = 'assigntome'; +$lang->block->default['full']['my']['4']['grid'] = 8; +$lang->block->default['full']['my']['4']['source'] = ''; +$lang->block->default['full']['my']['5']['title'] = 'My Todo'; +$lang->block->default['full']['my']['5']['block'] = 'list'; +$lang->block->default['full']['my']['5']['grid'] = 4; +$lang->block->default['full']['my']['5']['source'] = 'todo'; +$lang->block->default['full']['my']['5']['params']['num'] = '20'; +$lang->block->default['full']['my']['6'] = $lang->block->default['product']['1']; +$lang->block->default['full']['my']['6']['source'] = 'product'; +$lang->block->default['full']['my']['7'] = $lang->block->default['project']['2']; +$lang->block->default['full']['my']['7']['source'] = 'project'; +$lang->block->default['full']['my']['8'] = $lang->block->default['qa']['1']; +$lang->block->default['full']['my']['8']['source'] = 'qa'; +$lang->block->default['full']['my']['9'] = $lang->block->default['product']['2']; +$lang->block->default['full']['my']['9']['source'] = 'product'; +$lang->block->default['full']['my']['10'] = $lang->block->default['qa']['2']; +$lang->block->default['full']['my']['10']['source'] = 'qa'; $lang->block->default['onlyTest']['my']['1'] = $lang->block->default['qa']['1']; $lang->block->default['onlyTest']['my']['1']['source'] = 'qa'; diff --git a/module/block/lang/zh-tw.php b/module/block/lang/zh-tw.php index c0a91c9444..aa8de6c400 100644 --- a/module/block/lang/zh-tw.php +++ b/module/block/lang/zh-tw.php @@ -29,8 +29,15 @@ $lang->block->lblBlock = '區塊'; $lang->block->lblNum = '條數'; $lang->block->lblHtml = 'HTML內容'; $lang->block->dynamic = '最新動態'; +$lang->block->assignToMe = '指派給我'; $lang->block->lblFlowchart = '流程圖'; +$lang->block->assignToMeList['todo'] = '待辦'; +$lang->block->assignToMeList['story'] = '需求'; +$lang->block->assignToMeList['task'] = '任務'; +$lang->block->assignToMeList['bug'] = 'Bug'; +$lang->block->assignToMeList['case'] = '用例'; + $lang->block->params = new stdclass(); $lang->block->params->name = '參數名稱'; $lang->block->params->value = '參數值'; @@ -111,21 +118,25 @@ $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['full']['my']['4']['title'] = '指派給我'; +$lang->block->default['full']['my']['4']['block'] = 'assigntome'; +$lang->block->default['full']['my']['4']['grid'] = 8; +$lang->block->default['full']['my']['4']['source'] = ''; +$lang->block->default['full']['my']['5']['title'] = '我的待辦'; +$lang->block->default['full']['my']['5']['block'] = 'list'; +$lang->block->default['full']['my']['5']['grid'] = 4; +$lang->block->default['full']['my']['5']['source'] = 'todo'; +$lang->block->default['full']['my']['5']['params']['num'] = '20'; +$lang->block->default['full']['my']['6'] = $lang->block->default['product']['1']; +$lang->block->default['full']['my']['6']['source'] = 'product'; +$lang->block->default['full']['my']['7'] = $lang->block->default['project']['2']; +$lang->block->default['full']['my']['7']['source'] = 'project'; +$lang->block->default['full']['my']['8'] = $lang->block->default['qa']['1']; +$lang->block->default['full']['my']['8']['source'] = 'qa'; +$lang->block->default['full']['my']['9'] = $lang->block->default['product']['2']; +$lang->block->default['full']['my']['9']['source'] = 'product'; +$lang->block->default['full']['my']['10'] = $lang->block->default['qa']['2']; +$lang->block->default['full']['my']['10']['source'] = 'qa'; $lang->block->default['onlyTest']['my']['1'] = $lang->block->default['qa']['1']; $lang->block->default['onlyTest']['my']['1']['source'] = 'qa'; diff --git a/module/bug/lang/en.php b/module/bug/lang/en.php index f45a513a51..badf5a348d 100644 --- a/module/bug/lang/en.php +++ b/module/bug/lang/en.php @@ -107,7 +107,6 @@ $lang->bug->openedByMe = 'Created By Me'; $lang->bug->resolvedByMe = 'Resolved By Me'; $lang->bug->closedByMe = 'Closed By Me'; $lang->bug->assignToNull = 'Unassigned'; -$lang->bug->unConfirmed = 'Unconfirmed'; $lang->bug->unResolved = 'Unresolved'; $lang->bug->toClosed = 'WaitForClose'; $lang->bug->unclosed = 'Active'; diff --git a/module/common/lang/zh-tw.php b/module/common/lang/zh-tw.php index 3c1df43da5..84cdcf7ab9 100644 --- a/module/common/lang/zh-tw.php +++ b/module/common/lang/zh-tw.php @@ -86,9 +86,9 @@ $lang->loading = '稍候...'; $lang->notFound = '抱歉,您訪問的對象並不存在!'; $lang->showAll = '[[全部顯示]]'; -$lang->future = '未來'; -$lang->year = '年'; -$lang->workingHour = '工時'; +$lang->future = '未來'; +$lang->year = '年'; +$lang->workingHour = '工時'; $lang->idAB = 'ID'; $lang->priAB = 'P'; @@ -102,14 +102,14 @@ $lang->common->common = '公有模組'; /* 主導航菜單。*/ $lang->menu = new stdclass(); -$lang->menu->my = ' 我的地盤|my|index'; -$lang->menu->product = $lang->productCommon . '|product|index'; -$lang->menu->project = $lang->projectCommon . '|project|index'; -$lang->menu->qa = '測試|qa|index'; -$lang->menu->doc = '文檔|doc|index'; -$lang->menu->report = '統計|report|index'; -$lang->menu->company = '組織|company|index'; -$lang->menu->admin = '後台|admin|index'; +$lang->menu->my = ' 我的地盤|my|index'; +$lang->menu->product = $lang->productCommon . '|product|index'; +$lang->menu->project = $lang->projectCommon . '|project|index'; +$lang->menu->qa = '測試|qa|index'; +$lang->menu->doc = '文檔|doc|index'; +$lang->menu->report = '統計|report|index'; +$lang->menu->company = '組織|company|index'; +$lang->menu->admin = '後台|admin|index'; /* 查詢條中可以選擇的對象列表。*/ $lang->searchObjects['bug'] = 'Bug'; @@ -145,12 +145,12 @@ $lang->exportTypeList['selected'] = '選中記錄'; $lang->lang = 'Language'; /* 風格列表。*/ -$lang->theme = '主題'; -$lang->themes['default'] = '預設'; -$lang->themes['green'] = '綠色'; -$lang->themes['red'] = '紅色'; -$lang->themes['lightblue'] = '亮藍'; -$lang->themes['blackberry'] = '黑莓'; +$lang->theme = '主題'; +$lang->themes['default'] = '預設'; +$lang->themes['green'] = '綠色'; +$lang->themes['red'] = '紅色'; +$lang->themes['lightblue'] = '亮藍'; +$lang->themes['blackberry'] = '黑莓'; /* 首頁菜單設置。*/ $lang->index = new stdclass(); @@ -187,20 +187,20 @@ $lang->score->menu = $lang->my->menu; $lang->product = new stdclass(); $lang->product->menu = new stdclass(); -$lang->product->menu->list = array('link' => '%s', 'fixed' => true); -$lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story'); -$lang->product->menu->dynamic = '動態|product|dynamic|productID=%s'; -$lang->product->menu->plan = array('link' => '計劃|productplan|browse|productID=%s', 'subModule' => 'productplan'); -$lang->product->menu->release = array('link' => '發佈|release|browse|productID=%s', 'subModule' => 'release'); -$lang->product->menu->roadmap = '路線圖|product|roadmap|productID=%s'; -$lang->product->menu->doc = array('link' => '文檔|doc|objectLibs|type=product&objectID=%s&from=product', 'subModule' => 'doc'); -$lang->product->menu->branch = '@branch@|branch|manage|productID=%s'; -$lang->product->menu->module = '模組|tree|browse|productID=%s&view=story'; -$lang->product->menu->view = array('link' => '概況|product|view|productID=%s', 'alias' => 'edit'); -$lang->product->menu->project = "{$lang->projectCommon}|product|project|status=all&productID=%s"; -$lang->product->menu->create = array('link' => " 添加{$lang->productCommon}|product|create", 'float' => 'right'); -$lang->product->menu->all = array('link' => " 所有{$lang->productCommon}|product|all|productID=%s", 'float' => 'right'); -$lang->product->menu->index = array('link' => "{$lang->productCommon}主頁|product|index|locate=no", 'float' => 'right'); +$lang->product->menu->list = array('link' => '%s', 'fixed' => true); +$lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story'); +$lang->product->menu->dynamic = '動態|product|dynamic|productID=%s'; +$lang->product->menu->plan = array('link' => '計劃|productplan|browse|productID=%s', 'subModule' => 'productplan'); +$lang->product->menu->release = array('link' => '發佈|release|browse|productID=%s', 'subModule' => 'release'); +$lang->product->menu->roadmap = '路線圖|product|roadmap|productID=%s'; +$lang->product->menu->doc = array('link' => '文檔|doc|objectLibs|type=product&objectID=%s&from=product', 'subModule' => 'doc'); +$lang->product->menu->branch = '@branch@|branch|manage|productID=%s'; +$lang->product->menu->module = '模組|tree|browse|productID=%s&view=story'; +$lang->product->menu->view = array('link' => '概況|product|view|productID=%s', 'alias' => 'edit'); +$lang->product->menu->project = "{$lang->projectCommon}|product|project|status=all&productID=%s"; +$lang->product->menu->create = array('link' => " 添加{$lang->productCommon}|product|create", 'float' => 'right'); +$lang->product->menu->all = array('link' => " 所有{$lang->productCommon}|product|all|productID=%s", 'float' => 'right'); +$lang->product->menu->index = array('link' => "{$lang->productCommon}主頁|product|index|locate=no", 'float' => 'right'); $lang->story = new stdclass(); $lang->productplan = new stdclass(); @@ -216,20 +216,20 @@ $lang->release->menu = $lang->product->menu; $lang->project = new stdclass(); $lang->project->menu = new stdclass(); -$lang->project->menu->list = array('link' => '%s', 'fixed' => true); -$lang->project->menu->task = array('link' => '任務|project|task|projectID=%s', 'subModule' => 'task,tree', 'alias' => 'grouptask,importtask,burn,importbug,kanban,printkanban,tree'); -$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory,storykanban'); -$lang->project->menu->bug = 'Bug|project|bug|projectID=%s'; -$lang->project->menu->dynamic = '動態|project|dynamic|projectID=%s'; -$lang->project->menu->build = array('link' => '版本|project|build|projectID=%s', 'subModule' => 'build'); -$lang->project->menu->testtask = array('link' => '測試單|project|testtask|projectID=%s'); -$lang->project->menu->team = array('link' => '團隊|project|team|projectID=%s', 'alias' => 'managemembers'); -$lang->project->menu->doc = array('link' => '文檔|doc|objectLibs|type=project&objectID=%s&from=project', 'subModule' => 'doc'); -$lang->project->menu->product = $lang->productCommon . '|project|manageproducts|projectID=%s'; -$lang->project->menu->view = array('link' => '概況|project|view|projectID=%s', 'alias' => 'edit,start,suspend,putoff,close'); -$lang->project->menu->create = array('link' => " 添加{$lang->projectCommon}|project|create", 'float' => 'right'); -$lang->project->menu->all = array('link' => " 所有{$lang->projectCommon}|project|all|status=undone&projectID=%s", 'float' => 'right'); -$lang->project->menu->index = array('link' => "{$lang->projectCommon}主頁|project|index|locate=no", 'float' => 'right'); +$lang->project->menu->list = array('link' => '%s', 'fixed' => true); +$lang->project->menu->task = array('link' => '任務|project|task|projectID=%s', 'subModule' => 'task,tree', 'alias' => 'grouptask,importtask,burn,importbug,kanban,printkanban,tree'); +$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory,storykanban'); +$lang->project->menu->bug = 'Bug|project|bug|projectID=%s'; +$lang->project->menu->dynamic = '動態|project|dynamic|projectID=%s'; +$lang->project->menu->build = array('link' => '版本|project|build|projectID=%s', 'subModule' => 'build'); +$lang->project->menu->testtask = array('link' => '測試單|project|testtask|projectID=%s'); +$lang->project->menu->team = array('link' => '團隊|project|team|projectID=%s', 'alias' => 'managemembers'); +$lang->project->menu->doc = array('link' => '文檔|doc|objectLibs|type=project&objectID=%s&from=project', 'subModule' => 'doc'); +$lang->project->menu->product = $lang->productCommon . '|project|manageproducts|projectID=%s'; +$lang->project->menu->view = array('link' => '概況|project|view|projectID=%s', 'alias' => 'edit,start,suspend,putoff,close'); +$lang->project->menu->create = array('link' => " 添加{$lang->projectCommon}|project|create", 'float' => 'right'); +$lang->project->menu->all = array('link' => " 所有{$lang->projectCommon}|project|all|status=undone&projectID=%s", 'float' => 'right'); +$lang->project->menu->index = array('link' => "{$lang->projectCommon}主頁|project|index|locate=no", 'float' => 'right'); $lang->task = new stdclass(); $lang->build = new stdclass(); @@ -296,9 +296,9 @@ $lang->caselib->menu->index = array('link' => "測 $lang->doc = new stdclass(); $lang->doc->menu = new stdclass(); -$lang->doc->menu->list = array('link' => '%s', 'fixed' => true); -$lang->doc->menu->crumb = array('link' => '%s', 'fixed' => true); -$lang->doc->menu->create = array('link' => ' 添加文檔庫|doc|createLib', 'float' => 'right'); +$lang->doc->menu->list = array('link' => '%s', 'fixed' => true); +$lang->doc->menu->crumb = array('link' => '%s', 'fixed' => true); +$lang->doc->menu->create = array('link' => ' 添加文檔庫|doc|createLib', 'float' => 'right'); /* 統計視圖菜單設置。*/ $lang->report = new stdclass(); @@ -339,13 +339,12 @@ $lang->admin->menu = new stdclass(); $lang->admin->menu->index = array('link' => '首頁|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany'); $lang->admin->menu->extension = array('link' => '插件|extension|browse', 'subModule' => 'extension'); $lang->admin->menu->custom = array('link' => '自定義|custom|set', 'subModule' => 'custom'); -$lang->admin->menu->mail = array('link' => '發信|mail|index', 'subModule' => 'mail'); +$lang->admin->menu->message = array('link' => '消息|message|index', 'subModule' => 'message,mail,webhook'); $lang->admin->menu->backup = array('link' => '備份|backup|index', 'subModule' => 'backup'); $lang->admin->menu->safe = array('link' => '安全|admin|safe', 'alias' => 'checkweak'); $lang->admin->menu->cron = array('link' => '計劃任務|cron|index', 'subModule' => 'cron'); $lang->admin->menu->trashes = array('link' => '資源回收筒|action|trash', 'subModule' => 'action'); $lang->admin->menu->dev = array('link' => '二次開發|dev|api', 'alias' => 'db', 'subModule' => 'dev,editor'); -$lang->admin->menu->api = array('link' => '介面|webhook|browse', 'alias' => 'create,edit', 'subModule' => 'entry,webhook'); $lang->admin->menu->sso = '然之整合|admin|sso'; $lang->convert = new stdclass(); @@ -360,6 +359,7 @@ $lang->cron = new stdclass(); $lang->dev = new stdclass(); $lang->entry = new stdclass(); $lang->webhook = new stdclass(); +$lang->message = new stdclass(); $lang->search = new stdclass(); $lang->convert->menu = $lang->admin->menu; @@ -374,6 +374,7 @@ $lang->mail->menu = $lang->admin->menu; $lang->dev->menu = $lang->admin->menu; $lang->entry->menu = $lang->admin->menu; $lang->webhook->menu = $lang->admin->menu; +$lang->message->menu = $lang->admin->menu; /* 菜單分組。*/ $lang->menugroup = new stdclass(); @@ -407,6 +408,7 @@ $lang->menugroup->mail = 'admin'; $lang->menugroup->dev = 'admin'; $lang->menugroup->entry = 'admin'; $lang->menugroup->webhook = 'admin'; +$lang->menugroup->message = 'admin'; /* 錯誤提示信息。*/ $lang->error = new stdclass(); @@ -466,31 +468,32 @@ $lang->pager->previousPage = "上一頁"; $lang->pager->nextPage = "下一頁"; $lang->pager->summery = "第 %s-%s 項,共 %s 項"; -$lang->proVersion = "專業版   "; -$lang->downNotify = "下載桌面提醒"; +$lang->proVersion = "專業版   "; +$lang->downNotify = "下載桌面提醒"; +$lang->website = "http://www.zentao.net"; $lang->suhosinInfo = "警告:數據太多,請在php.ini中修改sohusin.post.max_varssohusin.request.max_vars(大於%s的數)。 保存並重新啟動apache或php-fpm,否則會造成部分數據無法保存。"; $lang->maxVarsInfo = "警告:數據太多,請在php.ini中修改max_input_vars(大於%s的數)。 保存並重新啟動apache或php-fpm,否則會造成部分數據無法保存。"; $lang->pasteTextInfo = "粘貼文本到文本域中,每行文字作為一條數據的標題。"; $lang->noticeImport = "

導入數據中,含有已經存在系統的數據,請確認這些數據要覆蓋或者全新插入

覆蓋 全新插入

"; -$lang->noResultsMatch = "沒有匹配結果"; -$lang->searchMore = "搜索此關鍵字的更多結果:"; -$lang->chooseUsersToMail = "選擇要發信通知的用戶..."; -$lang->browserNotice = '你目前使用的瀏覽器可能無法得到最佳瀏覽效果,建議使用Chrome、火狐、IE9+、Opera、Safari瀏覽器。'; -$lang->noticePasteImg = "可以在編輯器直接貼圖。"; +$lang->noResultsMatch = "沒有匹配結果"; +$lang->searchMore = "搜索此關鍵字的更多結果:"; +$lang->chooseUsersToMail = "選擇要發信通知的用戶..."; +$lang->browserNotice = '你目前使用的瀏覽器可能無法得到最佳瀏覽效果,建議使用Chrome、火狐、IE9+、Opera、Safari瀏覽器。'; +$lang->noticePasteImg = "可以在編輯器直接貼圖。"; /* 時間格式設置。*/ -if(!defined('DT_DATETIME1')) define('DT_DATETIME1', 'Y-m-d H:i:s'); -if(!defined('DT_DATETIME2')) define('DT_DATETIME2', 'y-m-d H:i'); -if(!defined('DT_MONTHTIME1'))define('DT_MONTHTIME1', 'n/d H:i'); -if(!defined('DT_MONTHTIME2'))define('DT_MONTHTIME2', 'n月d日 H:i'); -if(!defined('DT_DATE1')) define('DT_DATE1', 'Y-m-d'); -if(!defined('DT_DATE2')) define('DT_DATE2', 'Ymd'); -if(!defined('DT_DATE3')) define('DT_DATE3', 'Y年m月d日'); -if(!defined('DT_DATE4')) define('DT_DATE4', 'n月j日'); -if(!defined('DT_TIME1')) define('DT_TIME1', 'H:i:s'); -if(!defined('DT_TIME2')) define('DT_TIME2', 'H:i'); +if(!defined('DT_DATETIME1')) define('DT_DATETIME1', 'Y-m-d H:i:s'); +if(!defined('DT_DATETIME2')) define('DT_DATETIME2', 'y-m-d H:i'); +if(!defined('DT_MONTHTIME1')) define('DT_MONTHTIME1', 'n/d H:i'); +if(!defined('DT_MONTHTIME2')) define('DT_MONTHTIME2', 'n月d日 H:i'); +if(!defined('DT_DATE1')) define('DT_DATE1', 'Y-m-d'); +if(!defined('DT_DATE2')) define('DT_DATE2', 'Ymd'); +if(!defined('DT_DATE3')) define('DT_DATE3', 'Y年m月d日'); +if(!defined('DT_DATE4')) define('DT_DATE4', 'n月j日'); +if(!defined('DT_TIME1')) define('DT_TIME1', 'H:i:s'); +if(!defined('DT_TIME2')) define('DT_TIME2', 'H:i'); /* datepicker 時間*/ $lang->datepicker = new stdclass(); @@ -608,7 +611,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyStory') /* Adjust sub menu of product module. */ unset($lang->product->menu->project); unset($lang->product->menu->doc); - + /* Rename product module. */ $lang->menu->product = "{$lang->productCommon}|product|index"; @@ -761,15 +764,15 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest') $lang->testtask->menu->report = array('link' => '報告|testreport|browse', 'alias' => 'view,create,edit'); $lang->testtask->menu->create = array('link' => " 提交測試|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'; + $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'; $lang->testreport->menu = $lang->testtask->menu; $lang->testreport->menuOrder = $lang->testtask->menuOrder; @@ -806,7 +809,7 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest') $lang->build->menu = $lang->product->menu; $lang->build->menuOrder = $lang->product->menuOrder; - + /* Adjust menu group. */ $lang->menugroup->bug = 'bug'; $lang->menugroup->testcase = 'testcase'; @@ -814,8 +817,8 @@ if(isset($config->global->flow) and $config->global->flow == 'onlyTest') $lang->menugroup->testsuite = 'testsuite'; $lang->menugroup->testreport = 'testtask'; $lang->menugroup->build = 'product'; - - /* Adjust search objects. */ + + /* Adjust search objects. */ unset($lang->searchObjects['story']); unset($lang->searchObjects['task']); unset($lang->searchObjects['release']); diff --git a/module/dev/lang/zh-tw.php b/module/dev/lang/zh-tw.php index 03d134b0c4..a0d2f6394c 100644 --- a/module/dev/lang/zh-tw.php +++ b/module/dev/lang/zh-tw.php @@ -93,6 +93,8 @@ $lang->dev->tableList['suitecase'] = '套件用例'; $lang->dev->tableList['score'] = '積分'; $lang->dev->tableList['entry'] = '應用'; $lang->dev->tableList['webhook'] = 'WebHook'; +$lang->dev->tableList['webhookdatas'] = 'WebHook數據'; +$lang->dev->tableList['log'] = '介面日誌'; $lang->dev->groupList['my'] = '我的地盤'; $lang->dev->groupList['product'] = $lang->productCommon; diff --git a/module/group/lang/en.php b/module/group/lang/en.php index fb81a6a1b5..4fd8a8744b 100644 --- a/module/group/lang/en.php +++ b/module/group/lang/en.php @@ -48,6 +48,7 @@ $lang->group->copyOptions['copyPriv'] = 'Copy Privilege'; $lang->group->copyOptions['copyUser'] = 'Copy User'; $lang->group->versions[''] = 'History'; +$lang->group->versions['9_8'] = 'ZenTao9.8'; $lang->group->versions['9_6'] = 'ZenTao9.6'; $lang->group->versions['9_5'] = 'ZenTao9.5'; $lang->group->versions['9_2'] = 'ZenTao9.2'; diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index 7a6cd501ee..3fe33652bb 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -58,6 +58,7 @@ $lang->moduleOrder[180] = 'misc'; $lang->moduleOrder[185] = 'backup'; $lang->moduleOrder[190] = 'cron'; $lang->moduleOrder[195] = 'dev'; +$lang->moduleOrder[200] = 'message'; $lang->resource = new stdclass(); @@ -106,6 +107,7 @@ $lang->my->methodOrder[80] = 'score'; /* Todo. */ $lang->resource->todo = new stdclass(); $lang->resource->todo->create = 'create'; +$lang->resource->todo->createcycle = 'createCycle'; $lang->resource->todo->batchCreate = 'batchCreate'; $lang->resource->todo->edit = 'edit'; $lang->resource->todo->batchEdit = 'batchEdit'; @@ -120,13 +122,14 @@ $lang->resource->todo->activate = 'activate'; $lang->resource->todo->close = 'close'; $lang->todo->methodOrder[5] = 'create'; -$lang->todo->methodOrder[10] = 'batchCreate'; -$lang->todo->methodOrder[15] = 'edit'; -$lang->todo->methodOrder[20] = 'view'; -$lang->todo->methodOrder[25] = 'delete'; -$lang->todo->methodOrder[30] = 'export'; -$lang->todo->methodOrder[35] = 'finish'; -$lang->todo->methodOrder[40] = 'import2Today'; +$lang->todo->methodOrder[10] = 'createCycle'; +$lang->todo->methodOrder[15] = 'batchCreate'; +$lang->todo->methodOrder[20] = 'edit'; +$lang->todo->methodOrder[25] = 'view'; +$lang->todo->methodOrder[30] = 'delete'; +$lang->todo->methodOrder[35] = 'export'; +$lang->todo->methodOrder[40] = 'finish'; +$lang->todo->methodOrder[45] = 'import2Today'; /* Product. */ $lang->resource->product = new stdclass(); @@ -287,50 +290,51 @@ $lang->release->methodOrder[70] = 'changeStatus'; /* Project. */ $lang->resource->project = new stdclass(); -$lang->resource->project->index = 'index'; -$lang->resource->project->view = 'view'; -$lang->resource->project->browse = 'browse'; -$lang->resource->project->create = 'create'; -$lang->resource->project->edit = 'edit'; -$lang->resource->project->batchedit = 'batchEdit'; -$lang->resource->project->start = 'start'; -$lang->resource->project->activate = 'activate'; -$lang->resource->project->putoff = 'putoff'; -$lang->resource->project->suspend = 'suspend'; -$lang->resource->project->close = 'close'; -$lang->resource->project->delete = 'delete'; -$lang->resource->project->task = 'task'; -$lang->resource->project->grouptask = 'groupTask'; -$lang->resource->project->importtask = 'importTask'; -$lang->resource->project->importBug = 'importBug'; -$lang->resource->project->story = 'story'; -$lang->resource->project->build = 'build'; -$lang->resource->project->testtask = 'testtask'; -$lang->resource->project->bug = 'bug'; -$lang->resource->project->burn = 'burn'; -$lang->resource->project->computeBurn = 'computeBurn'; -$lang->resource->project->fixFirst = 'fixFirst'; -$lang->resource->project->burnData = 'burnData'; -$lang->resource->project->team = 'team'; -$lang->resource->project->doc = 'doc'; -$lang->resource->project->dynamic = 'dynamic'; -$lang->resource->project->manageProducts = 'manageProducts'; +$lang->resource->project->index = 'index'; +$lang->resource->project->view = 'view'; +$lang->resource->project->browse = 'browse'; +$lang->resource->project->create = 'create'; +$lang->resource->project->edit = 'edit'; +$lang->resource->project->batchedit = 'batchEdit'; +$lang->resource->project->start = 'start'; +$lang->resource->project->activate = 'activate'; +$lang->resource->project->putoff = 'putoff'; +$lang->resource->project->suspend = 'suspend'; +$lang->resource->project->close = 'close'; +$lang->resource->project->delete = 'delete'; +$lang->resource->project->task = 'task'; +$lang->resource->project->grouptask = 'groupTask'; +$lang->resource->project->importtask = 'importTask'; +$lang->resource->project->importplanstories = 'importPlanStories'; +$lang->resource->project->importBug = 'importBug'; +$lang->resource->project->story = 'story'; +$lang->resource->project->build = 'build'; +$lang->resource->project->testtask = 'testtask'; +$lang->resource->project->bug = 'bug'; +$lang->resource->project->burn = 'burn'; +$lang->resource->project->computeBurn = 'computeBurn'; +$lang->resource->project->fixFirst = 'fixFirst'; +$lang->resource->project->burnData = 'burnData'; +$lang->resource->project->team = 'team'; +$lang->resource->project->doc = 'doc'; +$lang->resource->project->dynamic = 'dynamic'; +$lang->resource->project->manageProducts = 'manageProducts'; //$lang->resource->project->manageChilds = 'manageChilds'; -$lang->resource->project->manageMembers = 'manageMembers'; -$lang->resource->project->unlinkMember = 'unlinkMember'; -$lang->resource->project->linkStory = 'linkStory'; -$lang->resource->project->unlinkStory = 'unlinkStory'; -$lang->resource->project->batchUnlinkStory = 'batchUnlinkStory'; -$lang->resource->project->updateOrder = 'updateOrder'; -$lang->resource->project->kanban = 'kanban'; -$lang->resource->project->printKanban = 'printKanban'; -$lang->resource->project->tree = 'tree'; -$lang->resource->project->all = 'all'; -$lang->resource->project->kanbanHideCols = 'kanbanHideCols'; -$lang->resource->project->kanbanColsColor = 'kanbanColsColor'; -$lang->resource->project->export = 'export'; -$lang->resource->project->storyKanban = 'storyKanban'; -$lang->resource->project->storySort = 'storySort'; +$lang->resource->project->manageMembers = 'manageMembers'; +$lang->resource->project->unlinkMember = 'unlinkMember'; +$lang->resource->project->linkStory = 'linkStory'; +$lang->resource->project->unlinkStory = 'unlinkStory'; +$lang->resource->project->batchUnlinkStory = 'batchUnlinkStory'; +$lang->resource->project->updateOrder = 'updateOrder'; +$lang->resource->project->kanban = 'kanban'; +$lang->resource->project->printKanban = 'printKanban'; +$lang->resource->project->tree = 'tree'; +$lang->resource->project->all = 'all'; +$lang->resource->project->kanbanHideCols = 'kanbanHideCols'; +$lang->resource->project->kanbanColsColor = 'kanbanColsColor'; +$lang->resource->project->export = 'export'; +$lang->resource->project->storyKanban = 'storyKanban'; +$lang->resource->project->storySort = 'storySort'; $lang->project->methodOrder[0] = 'index'; $lang->project->methodOrder[5] = 'view'; @@ -347,16 +351,17 @@ $lang->project->methodOrder[60] = 'delete'; $lang->project->methodOrder[65] = 'task'; $lang->project->methodOrder[70] = 'grouptask'; $lang->project->methodOrder[75] = 'importtask'; -$lang->project->methodOrder[80] = 'importBug'; -$lang->project->methodOrder[85] = 'story'; -$lang->project->methodOrder[90] = 'build'; -$lang->project->methodOrder[95] = 'testtask'; -$lang->project->methodOrder[100] = 'bug'; -$lang->project->methodOrder[105] = 'burn'; -$lang->project->methodOrder[110] = 'computeBurn'; -$lang->project->methodOrder[115] = 'fixFirst'; -$lang->project->methodOrder[120] = 'burnData'; -$lang->project->methodOrder[125] = 'team'; +$lang->project->methodOrder[80] = 'importplanstories'; +$lang->project->methodOrder[85] = 'importBug'; +$lang->project->methodOrder[90] = 'story'; +$lang->project->methodOrder[95] = 'build'; +$lang->project->methodOrder[100] = 'testtask'; +$lang->project->methodOrder[105] = 'bug'; +$lang->project->methodOrder[110] = 'burn'; +$lang->project->methodOrder[115] = 'computeBurn'; +$lang->project->methodOrder[120] = 'fixFirst'; +$lang->project->methodOrder[125] = 'burnData'; +$lang->project->methodOrder[130] = 'team'; //$lang->project->methodOrder[130] = 'doc'; $lang->project->methodOrder[135] = 'dynamic'; $lang->project->methodOrder[140] = 'manageProducts'; @@ -1007,6 +1012,13 @@ $lang->resource->misc->ping = 'ping'; $lang->misc->methodOrder[5] = 'ping'; +$lang->resource->message = new stdclass(); +$lang->resource->message->index = 'index'; +$lang->resource->message->setting = 'setting'; + +$lang->message->methodOrder[5] = 'index'; +$lang->message->methodOrder[10] = 'setting'; + $lang->resource->action = new stdclass(); $lang->resource->action->trash = 'trash'; $lang->resource->action->undelete = 'undelete'; @@ -1363,6 +1375,11 @@ $lang->changelog['9.6'][] = 'project-export'; $lang->changelog['9.6'][] = 'project-storyKanban'; $lang->changelog['9.6'][] = 'project-storySort'; +$lang->changelog['9.8'][] = 'message-index'; +$lang->changelog['9.8'][] = 'message-setting'; +$lang->changelog['9.8'][] = 'todo-createCycle'; +$lang->changelog['9.8'][] = 'project-importPlanStories'; + global $config; if($config->global->flow != 'full') { diff --git a/module/group/lang/zh-cn.php b/module/group/lang/zh-cn.php index b1c41032b6..4def5cd7af 100644 --- a/module/group/lang/zh-cn.php +++ b/module/group/lang/zh-cn.php @@ -48,6 +48,7 @@ $lang->group->copyOptions['copyPriv'] = '复制权限'; $lang->group->copyOptions['copyUser'] = '复制用户'; $lang->group->versions[''] = '修改历史'; +$lang->group->versions['9_8'] = '禅道9.8'; $lang->group->versions['9_6'] = '禅道9.6'; $lang->group->versions['9_5'] = '禅道9.5'; $lang->group->versions['9_2'] = '禅道9.2'; diff --git a/module/group/lang/zh-tw.php b/module/group/lang/zh-tw.php index aa2950d899..ee60c28529 100644 --- a/module/group/lang/zh-tw.php +++ b/module/group/lang/zh-tw.php @@ -48,6 +48,7 @@ $lang->group->copyOptions['copyPriv'] = '複製權限'; $lang->group->copyOptions['copyUser'] = '複製用戶'; $lang->group->versions[''] = '修改歷史'; +$lang->group->versions['9_8'] = '禪道9.8'; $lang->group->versions['9_6'] = '禪道9.6'; $lang->group->versions['9_5'] = '禪道9.5'; $lang->group->versions['9_2'] = '禪道9.2'; diff --git a/module/install/lang/zh-tw.php b/module/install/lang/zh-tw.php index 48d8205a9e..1e6c5ac64a 100644 --- a/module/install/lang/zh-tw.php +++ b/module/install/lang/zh-tw.php @@ -158,6 +158,7 @@ $lang->install->cronList['moduleName=backup&methodName=backup'] = '備份 $lang->install->cronList['moduleName=mail&methodName=asyncSend'] = '非同步發信'; $lang->install->cronList['moduleName=webhook&methodName=asyncSend'] = '非同步發送Webhook'; $lang->install->cronList['moduleName=admin&methodName=deleteLog'] = '刪除過期日誌'; +$lang->install->cronList['moduleName=todo&methodName=createCycle'] = '生成周期性待辦'; $lang->install->success = "安裝成功"; $lang->install->login = '登錄禪道管理系統'; diff --git a/module/mail/lang/en.php b/module/mail/lang/en.php index 5124c8cc5b..1995ef3aec 100755 --- a/module/mail/lang/en.php +++ b/module/mail/lang/en.php @@ -46,8 +46,8 @@ $lang->mail->remove = 'Remove'; $lang->mail->toList = 'Addressee'; $lang->mail->ccList = 'Copy to'; $lang->mail->subject = 'Subject'; -$lang->mail->addedBy = 'Sender'; -$lang->mail->addedDate = 'Added Date'; +$lang->mail->createdBy = 'Sender'; +$lang->mail->createdDate = 'Added Date'; $lang->mail->sendTime = 'Send Date'; $lang->mail->status = 'Status'; $lang->mail->failReason = 'Fail Reason'; diff --git a/module/mail/lang/zh-tw.php b/module/mail/lang/zh-tw.php index 5ff7ebbc9d..1c50f650b4 100644 --- a/module/mail/lang/zh-tw.php +++ b/module/mail/lang/zh-tw.php @@ -4,7 +4,7 @@ $lang->mail->index = '首頁'; $lang->mail->detect = '檢測'; $lang->mail->edit = '編輯配置'; $lang->mail->save = '保存'; -$lang->mail->saveSuccess = '成功保存'; +$lang->mail->saveSuccess = '保存成功'; $lang->mail->test = '測試發信'; $lang->mail->reset = '重置'; $lang->mail->resend = '重發'; @@ -46,14 +46,14 @@ $lang->mail->remove = '移除'; $lang->mail->toList = '收信人'; $lang->mail->ccList = '抄送給'; $lang->mail->subject = '主題'; -$lang->mail->addedBy = '發送者'; -$lang->mail->addedDate = '創建時間'; +$lang->mail->createdBy = '發送者'; +$lang->mail->createdDate = '創建時間'; $lang->mail->sendTime = '發送時間'; $lang->mail->status = '狀態'; $lang->mail->failReason = '失敗原因'; -$lang->mail->statusList['send'] = '成功'; -$lang->mail->statusList['fail'] = '失敗'; +$lang->mail->statusList['sended'] = '成功'; +$lang->mail->statusList['fail'] = '失敗'; $lang->mail->turnonList[1] = '打開'; $lang->mail->turnonList[0] = '關閉'; diff --git a/module/message/control.php b/module/message/control.php index 24c65b6e94..9207c37021 100644 --- a/module/message/control.php +++ b/module/message/control.php @@ -19,7 +19,16 @@ class message extends control */ public function index() { - $this->locate($this->createLink('mail', 'index')); + foreach($this->lang->message->typeList as $type => $typeName) + { + if(isset($config->message->typeLink[$type])) + { + list($moduleName, $methodName) = explode('|', $this->config->message->typeLink[$type]); + $this->locate($this->createLink($moduleName, $methodName)); + } + } + + $this->locate($this->createLink('message', 'setting')); } /** diff --git a/module/message/lang/en.php b/module/message/lang/en.php index 824ab306a5..a0f0595391 100644 --- a/module/message/lang/en.php +++ b/module/message/lang/en.php @@ -1,5 +1,6 @@ message->common = 'Message'; +$lang->message->index = 'Index'; $lang->message->setting = 'Setting'; $lang->message->typeList['mail'] = 'Mail'; diff --git a/module/message/lang/zh-cn.php b/module/message/lang/zh-cn.php index bfce451eb9..4fd3124468 100644 --- a/module/message/lang/zh-cn.php +++ b/module/message/lang/zh-cn.php @@ -1,5 +1,6 @@ message->common = '消息'; +$lang->message->index = '首页'; $lang->message->setting = '设置'; $lang->message->typeList['mail'] = '邮件'; diff --git a/module/message/lang/zh-tw.php b/module/message/lang/zh-tw.php new file mode 100644 index 0000000000..0ebe5179a9 --- /dev/null +++ b/module/message/lang/zh-tw.php @@ -0,0 +1,8 @@ +message->common = '消息'; +$lang->message->index = '首頁'; +$lang->message->setting = '設置'; + +$lang->message->typeList['mail'] = '郵件'; +$lang->message->typeList['message'] = '消息'; +$lang->message->typeList['webhook'] = 'Webhook'; diff --git a/module/message/view/header.html.php b/module/message/view/header.html.php index 5d0ff360d2..12a92c046c 100644 --- a/module/message/view/header.html.php +++ b/module/message/view/header.html.php @@ -7,6 +7,6 @@
  • createLink($moduleName, $methodName), $typeName)?>
  • -
  • createLink('message', 'setting'), $lang->message->setting)?>
  • +
  • createLink('message', 'setting'), $lang->message->setting)?>
  • diff --git a/module/misc/lang/zh-tw.php b/module/misc/lang/zh-tw.php index f90bd986ec..33ef2cda44 100644 --- a/module/misc/lang/zh-tw.php +++ b/module/misc/lang/zh-tw.php @@ -12,6 +12,7 @@ $lang->misc = new stdclass(); $lang->misc->common = '雜項'; $lang->misc->ping = '防超時'; +$lang->misc->api = 'http://api.zentao.net'; $lang->misc->zentao = new stdclass(); $lang->misc->zentao->version = '版本%s'; @@ -52,7 +53,7 @@ $lang->misc->zentao->service['servicemore']= '更多服務...'; $lang->misc->mobile = "手機訪問"; $lang->misc->noGDLib = "請用手機瀏覽器訪問:%s"; -$lang->misc->copyright = "© 2009 - 2016 青島易軟天創網絡科技有限公司 電話:4006-8899-23 Email:co@zentao.net QQ:1492153927"; +$lang->misc->copyright = "© 2009 - 2018 青島易軟天創網絡科技有限公司 電話:4006-8899-23 Email:co@zentao.net QQ:1492153927"; $lang->misc->checkTable = "檢查修復數據表"; $lang->misc->needRepair = "修復表"; $lang->misc->repairTable = "資料庫表可能因為斷電原因損壞,需要檢查修復!!"; @@ -67,12 +68,26 @@ $lang->misc->noticeRepair = "
    普通用戶請聯繫管理員進行修復
    1. 檔案內容為空。
    2. 如果之前檔案存在,刪除之後重新創建。
    3. -
    "; + "; $lang->misc->feature = new stdclass(); $lang->misc->feature->lastest = '最新版本'; $lang->misc->feature->detailed = '詳情'; +$lang->misc->feature->all['9.7.stable'][] = array('title'=>'調整國際版,增加英文Demo數據。', 'desc' => ''); + +$lang->misc->feature->all['9.6.stable'][] = array('title'=>'新增了webhook功能', 'desc' => '實現與倍冾、釘釘的消息通知介面'); +$lang->misc->feature->all['9.6.stable'][] = array('title'=>'新增禪道操作獲取積分的功能', 'desc' => ''); +$lang->misc->feature->all['9.6.stable'][] = array('title'=>'項目任務新增了多人任務和子任務功能', 'desc' => ''); +$lang->misc->feature->all['9.6.stable'][] = array('title'=>'產品視圖新增了產品綫功能', 'desc' => ''); + +$lang->misc->feature->all['9.5.1'][] = array('title'=>'新增受限操作', 'desc' => ''); + +$lang->misc->feature->all['9.3.beta'][] = array('title'=>'升級框架,增強程序安全', 'desc' => ''); + +$lang->misc->feature->all['9.1.stable'][] = array('title'=>'完善測試視圖', 'desc' => '

    增加測試套件、公共測試庫和測試總結功能

    '); +$lang->misc->feature->all['9.1.stable'][] = array('title'=>'支持測試步驟分組', 'desc' => ''); + $lang->misc->feature->all['9.0.beta'][] = array('title'=>'增加禪道雲發信功能', 'desc' => '

    禪道雲發信是禪道聯合SendCloud推出的一項免費發信服務,只有用戶綁定禪道,並通過驗證即可使用。

    '); $lang->misc->feature->all['9.0.beta'][] = array('title'=>'優化富文本編輯器和markdown編輯器', 'desc' => ''); diff --git a/module/productplan/lang/zh-tw.php b/module/productplan/lang/zh-tw.php index 4d1edc9b12..71511ea2d0 100644 --- a/module/productplan/lang/zh-tw.php +++ b/module/productplan/lang/zh-tw.php @@ -17,7 +17,7 @@ $lang->productplan->edit = "編輯計劃"; $lang->productplan->delete = "刪除計劃"; $lang->productplan->view = "計劃詳情"; $lang->productplan->bugSummary = "本頁共 %s 個Bug"; -$lang->productplan->info = '信息'; +$lang->productplan->info = '信息'; $lang->productplan->batchEdit = '批量編輯'; $lang->productplan->batchUnlink = "批量移除"; @@ -46,14 +46,20 @@ $lang->productplan->desc = '描述'; $lang->productplan->begin = '開始日期'; $lang->productplan->end = '結束日期'; $lang->productplan->last = '上次計劃'; +$lang->productplan->future = '待定'; +$lang->productplan->stories = '需求數'; +$lang->productplan->bugs = 'Bug數'; +$lang->productplan->hour = '工時'; +$lang->productplan->project = $lang->projectCommon; -$lang->productplan->endList[7] = '一星期'; -$lang->productplan->endList[14] = '兩星期'; -$lang->productplan->endList[31] = '一個月'; -$lang->productplan->endList[62] = '兩個月'; -$lang->productplan->endList[93] = '三個月'; -$lang->productplan->endList[186] = '半年'; -$lang->productplan->endList[365] = '一年'; +$lang->productplan->endList[7] = '一星期'; +$lang->productplan->endList[14] = '兩星期'; +$lang->productplan->endList[31] = '一個月'; +$lang->productplan->endList[62] = '兩個月'; +$lang->productplan->endList[93] = '三個月'; +$lang->productplan->endList[186] = '半年'; +$lang->productplan->endList[365] = '一年'; +$lang->productplan->endList[9999] = '待定'; $lang->productplan->errorNoTitle = 'ID %s 標題不能為空'; $lang->productplan->errorNoBegin = 'ID %s 開始時間不能為空'; diff --git a/module/project/lang/en.php b/module/project/lang/en.php index 4abd754a74..7d732b3095 100644 --- a/module/project/lang/en.php +++ b/module/project/lang/en.php @@ -100,46 +100,47 @@ $lang->project->aclList['private'] = 'Private (Only team members can access.)'; $lang->project->aclList['custom'] = 'Whitelist (Team members and the whitelist members can access.)'; /* 方法列表。*/ -$lang->project->index = "Home"; -$lang->project->task = 'Tasks'; -$lang->project->groupTask = 'View by Group'; -$lang->project->story = 'Stories'; -$lang->project->bug = 'Bugs'; -$lang->project->dynamic = 'Dynamic'; -$lang->project->build = 'Builds'; -$lang->project->testtask = 'Test Tasks'; -$lang->project->burn = 'Burndown'; -$lang->project->baseline = 'Base Line'; -$lang->project->computeBurn = 'Update'; -$lang->project->burnData = 'Burndown Data'; -$lang->project->fixFirst = 'Edit 1st Day Man-hour'; -$lang->project->team = 'Team Member'; -$lang->project->doc = 'Doc'; -$lang->project->manageProducts = 'Link ' . $lang->productCommon; -$lang->project->linkStory = 'Linked Story'; -$lang->project->linkPlan = 'Linked Plan'; -$lang->project->linkStoryByPlan = 'Linked Story From Plan'; -$lang->project->unlinkStoryTasks = 'Unlinked'; -$lang->project->linkedProducts = 'Linked Products'; -$lang->project->unlinkedProducts = 'Unlinked Products'; -$lang->project->view = "Overview"; -$lang->project->create = "Create Project"; -$lang->project->copy = "Copy {$lang->projectCommon}"; -$lang->project->delete = "Delete"; -$lang->project->browse = "Browse"; -$lang->project->edit = "Edit"; -$lang->project->batchEdit = "Batch Edit"; -$lang->project->manageMembers = 'Manange Team'; -$lang->project->unlinkMember = 'Unlink Member'; -$lang->project->unlinkStory = 'Unlink Story'; -$lang->project->batchUnlinkStory = 'Batch Unlink Story'; -$lang->project->importTask = 'Import Task'; -$lang->project->importBug = 'Import Bug'; -$lang->project->updateOrder = 'Order'; -$lang->project->tree = 'Tree'; -$lang->project->storyKanban = 'Story Kanban'; -$lang->project->storySort = 'Sort Story'; -$lang->project->importPlanStory = 'Import the stories with the plan?'; +$lang->project->index = "Home"; +$lang->project->task = 'Tasks'; +$lang->project->groupTask = 'View by Group'; +$lang->project->story = 'Stories'; +$lang->project->bug = 'Bugs'; +$lang->project->dynamic = 'Dynamic'; +$lang->project->build = 'Builds'; +$lang->project->testtask = 'Test Tasks'; +$lang->project->burn = 'Burndown'; +$lang->project->baseline = 'Base Line'; +$lang->project->computeBurn = 'Update'; +$lang->project->burnData = 'Burndown Data'; +$lang->project->fixFirst = 'Edit 1st Day Man-hour'; +$lang->project->team = 'Team Member'; +$lang->project->doc = 'Doc'; +$lang->project->manageProducts = 'Link ' . $lang->productCommon; +$lang->project->linkStory = 'Linked Story'; +$lang->project->linkStoryByPlan = 'Linked Story From Plan'; +$lang->project->linkPlan = 'Linked Plan'; +$lang->project->unlinkStoryTasks = 'Unlinked'; +$lang->project->linkedProducts = 'Linked Products'; +$lang->project->unlinkedProducts = 'Unlinked Products'; +$lang->project->view = "Overview"; +$lang->project->create = "Create Project"; +$lang->project->copy = "Copy {$lang->projectCommon}"; +$lang->project->delete = "Delete"; +$lang->project->browse = "Browse"; +$lang->project->edit = "Edit"; +$lang->project->batchEdit = "Batch Edit"; +$lang->project->manageMembers = 'Manange Team'; +$lang->project->unlinkMember = 'Unlink Member'; +$lang->project->unlinkStory = 'Unlink Story'; +$lang->project->batchUnlinkStory = 'Batch Unlink Story'; +$lang->project->importTask = 'Import Task'; +$lang->project->importPlanStories = 'Link Story By Plan'; +$lang->project->importBug = 'Import Bug'; +$lang->project->updateOrder = 'Order'; +$lang->project->tree = 'Tree'; +$lang->project->storyKanban = 'Story Kanban'; +$lang->project->storySort = 'Sort Story'; +$lang->project->importPlanStory = 'Import the stories with the plan?'; /* 分组浏览。*/ $lang->project->allTasks = 'All'; diff --git a/module/project/lang/zh-cn.php b/module/project/lang/zh-cn.php index fd5fb6cc5f..10ba99e938 100644 --- a/module/project/lang/zh-cn.php +++ b/module/project/lang/zh-cn.php @@ -100,46 +100,47 @@ $lang->project->aclList['private'] = "私有{$lang->projectCommon}(只有{$lang- $lang->project->aclList['custom'] = "自定义白名单(团队成员和白名单的成员可以访问)"; /* 方法列表。*/ -$lang->project->index = "{$lang->projectCommon}首页"; -$lang->project->task = '任务列表'; -$lang->project->groupTask = '分组浏览任务'; -$lang->project->story = '需求列表'; -$lang->project->bug = 'Bug列表'; -$lang->project->dynamic = '动态'; -$lang->project->build = '版本列表'; -$lang->project->testtask = '测试任务'; -$lang->project->burn = '燃尽图'; -$lang->project->baseline = '基准线'; -$lang->project->computeBurn = '更新'; -$lang->project->burnData = '燃尽图数据'; -$lang->project->fixFirst = '修改首天工时'; -$lang->project->team = '团队成员'; -$lang->project->doc = '文档列表'; -$lang->project->manageProducts = '关联' . $lang->productCommon; -$lang->project->linkStory = '关联需求'; -$lang->project->linkStoryByPlan = '按照计划关联'; -$lang->project->linkPlan = '关联计划'; -$lang->project->unlinkStoryTasks = '未关联需求任务'; -$lang->project->linkedProducts = '已关联'; -$lang->project->unlinkedProducts = '未关联'; -$lang->project->view = "{$lang->projectCommon}概况"; -$lang->project->create = "添加{$lang->projectCommon}"; -$lang->project->copy = "复制{$lang->projectCommon}"; -$lang->project->delete = "删除{$lang->projectCommon}"; -$lang->project->browse = "浏览{$lang->projectCommon}"; -$lang->project->edit = "编辑{$lang->projectCommon}"; -$lang->project->batchEdit = "批量编辑"; -$lang->project->manageMembers = '团队管理'; -$lang->project->unlinkMember = '移除成员'; -$lang->project->unlinkStory = '移除需求'; -$lang->project->batchUnlinkStory = '批量移除需求'; -$lang->project->importTask = '转入任务'; -$lang->project->importBug = '导入Bug'; -$lang->project->updateOrder = '排序'; -$lang->project->tree = '树状图'; -$lang->project->storyKanban = '需求看板'; -$lang->project->storySort = '需求排序'; -$lang->project->importPlanStory = '是否导入计划关联的相关需求?'; +$lang->project->index = "{$lang->projectCommon}首页"; +$lang->project->task = '任务列表'; +$lang->project->groupTask = '分组浏览任务'; +$lang->project->story = '需求列表'; +$lang->project->bug = 'Bug列表'; +$lang->project->dynamic = '动态'; +$lang->project->build = '版本列表'; +$lang->project->testtask = '测试任务'; +$lang->project->burn = '燃尽图'; +$lang->project->baseline = '基准线'; +$lang->project->computeBurn = '更新'; +$lang->project->burnData = '燃尽图数据'; +$lang->project->fixFirst = '修改首天工时'; +$lang->project->team = '团队成员'; +$lang->project->doc = '文档列表'; +$lang->project->manageProducts = '关联' . $lang->productCommon; +$lang->project->linkStory = '关联需求'; +$lang->project->linkStoryByPlan = '按照计划关联'; +$lang->project->linkPlan = '关联计划'; +$lang->project->unlinkStoryTasks = '未关联需求任务'; +$lang->project->linkedProducts = '已关联'; +$lang->project->unlinkedProducts = '未关联'; +$lang->project->view = "{$lang->projectCommon}概况"; +$lang->project->create = "添加{$lang->projectCommon}"; +$lang->project->copy = "复制{$lang->projectCommon}"; +$lang->project->delete = "删除{$lang->projectCommon}"; +$lang->project->browse = "浏览{$lang->projectCommon}"; +$lang->project->edit = "编辑{$lang->projectCommon}"; +$lang->project->batchEdit = "批量编辑"; +$lang->project->manageMembers = '团队管理'; +$lang->project->unlinkMember = '移除成员'; +$lang->project->unlinkStory = '移除需求'; +$lang->project->batchUnlinkStory = '批量移除需求'; +$lang->project->importTask = '转入任务'; +$lang->project->importPlanStories = '按计划关联需求'; +$lang->project->importBug = '导入Bug'; +$lang->project->updateOrder = '排序'; +$lang->project->tree = '树状图'; +$lang->project->storyKanban = '需求看板'; +$lang->project->storySort = '需求排序'; +$lang->project->importPlanStory = '是否导入计划关联的相关需求?'; /* 分组浏览。*/ $lang->project->allTasks = '所有'; diff --git a/module/project/lang/zh-tw.php b/module/project/lang/zh-tw.php index 22d5f90aa0..aff825b31c 100644 --- a/module/project/lang/zh-tw.php +++ b/module/project/lang/zh-tw.php @@ -66,13 +66,13 @@ $lang->project->typeList['sprint'] = "短期$lang->projectCommon"; $lang->project->typeList['waterfall'] = "長期$lang->projectCommon"; $lang->project->typeList['ops'] = "運維$lang->projectCommon"; -$lang->project->endList[7] = '一星期'; -$lang->project->endList[14] = '兩星期'; -$lang->project->endList[31] = '一個月'; -$lang->project->endList[62] = '兩個月'; -$lang->project->endList[93] = '三個月'; -$lang->project->endList[186] = '半年'; -$lang->project->endList[365] = '一年'; +$lang->project->endList[7] = '一星期'; +$lang->project->endList[14] = '兩星期'; +$lang->project->endList[31] = '一個月'; +$lang->project->endList[62] = '兩個月'; +$lang->project->endList[93] = '三個月'; +$lang->project->endList[186] = '半年'; +$lang->project->endList[365] = '一年'; $lang->team = new stdclass(); $lang->team->account = '用戶'; @@ -100,43 +100,47 @@ $lang->project->aclList['private'] = "私有{$lang->projectCommon}(只有{$lang- $lang->project->aclList['custom'] = "自定義白名單(團隊成員和白名單的成員可以訪問)"; /* 方法列表。*/ -$lang->project->index = "{$lang->projectCommon}首頁"; -$lang->project->task = '任務列表'; -$lang->project->groupTask = '分組瀏覽任務'; -$lang->project->story = '需求列表'; -$lang->project->bug = 'Bug列表'; -$lang->project->dynamic = '動態'; -$lang->project->build = '版本列表'; -$lang->project->testtask = '測試任務'; -$lang->project->burn = '燃盡圖'; -$lang->project->baseline = '基準綫'; -$lang->project->computeBurn = '更新'; -$lang->project->burnData = '燃盡圖數據'; -$lang->project->fixFirst = '修改首天工時'; -$lang->project->team = '團隊成員'; -$lang->project->doc = '文檔列表'; -$lang->project->manageProducts = '關聯' . $lang->productCommon; -$lang->project->linkStory = '關聯需求'; -$lang->project->unlinkStoryTasks = '未關聯需求任務'; -$lang->project->linkedProducts = '已關聯'; -$lang->project->unlinkedProducts = '未關聯'; -$lang->project->view = "{$lang->projectCommon}概況"; -$lang->project->create = "添加{$lang->projectCommon}"; -$lang->project->copy = "複製{$lang->projectCommon}"; -$lang->project->delete = "刪除{$lang->projectCommon}"; -$lang->project->browse = "瀏覽{$lang->projectCommon}"; -$lang->project->edit = "編輯{$lang->projectCommon}"; -$lang->project->batchEdit = "批量編輯"; -$lang->project->manageMembers = '團隊管理'; -$lang->project->unlinkMember = '移除成員'; -$lang->project->unlinkStory = '移除需求'; -$lang->project->batchUnlinkStory = '批量移除需求'; -$lang->project->importTask = '轉入任務'; -$lang->project->importBug = '導入Bug'; -$lang->project->updateOrder = '排序'; -$lang->project->tree = '樹狀圖'; -$lang->project->storyKanban = '需求看板'; -$lang->project->storySort = '需求排序'; +$lang->project->index = "{$lang->projectCommon}首頁"; +$lang->project->task = '任務列表'; +$lang->project->groupTask = '分組瀏覽任務'; +$lang->project->story = '需求列表'; +$lang->project->bug = 'Bug列表'; +$lang->project->dynamic = '動態'; +$lang->project->build = '版本列表'; +$lang->project->testtask = '測試任務'; +$lang->project->burn = '燃盡圖'; +$lang->project->baseline = '基準綫'; +$lang->project->computeBurn = '更新'; +$lang->project->burnData = '燃盡圖數據'; +$lang->project->fixFirst = '修改首天工時'; +$lang->project->team = '團隊成員'; +$lang->project->doc = '文檔列表'; +$lang->project->manageProducts = '關聯' . $lang->productCommon; +$lang->project->linkStory = '關聯需求'; +$lang->project->linkStoryByPlan = '按照計劃關聯'; +$lang->project->linkPlan = '關聯計劃'; +$lang->project->unlinkStoryTasks = '未關聯需求任務'; +$lang->project->linkedProducts = '已關聯'; +$lang->project->unlinkedProducts = '未關聯'; +$lang->project->view = "{$lang->projectCommon}概況"; +$lang->project->create = "添加{$lang->projectCommon}"; +$lang->project->copy = "複製{$lang->projectCommon}"; +$lang->project->delete = "刪除{$lang->projectCommon}"; +$lang->project->browse = "瀏覽{$lang->projectCommon}"; +$lang->project->edit = "編輯{$lang->projectCommon}"; +$lang->project->batchEdit = "批量編輯"; +$lang->project->manageMembers = '團隊管理'; +$lang->project->unlinkMember = '移除成員'; +$lang->project->unlinkStory = '移除需求'; +$lang->project->batchUnlinkStory = '批量移除需求'; +$lang->project->importTask = '轉入任務'; +$lang->project->importPlanStories = '按計劃關聯需求'; +$lang->project->importBug = '導入Bug'; +$lang->project->updateOrder = '排序'; +$lang->project->tree = '樹狀圖'; +$lang->project->storyKanban = '需求看板'; +$lang->project->storySort = '需求排序'; +$lang->project->importPlanStory = '是否導入計劃關聯的相關需求?'; /* 分組瀏覽。*/ $lang->project->allTasks = '所有'; @@ -283,10 +287,10 @@ $lang->project->featureBar['task']['needconfirm'] = '需求變動'; $lang->project->featureBar['task']['status'] = $lang->project->statusSelects['']; $lang->project->treeLevel = array(); -$lang->project->treeLevel['root'] = '全部摺疊'; -$lang->project->treeLevel['story'] = '顯示需求'; -$lang->project->treeLevel['task'] = '顯示任務'; -$lang->project->treeLevel['all'] = '全部展開'; +$lang->project->treeLevel['root'] = '全部摺疊'; +$lang->project->treeLevel['story'] = '顯示需求'; +$lang->project->treeLevel['task'] = '顯示任務'; +$lang->project->treeLevel['all'] = '全部展開'; global $config; if($config->global->flow == 'onlyTask') diff --git a/module/project/view/story.html.php b/module/project/view/story.html.php index 87e47d2962..7b775d56c6 100644 --- a/module/project/view/story.html.php +++ b/module/project/view/story.html.php @@ -54,12 +54,15 @@ { echo "
    "; common::printIcon('project', 'linkStory', "project=$project->id", '', 'button', 'link', '', 'link-story-btn'); - echo "'; - echo "'; + if(common::hasPriv('project', 'importPlanStories')) + { + echo "'; + echo "'; + } echo '
    '; } ?> diff --git a/module/report/lang/zh-tw.php b/module/report/lang/zh-tw.php index 051651dfd8..fa45a85bed 100644 --- a/module/report/lang/zh-tw.php +++ b/module/report/lang/zh-tw.php @@ -31,6 +31,9 @@ $lang->report->colors[] = '008ED6'; $lang->report->colors[] = '9D080D'; $lang->report->colors[] = 'A186BE'; +$lang->report->isAssign[0] = '未指派'; +$lang->report->isAssign[1] = '已指派'; + $lang->report->singleColor[] = 'F6BD0F'; $lang->report->projectDeviation = $lang->projectCommon . '偏差報表'; @@ -72,6 +75,11 @@ $lang->report->unplanned = '未計劃'; $lang->report->workday = '每天工時'; $lang->report->diffDays = '工作日天數'; +$lang->report->typeList[''] = '預設'; +$lang->report->typeList['pie'] = '餅圖'; +$lang->report->typeList['bar'] = '柱狀圖'; +$lang->report->typeList['line'] = '折線圖'; + $lang->report->conditions = '篩選條件:'; $lang->report->closedProduct = '關閉' . $lang->productCommon; $lang->report->overduePlan = '過期計劃'; diff --git a/module/story/lang/zh-tw.php b/module/story/lang/zh-tw.php index a9a957de78..f42730ab48 100644 --- a/module/story/lang/zh-tw.php +++ b/module/story/lang/zh-tw.php @@ -114,6 +114,7 @@ $lang->story->stageList['testing'] = '測試中'; $lang->story->stageList['tested'] = '測試完畢'; $lang->story->stageList['verified'] = '已驗收'; $lang->story->stageList['released'] = '已發佈'; +$lang->story->stageList['closed'] = '已關閉'; $lang->story->reasonList[''] = ''; $lang->story->reasonList['done'] = '已完成'; diff --git a/module/testcase/lang/zh-tw.php b/module/testcase/lang/zh-tw.php index 229b8828a1..21fc21325f 100644 --- a/module/testcase/lang/zh-tw.php +++ b/module/testcase/lang/zh-tw.php @@ -36,8 +36,8 @@ $lang->testcase->stage = '適用階段'; $lang->testcase->reviewedBy = '由誰評審'; $lang->testcase->reviewedDate = '評審時間'; $lang->testcase->reviewResult = '評審結果'; -$lang->testcase->reviewedByAB = '評審者'; -$lang->testcase->reviewedDateAB = '時間'; +$lang->testcase->reviewedByAB = '評審人'; +$lang->testcase->reviewedDateAB = '日期'; $lang->testcase->reviewResultAB = '結果'; $lang->testcase->forceNotReview = '不需要評審'; $lang->testcase->lastEditedByAB = '修改者'; @@ -111,23 +111,23 @@ $lang->testcase->deleteStep = '刪除'; $lang->testcase->insertBefore = '之前添加'; $lang->testcase->insertAfter = '之後添加'; -$lang->testcase->assignToMe = '給我的用例'; -$lang->testcase->openedByMe = '我建的用例'; -$lang->testcase->allCases = '所有'; -$lang->testcase->needConfirm = '需求變動'; -$lang->testcase->bySearch = '搜索'; +$lang->testcase->assignToMe = '給我的用例'; +$lang->testcase->openedByMe = '我建的用例'; +$lang->testcase->allCases = '所有'; +$lang->testcase->needConfirm = '需求變動'; +$lang->testcase->bySearch = '搜索'; -$lang->testcase->lblStory = '相關需求'; -$lang->testcase->lblLastEdited = '最後編輯'; -$lang->testcase->lblTypeValue = '類型可選值列表'; -$lang->testcase->lblStageValue = '階段可選值列表'; -$lang->testcase->lblStatusValue = '狀態可選值列表'; +$lang->testcase->lblStory = '相關需求'; +$lang->testcase->lblLastEdited = '最後編輯'; +$lang->testcase->lblTypeValue = '類型可選值列表'; +$lang->testcase->lblStageValue = '階段可選值列表'; +$lang->testcase->lblStatusValue = '狀態可選值列表'; -$lang->testcase->legendBasicInfo = '基本信息'; -$lang->testcase->legendAttatch = '附件'; -$lang->testcase->legendLinkBugs = '相關Bug'; -$lang->testcase->legendOpenAndEdit = '創建編輯'; -$lang->testcase->legendComment = '備註'; +$lang->testcase->legendBasicInfo = '基本信息'; +$lang->testcase->legendAttatch = '附件'; +$lang->testcase->legendLinkBugs = '相關Bug'; +$lang->testcase->legendOpenAndEdit = '創建編輯'; +$lang->testcase->legendComment = '備註'; $lang->testcase->confirmDelete = '您確認要刪除該測試用例嗎?'; $lang->testcase->confirmBatchDelete = '您確認要批量刪除這些測試用例嗎?'; diff --git a/module/testreport/lang/zh-tw.php b/module/testreport/lang/zh-tw.php index c37410ff14..87c54d9493 100644 --- a/module/testreport/lang/zh-tw.php +++ b/module/testreport/lang/zh-tw.php @@ -64,6 +64,7 @@ $lang->testreport->foundBugTip = "影響版本在測試輪次內,並且創 $lang->testreport->legacyBugTip = "Bug狀態是激活,或Bug的解決時間在測試結束時間之後。"; $lang->testreport->fromCaseBugTip = "測試時間範圍內,用例執行失敗後創建的Bug"; $lang->testreport->errorTrunk = "主幹版本不能創建測試報告,請修改關聯版本!"; +$lang->testreport->moreProduct = "只能對同一個產品生成測試報告。"; $lang->testreport->bugSummary = <<%s個Bug , diff --git a/module/todo/lang/en.php b/module/todo/lang/en.php index 99bd2884a4..08001d4a0b 100644 --- a/module/todo/lang/en.php +++ b/module/todo/lang/en.php @@ -12,6 +12,7 @@ $lang->todo->common = 'Todo'; $lang->todo->index = "Home"; $lang->todo->create = "Create Todo"; +$lang->todo->createCycle = "Create Cycle Todo"; $lang->todo->assignTo = "Assign"; $lang->todo->activate = "Activate"; $lang->todo->batchCreate = "Batch Create"; diff --git a/module/todo/lang/zh-cn.php b/module/todo/lang/zh-cn.php index 0fbda0b2a2..57ba214bed 100644 --- a/module/todo/lang/zh-cn.php +++ b/module/todo/lang/zh-cn.php @@ -12,6 +12,7 @@ $lang->todo->common = '待办'; $lang->todo->index = "待办一览"; $lang->todo->create = "新增"; +$lang->todo->createCycle = "创建周期待办"; $lang->todo->assignTo = "指派"; $lang->todo->activate = "激活"; $lang->todo->batchCreate = "批量添加"; diff --git a/module/todo/lang/zh-tw.php b/module/todo/lang/zh-tw.php index 870ce07b48..ef24037cc2 100644 --- a/module/todo/lang/zh-tw.php +++ b/module/todo/lang/zh-tw.php @@ -12,17 +12,28 @@ $lang->todo->common = '待辦'; $lang->todo->index = "待辦一覽"; $lang->todo->create = "新增"; +$lang->todo->createCycle = "創建周期待辦"; +$lang->todo->assignTo = "指派"; +$lang->todo->activate = "激活"; $lang->todo->batchCreate = "批量添加"; -$lang->todo->edit = "更新待辦"; +$lang->todo->edit = "編輯"; +$lang->todo->close = "關閉"; $lang->todo->batchEdit = "批量編輯"; $lang->todo->view = "待辦詳情"; $lang->todo->finish = "完成"; $lang->todo->batchFinish = "批量完成"; $lang->todo->export = "導出"; -$lang->todo->delete = "刪除待辦"; +$lang->todo->delete = "刪除"; $lang->todo->import2Today = "導入到今天"; $lang->todo->import = "導入"; $lang->todo->legendBasic = "基本信息"; +$lang->todo->cycle = "周期"; +$lang->todo->cycleConfig = "周期設置"; + +$lang->todo->reasonList['story'] = "轉需求"; +$lang->todo->reasonList['task'] = "轉任務"; +$lang->todo->reasonList['bug'] = "轉Bug"; +$lang->todo->reasonList['done'] = "完成"; $lang->todo->id = '編號'; $lang->todo->account = '所有者'; @@ -39,14 +50,23 @@ $lang->todo->name = '名稱'; $lang->todo->status = '狀態'; $lang->todo->desc = '描述'; $lang->todo->private = '私人事務'; +$lang->todo->cycleDay = '天'; +$lang->todo->cycleWeek = '周'; +$lang->todo->cycleMonth = '月'; +$lang->todo->deadline = '過期時間'; + +$lang->todo->every = '間隔'; +$lang->todo->beforeDays = "提前%s天生成待辦"; +$lang->todo->dayNames = array(1 => '星期一', 2 => '星期二', 3 => '星期三', 4 => '星期四', 5 => '星期五', 6 => '星期六', 0 => '星期日'); $lang->todo->confirmBug = '該Todo關聯的是Bug #%s,需要修改它嗎?'; $lang->todo->confirmTask = '該Todo關聯的是Task #%s,需要修改它嗎?'; $lang->todo->confirmStory = '該Todo關聯的是Story #%s,需要修改它嗎?'; -$lang->todo->statusList['wait'] = '未開始'; -$lang->todo->statusList['doing'] = '進行中'; -$lang->todo->statusList['done'] = '已完成'; +$lang->todo->statusList['wait'] = '未開始'; +$lang->todo->statusList['doing'] = '進行中'; +$lang->todo->statusList['done'] = '已完成'; +$lang->todo->statusList['closed'] = '已關閉'; //$lang->todo->statusList['cancel'] = '已取消'; //$lang->todo->statusList['postpone'] = '已延期'; @@ -57,6 +77,7 @@ $lang->todo->priList[4] = '最低'; $lang->todo->priList[0] = ''; $lang->todo->typeList['custom'] = '自定義'; +$lang->todo->typeList['cycle'] = '周期'; $lang->todo->typeList['bug'] = 'Bug'; $lang->todo->typeList['task'] = $lang->projectCommon . '任務'; $lang->todo->typeList['story'] = $lang->projectCommon . '需求'; @@ -68,7 +89,9 @@ if($config->global->flow == 'onlyTask' or $config->global->flow == 'onlyStory') $lang->todo->confirmDelete = "您確定要刪除這條待辦嗎?"; $lang->todo->thisIsPrivate = '這是一條私人事務。:)'; $lang->todo->lblDisableDate = '暫時不設定時間'; +$lang->todo->lblBeforeDays = "提前%s天生成待辦"; $lang->todo->noTodo = '該類型沒有待辦事務'; +$lang->todo->noAssignedTo = '被指派人不能為空'; $lang->todo->periods['today'] = '今日'; $lang->todo->periods['yesterday'] = '昨日'; @@ -81,7 +104,8 @@ $lang->todo->periods['thisYear'] = '本年'; $lang->todo->periods['future'] = '待定'; $lang->todo->periods['before'] = '未完'; $lang->todo->periods['all'] = '所有'; +$lang->todo->periods['cycle'] = '周期'; $lang->todo->action = new stdclass(); -$lang->todo->action->finished = array('main' => '$date, 由 $actor完成'); +$lang->todo->action->finished = array('main' => '$date, 由 $actor $extra。$appendLink', 'extra' => 'reasonList'); $lang->todo->action->marked = array('main' => '$date, 由 $actor 標記為$extra。', 'extra' => 'statusList'); diff --git a/module/upgrade/lang/en.php b/module/upgrade/lang/en.php index e135153752..6c4773c866 100644 --- a/module/upgrade/lang/en.php +++ b/module/upgrade/lang/en.php @@ -130,3 +130,4 @@ $lang->upgrade->fromVersions['9_6'] = '9.6'; $lang->upgrade->fromVersions['9_6_1'] = '9.6.1'; $lang->upgrade->fromVersions['9_6_2'] = '9.6.2'; $lang->upgrade->fromVersions['9_6_3'] = '9.6.3'; +$lang->upgrade->fromVersions['9_7'] = '9.7'; diff --git a/module/upgrade/lang/zh-cn.php b/module/upgrade/lang/zh-cn.php index 871050c61a..4a68a78112 100644 --- a/module/upgrade/lang/zh-cn.php +++ b/module/upgrade/lang/zh-cn.php @@ -130,3 +130,4 @@ $lang->upgrade->fromVersions['9_6'] = '9.6'; $lang->upgrade->fromVersions['9_6_1'] = '9.6.1'; $lang->upgrade->fromVersions['9_6_2'] = '9.6.2'; $lang->upgrade->fromVersions['9_6_3'] = '9.6.3'; +$lang->upgrade->fromVersions['9_7'] = '9.7'; diff --git a/module/upgrade/lang/zh-tw.php b/module/upgrade/lang/zh-tw.php index 3bac753691..15e4aaaee4 100644 --- a/module/upgrade/lang/zh-tw.php +++ b/module/upgrade/lang/zh-tw.php @@ -130,3 +130,4 @@ $lang->upgrade->fromVersions['9_6'] = '9.6'; $lang->upgrade->fromVersions['9_6_1'] = '9.6.1'; $lang->upgrade->fromVersions['9_6_2'] = '9.6.2'; $lang->upgrade->fromVersions['9_6_3'] = '9.6.3'; +$lang->upgrade->fromVersions['9_7'] = '9.7'; diff --git a/module/upgrade/model.php b/module/upgrade/model.php index b2e8434ff3..f7e49a8394 100644 --- a/module/upgrade/model.php +++ b/module/upgrade/model.php @@ -202,7 +202,9 @@ class upgradeModel extends model $this->adjustPriv9_7(); $this->changeStoryWidth(); case '9_7': + $this->execSQL($this->getUpgradeFile('9.7')); $this->changeTeamFields(); + $this->moveData2Notify(); } $this->deletePatch(); @@ -305,6 +307,7 @@ class upgradeModel extends model case '9_6_1': case '9_6_2': case '9_6_3': $confirmContent .= file_get_contents($this->getUpgradeFile('9.6.3')); + case '9_7': $confirmContent .= file_get_contents($this->getUpgradeFile('9.7')); } return str_replace('zt_', $this->config->db->prefix, $confirmContent); } @@ -1741,6 +1744,7 @@ class upgradeModel extends model $data->group = $groupID; $data->module = 'bug'; $data->method = 'batchActivate'; + $this->dao->replace(TABLE_GROUPPRIV)->data($data)->exec(); } return true; } @@ -1979,11 +1983,20 @@ class upgradeModel extends model */ public function changeTeamFields() { - $this->dao->exec("ALTER TABLE `" . TABLE_TEAM . "` DROP PRIMARY KEY"); - $this->dao->exec("ALTER TABLE `" . TABLE_TEAM . "` CHANGE `project` `root` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0'"); - $this->dao->exec("ALTER TABLE `" . TABLE_TEAM . "` ADD `type` ENUM('project', 'task') NOT NULL DEFAULT 'project' AFTER `root`"); - $this->dao->exec("UPDATE `" . TABLE_TEAM . "` SET `root` = `task`, `type` = 'task' WHERE `task` > '0'"); - $this->dao->exec("ALTER TABLE `" . TABLE_TEAM . "` DROP `task`"); + $desc = $this->dao->query('DESC ' . TABLE_TEAM)->fetchAll(); + $fields = array(); + foreach($desc as $field) + { + $fieldName = $field->Field; + $fields[$fieldName] = $fieldName; + } + if(isset($fields['root'])) return true; + + $this->dao->exec("ALTER TABLE " . TABLE_TEAM . " CHANGE `project` `root` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0'"); + $this->dao->exec("ALTER TABLE " . TABLE_TEAM . " ADD `type` ENUM('project', 'task') NOT NULL DEFAULT 'project' AFTER `root`"); + $this->dao->exec("UPDATE " . TABLE_TEAM . " SET `root` = `task`, `type` = 'task' WHERE `task` > '0'"); + $this->dao->exec("ALTER TABLE " . TABLE_TEAM . " DROP PRIMARY KEY"); + $this->dao->exec("ALTER TABLE " . TABLE_TEAM . " DROP `task`"); return true; } @@ -2030,4 +2043,44 @@ class upgradeModel extends model } return true; } + + /** + * Adjust priv 9.8. + * + * @access public + * @return bool + */ + public function adjustPriv9_8() + { + $groups = $this->dao->select('id')->from(TABLE_GROUP)->fetchPairs('id', 'id'); + foreach($groups as $group) + { + $groupPriv = new stdclass(); + $groupPriv->group = $groupID; + $groupPriv->module = 'todo'; + $groupPriv->method = 'createcycle'; + $this->dao->replace(TABLE_GROUPPRIV)->data($data)->exec(); + } + + $groups = $this->dao->select('*')->from(TABLE_GROUPPRIV)->where('module')->eq('mail')->orWhere('module')->eq('webhook')->fetchPairs('group', 'group'); + foreach($groups as $group) + { + $groupPriv = new stdclass(); + $groupPriv->group = $groupID; + $groupPriv->module = 'message'; + $groupPriv->method = 'index'; + $this->dao->replace(TABLE_GROUPPRIV)->data($data)->exec(); + } + + $groups = $this->dao->select('*')->from(TABLE_GROUPPRIV)->where('module')->eq('project')->andWhere('method')->eq('linkStory')->fetchPairs('group', 'group'); + foreach($groups as $group) + { + $groupPriv = new stdclass(); + $groupPriv->group = $groupID; + $groupPriv->module = 'project'; + $groupPriv->method = 'importPlanStories'; + $this->dao->replace(TABLE_GROUPPRIV)->data($data)->exec(); + } + return true; + } }