From b9fc578dd75addf599bd758c9ff93f2eea774e30 Mon Sep 17 00:00:00 2001 From: caoyanyi Date: Tue, 7 Mar 2023 14:43:04 +0800 Subject: [PATCH] * Adjust codes. --- module/dev/model.php | 80 ++++++++++++++++++++++++++++++-------------- 1 file changed, 55 insertions(+), 25 deletions(-) diff --git a/module/dev/model.php b/module/dev/model.php index 503853c807..f42d6d641c 100644 --- a/module/dev/model.php +++ b/module/dev/model.php @@ -670,10 +670,12 @@ class devModel extends model $titleList = array(); $tagMethods = array(); + /* Convenience secondary menu. */ foreach(array('homeMenu', 'menu') as $menu) { if(!isset($this->lang->$module->$menu)) continue; + /* Sort menu. */ $menuList = $this->lang->$module->$menu; if($menu == 'menu' and isset($this->lang->$module->menuOrder)) { @@ -681,13 +683,15 @@ class devModel extends model $menuList = $this->sortMenus($menuList); } + /* Construct menu tree. */ foreach($menuList as $menuKey => $menuValue) { - if(is_array($menuValue) and !isset($menuValue['link'])) continue; - $link = is_array($menuValue) ? $menuValue['link'] : $menuValue; - if(strpos($link, '|') === false) continue; - list($label, $thisModule, $thisMethod) = explode('|', $link); + $link = $this->getLinkParams($menuValue); + if(!$link) continue; + list($label, $thisModule, $thisMethod) = $link; + + /* Replace menu params. */ if(isset($this->config->dev->linkMethods[$module]["{$thisModule}-{$thisMethod}"])) { list($thisModule, $thisMethod) = $this->config->dev->linkMethods[$module]["{$thisModule}-{$thisMethod}"]; @@ -697,6 +701,7 @@ class devModel extends model $titleList[] = $subMenu->title; $tagMethods[] = $thisMethod; + /* Set three-level menu. */ $this->app->loadLang($thisModule); $hasFeatureBar = false; if(isset($this->lang->$thisModule->featureBar[$thisMethod])) $hasFeatureBar = true; @@ -712,12 +717,14 @@ class devModel extends model $menuValue[$menu]->menuOrder = $menuValue['menuOrder']; $menuValue[$menu] = $this->sortMenus($menuValue[$menu]); } + foreach($menuValue[$menu] as $subMenuKey => $subMenuValue) { - if(is_array($subMenuValue) and !isset($subMenuValue['link'])) continue; - $link = is_array($subMenuValue) ? $subMenuValue['link'] : $subMenuValue; - if(strpos($link, '|') === false) continue; - list($label, $thisModule, $thisMethod) = explode('|', $link); + $link = $this->getLinkParams($subMenuValue); + if(!$link) continue; + + list($label, $thisModule, $thisMethod) = $link; + if($label == '@branch@') $label = $this->lang->dev->branch; /* Get the three-level menu under the drop mene . */ @@ -735,18 +742,8 @@ class devModel extends model } $this->app->loadLang($moduleKey); - if(isset($this->lang->$moduleKey->featureBar[$menuKey][$subMenuKey])) - { - $titleList[] = $label; - $tagMethods[] = $thisMethod; - - $methodKey = "{$thisMethod}_{$subMenuKey}"; - $thirdMenu = $this->getMenuObject($label, $moduleKey, $methodKey, ($methodName == $methodKey and $moduleName == $moduleKey)); - $subMenu->active = 0; - $subMenu->children[] = $thirdMenu; - $hasFeatureBar = true; - } - elseif(isset($this->lang->$moduleKey->featureBar[$thisMethod])) + /* Replace secondary menu. */ + if(isset($this->lang->$moduleKey->featureBar[$thisMethod])) { if(is_array($this->lang->$moduleKey->featureBar[$thisMethod])) { @@ -761,6 +758,17 @@ class devModel extends model $menus["$moduleKey-$thisMethod"] = $subMenu; $hasFeatureBar = false; } + + /* Construct secondary menu subitems. */ + if(isset($this->lang->$moduleKey->featureBar[$menuKey][$subMenuKey])) + { + $titleList[] = $label; + $tagMethods[] = $thisMethod; + + $methodKey = "{$thisMethod}_{$subMenuKey}"; + $subMenu->children[] = $this->getMenuObject($label, $moduleKey, $methodKey, ($methodName == $methodKey and $moduleName == $moduleKey)); + $hasFeatureBar = true; + } } } } @@ -770,6 +778,7 @@ class devModel extends model } } + /* Merge other feature bar menu tree. */ $this->app->loadLang($module); if(isset($this->lang->$module->featureBar)) { @@ -777,12 +786,10 @@ class devModel extends model { if(in_array($method, $tagMethods)) continue; - $label = zget($this->lang->$module, $method, $this->lang->$module->common); - + $label = zget($this->lang->$module, $method, $this->lang->$module->common); $titleList[] = $label; $tagMethods[] = $method; - - $menus[] = $this->getMenuObject($label, $module, $method, ($methodName == $method and $moduleName == $module)); + $menus[] = $this->getMenuObject($label, $module, $method, ($methodName == $method and $moduleName == $module)); } } @@ -809,6 +816,7 @@ class devModel extends model $mainNav = $type == 'second' ? $this->lang->mainNav : array(); if($type != 'second') { + /* Set main nav list. */ foreach($this->lang->mainNav as $menuKey => $menu) { if($menuKey == 'project') @@ -820,6 +828,7 @@ class devModel extends model } } + /* Get menu tree by menu setting. */ $mainNav = $this->getLinkTitle($mainNav); $mainNavPinYin = common::convert2Pinyin($mainNav); foreach($mainNav as $menuKey => $menu) @@ -827,7 +836,7 @@ class devModel extends model $menuItem = $this->getMenuObject($menu, $menuKey, '', ($module == $menuKey and $method == ''), $mainNavPinYin); $childFunc = 'get' . ucfirst($type) . 'Menus'; - if($type == 'tag' and in_array($menuKey, $this->config->dev->projectMenus)) + if($type == 'tag1' and in_array($menuKey, $this->config->dev->projectMenus)) { if($menuKey != 'project') continue; foreach($this->config->dev->projectMenus as $projectModule) @@ -895,6 +904,27 @@ class devModel extends model return $linksTitle; } + /** + * Get link params. + * + * @param string $link + * @access public + * @return array|bool + */ + public function getLinkParams($link) + { + if(is_array($link)) + { + if(!isset($link['link'])) return false; + + $link = $link['link']; + } + + if(strpos($link, '|') === false) return false; + + return explode('|', $link); + } + /** * Parse lang that with commonLang. *