Merge branch 'sprint/285' of https://gitlab.zcorp.cc/easycorp/zentaopms into dev/gfl_task_#83327
This commit is contained in:
@@ -7,7 +7,7 @@ $config->admin->log->saveDays = 30;
|
||||
if(!isset($config->safe)) $config->safe = new stdclass();
|
||||
if(!isset($config->safe->weak)) $config->safe->weak = '123456,password,12345,12345678,qwerty,123456789,1234,1234567,abc123,111111,123123';
|
||||
|
||||
$config->admin->menuGroup['setting'] = array('backup', 'action|trash', 'admin|xuanxuan', 'admin|license', 'admin|safe', 'custom|timezone', 'search|buildindex', 'admin|tableengine', 'ldap', 'custom|libreoffice');
|
||||
$config->admin->menuGroup['setting'] = array('custom|mode', 'backup', 'action|trash', 'admin|xuanxuan', 'admin|license', 'admin|checkweak', 'admin|resetpwdsetting', 'admin|safe', 'custom|timezone', 'search|buildindex', 'admin|tableengine', 'ldap', 'custom|libreoffice');
|
||||
$config->admin->menuGroup['user'] = array('dept', 'company', 'user', 'group');
|
||||
$config->admin->menuGroup['switch'] = array('admin|setmodule');
|
||||
$config->admin->menuGroup['model'] = array('auditcl', 'stage', 'design', 'cmcl', 'reviewcl', 'custom|required', 'custom|set', 'custom|flow', 'custom|code', 'custom|estimate', 'subject', 'process');
|
||||
|
||||
+64
-21
@@ -180,6 +180,7 @@ $lang->admin->menuList->message['order'] = 7;
|
||||
|
||||
$lang->admin->menuList->extension['name'] = '插件管理';
|
||||
$lang->admin->menuList->extension['desc'] = '';
|
||||
$lang->admin->menuList->extension['link'] = 'extension|browse';
|
||||
$lang->admin->menuList->extension['order'] = 8;
|
||||
|
||||
$lang->admin->menuList->dev['name'] = '二次开发';
|
||||
@@ -188,57 +189,99 @@ $lang->admin->menuList->dev['order'] = 9;
|
||||
|
||||
$lang->admin->menuList->convert['name'] = '数据导入';
|
||||
$lang->admin->menuList->convert['desc'] = '';
|
||||
$lang->admin->menuList->convert['link'] = 'convert|convertjira';
|
||||
$lang->admin->menuList->convert['order'] = 10;
|
||||
|
||||
$lang->admin->menuList->setting['subMenu']['mode'] = array('link' => "模式|custom|mode|", 'subModule' => 'custom');
|
||||
$lang->admin->menuList->setting['subMenu']['mode'] = array('link' => "模式|custom|mode|");
|
||||
$lang->admin->menuList->setting['subMenu']['backup'] = array('link' => "备份|backup|index|", 'subModule' => 'backup');
|
||||
$lang->admin->menuList->setting['subMenu']['trash'] = array('link' => "回收站|action|trash|", 'subModule' => 'action');
|
||||
$lang->admin->menuList->setting['subMenu']['xuanxuan'] = array('link' => "聊天|admin|xuanxuan|");
|
||||
$lang->admin->menuList->setting['subMenu']['license'] = array('link' => "授权信息|admin|license|");
|
||||
$lang->admin->menuList->setting['subMenu']['safe'] = array('link' => "安全|admin|safe|");
|
||||
$lang->admin->menuList->setting['subMenu']['timezone'] = array('link' => "时区|custom|timezone|", 'subModule' => 'custom');
|
||||
$lang->admin->menuList->setting['subMenu']['safe'] = array('link' => "安全|admin|safe|", 'alias' => 'checkweak,resetpwdsetting');
|
||||
$lang->admin->menuList->setting['subMenu']['timezone'] = array('link' => "时区|custom|timezone|");
|
||||
$lang->admin->menuList->setting['subMenu']['buildindex'] = array('link' => "重建索引|search|buildindex|", 'subModule' => 'search');
|
||||
$lang->admin->menuList->setting['subMenu']['tableengine'] = array('link' => "表引擎|admin|tableengine|");
|
||||
$lang->admin->menuList->setting['subMenu']['ldap'] = array('link' => "LDAP|ldap|set|", 'subModule' => 'ldap');
|
||||
$lang->admin->menuList->setting['subMenu']['libreoffice'] = array('link' => "Office|custom|libreoffice|", 'subModule' => 'custom');
|
||||
|
||||
$lang->admin->menuList->setting['dividerMenu'] = ',license,ldap,';
|
||||
$lang->admin->menuList->setting['menuOrder']['5'] = 'mode';
|
||||
$lang->admin->menuList->setting['menuOrder']['10'] = 'backup';
|
||||
$lang->admin->menuList->setting['menuOrder']['15'] = 'trash';
|
||||
$lang->admin->menuList->setting['menuOrder']['30'] = 'safe';
|
||||
$lang->admin->menuList->setting['menuOrder']['35'] = 'timezone';
|
||||
$lang->admin->menuList->setting['menuOrder']['40'] = 'buildindex';
|
||||
$lang->admin->menuList->setting['menuOrder']['45'] = 'tableengine';
|
||||
|
||||
$lang->admin->menuList->setting['dividerMenu'] = ',safe,';
|
||||
|
||||
$lang->admin->menuList->user['subMenu']['dept'] = array('link' => "部门|dept|browse|", 'subModule' => 'dept');
|
||||
$lang->admin->menuList->user['subMenu']['user'] = array('link' => "用户|company|browse|", 'subModule' => 'company');
|
||||
$lang->admin->menuList->user['subMenu']['group'] = array('link' => "权限|group|browse|", 'subModule' => 'group');
|
||||
|
||||
$lang->admin->menuList->user['menuOrder']['5'] = 'dept';
|
||||
$lang->admin->menuList->user['menuOrder']['10'] = 'user';
|
||||
$lang->admin->menuList->user['menuOrder']['15'] = 'group';
|
||||
|
||||
$lang->admin->menuList->switch['subMenu']['setmodule'] = array('link' => "功能设置|admin|setmodule|");
|
||||
|
||||
$lang->admin->menuList->switch['menuOrder']['5'] = 'setmodule';
|
||||
|
||||
$lang->admin->menuList->model['subMenu']['common'] = array('link' => "通用|custom|required|module=project", 'subModule' => 'custom');
|
||||
$lang->admin->menuList->model['subMenu']['scrum'] = array('link' => "敏捷模型|auditcl|scrumbrowse|", 'subModule' => 'auditcl');
|
||||
$lang->admin->menuList->model['subMenu']['waterfall'] = array('link' => "瀑布模型|stage|settype|", 'subModule' => 'stage');
|
||||
|
||||
$lang->admin->menuList->feature['subMenu']['my'] = array('link' => "地盘|custom|set|module=todo", 'subModule' => 'custom');
|
||||
$lang->admin->menuList->feature['subMenu']['product'] = array('link' => "{$lang->productCommon}|custom|product|", 'subModule' => 'custom');
|
||||
$lang->admin->menuList->feature['subMenu']['execution'] = array('link' => "{$lang->execution->common}|custom|execution|", 'subModule' => 'custom');
|
||||
$lang->admin->menuList->feature['subMenu']['qa'] = array('link' => "测试|custom|required|module=bug", 'subModule' => 'custom');
|
||||
$lang->admin->menuList->feature['subMenu']['kanban'] = array('link' => "看板|custom|kanban|", 'subModule' => 'custom');
|
||||
$lang->admin->menuList->feature['subMenu']['doc'] = array('link' => "文档|custom|required|module=doc", 'subModule' => 'custom');
|
||||
$lang->admin->menuList->feature['subMenu']['feedback'] = array('link' => "反馈|custom|set|module=feedback", 'subModule' => 'custom');
|
||||
$lang->admin->menuList->model['menuOrder']['5'] = 'common';
|
||||
$lang->admin->menuList->model['menuOrder']['10'] = 'scrum';
|
||||
$lang->admin->menuList->model['menuOrder']['15'] = 'waterfall';
|
||||
|
||||
$lang->admin->menuList->feature['subMenu']['my'] = array('link' => "地盘|custom|set|module=todo");
|
||||
$lang->admin->menuList->feature['subMenu']['product'] = array('link' => "{$lang->productCommon}|custom|product|");
|
||||
$lang->admin->menuList->feature['subMenu']['execution'] = array('link' => "{$lang->execution->common}|custom|execution|");
|
||||
$lang->admin->menuList->feature['subMenu']['qa'] = array('link' => "测试|custom|required|module=bug");
|
||||
$lang->admin->menuList->feature['subMenu']['kanban'] = array('link' => "看板|custom|kanban|");
|
||||
$lang->admin->menuList->feature['subMenu']['doc'] = array('link' => "文档|custom|required|module=doc");
|
||||
$lang->admin->menuList->feature['subMenu']['feedback'] = array('link' => "反馈|custom|set|module=feedback");
|
||||
$lang->admin->menuList->feature['subMenu']['approval'] = array('link' => "审批|approvalflow|browse|", 'subModule' => 'approvalflow');
|
||||
$lang->admin->menuList->feature['subMenu']['measure'] = array('link' => "度量|measurement|settips|", 'subModule' => 'measurement');
|
||||
$lang->admin->menuList->feature['subMenu']['user'] = array('link' => "用户|custom|set|module=user", 'subModule' => 'custom');
|
||||
$lang->admin->menuList->feature['subMenu']['user'] = array('link' => "用户|custom|set|module=user");
|
||||
$lang->admin->menuList->feature['subMenu']['meetingroom'] = array('link' => "会议室|meetingroom|browse|", 'subModule' => 'meetingroom');
|
||||
|
||||
$lang->admin->menuList->feature['menuOrder']['5'] = 'my';
|
||||
$lang->admin->menuList->feature['menuOrder']['10'] = 'product';
|
||||
$lang->admin->menuList->feature['menuOrder']['15'] = 'execution';
|
||||
$lang->admin->menuList->feature['menuOrder']['20'] = 'qa';
|
||||
$lang->admin->menuList->feature['menuOrder']['25'] = 'kanban';
|
||||
$lang->admin->menuList->feature['menuOrder']['30'] = 'doc';
|
||||
$lang->admin->menuList->feature['menuOrder']['35'] = 'feedback';
|
||||
$lang->admin->menuList->feature['menuOrder']['40'] = 'approval';
|
||||
$lang->admin->menuList->feature['menuOrder']['45'] = 'measure';
|
||||
$lang->admin->menuList->feature['menuOrder']['50'] = 'user';
|
||||
$lang->admin->menuList->feature['menuOrder']['55'] = 'meetingroom';
|
||||
|
||||
$lang->admin->menuList->feature['dividerMenu'] = ',user,';
|
||||
|
||||
$lang->admin->menuList->template['subMenu']['type'] = array('link' => "模版类型|custom|set|module=baseline&field=objectList", 'subModule' => 'custom');
|
||||
$lang->admin->menuList->template['subMenu']['template'] = array('link' => "文档模版|baseline|template|", 'subModule' => 'baseline');
|
||||
$lang->admin->menuList->template['subMenu']['catalog'] = array('link' => "文档目录|baseline|catalog|", 'subModule' => 'baseline');
|
||||
|
||||
$lang->admin->menuList->template['menuOrder']['5'] = 'type';
|
||||
$lang->admin->menuList->template['menuOrder']['10'] = 'template';
|
||||
$lang->admin->menuList->template['menuOrder']['15'] = 'catalog';
|
||||
|
||||
$lang->admin->menuList->message['subMenu']['mail'] = array('link' => "邮件|mail|edit|", 'subModule' => 'mail');
|
||||
$lang->admin->menuList->message['subMenu']['webhook'] = array('link' => "Webhook|webhook|browse|", 'subModule' => 'webhook');
|
||||
$lang->admin->menuList->message['subMenu']['sms'] = array('link' => "短信|sms|index|", 'subModule' => 'sms');
|
||||
$lang->admin->menuList->message['subMenu']['message'] = array('link' => "浏览器|message|browser|", 'subModule' => 'message');
|
||||
$lang->admin->menuList->message['subMenu']['setting'] = array('link' => "设置|message|setting|", 'subModule' => 'message');
|
||||
$lang->admin->menuList->message['subMenu']['message'] = array('link' => "浏览器|message|browser|");
|
||||
$lang->admin->menuList->message['subMenu']['setting'] = array('link' => "设置|message|setting|");
|
||||
|
||||
$lang->admin->menuList->dev['subMenu']['api'] = array('link' => "API|dev|api|", 'subModule' => 'dev');
|
||||
$lang->admin->menuList->dev['subMenu']['db'] = array('link' => "数据库|dev|db|", 'subModule' => 'dev');
|
||||
$lang->admin->menuList->dev['subMenu']['editor'] = array('link' => "编辑器|dev|editor|", 'subModule' => 'dev');
|
||||
$lang->admin->menuList->message['menuOrder']['5'] = 'mail';
|
||||
$lang->admin->menuList->message['menuOrder']['10'] = 'webhook';
|
||||
$lang->admin->menuList->message['menuOrder']['15'] = 'sms';
|
||||
$lang->admin->menuList->message['menuOrder']['20'] = 'message';
|
||||
$lang->admin->menuList->message['menuOrder']['25'] = 'setting';
|
||||
|
||||
$lang->admin->menuList->dev['subMenu']['api'] = array('link' => "API|dev|api|");
|
||||
$lang->admin->menuList->dev['subMenu']['db'] = array('link' => "数据库|dev|db|");
|
||||
$lang->admin->menuList->dev['subMenu']['editor'] = array('link' => "编辑器|dev|editor|");
|
||||
$lang->admin->menuList->dev['subMenu']['entry'] = array('link' => "应用|entry|browse|", 'subModule' => 'entry');
|
||||
|
||||
$lang->admin->menuList->dev['menuOrder']['5'] = 'api';
|
||||
$lang->admin->menuList->dev['menuOrder']['10'] = 'db';
|
||||
$lang->admin->menuList->dev['menuOrder']['15'] = 'editor';
|
||||
$lang->admin->menuList->dev['menuOrder']['20'] = 'entry';
|
||||
|
||||
+113
-23
@@ -253,59 +253,149 @@ class adminModel extends model
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set admin menu.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setMenu()
|
||||
{
|
||||
$this->lang->switcherMenu = $this->getSwitcher();
|
||||
$this->sortMenu();
|
||||
|
||||
$menuKey = $this->getMenuKey();
|
||||
if(empty($menuKey)) return;
|
||||
|
||||
$this->lang->switcherMenu = $this->getSwitcher($menuKey);
|
||||
if(isset($this->lang->admin->menuList->$menuKey))
|
||||
{
|
||||
if(isset($this->lang->admin->menuList->$menuKey['subMenu'])) $this->lang->admin->menu = $this->lang->admin->menuList->$menuKey['subMenu'];
|
||||
if(isset($this->lang->admin->menuList->$menuKey['menuOrder'])) $this->lang->admin->menuOrder = $this->lang->admin->menuList->$menuKey['menuOrder'];
|
||||
if(isset($this->lang->admin->menuList->$menuKey['dividerMenu'])) $this->lang->admin->dividerMenu = $this->lang->admin->menuList->$menuKey['dividerMenu'];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get switcher.
|
||||
* sort menu.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function sortMenu()
|
||||
{
|
||||
$orders = array();
|
||||
$disabled = array();
|
||||
foreach($this->lang->admin->menuList as $menuKey => $menu)
|
||||
{
|
||||
$menu['disabled'] = false;
|
||||
if(isset($menu['link']))
|
||||
{
|
||||
list($module, $method) = explode('|', $menu['link']);
|
||||
$menu['link'] = helper::createLink($module, $method);
|
||||
if(!common::hasPriv($module, $method)) $menu['disabled'] = true;
|
||||
}
|
||||
|
||||
if(isset($menu['menuOrder']))
|
||||
{
|
||||
$menuOrder = $menu['menuOrder'];
|
||||
ksort($menuOrder);
|
||||
/* Check sub menu priv. */
|
||||
foreach($menuOrder as $subOrder => $subMenuKey)
|
||||
{
|
||||
list($label, $module, $method, $params) = explode('|', $menu['subMenu'][$subMenuKey]['link']);
|
||||
if(!common::hasPriv($module, $method)) unset($menuOrder[$subOrder]);
|
||||
}
|
||||
/* Set link. */
|
||||
if(!empty($menuOrder))
|
||||
{
|
||||
$subMenuKey = reset($menuOrder);
|
||||
list($label, $module, $method, $params) = explode('|', $menu['subMenu'][$subMenuKey]['link']);
|
||||
$menu['link'] = helper::createLink($module, $method, $params);
|
||||
}
|
||||
if(empty($menuOrder)) $menu['disabled'] = true;
|
||||
}
|
||||
|
||||
$order = $menu['order'];
|
||||
$orders[$order] = $menuKey;
|
||||
if($menu['disabled'])
|
||||
{
|
||||
unset($orders[$order]);
|
||||
$disabled[$menuKey] = $menu;
|
||||
}
|
||||
|
||||
$this->lang->admin->menuList->$menuKey = $menu;
|
||||
}
|
||||
|
||||
ksort($orders);
|
||||
$menuList = new stdclass();
|
||||
$index = 1;
|
||||
foreach($orders as $menuKey)
|
||||
{
|
||||
$menuList->$menuKey = $this->lang->admin->menuList->$menuKey;
|
||||
$menuList->$menuKey['order'] = $index;
|
||||
$index++;
|
||||
}
|
||||
foreach($disabled as $menuKey => $menu)
|
||||
{
|
||||
$menuList->$menuKey = $menu;
|
||||
$menuList->$menuKey['order'] = $index;
|
||||
$index++;
|
||||
}
|
||||
|
||||
$this->lang->admin->menuList = $menuList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get menu key
|
||||
*
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getSwitcher()
|
||||
public function getMenuKey()
|
||||
{
|
||||
$moduleName = $this->app->rawModule;
|
||||
$methodName = $this->app->rawMethod;
|
||||
$paramName = current($this->app->rawParams);
|
||||
$currentMenu = 'setting';
|
||||
$currentMenuName = '';
|
||||
$link = $paramName ? helper::createLink($moduleName, $methodName, "param=$paramName") : helper::createLink($moduleName, $methodName);
|
||||
$moduleName = $this->app->rawModule;
|
||||
$methodName = $this->app->rawMethod;
|
||||
$paramName = $this->app->rawParams ? reset($this->app->rawParams) : '';
|
||||
|
||||
foreach($this->config->admin->menuGroup as $menuKey => $menuGroup)
|
||||
{
|
||||
if(in_array($moduleName, $menuGroup))
|
||||
{
|
||||
$currentMenu = $menuKey;
|
||||
break;
|
||||
return $menuKey;
|
||||
}
|
||||
elseif(in_array("$moduleName|$methodName", $menuGroup))
|
||||
{
|
||||
if($moduleName == 'custom' and ($methodName == 'required' or $methodName == 'set'))
|
||||
{
|
||||
if(in_array($paramName, $this->config->admin->menuModuleGroup[$menuKey]["custom|$methodName"]))
|
||||
{
|
||||
|
||||
$currentMenu = $menuKey;
|
||||
break;
|
||||
}
|
||||
if(in_array($paramName, $this->config->admin->menuModuleGroup[$menuKey]["custom|$methodName"])) return $menuKey;
|
||||
}
|
||||
else
|
||||
{
|
||||
$currentMenu = $menuKey;
|
||||
break;
|
||||
return $menuKey;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
$currentMenuName = $this->lang->admin->menuList->$currentMenu['name'];
|
||||
/**
|
||||
* Get switcher.
|
||||
*
|
||||
* @param string $currentMenuKey
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getSwitcher($currentMenuKey = 'setting')
|
||||
{
|
||||
if(empty($currentMenuKey)) return null;
|
||||
|
||||
$output = "<div class='btn-group header-btn'><button class='btn pull-right btn-link' data-toggle='dropdown'> <span class='text'>$currentMenuName</span> <span class='caret'></span></button><ul class='dropdown-menu' id='adminMenu'>";
|
||||
$currentMenu = $this->lang->admin->menuList->$currentMenuKey;
|
||||
$output = "<div class='btn-group header-btn'><button class='btn pull-right btn-link' data-toggle='dropdown'> <span class='text'>{$currentMenu['name']}</span> <span class='caret'></span></button><ul class='dropdown-menu' id='adminMenu'>";
|
||||
foreach($this->lang->admin->menuList as $menuKey => $menuGroup)
|
||||
{
|
||||
$class = $menuKey == $currentMenu ? "class='active'" : '';
|
||||
$output .= "<li $class>" . html::a($link, $menuGroup['name']) . "</li>";
|
||||
$class = $menuKey == $currentMenuKey ? "class='active'" : '';
|
||||
if($menuGroup['disabled']) $class .= ' disabled';
|
||||
$output .= "<li $class>" . html::a($menuGroup['link'], $menuGroup['name']) . "</li>";
|
||||
}
|
||||
$output .= "</ul></div>";
|
||||
|
||||
|
||||
@@ -915,8 +915,8 @@ class commonModel extends model
|
||||
{
|
||||
global $lang, $config, $app;
|
||||
|
||||
if($tab == 'admin') $app->control->loadModel('admin')->setMenu();
|
||||
if(!$tab) return;
|
||||
if($tab == 'admin' and method_exists($app->control, 'loadModel')) $app->control->loadModel('admin')->setMenu();
|
||||
$icon = zget($lang->navIcons, $tab, '');
|
||||
|
||||
if(!in_array($tab, array('program', 'product', 'project')))
|
||||
|
||||
@@ -22,6 +22,7 @@ class extension extends control
|
||||
public function __construct($moduleName = '', $methodName = '')
|
||||
{
|
||||
parent::__construct($moduleName, $methodName);
|
||||
$this->loadModel('admin')->setMenu();
|
||||
|
||||
$statusFile = $this->loadModel('common')->checkSafeFile();
|
||||
if($statusFile)
|
||||
|
||||
@@ -21,3 +21,10 @@ $lang->admin->sizeType = array();
|
||||
$lang->admin->sizeType['K'] = 1024;
|
||||
$lang->admin->sizeType['M'] = 1024 * 1024;
|
||||
$lang->admin->sizeType['G'] = 1024 * 1024 * 1024;
|
||||
|
||||
global $config;
|
||||
if($config->vision != 'lite')
|
||||
{
|
||||
$lang->admin->menuList->setting['subMenu']['xuanxuan'] = array('link' => '聊天|admin|xuanxuan|', 'subModule' => 'client,setting');
|
||||
$lang->admin->menuList->setting['menuOrder']['20'] = 'xuanxuan';
|
||||
}
|
||||
|
||||
@@ -1,11 +1,5 @@
|
||||
<?php
|
||||
$lang->xuanxuan = new stdclass();
|
||||
//if($config->vision != 'lite')
|
||||
//{
|
||||
// $lang->admin->menu->xuanxuan = array('link' => '聊天|admin|xuanxuan', 'subModule' => 'client,setting');
|
||||
// $lang->admin->menuOrder[6] = 'xuanxuan';
|
||||
//}
|
||||
//
|
||||
//$lang->admin->menu->xuanxuan['subMenu'] = new stdclass();
|
||||
//$lang->admin->menu->xuanxuan['subMenu']->index = array('link' => '首页|admin|xuanxuan');
|
||||
//$lang->admin->menu->xuanxuan['subMenu']->setting = array('link' => '参数|setting|xuanxuan');
|
||||
|
||||
Reference in New Issue
Block a user