* Fix bug #43273.
This commit is contained in:
@@ -53,6 +53,7 @@ class mainNavbar extends nav
|
||||
$currentMethod = $app->getMethodName();
|
||||
if($app->tab == 'admin') $app->control->loadModel('admin')->setMenu();
|
||||
|
||||
\commonModel::replaceMenuLang();
|
||||
\commonModel::setMainMenu();
|
||||
$activeMenu = \commonModel::getActiveMainMenu();
|
||||
if(empty($activeMenu)) return false;
|
||||
|
||||
@@ -2433,6 +2433,65 @@ class commonModel extends model
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Replace menu lang.
|
||||
*
|
||||
* @static
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public static function replaceMenuLang()
|
||||
{
|
||||
global $lang;
|
||||
if(empty($lang->db->custom)) return;
|
||||
foreach($lang->db->custom as $moduleName => $sectionMenus)
|
||||
{
|
||||
if(strpos($moduleName, 'Menu') === false) continue;
|
||||
|
||||
$isSecondMenu = strpos($moduleName, 'SubMenu') === false;
|
||||
$moduleName = str_replace($isSecondMenu ? 'Menu' : 'SubMenu', '', $moduleName);
|
||||
|
||||
foreach($sectionMenus as $section => $menus)
|
||||
{
|
||||
foreach($menus as $key => $value)
|
||||
{
|
||||
/* Get second menu. */
|
||||
if($isSecondMenu)
|
||||
{
|
||||
$isDropMenu = strpos($section, 'DropMenu') !== false;
|
||||
if(!$isDropMenu)
|
||||
{
|
||||
if(!isset($lang->{$moduleName}->{$section})) break;
|
||||
if(is_object($lang->{$moduleName}->{$section}) and isset($lang->{$moduleName}->{$section}->{$key})) $settingMenu = &$lang->{$moduleName}->{$section}->{$key};
|
||||
if(is_array($lang->{$moduleName}->{$section}) and isset($lang->{$moduleName}->{$section}[$key])) $settingMenu = &$lang->{$moduleName}->{$section}[$key];
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Get drop menu in second menu. */
|
||||
$dropMenuKey = str_replace('DropMenu', '', $section);
|
||||
if(!isset($lang->{$moduleName}->menu->{$dropMenuKey}['dropMenu']->{$key})) break;
|
||||
$settingMenu = &$lang->{$moduleName}->menu->{$dropMenuKey}['dropMenu']->{$key};
|
||||
}
|
||||
}
|
||||
/* Get third menu. */
|
||||
elseif(isset($lang->{$moduleName}->menu->{$section}['subMenu']))
|
||||
{
|
||||
$subMenu = $lang->{$moduleName}->menu->{$section}['subMenu'];
|
||||
if(is_object($subMenu) and isset($subMenu->{$key})) $settingMenu = &$lang->{$moduleName}->menu->{$section}['subMenu']->{$key};
|
||||
if(is_array($subMenu) and isset($subMenu[$key])) $settingMenu = &$lang->{$moduleName}->menu->{$section}['subMenu'][$key];
|
||||
}
|
||||
|
||||
/* Set custom menu lang. */
|
||||
if(!empty($settingMenu))
|
||||
{
|
||||
if(is_string($settingMenu)) $settingMenu = $value . substr($settingMenu, strpos($settingMenu, '|'));
|
||||
if(is_array($settingMenu) and isset($settingMenu['link'])) $settingMenu['link'] = $value . substr($settingMenu['link'], strpos($settingMenu['link'], '|'));
|
||||
unset($settingMenu);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class common extends commonModel
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
|
||||
title=测试 commonModel->replaceMenuLang();
|
||||
cid=0
|
||||
|
||||
- 没有 db->custom 数据。 @0
|
||||
- 替换二级导航语言项。属性link @执行1|my|execution|type=undone
|
||||
- 替换三级导航语言项。属性link @任务1|my|work|mode=task
|
||||
- 替换二级导航下拉的语言项。属性link @需求1|execution|story|executionID=%s
|
||||
|
||||
*/
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
su('admin');
|
||||
|
||||
global $tester;
|
||||
$tester->loadModel('common');
|
||||
|
||||
$tester->common->lang->db->custom = array();
|
||||
r($tester->common->replaceMenuLang()) && p() && e('0'); //没有 db->custom 数据。
|
||||
|
||||
$tester->common->lang->db->custom['myMenu']['menu']['execution'] = '执行1';
|
||||
$tester->common->lang->db->custom['mySubMenu']['work']['task'] = '任务1';
|
||||
$tester->common->lang->db->custom['executionMenu']['storyGroupDropMenu']['story'] = '需求1';
|
||||
$tester->common->replaceMenuLang();
|
||||
|
||||
r($tester->common->lang->my->menu->execution) && p('link') && e("执行1|my|execution|type=undone"); // 替换二级导航语言项。
|
||||
r($tester->common->lang->my->menu->work['subMenu']->task) && p('link') && e("任务1|my|work|mode=task"); // 替换三级导航语言项。
|
||||
r($tester->common->lang->execution->menu->storyGroup['dropMenu']->story) && p('link') && e("需求1|execution|story|executionID=%s"); // 替换二级导航下拉的语言项。
|
||||
@@ -22,15 +22,12 @@
|
||||
.form-item-content {padding-left: 44px;}
|
||||
.form-item-content .form-item {gap: 64px; height: 56px; align-items: center; position: relative; width: 500px;}
|
||||
.form-item-content .form-item.w-expand {width: 700px;}
|
||||
.form-item-content .form-item .item-label {flex: 0 0 180px; padding-left: 40px; background: #F8F8F8; display: flex; align-items: center; color: currentColor; font-size: 13px; overflow: hidden;}
|
||||
.form-item-content .form-item .item-label.lg {flex: 0 0 180px;}
|
||||
.form-item-content .form-item .input-group {margin-left: 20px; width:180px; height:32px;}
|
||||
.form-item-content .form-item .input-group > .input-group-addon {flex: 1 1 30%; overflow: hidden;}
|
||||
.form-item-content .form-item .input-control > input {margin-left: 40px;}
|
||||
.form-item-content .form-item .item-label {flex: 0 0 180px; padding-left: 40px; background: #F8F8F8; display: flex; align-items: center; color: currentColor; font-size: 13px; overflow: hidden;}
|
||||
.form-item-content .form-item .item-label.lg {flex: 0 0 180px;}
|
||||
.form-item-content .form-item .input-group {margin-left: 20px; width:180px; height:32px;}
|
||||
.form-item-content .form-item .input-group > .input-group-addon {flex: 1 1 30%; overflow: hidden;}
|
||||
.form-item-content .form-item .input-control > input {margin-left: 40px;}
|
||||
.form-item-content .form-item .icon {display: none; position: absolute; left: 200px; top: 16px; font-size: 25px;}
|
||||
.form-item-content .form-item.active .icon {display: unset;}
|
||||
.form-item-content.hover-color-primary > .form-item.active > .label {color: blue;}
|
||||
.form-item-content.hover-color-primary > .form-item.active .form-control {border-color: blue;}
|
||||
.form-item-content.border-color-primary > .form-item .form-control {border: 1px solid blue;}
|
||||
|
||||
#menuTree > li > a, #menuTree > li > ul > li > a {white-space: nowrap; text-overflow: clip; overflow: hidden;}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*/
|
||||
function addActive(id)
|
||||
{
|
||||
$('[data-id=' + id + ']').addClass('active');
|
||||
$('[data-id=' + id + ']').addClass('selected');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -19,7 +19,7 @@ function addActive(id)
|
||||
*/
|
||||
function removeActive(id)
|
||||
{
|
||||
$('[data-id=' + id + ']').removeClass('active');
|
||||
$('[data-id=' + id + ']').removeClass('selected');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -31,7 +31,7 @@ function removeActive(id)
|
||||
*/
|
||||
function handleClickItem(clickId)
|
||||
{
|
||||
var clearId = $('.form-item.active').attr('data-id');
|
||||
var clearId = $('.form-item.selected').attr('data-id');
|
||||
if(clearId !== clickId)
|
||||
{
|
||||
if(clearId) removeActive(clearId);
|
||||
|
||||
@@ -109,8 +109,9 @@ if(in_array($type, $config->dev->navTypes))
|
||||
}
|
||||
if($menu->active)
|
||||
{
|
||||
$menu->selected = $menu->active;
|
||||
$active[$level] = $menu->id;
|
||||
if($parent) $parent->active = 1;
|
||||
if($parent) $parent->selected = 1;
|
||||
}
|
||||
unset($menu->children);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user