This commit is contained in:
wangyidong
2024-01-11 10:06:50 +08:00
parent c1de3e5670
commit 38bf841720
6 changed files with 101 additions and 12 deletions
+1
View File
@@ -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;
+59
View File
@@ -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"); // 替换二级导航下拉的语言项。
+5 -8
View File
@@ -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;}
+3 -3
View File
@@ -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);
+2 -1
View File
@@ -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);
}