/// <summary> /// Generates the bread crumbs. /// </summary> /// <param name="action">The action.</param> /// <param name="addHomepageAction">A value indicating the homepage's action will be added to the collection.</param> public void Generate(Action action, bool addHomepageAction) { this.Clear(); UserContext user = UserContext.Current; IList actionIdList = null; bool isFrameworkAdmin = false; bool isAuthenticated = false; if (user != null) { actionIdList = user.ActionIdList; isAuthenticated = true; isFrameworkAdmin = (user.IsFrameworkAdministrator && (user.OrganizationId == Guid.Empty)); } Action item = action; while (item != null && item.ActionId != ActionProvider.PagesAndControlsActionId && item.ActionId != ActionProvider.GlobalNavigationLinksActionId) { if ((!item.GroupInDetailMenu) && (ActionProvider.ShowAction(item, actionIdList, isFrameworkAdmin, isAuthenticated))) { Insert(0, item); } item = item.ParentAction; } if (addHomepageAction) { this.AddHomePageAction(); } }
private void BuildMenus() { ActionCollection allItems = (this.DataSource as ActionCollection); if (allItems == null) { if ((this.ParentAction == null) || (this.ParentAction.ActionType != ActionType.Page)) { return; } allItems = m_ParentAction.GetAvailableChildActions(m_ActionIdList, m_IsFrameworkAdmin, m_IsAuthenticated); bool flag = false; if (MasterPage != null) { flag = (MasterPage.IsHomepage && ((!MasterPage.VisibleMainMenu) || allItems.Count == 0)); } if (flag || (this.VisibleSiblingItems.HasValue && this.VisibleSiblingItems.Value)) { ActionCollection siblingActions = new ActionCollection(); foreach (Micajah.Common.Bll.Action item in ActionProvider.PagesAndControls.GetAvailableSiblingActions(m_ParentAction)) { if (ActionProvider.ShowAction(item, m_ActionIdList, m_IsFrameworkAdmin, m_IsAuthenticated)) { siblingActions.Add(item); } } allItems.AddRange(siblingActions); } } if (allItems != null) { foreach (Micajah.Common.Bll.Action item in allItems) { if (item.ShowInDetailMenu) { m_PrimaryMenuItems.Add(item); } else { m_OtherMenuItems.Add(item); } } } }
/// <summary> /// Gets a collection of the visible child actions, also taking into consideration the access rights. /// </summary> internal ActionCollection GetAvailableChildActions(IList actionIdList, bool isFrameworkAdmin, bool isAuthenticated) { ActionCollection coll = new ActionCollection(); foreach (Action item in this.ChildActions) { if (item.Visible) { if (!ActionProvider.ShowAction(item, actionIdList, isFrameworkAdmin, isAuthenticated)) { continue; } if (item.AccessDenied()) { continue; } coll.Add(item); } } return(coll); }