+ holiday->emptyTip;?> +
+diff --git a/extension/lite/custom/ext/lang/de/lite.php b/extension/lite/custom/ext/lang/de/lite.php index f3ee432ea4..a11fc0cd5f 100644 --- a/extension/lite/custom/ext/lang/de/lite.php +++ b/extension/lite/custom/ext/lang/de/lite.php @@ -12,6 +12,7 @@ $lang->custom->object['task'] = 'Task'; $lang->custom->object['todo'] = 'Todo'; $lang->custom->object['user'] = 'User'; $lang->custom->object['block'] = 'Block'; +$lang->custom->object['project'] = $lang->projectCommon; $lang->custom->menuOrder = array(); $lang->custom->menuOrder[10] = 'execution'; @@ -22,11 +23,12 @@ $lang->custom->menuOrder[30] = 'user'; $lang->custom->menuOrder[35] = 'block'; $lang->custom->task = new stdClass(); -$lang->custom->task->fields['required'] = 'Required Field'; +$lang->custom->task->fields['required'] = $lang->custom->required; $lang->custom->task->fields['priList'] = 'Priority'; $lang->custom->task->fields['typeList'] = 'Type'; $lang->custom->story = new stdClass(); +$lang->custom->story->fields['required'] = $lang->custom->required; $lang->custom->story->fields['priList'] = 'Priority'; $lang->custom->story->fields['reasonList'] = 'Close Reason'; $lang->custom->story->fields['statusList'] = 'Status'; diff --git a/extension/lite/custom/ext/lang/en/lite.php b/extension/lite/custom/ext/lang/en/lite.php index f3ee432ea4..a11fc0cd5f 100644 --- a/extension/lite/custom/ext/lang/en/lite.php +++ b/extension/lite/custom/ext/lang/en/lite.php @@ -12,6 +12,7 @@ $lang->custom->object['task'] = 'Task'; $lang->custom->object['todo'] = 'Todo'; $lang->custom->object['user'] = 'User'; $lang->custom->object['block'] = 'Block'; +$lang->custom->object['project'] = $lang->projectCommon; $lang->custom->menuOrder = array(); $lang->custom->menuOrder[10] = 'execution'; @@ -22,11 +23,12 @@ $lang->custom->menuOrder[30] = 'user'; $lang->custom->menuOrder[35] = 'block'; $lang->custom->task = new stdClass(); -$lang->custom->task->fields['required'] = 'Required Field'; +$lang->custom->task->fields['required'] = $lang->custom->required; $lang->custom->task->fields['priList'] = 'Priority'; $lang->custom->task->fields['typeList'] = 'Type'; $lang->custom->story = new stdClass(); +$lang->custom->story->fields['required'] = $lang->custom->required; $lang->custom->story->fields['priList'] = 'Priority'; $lang->custom->story->fields['reasonList'] = 'Close Reason'; $lang->custom->story->fields['statusList'] = 'Status'; diff --git a/extension/lite/custom/ext/lang/fr/lite.php b/extension/lite/custom/ext/lang/fr/lite.php index f3ee432ea4..a11fc0cd5f 100644 --- a/extension/lite/custom/ext/lang/fr/lite.php +++ b/extension/lite/custom/ext/lang/fr/lite.php @@ -12,6 +12,7 @@ $lang->custom->object['task'] = 'Task'; $lang->custom->object['todo'] = 'Todo'; $lang->custom->object['user'] = 'User'; $lang->custom->object['block'] = 'Block'; +$lang->custom->object['project'] = $lang->projectCommon; $lang->custom->menuOrder = array(); $lang->custom->menuOrder[10] = 'execution'; @@ -22,11 +23,12 @@ $lang->custom->menuOrder[30] = 'user'; $lang->custom->menuOrder[35] = 'block'; $lang->custom->task = new stdClass(); -$lang->custom->task->fields['required'] = 'Required Field'; +$lang->custom->task->fields['required'] = $lang->custom->required; $lang->custom->task->fields['priList'] = 'Priority'; $lang->custom->task->fields['typeList'] = 'Type'; $lang->custom->story = new stdClass(); +$lang->custom->story->fields['required'] = $lang->custom->required; $lang->custom->story->fields['priList'] = 'Priority'; $lang->custom->story->fields['reasonList'] = 'Close Reason'; $lang->custom->story->fields['statusList'] = 'Status'; diff --git a/extension/lite/custom/ext/lang/zh-cn/lite.php b/extension/lite/custom/ext/lang/zh-cn/lite.php index fc184d77d3..fd96d6bb8e 100644 --- a/extension/lite/custom/ext/lang/zh-cn/lite.php +++ b/extension/lite/custom/ext/lang/zh-cn/lite.php @@ -12,6 +12,7 @@ $lang->custom->object['task'] = '任务'; $lang->custom->object['todo'] = '待办'; $lang->custom->object['user'] = '用户'; $lang->custom->object['block'] = '区块'; +$lang->custom->object['project'] = $lang->projectCommon; $lang->custom->menuOrder = array(); $lang->custom->menuOrder[10] = 'execution'; @@ -22,11 +23,12 @@ $lang->custom->menuOrder[30] = 'user'; $lang->custom->menuOrder[35] = 'block'; $lang->custom->task = new stdClass(); -$lang->custom->task->fields['required'] = '必填项'; +$lang->custom->task->fields['required'] = $lang->custom->required; $lang->custom->task->fields['priList'] = '优先级'; $lang->custom->task->fields['typeList'] = '类型'; $lang->custom->story = new stdClass(); +$lang->custom->story->fields['required'] = $lang->custom->required; $lang->custom->story->fields['priList'] = '优先级'; $lang->custom->story->fields['reasonList'] = '关闭原因'; $lang->custom->story->fields['statusList'] = '状态'; diff --git a/module/admin/config.php b/module/admin/config.php index 0c3cc75852..d4a45b7019 100755 --- a/module/admin/config.php +++ b/module/admin/config.php @@ -23,6 +23,13 @@ $config->admin->menuModuleGroup['model']['custom|required'] = array('project', $config->admin->menuModuleGroup['feature']['custom|set'] = array('todo', 'feedback', 'user', 'block', 'story', 'task', 'bug', 'testcase', 'testtask', 'feedback', 'user'); $config->admin->menuModuleGroup['feature']['custom|required'] = array('bug', 'doc', 'product', 'story', 'productplan', 'release', 'task', 'bug', 'testcase', 'testsuite', 'testtask', 'testreport', 'caselib', 'doc', 'feedback', 'user'); $config->admin->menuModuleGroup['template']['custom|set'] = array('baseline'); +if($config->vision == 'lite') +{ + $config->admin->menuModuleGroup['model']['custom|set'] = array('issue', 'risk', 'opportunity', 'nc'); + $config->admin->menuModuleGroup['model']['custom|required'] = array('build'); + $config->admin->menuModuleGroup['feature']['custom|set'] = array('project', 'todo', 'feedback', 'user', 'block', 'story', 'task', 'bug', 'testcase', 'testtask', 'feedback', 'user'); + $config->admin->menuModuleGroup['feature']['custom|required'] = array('project', 'task', 'story'); +} $config->admin->plugins[203] = new stdClass(); $config->admin->plugins[203]->name = '人力资源日历'; @@ -57,6 +64,8 @@ $config->admin->plugins[194]->viewLink = 'https://www.zentao.net/extension-viewE $config->admin->apiRoot = 'https://www.zentao.net/'; $config->admin->classURL = 'https://www.zentao.net/publicclass.html'; $config->admin->extensionURL = 'https://www.zentao.net/extension-browse.html'; +$config->admin->patchURL = 'https://www.zentao.net/extension-browse-byModule-1218.html'; +$config->admin->downloadURL = 'https://www.zentao.net/download.html'; $config->admin->liteMenuList = array('system', 'user', 'feature', 'message', 'extension', 'dev'); $config->admin->helpURL['system'] = 'https://www.zentao.net/book/zentaopms/538.html'; diff --git a/module/admin/css/index.css b/module/admin/css/index.css index 06ba1c9a99..815c5a3265 100755 --- a/module/admin/css/index.css +++ b/module/admin/css/index.css @@ -78,15 +78,15 @@ .main.without-internet > .bottom > .official.panel > .main-panel {flex-direction: row-reverse;} /* css in side */ -.time-block {background: #EDEEF2; padding:2px 4px; border-radius: 4px; color: #0B0F18; font-size: 15px;} +.time-block {background: #EDEEF2; padding:2px 4px; border-radius: 4px; color: #0B0F18; font-size: 15px; margin: 0 4px;} .dynamic-block {height: 74px; padding: 12px 16px; display: flex; justify-content: space-between; position: relative; line-height: 20px; border-top: 1px solid #E3E4E9;} .dynamic-content {height: 50px; line-height: 25px; overflow: hidden;} .dynamic-time {white-space: nowrap; position: absolute; right: 12px; bottom: 10px; padding-right: 12px; background: white;} -.time-count {letter-spacing: 2px;} +.time-count {letter-spacing: 1px;} -.patch-block {padding: 12px 16px; line-height: 20px; border-top: 1px solid #E3E4E9;} +.patch-block {padding: 10px 16px 12px; line-height: 20px; border-top: 1px solid #E3E4E9;} .patch-content {height: 40px; overflow: hidden;} -.upgrade-block {padding: 16px 16px; line-height: 20px; border-top: 1px solid #E3E4E9;} +.upgrade-block {padding: 6px 16px; line-height: 20px; border-top: 1px solid #E3E4E9;} .upgrade-content {height: 20px; padding-left: 20px; position: relative; margin: 5px 0;} .upgrade-content:before {content: ' '; width: 8px; height: 8px; background: #E3E4E9; border-radius: 50%; position: absolute; left: 0px; top: 5px;} diff --git a/module/admin/lang/menu.php b/module/admin/lang/menu.php index 17cbfcaca8..ad2f640473 100644 --- a/module/admin/lang/menu.php +++ b/module/admin/lang/menu.php @@ -93,13 +93,23 @@ $lang->admin->menuList->feature['subMenu']['user'] = array('link' => "{$l $lang->admin->menuList->feature['tabMenu']['my']['todo'] = array('link' => "{$lang->todo->common}|custom|set|module=todo&field=priList", 'exclude' => 'custom-set'); $lang->admin->menuList->feature['tabMenu']['my']['block'] = array('link' => "{$lang->block->common}|custom|set|module=block&field=closed", 'exclude' => 'custom-set'); -if($config->vision == 'lite') $lang->admin->menuList->feature['tabMenu']['my']['task'] = array('link' => "{$lang->task->common}|custom|required|module=task", 'links' => array('custom|set|module=task&field=priList')); +if($config->vision == 'lite') $lang->admin->menuList->feature['tabMenu']['my']['task'] = array('link' => "{$lang->task->common}|custom|required|module=task", 'links' => array('custom|set|module=task&field=priList'), 'exclude' => 'custom-required,custom-set'); $lang->admin->menuList->feature['tabMenu']['product']['product'] = array('link' => "{$lang->productCommon}|custom|required|module=product", 'links' => array("custom|browsestoryconcept|", 'custom|product|'), 'alias' => 'browsestoryconcept,product', 'exclude' => 'custom-required'); -$lang->admin->menuList->feature['tabMenu']['product']['story'] = array('link' => "{$lang->SRCommon}|custom|required|module=story", 'links' => array("custom|set|module=story&field=categoryList"), 'exclude' => 'custom-required'); +$lang->admin->menuList->feature['tabMenu']['product']['story'] = array('link' => "{$lang->SRCommon}|custom|required|module=story", 'links' => array("custom|set|module=story&field=categoryList"), 'exclude' => 'custom-required,custom-set'); $lang->admin->menuList->feature['tabMenu']['product']['productplan'] = array('link' => "{$lang->productplan->shortCommon}|custom|required|module=productplan", 'exclude' => 'custom-required'); $lang->admin->menuList->feature['tabMenu']['product']['release'] = array('link' => "{$lang->release->common}|custom|required|module=release", 'exclude' => 'custom-required'); +$lang->admin->menuList->feature['tabMenu']['execution']['execution'] = array('link' => "{$lang->execution->common}|custom|execution|"); +$lang->admin->menuList->feature['tabMenu']['execution']['task'] = array('link' => "{$lang->task->common}|custom|required|module=task", 'links' => array('custom|set|module=task&field=priList')); + +$lang->admin->menuList->feature['tabMenu']['qa']['bug'] = array('link' => "{$lang->bug->common}|custom|required|module=bug", 'links' => array("custom|set|module=bug&field=priList"), 'exclude' => 'custom-required,custom-set'); +$lang->admin->menuList->feature['tabMenu']['qa']['testcase'] = array('link' => "{$lang->testcase->common}|custom|required|module=testcase", 'links' => array("custom|set|module=testcase&field=priList"), 'exclude' => 'custom-required,custom-set'); +$lang->admin->menuList->feature['tabMenu']['qa']['testsuite'] = array('link' => "{$lang->testcase->testsuite}|custom|required|module=testsuite", 'exclude' => 'custom-required'); +$lang->admin->menuList->feature['tabMenu']['qa']['testtask'] = array('link' => "{$lang->testtask->common}|custom|required|module=testtask", 'links' => array('custom|set|module=testtask&field=statusList'), 'exclude' => 'custom-required,custom-set'); +$lang->admin->menuList->feature['tabMenu']['qa']['testreport'] = array('link' => "{$lang->testreport->common}|custom|required|module=testreport", 'exclude' => 'custom-required'); +$lang->admin->menuList->feature['tabMenu']['qa']['caselib'] = array('link' => "{$lang->testcase->caselib}|custom|required|module=caselib", 'exclude' => 'custom-required'); + $lang->admin->menuList->feature['menuOrder']['5'] = 'my'; $lang->admin->menuList->feature['menuOrder']['10'] = 'product'; $lang->admin->menuList->feature['menuOrder']['15'] = 'execution'; @@ -158,10 +168,15 @@ if($config->vision == 'lite') unset($lang->admin->menuList->feature['subMenu']['product']); unset($lang->admin->menuList->feature['subMenu']['execution']); unset($lang->admin->menuList->feature['subMenu']['qa']); + unset($lang->admin->menuList->feature['subMenu']['kanban']); unset($lang->admin->menuList->feature['menuOrder']['10']); unset($lang->admin->menuList->feature['menuOrder']['15']); unset($lang->admin->menuList->feature['menuOrder']['20']); + unset($lang->admin->menuList->feature['menuOrder']['25']); - $lang->admin->menuList->feature['subMenu']['project'] = array('link' => "{$lang->project->common}|custom|execution|"); + $lang->admin->menuList->feature['subMenu']['project'] = array('link' => "{$lang->projectCommon}|custom|execution|", 'exclude' => 'set,required', 'alias' => 'execution'); + $lang->admin->menuList->feature['tabMenu']['project']['project'] = array('link' => "{$lang->projectCommon}|custom|required|module=project", 'exclude' => 'custom-required'); + $lang->admin->menuList->feature['tabMenu']['project']['execution'] = array('link' => "{$lang->execution->common}|custom|execution|"); + $lang->admin->menuList->feature['tabMenu']['project']['story'] = array('link' => "{$lang->SRCommon}|custom|required|module=story", 'links' => array("custom|set|module=story&field=priList"), 'exclude' => 'custom-required,custom-set'); $lang->admin->menuList->feature['menuOrder']['15'] = 'project'; } diff --git a/module/admin/model.php b/module/admin/model.php index ebae255e82..d83080b9c0 100755 --- a/module/admin/model.php +++ b/module/admin/model.php @@ -279,21 +279,23 @@ class adminModel extends model $subModule = ''; if($moduleName == 'custom' and strpos(',required,set,', $methodName) !== false) { - if(strpos(',todo,block,', $paramName) !== false and $subMenuKey == 'my') $subModule = 'custom'; - if(strpos(',product,story,productplan,release,', $paramName) !== false and $subMenuKey == 'product') $subModule = 'custom'; + if(strpos(',todo,block,', ",$paramName,") !== false and $subMenuKey == 'my') $subModule = 'custom'; + if(strpos(',product,story,productplan,release,', ",$paramName,") !== false and $subMenuKey == 'product') $subModule = 'custom'; + if(strpos(',task,', ",$paramName,") !== false and $subMenuKey == 'execution') $subModule = 'custom'; + if(strpos(',project,story,', ",$paramName,") !== false and $subMenuKey == 'project') $subModule = 'custom'; + if(strpos(',bug,testcase,testsuite,testtask,testreport,caselib,', ",$paramName,") !== false and $subMenuKey == 'qa') $subModule = 'custom'; if($this->config->vision == 'lite' and $paramName == 'task' and $subMenuKey == 'my') $subModule = 'custom'; } if(!empty($subModule)) $subMenu['subModule'] = $subModule; if(isset($this->lang->admin->menuList->$menuKey['tabMenu'][$subMenuKey])) { - $this->lang->admin->menuList->$menuKey['tabMenu'][$subMenuKey][$paramName]['subModule'] = $subModule; + if(!empty($subModule)) $this->lang->admin->menuList->$menuKey['tabMenu'][$subMenuKey][$paramName]['subModule'] = $subModule; $subMenu['subMenu'] = $this->lang->admin->menuList->$menuKey['tabMenu'][$subMenuKey]; } $this->lang->admin->menu->$subMenuKey = $subMenu; } - } if(isset($this->lang->admin->menuList->$menuKey['menuOrder'])) $this->lang->admin->menuOrder = $this->lang->admin->menuList->$menuKey['menuOrder']; diff --git a/module/admin/view/index.html.php b/module/admin/view/index.html.php index 3b27c0251b..fae7e11f3e 100755 --- a/module/admin/view/index.html.php +++ b/module/admin/view/index.html.php @@ -103,7 +103,7 @@
+ holiday->emptyTip;?> +
+