public static void GenerateAuthItems(this ObservableCollection <AuthMenuItemMsg> dataItems, AuthMenuItemMsg parentItem, ref ObservableCollection <AuthMenuItem> menuItems, ref ObservableCollection <AuthMenuItem> navigateItems, ref ObservableCollection <AuthMenuItem> authUris) { menuItems = new ObservableCollection <AuthMenuItem>(); navigateItems = new ObservableCollection <AuthMenuItem>(); if (dataItems != null) { // 1、Find matched items List <AuthMenuItemMsg> matchedItems = new List <AuthMenuItemMsg>(); foreach (AuthMenuItemMsg item in dataItems) { if ((parentItem == null && item.ParentMenuId == null) || (parentItem != null && item.ParentMenuId == parentItem.MenuId)) { matchedItems.Add(item); } } // 2、Remove matched items from original collection foreach (AuthMenuItemMsg item in matchedItems) { dataItems.Remove(item); } // 3、Find children for matched items foreach (AuthMenuItemMsg item in matchedItems) { ObservableCollection <AuthMenuItem> subMenuItems = null; ObservableCollection <AuthMenuItem> subNavigateItems = null; GenerateAuthItems(dataItems, item, ref subMenuItems, ref subNavigateItems, ref authUris); if (item.Type == MenuTypeEnum.Page || item.Type == MenuTypeEnum.Link || subMenuItems.Count > 0) { if (item.IsDisplay) { AuthMenuItem menuItem = item.ToEntity(); menuItem.Items = subMenuItems; menuItems.Add(menuItem); } } if (item.Type == MenuTypeEnum.Page || item.Type == MenuTypeEnum.Link || subNavigateItems.Count > 0) { AuthMenuItem menuItem = item.ToEntity(); menuItem.Items = subNavigateItems; navigateItems.Add(menuItem); } if (item.Type == MenuTypeEnum.Category || item.Type == MenuTypeEnum.Page || item.Type == MenuTypeEnum.Link) { var a = item.ToEntity(); a.Parent = parentItem.ToEntity(); authUris.Add(a); } } } }
ItemData GenerateMenuItemData(AuthMenuItem item) { var item1 = new ItemData { Name = item.Name, Url = item.URL, Id = item.Id, IsPage = (item.Type != AuthMenuItemType.Category ? true : false) }; if (item.Type == AuthMenuItemType.Page) { MenuControlArea.MenuFlatData.Add(item1); } if (item.Items != null) { item1.SubItems = new List <ItemData>(); foreach (var subItem in item.Items) { item1.SubItems.Add(GenerateMenuItemData(subItem)); } } return(item1); }
public static AuthMenuItem ToEntity(this AuthMenuItemMsg msg) { AuthMenuItem entity = null; if (msg != null) { entity = new AuthMenuItem() { Id = msg.MenuId.ToString(), Name = msg.DisplayName, Description = msg.Description, IconStyle = msg.IconStyle, IsDisplay = msg.IsDisplay, URL = msg.LinkPath, Type = msg.Type.ToEntity(), AuthKey = msg.AuthKey }; } return(entity); }
private static string FindParentName(AuthMenuItem menuItem) { AuthMenuItem current = menuItem.Parent == null ? menuItem : menuItem.Parent; if (current.Parent == null) { foreach (var item in s_list) { if (current.Id == item.Id) { current = item.Parent; break; } } } if (current != null) { return(current.Name); } else { return(""); } }
private void GetNavigateItems(ref ObservableCollection <AuthMenuItem> list, ObservableCollection <AuthMenuItem> items, AuthMenuItem parent) { foreach (var authMenuItem in items) { authMenuItem.Parent = parent; if (authMenuItem.Type == AuthMenuItemType.Page) { list.Add(authMenuItem); } if (authMenuItem.Items != null && authMenuItem.Items.Count > 0) { GetNavigateItems(ref list, authMenuItem.Items, authMenuItem); } } }