* change model motheds for menus.
This commit is contained in:
+34
-31
@@ -404,7 +404,7 @@ class commonModel extends model
|
||||
if($menuItem->hidden) continue;
|
||||
$active = $menuItem->name == $mainMenu ? "class='$activeName'" : '';
|
||||
$link = is_array($menuItem->link) ? helper::createLink($menuItem->link['module'], $menuItem->link['method'], $menuItem->link['vars']) : $menuItem->link;
|
||||
echo "<li $active data-id='$menuItem->name'><a href='$link' $active>$menuItem->label</a></li>\n";
|
||||
echo "<li $active data-id='$menuItem->name'><a href='$link' $active>$menuItem->text</a></li>\n";
|
||||
}
|
||||
$customLink = helper::createLink('custom', 'menu');
|
||||
echo "<li class='custom-item'><a href='$customLink' data-toggle='modal' data-type='iframe' title='$lang->customMenu' data-icon='cog'><i class='icon icon-cog'></i></a></li>";
|
||||
@@ -466,50 +466,53 @@ class commonModel extends model
|
||||
{
|
||||
global $lang, $app;
|
||||
|
||||
if(!isset($lang->$moduleName->menu)) {echo "<ul></ul>"; return;}
|
||||
if(!isset($lang->$moduleName->menu))
|
||||
{
|
||||
echo "<ul></ul>";
|
||||
return;
|
||||
}
|
||||
|
||||
/* Get the sub menus of the module, and get current module and method. */
|
||||
$submenus = $lang->$moduleName->menu;
|
||||
/* get current module and method. */
|
||||
$currentModule = $app->getModuleName();
|
||||
$currentMethod = $app->getMethodName();
|
||||
$menu = customModel::getModuleMenu($moduleName);
|
||||
|
||||
/* The beginning of the menu. */
|
||||
echo "<ul class='nav'>\n";
|
||||
|
||||
/* Cycling to print every sub menus. */
|
||||
foreach($app->customMenu['module'] as $subMenuKey => $submenu)
|
||||
foreach($menu as $menuItem)
|
||||
{
|
||||
|
||||
/* Init the these vars. */
|
||||
$link = $submenu;
|
||||
$subModule = '';
|
||||
$alias = '';
|
||||
$float = '';
|
||||
$active = '';
|
||||
$target = '';
|
||||
$status = '';
|
||||
$order = '';
|
||||
|
||||
if(is_array($submenu)) extract($submenu); // If the sub menu is an array, extract it.
|
||||
if($status == 'hide') continue;
|
||||
|
||||
/* Print the menu. */
|
||||
if(strpos($link, '|') === false)
|
||||
if($menuItem->link)
|
||||
{
|
||||
echo "<li>$link</li>\n";
|
||||
$active = '';
|
||||
$float = '';
|
||||
$alias = '';
|
||||
$target = '';
|
||||
$module = '';
|
||||
$method = '';
|
||||
$link = is_array($menuItem->link) ? helper::createLink($menuItem->link['module'], $menuItem->link['method'], $menuItem->link['vars']) : $menuItem->link;
|
||||
if(is_array($menuItem->link))
|
||||
{
|
||||
if($menuItem->link['subModule'])
|
||||
{
|
||||
$subModules = explode(',', $menuItem->link['subModule']);
|
||||
if(in_array($currentModule, $subModules) and $float != 'right') $active = 'active';
|
||||
}
|
||||
$alias = $menuItem->link['alias'];
|
||||
$target = $menuItem->link['target'];
|
||||
$float = $menuItem->link['float'];
|
||||
$module = $menuItem->link['module'];
|
||||
$method = $menuItem->link['method'];
|
||||
}
|
||||
if($float != 'right' and $module == $currentModule and ($method == $currentMethod or strpos(",$alias,", ",$currentMethod,") !== false)) $active = 'active';
|
||||
echo "<li class='$float $active'>" . html::a($link, $menuItem->text, $target, "data-id='$menuItem->name'") . "</li>\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$link = explode('|', $link);
|
||||
list($label, $module, $method) = $link;
|
||||
$vars = isset($link[3]) ? $link[3] : '';
|
||||
if(commonModel::hasPriv($module, $method))
|
||||
{
|
||||
/* Is the currentModule active? */
|
||||
$subModules = explode(',', $subModule);
|
||||
if(in_array($currentModule,$subModules) and $float != 'right') $active = 'active';
|
||||
if($module == $currentModule and ($method == $currentMethod or strpos(",$alias,", ",$currentMethod,") !== false) and $float != 'right') $active = 'active';
|
||||
echo "<li class='$float $active'>" . html::a(helper::createLink($module, $method, $vars), $label, $target, "id=submenu$subMenuKey") . "</li>\n";
|
||||
}
|
||||
echo "<li>$menuItem->text</li>\n";
|
||||
}
|
||||
}
|
||||
echo "</ul>\n";
|
||||
|
||||
@@ -188,17 +188,15 @@ class custom extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function menu($type = 'main')
|
||||
public function menu($module = 'main')
|
||||
{
|
||||
a(customModel::getModuleMenu($module));
|
||||
global $config;
|
||||
if($_POST)
|
||||
{
|
||||
$config->menucustom->main = $_POST['menu'];
|
||||
$this->send(array('result' => 'success', 'menu' => $_POST['menu']));
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->send(customModel::getMainMenu());
|
||||
}
|
||||
$this->send(json_encode(customModel::getModuleMenu($module)));
|
||||
}
|
||||
}
|
||||
|
||||
+93
-13
@@ -123,14 +123,16 @@ class customModel extends model
|
||||
->beginIF($params['key'])->andWhere('`key`')->in($params['key'])->fi();
|
||||
}
|
||||
|
||||
public static function getMainMenu($rebuild = false)
|
||||
public static function getModuleMenu($module = 'main', $rebuild = false)
|
||||
{
|
||||
if(empty($module)) $module = 'main';
|
||||
|
||||
global $app, $lang, $config;
|
||||
// if(empty($app->customMenu)) $app->customMenu = array();
|
||||
// if(!$rebuild && !empty($app->customMenu['main'])) return $app->customMenu['main'];
|
||||
// if(!$rebuild && !empty($app->customMenu[$module])) return $app->customMenu[$module];
|
||||
|
||||
$menuConfig = $config->menucustom->main;
|
||||
if(!isset($menuConfig) && common::inNoviceMode()) $menuConfig = $config->menu->main['novice'];
|
||||
$menuConfig = $config->menucustom->$module;
|
||||
if(!isset($menuConfig) && common::inNoviceMode()) $menuConfig = $config->menu->$module['novice'];
|
||||
$isSetMenuConfig = isset($menuConfig);
|
||||
|
||||
if($isSetMenuConfig)
|
||||
@@ -147,31 +149,109 @@ class customModel extends model
|
||||
}
|
||||
|
||||
$menu = array();
|
||||
foreach($lang->menu as $name => $item)
|
||||
$allMenu = $module == 'main' ? $lang->menu : $lang->$module->menu;
|
||||
|
||||
foreach($allMenu as $name => $item)
|
||||
{
|
||||
$link = explode('|', $item);
|
||||
list($label, $module, $method) = $link;
|
||||
$label = '';
|
||||
$module = '';
|
||||
$method = '';
|
||||
$link = is_array($item) ? $item['link'] : $item;
|
||||
if(strpos($link, '|') !== false)
|
||||
{
|
||||
$link = explode('|', $link);
|
||||
list($label, $module, $method) = $link;
|
||||
}
|
||||
else
|
||||
{
|
||||
$label = $link;
|
||||
}
|
||||
|
||||
if(commonModel::hasPriv($module, $method))
|
||||
{
|
||||
$vars = isset($link[3]) ? $link[3] : '';
|
||||
$itemLink = '';
|
||||
if($module && $method)
|
||||
{
|
||||
$itemLink = array('module' => $module, 'method' => $method);
|
||||
if($link[3]) $itemLink['vars'] = $link[3];
|
||||
if(is_array($item))
|
||||
{
|
||||
$itemLink['subModule'] = $item['subModule'];
|
||||
$itemLink['alias'] = $item['alias'];
|
||||
$itemLink['target'] = $item['target'];
|
||||
$itemLink['float'] = $item['float'];
|
||||
}
|
||||
}
|
||||
|
||||
$menuItem = new stdclass();
|
||||
$menuItem->name = $name;
|
||||
$menuItem->link = array('module' => $module, 'method' => $method, 'vars' => $vars);
|
||||
$menuItem->label = $label;
|
||||
$menuItem->link = $itemLink;
|
||||
$menuItem->text = $label;
|
||||
$menuItem->source = $item;
|
||||
$menuItem->hidden = $isSetMenuConfig && (!$menuConfig[$name]);
|
||||
|
||||
$menu[] = $menuItem;
|
||||
}
|
||||
}
|
||||
// $app->customMenu['main'] = $menu;
|
||||
// $app->customMenu[$module] = $menu;
|
||||
return $menu;
|
||||
}
|
||||
|
||||
public static function getModuleMenu()
|
||||
public static function getMainMenu($rebuild = false)
|
||||
{
|
||||
|
||||
return self::getModuleMenu('main', $rebuild);
|
||||
}
|
||||
|
||||
public static function getFeatureMenu($module, $method)
|
||||
{
|
||||
global $app, $lang, $config;
|
||||
$menucustomKey = 'menucustom' . $module;
|
||||
|
||||
$app->loadLang($module);
|
||||
$featurebar = '';
|
||||
if(isset($lang->$module->featurebar[$method])) $featurebar = $lang->$module->featurebar[$method];
|
||||
$menucustomKey = 'menucustom' . $module;
|
||||
return $featurebar;
|
||||
if($featurebar)
|
||||
{
|
||||
$menuOrder = array();
|
||||
$menuStatus = array();
|
||||
if(isset($config->$menucustomKey->$method))
|
||||
{
|
||||
$menuStatus = json_decode($config->$menucustomKey->$method, true);
|
||||
foreach($menuStatus as $menuKey => $status) $menuOrder[] = $menuKey;
|
||||
}
|
||||
|
||||
/* Merge all menu. */
|
||||
$inOrderMenu = ',' . join(',', $menuOrder) . ',';
|
||||
$notInOrderMenu = array();
|
||||
foreach($featurebar as $menuKey => $menuName)
|
||||
{
|
||||
if(strpos($inOrderMenu, ",$menuKey,") === false) $notInOrderMenu[] = $menuKey;
|
||||
}
|
||||
if($notInOrderMenu)
|
||||
{
|
||||
$order = count($menuOrder);
|
||||
foreach($notInOrderMenu as $menuKey)
|
||||
{
|
||||
$menuOrder[$order] = $menuKey;
|
||||
$order++;
|
||||
}
|
||||
}
|
||||
ksort($menuOrder, SORT_ASC);
|
||||
|
||||
$processedMenu = new stdclass();
|
||||
foreach($menuOrder as $order => $menuKey)
|
||||
{
|
||||
$menuContent = $featurebar[$menuKey];
|
||||
$menuContent = array('link' => $menuContent);
|
||||
$menuContent['status'] = isset($menuStatus[$menuKey]) ? $menuStatus[$menuKey] : 'show';
|
||||
$menuContent['order'] = ($order + 1) * 5;
|
||||
|
||||
$processedMenu->$menuKey = $menuContent;
|
||||
}
|
||||
$processedMenus['featurebar'] = $processedMenu;
|
||||
}
|
||||
}
|
||||
|
||||
public static function getCustomMenu($module, $method)
|
||||
|
||||
Reference in New Issue
Block a user