diff --git a/module/bug/control.php b/module/bug/control.php index 187e6b3c7a..027540e689 100644 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -482,7 +482,7 @@ class bug extends control } /* Set custom. */ - $product = $this->product->getById($productID); + $product = $this->product->getById($productID); foreach(explode(',', $this->config->bug->list->customBatchCreateFields) as $field) { if($product->type != 'normal') $customFields[$product->type] = $this->lang->product->branchName[$product->type]; diff --git a/module/bug/model.php b/module/bug/model.php index 78289e4b44..9290177b28 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -105,26 +105,7 @@ class bugModel extends model /* Replace for dropdown submenu. */ if(isset($this->lang->bug->subMenu->$key)) { - $subMenu = array(); - foreach($this->lang->bug->subMenu->$key as $subMenuKey => $subMenuLink) - { - if(isset($subMenuLink['link'])) $subMenuLink = $subMenuLink['link']; - $subMenuLink = vsprintf($subMenuLink, $replace); - list($subMenuName, $subMenuModule, $subMenuMethod, $subMenuParams) = explode('|', $subMenuLink); - - $link = array(); - $link['module'] = $subMenuModule; - $link['method'] = $subMenuMethod; - $link['vars'] = $subMenuParams; - - $menu = new stdclass(); - $menu->name = $subMenuKey; - $menu->link = $link; - $menu->text = $subMenuName; - $menu->hidden = false; - $subMenu[$subMenuKey] = $menu; - - } + $subMenu = common::createSubMenu($this->lang->bug->subMenu->$key, $replace); /* Avoid the menu shaking when change it by js. */ if(isset($subMenu[$browseType])) diff --git a/module/common/model.php b/module/common/model.php index e26e41a067..c164a9fba2 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -349,6 +349,40 @@ class commonModel extends model return $link; } + /** + * Create sub menu by settings in lang files. + * + * @param array $items + * @param mixed $replace + * @static + * @access public + * @return array + */ + public static function createSubMenu($items, $replace) + { + $subMenu = array(); + foreach($items as $subMenuKey => $subMenuLink) + { + if(isset($subMenuLink['link'])) $subMenuLink = $subMenuLink['link']; + $subMenuLink = vsprintf($subMenuLink, $replace); + list($subMenuName, $subMenuModule, $subMenuMethod, $subMenuParams) = explode('|', $subMenuLink); + + $link = array(); + $link['module'] = $subMenuModule; + $link['method'] = $subMenuMethod; + $link['vars'] = $subMenuParams; + + $menu = new stdclass(); + $menu->name = $subMenuKey; + $menu->link = $link; + $menu->text = $subMenuName; + $menu->hidden = false; + $subMenu[$subMenuKey] = $menu; + } + + return $subMenu; + } + /** * Print the main menu. * diff --git a/module/custom/model.php b/module/custom/model.php index 6d66fefbfa..4d1f576faa 100644 --- a/module/custom/model.php +++ b/module/custom/model.php @@ -252,13 +252,6 @@ class customModel extends model if(isset($item['subMenu'])) { - if(isset($customMenuMap[$name]->subMenu)) - { - foreach($customMenuMap[$name]->subMenu as $subItem) - { - if(isset($subItem->hidden) && $subItem->hidden && isset($item['subMenu'][$subItem->name])) $item['subMenu'][$subItem->name]->hidden = true; - } - } foreach($item['subMenu'] as $subItem) { if(isset($subItem->link['module']) && isset($subItem->link['method'])) @@ -266,6 +259,13 @@ class customModel extends model $subItem->hidden = !common::hasPriv($subItem->link['module'], $subItem->link['method']); } } + if(isset($customMenuMap[$name]->subMenu)) + { + foreach($customMenuMap[$name]->subMenu as $subItem) + { + if(isset($subItem->hidden) && isset($item['subMenu'][$subItem->name])) $item['subMenu'][$subItem->name]->hidden = $subItem->hidden; + } + } } if(strpos($name, 'QUERY') === 0 and !isset($customMenuMap[$name])) $hidden = true; diff --git a/module/project/model.php b/module/project/model.php index 19e98d09e8..fe6e80b10e 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -146,26 +146,7 @@ class projectModel extends model /* Replace for dropdown submenu. */ if(isset($this->lang->project->subMenu->$key)) { - $subMenu = array(); - foreach($this->lang->project->subMenu->$key as $subMenuKey => $subMenuLink) - { - if(isset($subMenuLink['link'])) $subMenuLink = $subMenuLink['link']; - $subMenuLink = sprintf($subMenuLink, $projectID); - list($subMenuName, $subMenuModule, $subMenuMethod, $subMenuParams) = explode('|', $subMenuLink); - - $link = array(); - $link['module'] = $subMenuModule; - $link['method'] = $subMenuMethod; - $link['vars'] = $subMenuParams; - - $menu = new stdclass(); - $menu->name = $subMenuKey; - $menu->link = $link; - $menu->text = $subMenuName; - $menu->hidden = false; - $subMenu[$subMenuKey] = $menu; - - } + $subMenu = common::createSubMenu($this->lang->project->subMenu->$key, $projectID); if(!empty($subMenu)) $this->lang->project->menu->{$key}['subMenu'] = $subMenu; } diff --git a/module/testcase/model.php b/module/testcase/model.php index 3a9f4a15e6..7490e3578e 100644 --- a/module/testcase/model.php +++ b/module/testcase/model.php @@ -157,26 +157,7 @@ class testcaseModel extends model /* Replace for dropdown submenu. */ if(isset($this->lang->testcase->subMenu->$key)) { - foreach($this->lang->testcase->subMenu->$key as $subMenuKey => $subMenuLink) - { - if(isset($subMenuLink['link'])) $subMenuLink = $subMenuLink['link']; - $subMenuLink = vsprintf($subMenuLink, $productID); - list($subMenuName, $subMenuModule, $subMenuMethod, $subMenuParams) = explode('|', $subMenuLink); - - $link = array(); - $link['module'] = $subMenuModule; - $link['method'] = $subMenuMethod; - $link['vars'] = $subMenuParams; - - $menu = new stdclass(); - $menu->name = $subMenuKey; - $menu->link = $link; - $menu->text = $subMenuName; - $menu->hidden = false; - $subMenu[$subMenuKey] = $menu; - - } - + $subMenu += common::createSubMenu($this->lang->testcase->subMenu->$key, $productID); } if(!empty($subMenu)) $this->lang->testcase->menu->{$key}['subMenu'] = $subMenu;