* code for replace menu lang.

This commit is contained in:
wangyidong
2023-02-14 13:35:12 +08:00
parent 00e30d7351
commit ff5bc056bd
4 changed files with 79 additions and 3 deletions
+1
View File
@@ -0,0 +1 @@
ALTER TABLE `zt_lang` ADD `systemMode` varchar(10) COLLATE 'utf8_general_ci' NOT NULL DEFAULT 'ALM';
+15
View File
@@ -108,6 +108,17 @@ class router extends baseRouter
parent::loadLang($moduleName, $appName);
/* Replace main nav lang. */
if($moduleName == 'common' and $this->dbh and !empty($this->config->db->name))
{
$customMenus = $this->dbh->query('SELECT * FROM' . TABLE_LANG . "WHERE `module`='common' AND `section`='mainNav' AND `lang`='{$this->clientLang}' AND `vision`='{$this->config->vision}' AND `systemMode`='{$this->config->systemMode}'")->fetchAll();
foreach($customMenus as $menu)
{
$menuKey = $menu->key;
if(isset($lang->mainNav->$menuKey)) $lang->mainNav->$menuKey = zget($lang->navIcons, $menuKey, '') . " {$menu->value}" . substr($lang->mainNav->$menuKey, strpos($lang->mainNav->$menuKey, '|'));
}
}
/* Merge from the db lang. */
if($moduleName != 'common' and isset($lang->db->custom[$moduleName]))
{
@@ -284,6 +295,10 @@ class router extends baseRouter
$lang->URCommon = isset($URPairs[$config->URSR]) ? $URPairs[$config->URSR] : reset($URPairs);
$lang->SRCommon = isset($SRPairs[$config->URSR]) ? $SRPairs[$config->URSR] : reset($SRPairs);
}
/* Replace common lang. */
$customMenus = $this->dbh->query('SELECT * FROM' . TABLE_LANG . "WHERE `module`='common' AND `lang`='{$this->clientLang}' AND `section`='' AND `vision`='{$config->vision}' AND `systemMode`='{$config->systemMode}'")->fetchAll();
foreach($customMenus as $menu) if(isset($lang->{$menu->key})) $lang->{$menu->key} = $menu->value;
}
}
+62 -2
View File
@@ -1117,8 +1117,9 @@ class commonModel extends model
global $app, $lang, $config;
/* Set main menu by app tab and module. */
self::setMainMenu();
self::checkMenuVarsReplaced();
static::replaceMenuLang();
static::setMainMenu();
static::checkMenuVarsReplaced();
$activeMenu = '';
$tab = $app->tab;
@@ -3535,6 +3536,65 @@ EOD;
return true;
}
/**
* Replace menu lang.
*
* @static
* @access public
* @return void
*/
public static function replaceMenuLang()
{
global $lang;
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)
{
$settingMenu = null;
/* 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'], '|'));
}
}
}
}
}
/**
* Check valid row.
*
+1 -1
View File
@@ -23,7 +23,7 @@ class customModel extends model
try
{
$sql = $this->dao->select('*')->from(TABLE_LANG)->where('`lang`')->in("$currentLang,all")->andWhere('vision')->eq($this->config->vision)->orderBy('lang,id')->get();
$sql = $this->dao->select('*')->from(TABLE_LANG)->where('`lang`')->in("$currentLang,all")->andWhere('vision')->eq($this->config->vision)->andWhere('systemMode')->eq($this->config->systemMode)->orderBy('lang,id')->get();
$stmt = $this->dbh->query($sql);
$allCustomLang = array();