* finish task #4487.

This commit is contained in:
liugang
2018-07-11 10:23:13 +08:00
parent b432ee4598
commit 3d4f7b86d9
4 changed files with 49 additions and 17 deletions
+8 -6
View File
@@ -510,6 +510,8 @@ class commonModel extends model
/* Print sub menus. */
if(isset($menuItem->subMenu))
{
$link = '';
$label = '';
foreach($menuItem->subMenu as $subMenuItem)
{
if($subMenuItem->hidden) continue;
@@ -525,16 +527,16 @@ class commonModel extends model
$subLink = helper::createLink($subModule, $subMethod, $subParams);
if($currentModule == strtolower($subModule) && $currentMethod == strtolower($subMethod))
{
$link = $subLink;
$label = $subLabel;
$subActive = 'active';
}
if($currentModule == strtolower($subModule) && $currentMethod == strtolower($subMethod)) $subActive = 'active';
$subMenu .= "<li class='$subActive'>" . html::a($subLink, $subLabel) . '</li>';
if(!$link) $link = $subLink;
if(!$label) $label = $subLabel;
}
if(!$link or !$label) continue;
if($subMenu)
{
$label .= "<span class='caret'></span>";
+28 -7
View File
@@ -45,9 +45,10 @@ $(function()
if(!item.text || item.fixed) return;
var $a = $('<a href="#"/>').append(item.text);
$a.data('menu', item).append('<i class="item-hidden-icon icon icon-eye-off"></i>');
$('<li/>').attr('data-id', item.name).toggleClass('right', item.float === 'right').toggleClass('menu-hidden', !!item.hidden).append($a).appendTo($nav);
var hidden = !!item.hidden;
if(item.subMenu)
{
hidden = true;
$a.addClass('dropdown dropdown-hover').append("<span class='caret'></span><ul class='dropdown-menu'></ul>");
var $dropmenu = $a.find('.dropdown-menu');
$.each(item.subMenu, function(subIdx, subItem)
@@ -56,6 +57,8 @@ $(function()
var $subA = $('<a href="#"/>').append(subItem.text);
$subA.data('menu', subItem).append('<i class="item-hidden-icon icon icon-eye-off"></i>');
$('<li/>').attr('data-id', subItem.name).toggleClass('right', subItem.float === 'right').toggleClass('menu-hidden', !!subItem.hidden).append($subA).appendTo($dropmenu);
hidden = subItem.hidden && hidden;
});
var $aInner = $a.children('a');
if ($aInner.length)
@@ -69,6 +72,7 @@ $(function()
$dropmenu.remove();
}
}
$('<li/>').attr('data-id', item.name).toggleClass('right', item.float === 'right').toggleClass('menu-hidden', hidden).append($a).appendTo($nav);
});
$nav.sortable({finish: function(e)
{
@@ -134,17 +138,19 @@ $(function()
var data = {name: item.name, order: parseInt(item.order)};
if(item.hidden) data.hidden = true;
if(item.float) data.float = item.float;
dataList.push(data);
if (item.subMenu)
if(item.subMenu)
{
var subMenu = [];
$.each(item.subMenu, function(sIdx, subItem)
{
var subData = {name: subItem.name, order: parseInt(subItem.order)};
if(subItem.hidden) subData.hidden = true;
if(subItem.float) subData.float = subItem.float;
dataList.push(subData);
subMenu.push(subData);
});
data.subMenu = subMenu;
}
dataList.push(data);
});
return dataList;
};
@@ -221,9 +227,11 @@ $(function()
}
}).on('click', '.nav>li>a,.dropdown-menu>li>a', function(e)
{
var $a = $(this);
var item = $a.data('menu');
if (!item) return;
var $a = $(this);
var item = $a.data('menu');
if(!item) return;
if($a.find('.dropdown-menu').length) return;
var $menu = $a.closest('nav');
var moduleName = item.link && item.link['module'] ? item.link['module'] : item.name;
var methodName = item.link && item.link['method'] ? item.link['method'] : '';
@@ -234,6 +242,19 @@ $(function()
methodName = item.name;
}
$a.parent().toggleClass('menu-hidden', item.hidden);
/* Update parent menu by sub menu. */
if($a.parent().parent().hasClass('dropdown-menu'))
{
var hidden = true;
$a.parent().parent().children().each(function()
{
hidden = $(this).hasClass('menu-hidden') && hidden;
});
$a.parent().parent().parent().parent().toggleClass('menu-hidden', item.hidden);
}
updateConfig($menu);
e.stopPropagation();
});
+11 -2
View File
@@ -201,8 +201,8 @@ class customModel extends model
/* Merge fileMenu and customMenu. */
foreach($customMenuMap as $name => $item)
{
if(is_object($allMenu) and !isset($allMenu->$name))$allMenu->$name = $item;
if(is_array($allMenu) and !isset($allMenu[$name]))$allMenu[$name] = $item;
if(is_object($allMenu) and !isset($allMenu->$name)) $allMenu->$name = $item;
if(is_array($allMenu) and !isset($allMenu[$name])) $allMenu[$name] = $item;
}
foreach($allMenu as $name => $item)
@@ -249,6 +249,15 @@ class customModel extends model
}
$hidden = isset($customMenuMap[$name]) && isset($customMenuMap[$name]->hidden) && $customMenuMap[$name]->hidden;
if(isset($item['subMenu']) && 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;
}
}
if(strpos($name, 'QUERY') === 0 and !isset($customMenuMap[$name])) $hidden = true;
$menuItem = new stdclass();
+2 -2
View File
@@ -146,7 +146,7 @@ class projectModel extends model
/* Replace for dropdown submenu. */
if(isset($this->lang->project->subMenu->$key))
{
$subMenu = array();
$subMenu = array();
foreach($this->lang->project->subMenu->$key as $subMenuKey => $subMenuLink)
{
if(isset($subMenuLink['link'])) $subMenuLink = $subMenuLink['link'];
@@ -163,7 +163,7 @@ class projectModel extends model
$menu->link = $link;
$menu->text = $subMenuName;
$menu->hidden = false;
$subMenu[] = $menu;
$subMenu[$subMenuKey] = $menu;
}