global.add_menu_page = ({
page_title,menu_title,menu_slug,power,position,icon,component,component_url,_component,highlight_menu,child_routes
})=>{
// highlight_menu: 是隐藏菜单的路由!并不显示菜单,仅仅是高亮指定菜单,然后显示路由页面。
!highlight_menu && add_filter('_nv_admin_menu',(menu,currentUserPower)=>{
menu = menu || [];
var isDuplicated = false;
// 遍历menu,判定是不是有相同的slug
menu.forEach(m=>{
if ( m.menu_slug == menu_slug || (m.children || []).filter(sm=>sm.menu_slug == menu_slug)[0] ) {
isDuplicated = true;
}
})
if (!isDuplicated && currentUserPower >= power) {
menu.push({
page_title,menu_title,menu_slug,power,position,icon,component,component_url,_component
});
menu.sort((a,b)=>a.position-b.position);
}
return menu;
});
add_filter('_nv_admin_routes',(routes,currentUserPower)=>{
routes = routes || [];
//查找有没有相同的slug,不相同才放进去
if ( !routes.filter(r=>r.menu_slug == menu_slug)[0] && currentUserPower >= power ) {
routes.push({
page_title,menu_slug,component,component_url,_component,highlight_menu,child_routes
});
}
return routes;
});
}
global.remove_menu_page = (menu_slug) =>{
add_filter('_nv_admin_menu',(menu,currentUserPower)=>{
menu = menu || [];
var existed_menu = menu.filter(m=>m.menu_slug == menu_slug)[0];
if (existed_menu) {
var index = menu.indexOf(existed_menu);
menu.splice(index,1);
}
return menu;
})
add_filter('_nv_admin_routes',(routes,currentUserPower)=>{
routes = routes || [];
var existed_route = routes.filter(r=>r.menu_slug == menu_slug)[0];
if (existed_route) {
var index = routes.indexOf(existed_route);
routes.splice(index,1);
}
return routes;
});
}
global.add_submenu_page = ({
parent_slug,page_title,menu_title,menu_slug,power,position,component,component_url,_component,child_routes
})=>{
add_filter('_nv_admin_menu',(menu,currentUserPower)=>{
menu = menu || [];
var parent = null;
var isDuplicated = false;
// 遍历menu,找到parent,并且判定是不是有相同的slug
menu.forEach(m=>{
if (m.menu_slug == parent_slug) {
parent = m;
}
if ( m.menu_slug == menu_slug || (m.children || []).filter(sm=>sm.menu_slug == menu_slug)[0] ) {
isDuplicated = true;
}
})
if (!isDuplicated && parent) {
var children = parent.children || [];
if (currentUserPower >= power) {
children.push({
parent_slug,page_title,menu_title,menu_slug,power,position,component,component_url,_component
});
children.sort((a,b)=>a.position-b.position);
}
parent.children = children;
}
return menu;
});
add_filter('_nv_admin_routes',(routes,currentUserPower)=>{
routes = routes || [];
//查找有没有相同的slug,不相同才放进去
if ( !routes.filter(r=>r.menu_slug == menu_slug)[0] && currentUserPower >= power ) {
routes.push({
page_title,menu_slug,component,component_url,_component,child_routes
});
//既然有了二级菜单,那么一级菜单就不需要导航了,把它移除掉
var parent = routes.filter(r=>r.menu_slug == parent_slug)[0];
if (parent) {
routes.splice( routes.indexOf(parent), 1 );
}
}
return routes;
});
}
global.remove_submenu_page = (parent_slug, menu_slug) =>{
if (!parent_slug || !menu_slug) {return;}
add_filter('_nv_admin_menu',(menu,currentUserPower)=>{
menu = menu || [];
var existed_parent = menu.filter(m=>m.menu_slug == parent_slug)[0];
if (existed_parent) {
var existed_child = (existed_parent.children || []).filter(sm=>sm.menu_slug == menu_slug)[0];
if (existed_child) {
var index = existed_parent.children.indexOf(existed_child);
existed_parent.children.splice(index,1);
}
}
return menu;
});
add_filter('_nv_admin_routes',(routes,currentUserPower)=>{
routes = routes || [];
//移除二级
var existed_route = routes.filter(r=>r.menu_slug == menu_slug)[0];
if (existed_route) {
var index = routes.indexOf(existed_route);
routes.splice(index,1);
}
return routes;
});
}
/*global.add_package_config_page = ({
page_title, page_slug, position, power, component_url, _component, child_routes
})=>{
add_filter('_nv_admin_menu', (menu,currentUserPower) => {
menu = menu || [];
var parent = null;
menu.forEach(m=>{
if ( m.menu_slug == 'packages' ) {
parent = m;
}
})
var package_config = null;
if (parent) {
var children = parent.children || [];
children.forEach(sm=>{
if (sm.menu_slug == 'package_config') {
package_config = sm;
}
})
}
if (parent && !package_config && currentUserPower >= power) {
parent.children = parent.children || [];
parent.children.push({
parent_slug: 'packages',
page_title: '配置套件',
menu_title: '配置',
menu_slug: 'package_config',
power: currentUserPower,
position: 10,
_component: "packageConfig"
});
}
return menu;
})
add_filter('_nv_admin_routes', (routes,currentUserPower)=> {
routes = routes || [];
if ( !routes.filter(r=>r.menu_slug == 'package_config')[0] && currentUserPower >= power ) {
routes.push({
page_title: '配置套件',
menu_slug: 'package_config',
_component: "packageConfig",
child_routes: [],
})
}
var package_config_route = routes.filter(r=>r.menu_slug == 'package_config')[0];
package_config_route.child_routes.push({
path: page_slug,
name: page_title,
_component,
component_url,
child_routes,
metas: {
position
}
})
package_config_route.child_routes.sort
return routes;
})
}*/