diff --git a/db/update15.0.sql b/db/update15.0.sql index 2f16a7708b..6bdefddd2b 100644 --- a/db/update15.0.sql +++ b/db/update15.0.sql @@ -339,7 +339,9 @@ REPLACE INTO `zt_lang` (`lang`, `module`, `section`, `key`, `value`, `system`) V ('zh-cn', 'custom', 'URSRList', '2', '{\"SRName\":\"\\u7814\\u53d1\\u9700\\u6c42\",\"URName\":\"\\u7528\\u6237\\u9700\\u6c42\"}', '1'), ('zh-cn', 'custom', 'URSRList', '3', '{\"SRName\":\"\\u8f6f\\u9700\",\"URName\":\"\\u7528\\u9700\"}', '1'), ('zh-cn', 'custom', 'URSRList', '4', '{\"SRName\":\"\\u6545\\u4e8b\",\"URName\":\"\\u53f2\\u8bd7\"}', '1'), -('zh-cn', 'custom', 'URSRList', '5', '{\"SRName\":\"\\u9700\\u6c42\",\"URName\":\"\\u7528\\u6237\\u9700\\u6c42\"}', '1'); +('zh-cn', 'custom', 'URSRList', '5', '{\"SRName\":\"\\u9700\\u6c42\",\"URName\":\"\\u7528\\u6237\\u9700\\u6c42\"}', '1'), +('en', 'custom', 'URSRList', '1', '{\"SRName\":\"Story\",\"URName\":\"Epic\"}', '0'), +('en', 'custom', 'URSRList', '2', '{\"SRName\":\"Story\",\"URName\":\"Requirement\"}', '0'); REPLACE INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'common', '', 'CRProduct', '1'); REPLACE INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'common', '', 'CRExecution', '1'); diff --git a/db/zentao.sql b/db/zentao.sql index 8c642ac25c..ef21a26c0f 100644 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -4134,13 +4134,13 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (11,'user','view'), (12,'my','limited'); -INSERT INTO `zt_lang` (`lang`, `module`, `section`, `key`, `value`, `system`) VALUES +REPLACE INTO `zt_lang` (`lang`, `module`, `section`, `key`, `value`, `system`) VALUES ('zh-cn', 'custom', 'URSRList', '1', '{\"SRName\":\"\\u8f6f\\u4ef6\\u9700\\u6c42\",\"URName\":\"\\u7528\\u6237\\u9700\\u6c42\"}', '1'), ('zh-cn', 'custom', 'URSRList', '2', '{\"SRName\":\"\\u7814\\u53d1\\u9700\\u6c42\",\"URName\":\"\\u7528\\u6237\\u9700\\u6c42\"}', '1'), ('zh-cn', 'custom', 'URSRList', '3', '{\"SRName\":\"\\u8f6f\\u9700\",\"URName\":\"\\u7528\\u9700\"}', '1'), ('zh-cn', 'custom', 'URSRList', '4', '{\"SRName\":\"\\u6545\\u4e8b\",\"URName\":\"\\u53f2\\u8bd7\"}', '1'), ('zh-cn', 'custom', 'URSRList', '5', '{\"SRName\":\"\\u9700\\u6c42\",\"URName\":\"\\u7528\\u6237\\u9700\\u6c42\"}', '1'), -('en', 'custom', 'URSRList', '3', '{\"SRName\":\"Story\",\"URName\":\"Epic\"}', '0'), +('en', 'custom', 'URSRList', '1', '{\"SRName\":\"Story\",\"URName\":\"Epic\"}', '0'), ('en', 'custom', 'URSRList', '2', '{\"SRName\":\"Story\",\"URName\":\"Requirement\"}', '0'); INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'custom', '', 'hourPoint', '1'); diff --git a/framework/router.class.php b/framework/router.class.php index d04fb6d4a3..36d4fce41e 100755 --- a/framework/router.class.php +++ b/framework/router.class.php @@ -244,7 +244,8 @@ class router extends baseRouter if($this->dbh and !empty($this->config->db->name) and !defined('IN_UPGRADE')) { /* Get story concept in project and product. */ - $URSRList = $this->dbh->query('SELECT `key`, `value` FROM' . TABLE_LANG . "WHERE module = 'custom' and section = 'URSRList' and `key` = \"{$config->URSR}\"")->fetchAll(); + $URSRList = $this->dbh->query('SELECT `key`, `value` FROM' . TABLE_LANG . "WHERE module = 'custom' and section = 'URSRList' and `key` = \"{$this->clientLang}\"")->fetchAll(); + if(empty($URSRList)) $URSRList = $this->dbh->query('SELECT `key`, `value` FROM' . TABLE_LANG . "WHERE module = 'custom' and section = 'URSRList' and `key` = \"{$config->URSR}\"")->fetchAll(); /* Get UR pairs and SR pairs. */ $URPairs = array(); @@ -257,8 +258,8 @@ class router extends baseRouter } /* Set default story concept and init UR and SR concept. */ - $lang->URCommon = zget($URPairs, $config->URSR); - $lang->SRCommon = zget($SRPairs, $config->URSR); + $lang->URCommon = isset($URPairs[$config->URSR]) ? $URPairs[$config->URSR] : reset($URPairs); + $lang->SRCommon = isset($SRPairs[$config->URSR]) ? $URPairs[$config->URSR] : reset($SRPairs); } } diff --git a/module/block/control.php b/module/block/control.php index 613c73e323..4d2261daef 100644 --- a/module/block/control.php +++ b/module/block/control.php @@ -261,6 +261,10 @@ class block extends control { $block->moreLink = $this->createLink('project', 'dynamic', "projectID=$projectID&type=all"); } + elseif($moduleName == 'project' and $method == 'testtask') + { + $block->moreLink = $this->createLink('project', 'testtask', "projectID=$projectID"); + } } elseif($block->block == 'dynamic') { @@ -595,6 +599,7 @@ class block extends control $account = $this->app->user->account; $type = $this->params->type; + $this->app->loadLang('execution'); $this->view->tasks = $this->loadModel('task')->getUserTasks($account, $type, $this->viewType == 'json' ? 0 : (int)$this->params->count, null, $this->params->orderBy); } diff --git a/module/block/lang/de.php b/module/block/lang/de.php index b8963e12aa..e585018161 100644 --- a/module/block/lang/de.php +++ b/module/block/lang/de.php @@ -47,7 +47,7 @@ $lang->block->myExecution = 'Unclosed ' . $lang->executionCommon . 's'; $lang->block->myProduct = 'Unclosed ' . $lang->productCommon . 's'; $lang->block->delayed = 'Verspätet'; $lang->block->noData = 'Keine Daten für diesen Bericht.'; -$lang->block->emptyTip = 'Keine Information'; +$lang->block->emptyTip = 'No Data.'; $lang->block->createdTodos = 'Todos Created'; $lang->block->createdRequirements = 'UR/Epics Created'; $lang->block->createdStories = 'SR/Stories Created'; diff --git a/module/block/lang/vi.php b/module/block/lang/vi.php index bee6d0a2eb..4090bb741f 100644 --- a/module/block/lang/vi.php +++ b/module/block/lang/vi.php @@ -47,7 +47,7 @@ $lang->block->myExecution = 'Unclosed ' . $lang->executionCommon . 's'; $lang->block->myProduct = 'Unclosed ' . $lang->productCommon . 's'; $lang->block->delayed = 'Tạm ngưng'; $lang->block->noData = 'Không có dữ liệu trên loại báo cáo này.'; -$lang->block->emptyTip = 'Không có dữ liệu.'; +$lang->block->emptyTip = 'No Data.'; $lang->block->createdTodos = 'Todos Created'; $lang->block->createdRequirements = 'UR/Epics Created'; $lang->block->createdStories = 'SR/Stories Created'; diff --git a/module/block/lang/zh-cn.php b/module/block/lang/zh-cn.php index 8af28e57a7..e21a448b05 100644 --- a/module/block/lang/zh-cn.php +++ b/module/block/lang/zh-cn.php @@ -47,7 +47,7 @@ $lang->block->myExecution = '未关闭的' . $lang->executionCommon; $lang->block->myProduct = '未关闭的' . $lang->productCommon; $lang->block->delayed = '已延期'; $lang->block->noData = '当前统计类型下暂无数据'; -$lang->block->emptyTip = '暂无信息'; +$lang->block->emptyTip = '暂无数据'; $lang->block->createdTodos = '创建的待办数'; $lang->block->createdRequirements = '创建的' . $lang->URCommon . '数'; $lang->block->createdStories = '创建的' . $lang->SRCommon . '数'; @@ -527,7 +527,7 @@ $lang->block->modules['project']->moreLinkList->cmmiestimate = 'workestimation $lang->block->modules['project']->moreLinkList->cmmiissue = 'issue|browse|'; $lang->block->modules['project']->moreLinkList->cmmirisk = 'risk|browse|'; $lang->block->modules['project']->moreLinkList->scrumlist = 'project|execution|'; -$lang->block->modules['project']->moreLinkList->scrumtest = 'testtask|browse|'; +$lang->block->modules['project']->moreLinkList->scrumtest = 'project|testtask|'; $lang->block->modules['project']->moreLinkList->scrumproduct = 'product|all|'; $lang->block->modules['project']->moreLinkList->sprint = 'project|execution|'; $lang->block->modules['project']->moreLinkList->projectdynamic = 'project|dynamic|'; diff --git a/module/block/lang/zh-tw.php b/module/block/lang/zh-tw.php index ed65f4cda8..3f23fa21e7 100644 --- a/module/block/lang/zh-tw.php +++ b/module/block/lang/zh-tw.php @@ -46,7 +46,7 @@ $lang->block->myExecution = '未關閉的' . $lang->executionCommon; $lang->block->myProduct = '未關閉的' . $lang->productCommon; $lang->block->delayed = '已延期'; $lang->block->noData = '當前統計類型下暫無數據'; -$lang->block->emptyTip = '暫無信息'; +$lang->block->emptyTip = '暫無數據'; $lang->block->createdTodos = '創建的待辦數'; $lang->block->createdRequirements = '創建的' . $lang->URCommon . '數'; $lang->block->createdStories = '創建的' . $lang->SRCommon . '數'; diff --git a/module/block/view/issueblock.html.php b/module/block/view/issueblock.html.php index 137e131af0..995bcad94c 100644 --- a/module/block/view/issueblock.html.php +++ b/module/block/view/issueblock.html.php @@ -4,7 +4,7 @@
- +
@@ -56,7 +56,7 @@ - + diff --git a/module/product/control.php b/module/product/control.php index 876c58c709..95add14885 100644 --- a/module/product/control.php +++ b/module/product/control.php @@ -619,7 +619,8 @@ class product extends control */ public function view($productID) { - $product = $this->product->getStatByID($productID); + $productID = (int)$productID; + $product = $this->product->getStatByID($productID); if(!$product) die(js::error($this->lang->notFound) . js::locate('back')); $product->desc = $this->loadModel('file')->setImgSize($product->desc); diff --git a/module/productplan/control.php b/module/productplan/control.php index dee0fc47e3..17ad7bdc40 100644 --- a/module/productplan/control.php +++ b/module/productplan/control.php @@ -246,7 +246,8 @@ class productplan extends control */ public function view($planID = 0, $type = 'story', $orderBy = 'id_desc', $link = 'false', $param = '', $recTotal = 0, $recPerPage = 100, $pageID = 1) { - $plan = $this->productplan->getByID($planID, true); + $planID = (int)$planID; + $plan = $this->productplan->getByID($planID, true); if(!$plan) die(js::error($this->lang->notFound) . js::locate('back')); $this->session->set('storyList', $this->app->getURI(true) . '&type=' . 'story', 'product'); diff --git a/module/program/control.php b/module/program/control.php index 68e057b521..1e961137b0 100644 --- a/module/program/control.php +++ b/module/program/control.php @@ -701,7 +701,8 @@ class program extends control */ public function view($programID) { - $program = $this->program->getByID($programID); + $programID = (int)$programID; + $program = $this->program->getByID($programID); if(!$program) die(js::error($this->lang->notFound) . js::locate('back')); echo $this->fetch('program', 'product', "programID=$programID"); diff --git a/module/program/lang/de.php b/module/program/lang/de.php index 9ae9569cb9..3a5bd6ab3d 100644 --- a/module/program/lang/de.php +++ b/module/program/lang/de.php @@ -79,8 +79,8 @@ $lang->program->subAcls['private'] = 'Private'; $lang->program->subAcls['open'] = 'Default'; $lang->program->subAcls['program'] = 'Open within the program'; -$lang->program->authList['extend'] = 'Inherit(program privileges and company privileges)'; -$lang->program->authList['reset'] = 'Reset(program privileges only)'; +$lang->program->authList['extend'] = 'Inherit (program privileges and company privileges)'; +$lang->program->authList['reset'] = 'Reset (program privileges only)'; $lang->program->statusList['wait'] = 'Waiting'; $lang->program->statusList['doing'] = 'Doing'; diff --git a/module/program/lang/en.php b/module/program/lang/en.php index f4518aeb0d..9352ed6a5f 100644 --- a/module/program/lang/en.php +++ b/module/program/lang/en.php @@ -79,8 +79,8 @@ $lang->program->subAcls['private'] = 'Private'; $lang->program->subAcls['open'] = 'Default'; $lang->program->subAcls['program'] = 'Open within the program'; -$lang->program->authList['extend'] = 'Inherit(program privileges and company privileges)'; -$lang->program->authList['reset'] = 'Reset(program privileges only)'; +$lang->program->authList['extend'] = 'Inherit (program privileges and company privileges)'; +$lang->program->authList['reset'] = 'Reset (program privileges only)'; $lang->program->statusList['wait'] = 'Waiting'; $lang->program->statusList['doing'] = 'Doing'; diff --git a/module/program/lang/fr.php b/module/program/lang/fr.php index 9ae9569cb9..3a5bd6ab3d 100644 --- a/module/program/lang/fr.php +++ b/module/program/lang/fr.php @@ -79,8 +79,8 @@ $lang->program->subAcls['private'] = 'Private'; $lang->program->subAcls['open'] = 'Default'; $lang->program->subAcls['program'] = 'Open within the program'; -$lang->program->authList['extend'] = 'Inherit(program privileges and company privileges)'; -$lang->program->authList['reset'] = 'Reset(program privileges only)'; +$lang->program->authList['extend'] = 'Inherit (program privileges and company privileges)'; +$lang->program->authList['reset'] = 'Reset (program privileges only)'; $lang->program->statusList['wait'] = 'Waiting'; $lang->program->statusList['doing'] = 'Doing'; diff --git a/module/program/lang/vi.php b/module/program/lang/vi.php index f4518aeb0d..9352ed6a5f 100644 --- a/module/program/lang/vi.php +++ b/module/program/lang/vi.php @@ -79,8 +79,8 @@ $lang->program->subAcls['private'] = 'Private'; $lang->program->subAcls['open'] = 'Default'; $lang->program->subAcls['program'] = 'Open within the program'; -$lang->program->authList['extend'] = 'Inherit(program privileges and company privileges)'; -$lang->program->authList['reset'] = 'Reset(program privileges only)'; +$lang->program->authList['extend'] = 'Inherit (program privileges and company privileges)'; +$lang->program->authList['reset'] = 'Reset (program privileges only)'; $lang->program->statusList['wait'] = 'Waiting'; $lang->program->statusList['doing'] = 'Doing'; diff --git a/module/program/lang/zh-cn.php b/module/program/lang/zh-cn.php index 977de2db2b..ada4d56b10 100644 --- a/module/program/lang/zh-cn.php +++ b/module/program/lang/zh-cn.php @@ -81,8 +81,8 @@ $lang->program->subAcls['private'] = '私有'; $lang->program->subAcls['open'] = '全部公开'; $lang->program->subAcls['program'] = '项目集内公开'; -$lang->program->authList['extend'] = '继承(取项目权限与组织权限的并集)'; -$lang->program->authList['reset'] = '重新定义(只取项目权限)'; +$lang->program->authList['extend'] = '继承 (取项目权限与组织权限的并集)'; +$lang->program->authList['reset'] = '重新定义 (只取项目权限)'; $lang->program->statusList['wait'] = '未开始'; $lang->program->statusList['doing'] = '进行中'; diff --git a/module/project/control.php b/module/project/control.php index 485862fd2f..020bfed445 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -110,6 +110,7 @@ class project extends control $programs = $this->dao->select('id, name')->from(TABLE_PROGRAM)->where('type')->eq('program')->andWhere('deleted')->eq(0)->orderBy('order_asc')->fetchPairs(); $projects = $this->dao->select('*')->from(TABLE_PROJECT) ->where('deleted')->eq(0) + ->andWhere('type')->eq('project') ->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->projects)->fi() ->orderBy('order_asc') ->fetchAll('id'); @@ -489,7 +490,8 @@ class project extends control */ public function view($projectID = 0) { - $project = $this->project->getById($projectID); + $projectID = (int)$projectID; + $project = $this->project->getById($projectID); if(empty($project) || strpos('scrum,waterfall', $project->model) === false) die(js::error($this->lang->notFound) . js::locate('back')); $this->project->setMenu($projectID); diff --git a/module/project/js/create.js b/module/project/js/create.js index d85cf06508..4f83bff8b5 100644 --- a/module/project/js/create.js +++ b/module/project/js/create.js @@ -82,9 +82,9 @@ function addNewProduct(obj) * @access public * @return void */ -function setAclList(projectID) +function setAclList(programID) { - if(projectID != 0) + if(programID != 0) { $('.aclBox').html($('#programAcl').html()); } diff --git a/module/project/js/edit.js b/module/project/js/edit.js index 115059a858..f9d3c0e2bf 100644 --- a/module/project/js/edit.js +++ b/module/project/js/edit.js @@ -3,6 +3,7 @@ $(function() $('#parent').change(function() { var programID = $(this).val(); + setAclList(programID); /* Determine whether the project can change the project set. */ link = createLink('project', 'ajaxCheckProduct', 'programID=' + programID + '&projectID=' + projectID); diff --git a/module/project/lang/zh-cn.php b/module/project/lang/zh-cn.php index a6d1f4efa1..6284cfdd30 100644 --- a/module/project/lang/zh-cn.php +++ b/module/project/lang/zh-cn.php @@ -170,8 +170,8 @@ $lang->project->aclList['open'] = "公开 (有项目视图权限即可访问) $lang->project->acls['private'] = '私有'; $lang->project->acls['open'] = '公开'; -$lang->project->authList['extend'] = '继承(取系统权限与项目权限的合集)'; -$lang->project->authList['reset'] = '重新定义(只取项目权限)'; +$lang->project->authList['extend'] = '继承 (取系统权限与项目权限的合集)'; +$lang->project->authList['reset'] = '重新定义 (只取项目权限)'; $lang->project->statusList['wait'] = '未开始'; $lang->project->statusList['doing'] = '进行中'; diff --git a/module/project/view/create.html.php b/module/project/view/create.html.php index 8916e61159..9ae8e18e97 100644 --- a/module/project/view/create.html.php +++ b/module/project/view/create.html.php @@ -200,6 +200,6 @@ project->aclList, $acl, "onclick='setWhite(this.value);'", 'block'));?> diff --git a/module/project/view/edit.html.php b/module/project/view/edit.html.php index 04bf2191c7..905b5b77f1 100644 --- a/module/project/view/edit.html.php +++ b/module/project/view/edit.html.php @@ -173,7 +173,7 @@ project->aclList, $project->acl == 'project' ? 'private' : 'open', "onclick='setWhite(this.value);'", 'block'));?> $sprint):?> - + diff --git a/module/user/control.php b/module/user/control.php index 6ecd7783db..9c7094011b 100644 --- a/module/user/control.php +++ b/module/user/control.php @@ -39,6 +39,7 @@ class user extends control */ public function view($userID) { + $userID = (int)$userID; $this->locate($this->createLink('user', 'todo', "userID=$userID&type=all")); } @@ -57,7 +58,8 @@ class user extends control */ public function todo($userID, $type = 'today', $status = 'all', $orderBy = 'date,status,begin', $recTotal = 0, $recPerPage = 20, $pageID = 1) { - $user = $this->user->getById($userID, 'id'); + $userID = (int)$userID; + $user = $this->user->getById($userID, 'id'); if(empty($user)) die(js::error($this->lang->notFound) . js::locate('back')); /* Set thie url to session. */ @@ -78,6 +80,7 @@ class user extends control $todos = $this->todo->getList($type, $account, $status, 0, $pager, $sort); $date = (int)$type == 0 ? helper::today() : $type; $users = $this->loadModel('dept')->getDeptUserPairs($this->app->user->dept, 'useid'); + if(!isset($users[$userID])) die(js::error($this->lang->notFound) . js::locate('back')); /* set menus. */ $this->view->userList = $this->user->setUserList($users, $userID); diff --git a/module/user/view/featurebar.html.php b/module/user/view/featurebar.html.php index 8a22b15661..a96838e466 100755 --- a/module/user/view/featurebar.html.php +++ b/module/user/view/featurebar.html.php @@ -10,7 +10,7 @@ $label = "{$lang->user->schedule}"; $active = $methodName == 'todo' ? ' btn-active-text' : ''; - common::printLink('user', 'todo', "userID={$user->id}", $label, '', "class='btn btn-link $active'"); + common::printLink('user', 'todo', "userID={$user->id}&type=all", $label, '', "class='btn btn-link $active'"); $label = "{$lang->user->task}"; $active = $methodName == 'task' ? ' btn-active-text' : '';
'> '>
upgrade->project} #{$sprint->id} {$sprint->name}" . html::hidden("sprints[]", $sprint->id);?>name}" . html::hidden("sprints[]", $sprint->id);?> projects, '', "class='form-control chosen'");?>