/// ----------------------------------------------------------------------------- /// <summary> /// This function provides a central location to obtain a generic node collection of the pages/tabs included in /// the current context's (user) navigation hierarchy /// </summary> /// <param name="objRootNode">Node in which to add children to</param> /// <param name="eToolTips">Enumerator to determine what text to display in the tooltips</param> /// <param name="intStartTabId">If using Populate On Demand, then this is the tab id of the root element to retrieve (-1 for no POD)</param> /// <param name="intDepth">If Populate On Demand is enabled, then this parameter determines the number of nodes to retrieve beneath the starting tab passed in (intStartTabId) (-1 for no POD)</param> /// <param name="intNavNodeOptions">Bitwise integer containing values to determine what nodes to display (self, siblings, parent)</param> /// <returns>Collection of DNNNodes</returns> /// <remarks> /// Returns a subset of navigation nodes based off of passed in starting node id and depth /// </remarks> /// <history> /// [Jon Henning] 8/9/2005 Created /// </history> /// ----------------------------------------------------------------------------- public static DNNNodeCollection GetNavigationNodes(DNNNode objRootNode, ToolTipSource eToolTips, int intStartTabId, int intDepth, int intNavNodeOptions) { int i; PortalSettings objPortalSettings = PortalController.GetCurrentPortalSettings(); bool blnFoundStart = intStartTabId == -1; var objBreadCrumbs = new Hashtable(); var objTabLookup = new Hashtable(); DNNNodeCollection objRootNodes = objRootNode.DNNNodes; int intLastBreadCrumbId = 0; //--- cache breadcrumbs in hashtable so we can easily set flag on node denoting it as a breadcrumb node (without looping multiple times) --- for (i = 0; i <= (objPortalSettings.ActiveTab.BreadCrumbs.Count - 1); i++) { objBreadCrumbs.Add(((TabInfo)objPortalSettings.ActiveTab.BreadCrumbs[i]).TabID, 1); intLastBreadCrumbId = ((TabInfo)objPortalSettings.ActiveTab.BreadCrumbs[i]).TabID; } var objTabController = new TabController(); List <TabInfo> portalTabs = TabController.GetTabsBySortOrder(objPortalSettings.PortalId, objPortalSettings.CultureCode, true); List <TabInfo> hostTabs = TabController.GetTabsBySortOrder(Null.NullInteger, Localization.SystemLocale, true); foreach (TabInfo objTab in portalTabs) { objTabLookup.Add(objTab.TabID, objTab); } foreach (TabInfo objTab in hostTabs) { objTabLookup.Add(objTab.TabID, objTab); } foreach (TabInfo objTab in portalTabs) { try { ProcessTab(objRootNode, objTab, objTabLookup, objBreadCrumbs, intLastBreadCrumbId, eToolTips, intStartTabId, intDepth, intNavNodeOptions); } catch (Exception ex) { throw ex; } } foreach (TabInfo objTab in hostTabs) { try { ProcessTab(objRootNode, objTab, objTabLookup, objBreadCrumbs, intLastBreadCrumbId, eToolTips, intStartTabId, intDepth, intNavNodeOptions); } catch (Exception ex) { throw ex; } } return(objRootNodes); }
public static NodeCollection GetNavigationNodes(Node objRootNode, ToolTipSource eToolTips, int intStartTabId, int intDepth, int intNavNodeOptions) { int i; PortalSettings objPortalSettings = PortalController.GetCurrentPortalSettings(); bool blnFoundStart = intStartTabId == -1; Hashtable objBreadCrumbs = new Hashtable(); Hashtable objTabLookup = new Hashtable(); NodeCollection objRootNodes = objRootNode.Nodes; int intLastBreadCrumbId = 0; for (i = 0; i <= (objPortalSettings.ActiveTab.BreadCrumbs.Count - 1); i++) { objBreadCrumbs.Add(((TabInfo)objPortalSettings.ActiveTab.BreadCrumbs[i]).TabID, 1); intLastBreadCrumbId = ((TabInfo)objPortalSettings.ActiveTab.BreadCrumbs[i]).TabID; } TabController objTabController = new TabController(); List <TabInfo> portalTabs = TabController.GetTabsBySortOrder(objPortalSettings.PortalId); List <TabInfo> hostTabs = TabController.GetTabsBySortOrder(Null.NullInteger); foreach (TabInfo objTab in portalTabs) { objTabLookup.Add(objTab.TabID, objTab); } foreach (TabInfo objTab in hostTabs) { objTabLookup.Add(objTab.TabID, objTab); } foreach (TabInfo objTab in portalTabs) { try { ProcessTab(objRootNode, objTab, objTabLookup, objBreadCrumbs, intLastBreadCrumbId, eToolTips, intStartTabId, intDepth, intNavNodeOptions); } catch (Exception ex) { throw ex; } } foreach (TabInfo objTab in hostTabs) { try { ProcessTab(objRootNode, objTab, objTabLookup, objBreadCrumbs, intLastBreadCrumbId, eToolTips, intStartTabId, intDepth, intNavNodeOptions); } catch (Exception ex) { throw ex; } } return(objRootNodes); }
/// ----------------------------------------------------------------------------- /// <summary> /// This function provides a central location to obtain a generic node collection of the pages/tabs included in /// the current context's (user) navigation hierarchy. /// </summary> /// <param name="objRootNode">Node in which to add children to.</param> /// <param name="eToolTips">Enumerator to determine what text to display in the tooltips.</param> /// <param name="intStartTabId">If using Populate On Demand, then this is the tab id of the root element to retrieve (-1 for no POD).</param> /// <param name="intDepth">If Populate On Demand is enabled, then this parameter determines the number of nodes to retrieve beneath the starting tab passed in (intStartTabId) (-1 for no POD).</param> /// <param name="intNavNodeOptions">Bitwise integer containing values to determine what nodes to display (self, siblings, parent).</param> /// <returns>Collection of DNNNodes.</returns> /// <remarks> /// Returns a subset of navigation nodes based off of passed in starting node id and depth. /// </remarks> /// ----------------------------------------------------------------------------- public static DNNNodeCollection GetNavigationNodes(DNNNode objRootNode, ToolTipSource eToolTips, int intStartTabId, int intDepth, int intNavNodeOptions) { var objPortalSettings = PortalController.Instance.GetCurrentPortalSettings(); var objBreadCrumbs = new Hashtable(); var objTabLookup = new Hashtable(); var objRootNodes = objRootNode.DNNNodes; var intLastBreadCrumbId = 0; //--- cache breadcrumbs in hashtable so we can easily set flag on node denoting it as a breadcrumb node (without looping multiple times) --- foreach (TabInfo tabInfo in objPortalSettings.ActiveTab.BreadCrumbs) { objBreadCrumbs.Add(tabInfo.TabID, 1); intLastBreadCrumbId = tabInfo.TabID; } var portalTabs = TabController.GetTabsBySortOrder(objPortalSettings.PortalId, objPortalSettings.CultureCode, true); var hostTabs = TabController.GetTabsBySortOrder(Null.NullInteger, Localization.SystemLocale, true); var cachedPortalTabs = new List <TabInfo>(portalTabs); foreach (var objTab in cachedPortalTabs) { objTabLookup.Add(objTab.TabID, objTab); } var cachedHostTabs = new List <TabInfo>(hostTabs); foreach (var objTab in cachedHostTabs) { objTabLookup.Add(objTab.TabID, objTab); } // convert dnn nodes to dictionary. var nodesDict = new Dictionary <string, DNNNode>(); SaveDnnNodesToDictionary(nodesDict, objRootNodes); foreach (var objTab in cachedPortalTabs) { ProcessTab(objRootNode, objTab, objTabLookup, objBreadCrumbs, intLastBreadCrumbId, eToolTips, intStartTabId, intDepth, intNavNodeOptions, nodesDict); } foreach (var objTab in cachedHostTabs) { ProcessTab(objRootNode, objTab, objTabLookup, objBreadCrumbs, intLastBreadCrumbId, eToolTips, intStartTabId, intDepth, intNavNodeOptions, nodesDict); } return(objRootNodes); }
/// ----------------------------------------------------------------------------- /// <summary> /// This function provides a central location to obtain a generic node collection of the pages/tabs included in /// the current context's (user) navigation hierarchy /// </summary> /// <param name="strNamespace">Namespace (typically control's ClientID) of node collection to create</param> /// <param name="eToolTips">Enumerator to determine what text to display in the tooltips</param> /// <param name="intStartTabId">If using Populate On Demand, then this is the tab id of the root element to retrieve (-1 for no POD)</param> /// <param name="intDepth">If Populate On Demand is enabled, then this parameter determines the number of nodes to retrieve beneath the starting tab passed in (intStartTabId) (-1 for no POD)</param> /// <param name="intNavNodeOptions">Bitwise integer containing values to determine what nodes to display (self, siblings, parent)</param> /// <returns>Collection of DNNNodes</returns> /// <remarks> /// Returns a subset of navigation nodes based off of passed in starting node id and depth /// </remarks> /// <history> /// [Jon Henning] 8/9/2005 Created /// </history> /// ----------------------------------------------------------------------------- public static DNNNodeCollection GetNavigationNodes(string strNamespace, ToolTipSource eToolTips, int intStartTabId, int intDepth, int intNavNodeOptions) { var objCol = new DNNNodeCollection(strNamespace); return GetNavigationNodes(new DNNNode(objCol.XMLNode), eToolTips, intStartTabId, intDepth, intNavNodeOptions); }
private static void ProcessTab(DNNNode objRootNode, TabInfo objTab, Hashtable objTabLookup, Hashtable objBreadCrumbs, int intLastBreadCrumbId, ToolTipSource eToolTips, int intStartTabId, int intDepth, int intNavNodeOptions) { PortalSettings objPortalSettings = PortalController.GetCurrentPortalSettings(); DNNNodeCollection objRootNodes = objRootNode.DNNNodes; bool showHidden = (intNavNodeOptions & (int)NavNodeOptions.IncludeHiddenNodes) == (int)NavNodeOptions.IncludeHiddenNodes; if (CanShowTab(objTab, TabPermissionController.CanAdminPage(), true, showHidden)) //based off of tab properties, is it shown { DNNNodeCollection objParentNodes; DNNNode objParentNode = objRootNodes.FindNode(objTab.ParentId.ToString()); bool blnParentFound = objParentNode != null; if (objParentNode == null) { objParentNode = objRootNode; } objParentNodes = objParentNode.DNNNodes; if (objTab.TabID == intStartTabId) { //is this the starting tab if ((intNavNodeOptions & (int) NavNodeOptions.IncludeParent) != 0) { //if we are including parent, make sure there is one, then add if (objTabLookup[objTab.ParentId] != null) { AddNode((TabInfo) objTabLookup[objTab.ParentId], objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); objParentNode = objRootNodes.FindNode(objTab.ParentId.ToString()); objParentNodes = objParentNode.DNNNodes; } } if ((intNavNodeOptions & (int) NavNodeOptions.IncludeSelf) != 0) { //if we are including our self (starting tab) then add AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } } else if (((intNavNodeOptions & (int) NavNodeOptions.IncludeSiblings) != 0) && IsTabSibling(objTab, intStartTabId, objTabLookup)) { //is this a sibling of the starting node, and we are including siblings, then add it AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } else { if (blnParentFound) //if tabs parent already in hierarchy (as is the case when we are sending down more than 1 level) { //parent will be found for siblings. Check to see if we want them, if we don't make sure tab is not a sibling if (((intNavNodeOptions & (int) NavNodeOptions.IncludeSiblings) != 0) || IsTabSibling(objTab, intStartTabId, objTabLookup) == false) { //determine if tab should be included or marked as pending bool blnPOD = (intNavNodeOptions & (int) NavNodeOptions.MarkPendingNodes) != 0; if (IsTabPending(objTab, objParentNode, objRootNode, intDepth, objBreadCrumbs, intLastBreadCrumbId, blnPOD)) { if (blnPOD) { objParentNode.HasNodes = true; //mark it as a pending node } } else { AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } } } else if ((intNavNodeOptions & (int) NavNodeOptions.IncludeSelf) == 0 && objTab.ParentId == intStartTabId) { //if not including self and parent is the start id then add AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } } } }
/// ----------------------------------------------------------------------------- /// <summary> /// Assigns common properties from passed in tab to newly created DNNNode that is added to the passed in DNNNodeCollection /// </summary> /// <param name="objTab">Tab to base DNNNode off of</param> /// <param name="objNodes">Node collection to append new node to</param> /// <param name="objBreadCrumbs">Hashtable of breadcrumb IDs to efficiently determine node's BreadCrumb property</param> /// <param name="objPortalSettings">Portal settings object to determine if node is selected</param> /// <param name="eToolTips"></param> /// <remarks> /// Logic moved to separate sub to make GetNavigationNodes cleaner /// </remarks> /// <history> /// [Jon Henning] 8/9/2005 Created /// </history> /// ----------------------------------------------------------------------------- private static void AddNode(TabInfo objTab, DNNNodeCollection objNodes, Hashtable objBreadCrumbs, PortalSettings objPortalSettings, ToolTipSource eToolTips) { var objNode = new DNNNode(); if (objTab.Title == "~") //NEW! { //A title (text) of ~ denotes a break objNodes.AddBreak(); } else { //assign breadcrumb and selected properties if (objBreadCrumbs.Contains(objTab.TabID)) { objNode.BreadCrumb = true; if (objTab.TabID == objPortalSettings.ActiveTab.TabID) { objNode.Selected = true; } } if (objTab.DisableLink) { objNode.Enabled = false; } objNode.ID = objTab.TabID.ToString(); objNode.Key = objNode.ID; objNode.Text = objTab.LocalizedTabName; objNode.NavigateURL = objTab.FullUrl; objNode.ClickAction = eClickAction.Navigate; objNode.Image = objTab.IconFile; objNode.LargeImage = objTab.IconFileLarge; switch (eToolTips) { case ToolTipSource.TabName: objNode.ToolTip = objTab.LocalizedTabName; break; case ToolTipSource.Title: objNode.ToolTip = objTab.Title; break; case ToolTipSource.Description: objNode.ToolTip = objTab.Description; break; } bool newWindow = false; if (objTab.TabSettings["LinkNewWindow"] != null && Boolean.TryParse((string)objTab.TabSettings["LinkNewWindow"], out newWindow)) { objNode.Target = "_new"; } objNodes.Add(objNode); } }
/// <summary> /// This function provides a central location to obtain a generic node collection of the pages/tabs included in /// the current context's (user) navigation hierarchy /// </summary> /// <param name="objRootNode">Node in which to add children to</param> /// <param name="eToolTips">Enumerator to determine what text to display in the tooltips</param> /// <param name="intStartTabId">If using Populate On Demand, then this is the tab id of the root element to retrieve (-1 for no POD)</param> /// <param name="intDepth">If Populate On Demand is enabled, then this parameter determines the number of nodes to retrieve beneath the starting tab passed in (intStartTabId) (-1 for no POD)</param> /// <param name="intNavNodeOptions">Bitwise integer containing values to determine what nodes to display (self, siblings, parent)</param> /// <returns>Collection of DNNNodes</returns> /// <remarks> /// Returns a subset of navigation nodes based off of passed in starting node id and depth /// </remarks> /// <history> /// [Jon Henning] 8/9/2005 Created /// </history> public static DNNNodeCollection GetNavigationNodes(DNNNode objRootNode, ToolTipSource eToolTips, int intStartTabId, int intDepth, int intNavNodeOptions) { int i; PortalSettings objPortalSettings = PortalController.GetCurrentPortalSettings(); bool blnAdminMode = PortalSecurity.IsInRoles(objPortalSettings.AdministratorRoleName) | PortalSecurity.IsInRoles(objPortalSettings.ActiveTab.AdministratorRoles.ToString()); //bool blnFoundStart = intStartTabId == -1; //if -1 then we want all Hashtable objBreadCrumbs = new Hashtable(); Hashtable objTabLookup = new Hashtable(); DNNNodeCollection objRootNodes = objRootNode.DNNNodes; int intLastBreadCrumbId = 0; TabInfo objTab; //--- cache breadcrumbs in hashtable so we can easily set flag on node denoting it as a breadcrumb node (without looping multiple times) ---' for (i = 0; i <= (objPortalSettings.ActiveTab.BreadCrumbs.Count - 1); i++) { objBreadCrumbs.Add(((TabInfo)(objPortalSettings.ActiveTab.BreadCrumbs[i])).TabID, 1); intLastBreadCrumbId = ((TabInfo)(objPortalSettings.ActiveTab.BreadCrumbs[i])).TabID; } for (i = 0; i < objPortalSettings.DesktopTabs.Count; i++) { objTab = (TabInfo)(objPortalSettings.DesktopTabs[i]); objTabLookup.Add(objTab.TabID, objTab); } for (i = 0; i < objPortalSettings.DesktopTabs.Count; i++) { try { objTab = (TabInfo)(objPortalSettings.DesktopTabs[i]); if (IsTabShown(objTab, blnAdminMode)) //based off of tab properties, is it shown { DNNNode objParentNode = objRootNodes.FindNode(objTab.ParentId.ToString()); bool blnParentFound = objParentNode != null; if (objParentNode == null) { objParentNode = objRootNode; } DNNNodeCollection objParentNodes = objParentNode.DNNNodes; //If objTab.ParentId = -1 OrElse ((intNavNodeOptions And NavNodeOptions.IncludeRootOnly) = 0) Then if (objTab.TabID == intStartTabId) { //is this the starting tab if ((intNavNodeOptions & (int)NavNodeOptions.IncludeParent) != 0) { //if we are including parent, make sure there is one, then add if (objTabLookup[objTab.ParentId] != null) { AddNode((TabInfo)(objTabLookup[objTab.ParentId]), objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); objParentNode = objRootNodes.FindNode(objTab.ParentId.ToString()); objParentNodes = objParentNode.DNNNodes; } } if ((intNavNodeOptions & (int)NavNodeOptions.IncludeSelf) != 0) { //if we are including our self (starting tab) then add AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } } else if (((intNavNodeOptions & (int)NavNodeOptions.IncludeSiblings) != 0) && IsTabSibling(objTab, intStartTabId, objTabLookup)) { //is this a sibling of the starting node, and we are including siblings, then add it AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } else { if (blnParentFound) //if tabs parent already in hierarchy (as is the case when we are sending down more than 1 level) { //parent will be found for siblings. Check to see if we want them, if we don't make sure tab is not a sibling if (((intNavNodeOptions & (int)NavNodeOptions.IncludeSiblings) != 0) || IsTabSibling(objTab, intStartTabId, objTabLookup) == false) { //determine if tab should be included or marked as pending bool blnPOD = (intNavNodeOptions & (int)NavNodeOptions.MarkPendingNodes) != 0; if (IsTabPending(objTab, objParentNode, objRootNode, intDepth, objBreadCrumbs, intLastBreadCrumbId, blnPOD)) { if (blnPOD) { objParentNode.HasNodes = true; //mark it as a pending node } } else { AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } } } else if ((intNavNodeOptions & (int)NavNodeOptions.IncludeSelf) == 0 && objTab.ParentId == intStartTabId) { //if not including self and parent is the start id then add AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } } } //End If } catch (Exception ex) { throw ex; } } return objRootNodes; }
/// <summary> /// Assigns common properties from passed in tab to newly created DNNNode that is added to the passed in DNNNodeCollection /// </summary> /// <param name="objTab">Tab to base DNNNode off of</param> /// <param name="objNodes">Node collection to append new node to</param> /// <param name="objBreadCrumbs">Hashtable of breadcrumb IDs to efficiently determine node's BreadCrumb property</param> /// <param name="objPortalSettings">Portal settings object to determine if node is selected</param> /// <remarks> /// Logic moved to separate sub to make GetNavigationNodes cleaner /// </remarks> /// <history> /// [Jon Henning] 8/9/2005 Created /// </history> /// <param name="eToolTips"></param> private static void AddNode(TabInfo objTab, DNNNodeCollection objNodes, Hashtable objBreadCrumbs, PortalSettings objPortalSettings, ToolTipSource eToolTips) { DNNNode objNode = new DNNNode(); if (objTab.Title == "~") // NEW! { //A title (text) of ~ denotes a break objNodes.AddBreak(); } else { //assign breadcrumb and selected properties if (objBreadCrumbs.Contains(objTab.TabID)) { objNode.BreadCrumb = true; if (objTab.TabID == objPortalSettings.ActiveTab.TabID) { objNode.Selected = true; } } if (objTab.DisableLink) { objNode.Enabled = false; } objNode.ID = objTab.TabID.ToString(); objNode.Key = objNode.ID; objNode.Text = objTab.TabName; objNode.NavigateURL = objTab.FullUrl; objNode.ClickAction = eClickAction.Navigate; //admin tabs have their images found in a different location, since the DNNNode has no concept of an admin tab, this must be set here if (objTab.IsAdminTab) { if (objTab.IconFile != "") { objNode.Image = Globals.ApplicationPath + "/images/" + objTab.IconFile; } } else { if (objTab.IconFile != "") { objNode.Image = objTab.IconFile; } } switch (eToolTips) { case ToolTipSource.TabName: objNode.ToolTip = objTab.TabName; break; case ToolTipSource.Title: objNode.ToolTip = objTab.Title; break; case ToolTipSource.Description: objNode.ToolTip = objTab.Description; break; } objNodes.Add(objNode); } }
/// <summary> /// This function provides a central location to obtain a generic node collection of the pages/tabs included in /// the current context's (user) navigation hierarchy /// </summary> /// <param name="objRootNode">Node in which to add children to</param> /// <param name="eToolTips">Enumerator to determine what text to display in the tooltips</param> /// <param name="intStartTabId">If using Populate On Demand, then this is the tab id of the root element to retrieve (-1 for no POD)</param> /// <param name="intDepth">If Populate On Demand is enabled, then this parameter determines the number of nodes to retrieve beneath the starting tab passed in (intStartTabId) (-1 for no POD)</param> /// <param name="intNavNodeOptions">Bitwise integer containing values to determine what nodes to display (self, siblings, parent)</param> /// <returns>Collection of DNNNodes</returns> /// <remarks> /// Returns a subset of navigation nodes based off of passed in starting node id and depth /// </remarks> /// <history> /// [Jon Henning] 8/9/2005 Created /// </history> public static DNNNodeCollection GetNavigationNodes(DNNNode objRootNode, ToolTipSource eToolTips, int intStartTabId, int intDepth, int intNavNodeOptions) { int i; PortalSettings objPortalSettings = PortalController.GetCurrentPortalSettings(); bool blnAdminMode = PortalSecurity.IsInRoles(objPortalSettings.AdministratorRoleName) | PortalSecurity.IsInRoles(objPortalSettings.ActiveTab.AdministratorRoles.ToString()); //bool blnFoundStart = intStartTabId == -1; //if -1 then we want all Hashtable objBreadCrumbs = new Hashtable(); Hashtable objTabLookup = new Hashtable(); DNNNodeCollection objRootNodes = objRootNode.DNNNodes; int intLastBreadCrumbId = 0; TabInfo objTab; //--- cache breadcrumbs in hashtable so we can easily set flag on node denoting it as a breadcrumb node (without looping multiple times) ---' for (i = 0; i <= (objPortalSettings.ActiveTab.BreadCrumbs.Count - 1); i++) { objBreadCrumbs.Add(((TabInfo)(objPortalSettings.ActiveTab.BreadCrumbs[i])).TabID, 1); intLastBreadCrumbId = ((TabInfo)(objPortalSettings.ActiveTab.BreadCrumbs[i])).TabID; } for (i = 0; i < objPortalSettings.DesktopTabs.Count; i++) { objTab = (TabInfo)(objPortalSettings.DesktopTabs[i]); objTabLookup.Add(objTab.TabID, objTab); } for (i = 0; i < objPortalSettings.DesktopTabs.Count; i++) { try { objTab = (TabInfo)(objPortalSettings.DesktopTabs[i]); if (IsTabShown(objTab, blnAdminMode)) //based off of tab properties, is it shown { DNNNode objParentNode = objRootNodes.FindNode(objTab.ParentId.ToString()); bool blnParentFound = objParentNode != null; if (objParentNode == null) { objParentNode = objRootNode; } DNNNodeCollection objParentNodes = objParentNode.DNNNodes; //If objTab.ParentId = -1 OrElse ((intNavNodeOptions And NavNodeOptions.IncludeRootOnly) = 0) Then if (objTab.TabID == intStartTabId) { //is this the starting tab if ((intNavNodeOptions & (int)NavNodeOptions.IncludeParent) != 0) { //if we are including parent, make sure there is one, then add if (objTabLookup[objTab.ParentId] != null) { AddNode((TabInfo)(objTabLookup[objTab.ParentId]), objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); objParentNode = objRootNodes.FindNode(objTab.ParentId.ToString()); objParentNodes = objParentNode.DNNNodes; } } if ((intNavNodeOptions & (int)NavNodeOptions.IncludeSelf) != 0) { //if we are including our self (starting tab) then add AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } } else if (((intNavNodeOptions & (int)NavNodeOptions.IncludeSiblings) != 0) && IsTabSibling(objTab, intStartTabId, objTabLookup)) { //is this a sibling of the starting node, and we are including siblings, then add it AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } else { if (blnParentFound) //if tabs parent already in hierarchy (as is the case when we are sending down more than 1 level) { //parent will be found for siblings. Check to see if we want them, if we don't make sure tab is not a sibling if (((intNavNodeOptions & (int)NavNodeOptions.IncludeSiblings) != 0) || IsTabSibling(objTab, intStartTabId, objTabLookup) == false) { //determine if tab should be included or marked as pending bool blnPOD = (intNavNodeOptions & (int)NavNodeOptions.MarkPendingNodes) != 0; if (IsTabPending(objTab, objParentNode, objRootNode, intDepth, objBreadCrumbs, intLastBreadCrumbId, blnPOD)) { if (blnPOD) { objParentNode.HasNodes = true; //mark it as a pending node } } else { AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } } } else if ((intNavNodeOptions & (int)NavNodeOptions.IncludeSelf) == 0 && objTab.ParentId == intStartTabId) { //if not including self and parent is the start id then add AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } } } //End If } catch (Exception ex) { throw ex; } } return(objRootNodes); }
private static void ProcessTab(DNNNode objRootNode, TabInfo objTab, Hashtable objTabLookup, Hashtable objBreadCrumbs, int intLastBreadCrumbId, ToolTipSource eToolTips, int intStartTabId, int intDepth, int intNavNodeOptions) { PortalSettings objPortalSettings = PortalController.Instance.GetCurrentPortalSettings(); DNNNodeCollection objRootNodes = objRootNode.DNNNodes; bool showHidden = (intNavNodeOptions & (int)NavNodeOptions.IncludeHiddenNodes) == (int)NavNodeOptions.IncludeHiddenNodes; if (CanShowTab(objTab, TabPermissionController.CanAdminPage(), true, showHidden)) //based off of tab properties, is it shown { DNNNodeCollection objParentNodes; DNNNode objParentNode = objRootNodes.FindNode(objTab.ParentId.ToString()); bool blnParentFound = objParentNode != null; if (objParentNode == null) { objParentNode = objRootNode; } objParentNodes = objParentNode.DNNNodes; if (objTab.TabID == intStartTabId) { //is this the starting tab if ((intNavNodeOptions & (int)NavNodeOptions.IncludeParent) != 0) { //if we are including parent, make sure there is one, then add if (objTabLookup[objTab.ParentId] != null) { AddNode((TabInfo)objTabLookup[objTab.ParentId], objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); objParentNode = objRootNodes.FindNode(objTab.ParentId.ToString()); objParentNodes = objParentNode.DNNNodes; } } if ((intNavNodeOptions & (int)NavNodeOptions.IncludeSelf) != 0) { //if we are including our self (starting tab) then add AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } } else if (((intNavNodeOptions & (int)NavNodeOptions.IncludeSiblings) != 0) && IsTabSibling(objTab, intStartTabId, objTabLookup)) { //is this a sibling of the starting node, and we are including siblings, then add it AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } else { if (blnParentFound) //if tabs parent already in hierarchy (as is the case when we are sending down more than 1 level) { //parent will be found for siblings. Check to see if we want them, if we don't make sure tab is not a sibling if (((intNavNodeOptions & (int)NavNodeOptions.IncludeSiblings) != 0) || IsTabSibling(objTab, intStartTabId, objTabLookup) == false) { //determine if tab should be included or marked as pending bool blnPOD = (intNavNodeOptions & (int)NavNodeOptions.MarkPendingNodes) != 0; if (IsTabPending(objTab, objParentNode, objRootNode, intDepth, objBreadCrumbs, intLastBreadCrumbId, blnPOD)) { if (blnPOD) { objParentNode.HasNodes = true; //mark it as a pending node } } else { AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } } } else if ((intNavNodeOptions & (int)NavNodeOptions.IncludeSelf) == 0 && objTab.ParentId == intStartTabId) { //if not including self and parent is the start id then add AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } } } }
private static void ProcessTab(Node objRootNode, TabInfo objTab, Hashtable objTabLookup, Hashtable objBreadCrumbs, int intLastBreadCrumbId, ToolTipSource eToolTips, int intStartTabId, int intDepth, int intNavNodeOptions) { PortalSettings objPortalSettings = PortalController.GetCurrentPortalSettings(); NodeCollection objRootNodes = objRootNode.Nodes; if (CanShowTab(objTab, TabPermissionController.CanAdminPage(), true)) { NodeCollection objParentNodes; Node objParentNode = objRootNodes.FindNode(objTab.ParentId.ToString()); bool blnParentFound = objParentNode != null; if (objParentNode == null) objParentNode = objRootNode; objParentNodes = objParentNode.Nodes; if (objTab.TabID == intStartTabId) { if ((intNavNodeOptions & (int)NavNodeOptions.IncludeParent) != 0) { if (objTabLookup[objTab.ParentId] != null) { AddNode((TabInfo)objTabLookup[objTab.ParentId], objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); objParentNode = objRootNodes.FindNode(objTab.ParentId.ToString()); objParentNodes = objParentNode.Nodes; } } if ((intNavNodeOptions & (int)NavNodeOptions.IncludeSelf) != 0) { AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } } else if (((intNavNodeOptions & (int)NavNodeOptions.IncludeSiblings) != 0) && IsTabSibling(objTab, intStartTabId, objTabLookup)) { AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } else { if (blnParentFound) { if (((intNavNodeOptions & (int)NavNodeOptions.IncludeSiblings) != 0) || IsTabSibling(objTab, intStartTabId, objTabLookup) == false) { bool blnPOD = (intNavNodeOptions & (int)NavNodeOptions.MarkPendingNodes) != 0; if (IsTabPending(objTab, objParentNode, objRootNode, intDepth, objBreadCrumbs, intLastBreadCrumbId, blnPOD)) { if (blnPOD) { objParentNode.HasNodes = true; } } else { AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } } } else if ((intNavNodeOptions & (int)NavNodeOptions.IncludeSelf) == 0 && objTab.ParentId == intStartTabId) { AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } } } }
private static void ProcessTab(Node objRootNode, TabInfo objTab, Hashtable objTabLookup, Hashtable objBreadCrumbs, int intLastBreadCrumbId, ToolTipSource eToolTips, int intStartTabId, int intDepth, int intNavNodeOptions) { PortalSettings objPortalSettings = PortalController.GetCurrentPortalSettings(); NodeCollection objRootNodes = objRootNode.Nodes; if (CanShowTab(objTab, TabPermissionController.CanAdminPage(), true)) { NodeCollection objParentNodes; Node objParentNode = objRootNodes.FindNode(objTab.ParentId.ToString()); bool blnParentFound = objParentNode != null; if (objParentNode == null) { objParentNode = objRootNode; } objParentNodes = objParentNode.Nodes; if (objTab.TabID == intStartTabId) { if ((intNavNodeOptions & (int)NavNodeOptions.IncludeParent) != 0) { if (objTabLookup[objTab.ParentId] != null) { AddNode((TabInfo)objTabLookup[objTab.ParentId], objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); objParentNode = objRootNodes.FindNode(objTab.ParentId.ToString()); objParentNodes = objParentNode.Nodes; } } if ((intNavNodeOptions & (int)NavNodeOptions.IncludeSelf) != 0) { AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } } else if (((intNavNodeOptions & (int)NavNodeOptions.IncludeSiblings) != 0) && IsTabSibling(objTab, intStartTabId, objTabLookup)) { AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } else { if (blnParentFound) { if (((intNavNodeOptions & (int)NavNodeOptions.IncludeSiblings) != 0) || IsTabSibling(objTab, intStartTabId, objTabLookup) == false) { bool blnPOD = (intNavNodeOptions & (int)NavNodeOptions.MarkPendingNodes) != 0; if (IsTabPending(objTab, objParentNode, objRootNode, intDepth, objBreadCrumbs, intLastBreadCrumbId, blnPOD)) { if (blnPOD) { objParentNode.HasNodes = true; } } else { AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } } } else if ((intNavNodeOptions & (int)NavNodeOptions.IncludeSelf) == 0 && objTab.ParentId == intStartTabId) { AddNode(objTab, objParentNodes, objBreadCrumbs, objPortalSettings, eToolTips); } } } }
private static void AddNode(TabInfo objTab, NodeCollection objNodes, Hashtable objBreadCrumbs, PortalSettings objPortalSettings, ToolTipSource eToolTips) { Node objNode = new Node(); if (objTab.Title == "~") { objNodes.AddBreak(); } else { if (objBreadCrumbs.Contains(objTab.TabID)) { objNode.BreadCrumb = true; if (objTab.TabID == objPortalSettings.ActiveTab.TabID) { objNode.Selected = true; } } if (objTab.DisableLink) { objNode.Enabled = false; } objNode.ID = objTab.TabID.ToString(); objNode.Key = objNode.ID; objNode.Text = objTab.LocalizedTabName; objNode.NavigateURL = objTab.FullUrl; objNode.ClickAction = eClickAction.Navigate; objNode.Image = objTab.IconFile; switch (eToolTips) { case ToolTipSource.TabName: objNode.ToolTip = objTab.LocalizedTabName; break; case ToolTipSource.Title: objNode.ToolTip = objTab.Title; break; case ToolTipSource.Description: objNode.ToolTip = objTab.Description; break; } objNodes.Add(objNode); } }
/// ----------------------------------------------------------------------------- /// <summary> /// This function provides a central location to obtain a generic node collection of the pages/tabs included in /// the current context's (user) navigation hierarchy /// </summary> /// <param name="objRootNode">Node in which to add children to</param> /// <param name="eToolTips">Enumerator to determine what text to display in the tooltips</param> /// <param name="intStartTabId">If using Populate On Demand, then this is the tab id of the root element to retrieve (-1 for no POD)</param> /// <param name="intDepth">If Populate On Demand is enabled, then this parameter determines the number of nodes to retrieve beneath the starting tab passed in (intStartTabId) (-1 for no POD)</param> /// <param name="intNavNodeOptions">Bitwise integer containing values to determine what nodes to display (self, siblings, parent)</param> /// <returns>Collection of DNNNodes</returns> /// <remarks> /// Returns a subset of navigation nodes based off of passed in starting node id and depth /// </remarks> /// <history> /// [Jon Henning] 8/9/2005 Created /// </history> /// ----------------------------------------------------------------------------- public static DNNNodeCollection GetNavigationNodes(DNNNode objRootNode, ToolTipSource eToolTips, int intStartTabId, int intDepth, int intNavNodeOptions) { int i; PortalSettings objPortalSettings = PortalController.GetCurrentPortalSettings(); bool blnFoundStart = intStartTabId == -1; var objBreadCrumbs = new Hashtable(); var objTabLookup = new Hashtable(); DNNNodeCollection objRootNodes = objRootNode.DNNNodes; int intLastBreadCrumbId = 0; //--- cache breadcrumbs in hashtable so we can easily set flag on node denoting it as a breadcrumb node (without looping multiple times) --- for (i = 0; i <= (objPortalSettings.ActiveTab.BreadCrumbs.Count - 1); i++) { objBreadCrumbs.Add(((TabInfo) objPortalSettings.ActiveTab.BreadCrumbs[i]).TabID, 1); intLastBreadCrumbId = ((TabInfo) objPortalSettings.ActiveTab.BreadCrumbs[i]).TabID; } var objTabController = new TabController(); List<TabInfo> portalTabs = TabController.GetTabsBySortOrder(objPortalSettings.PortalId, objPortalSettings.CultureCode, true); List<TabInfo> hostTabs = TabController.GetTabsBySortOrder(Null.NullInteger, Localization.SystemLocale, true); foreach (TabInfo objTab in portalTabs) { objTabLookup.Add(objTab.TabID, objTab); } foreach (TabInfo objTab in hostTabs) { objTabLookup.Add(objTab.TabID, objTab); } foreach (TabInfo objTab in portalTabs) { try { ProcessTab(objRootNode, objTab, objTabLookup, objBreadCrumbs, intLastBreadCrumbId, eToolTips, intStartTabId, intDepth, intNavNodeOptions); } catch (Exception ex) { throw ex; } } foreach (TabInfo objTab in hostTabs) { try { ProcessTab(objRootNode, objTab, objTabLookup, objBreadCrumbs, intLastBreadCrumbId, eToolTips, intStartTabId, intDepth, intNavNodeOptions); } catch (Exception ex) { throw ex; } } return objRootNodes; }
public static NodeCollection GetNavigationNodes(Node objRootNode, ToolTipSource eToolTips, int intStartTabId, int intDepth, int intNavNodeOptions) { int i; PortalSettings objPortalSettings = PortalController.GetCurrentPortalSettings(); bool blnFoundStart = intStartTabId == -1; Hashtable objBreadCrumbs = new Hashtable(); Hashtable objTabLookup = new Hashtable(); NodeCollection objRootNodes = objRootNode.Nodes; int intLastBreadCrumbId = 0; for (i = 0; i <= (objPortalSettings.ActiveTab.BreadCrumbs.Count - 1); i++) { objBreadCrumbs.Add(((TabInfo)objPortalSettings.ActiveTab.BreadCrumbs[i]).TabID, 1); intLastBreadCrumbId = ((TabInfo)objPortalSettings.ActiveTab.BreadCrumbs[i]).TabID; } TabController objTabController = new TabController(); List<TabInfo> portalTabs = TabController.GetTabsBySortOrder(objPortalSettings.PortalId); List<TabInfo> hostTabs = TabController.GetTabsBySortOrder(Null.NullInteger); foreach (TabInfo objTab in portalTabs) { objTabLookup.Add(objTab.TabID, objTab); } foreach (TabInfo objTab in hostTabs) { objTabLookup.Add(objTab.TabID, objTab); } foreach (TabInfo objTab in portalTabs) { try { ProcessTab(objRootNode, objTab, objTabLookup, objBreadCrumbs, intLastBreadCrumbId, eToolTips, intStartTabId, intDepth, intNavNodeOptions); } catch (Exception ex) { throw ex; } } foreach (TabInfo objTab in hostTabs) { try { ProcessTab(objRootNode, objTab, objTabLookup, objBreadCrumbs, intLastBreadCrumbId, eToolTips, intStartTabId, intDepth, intNavNodeOptions); } catch (Exception ex) { throw ex; } } return objRootNodes; }
/// ----------------------------------------------------------------------------- /// <summary> /// Assigns common properties from passed in tab to newly created DNNNode that is added to the passed in DNNNodeCollection /// </summary> /// <param name="objTab">Tab to base DNNNode off of</param> /// <param name="objNodes">Node collection to append new node to</param> /// <param name="objBreadCrumbs">Hashtable of breadcrumb IDs to efficiently determine node's BreadCrumb property</param> /// <param name="objPortalSettings">Portal settings object to determine if node is selected</param> /// <param name="eToolTips"></param> /// <remarks> /// Logic moved to separate sub to make GetNavigationNodes cleaner /// </remarks> /// <history> /// [Jon Henning] 8/9/2005 Created /// </history> /// ----------------------------------------------------------------------------- private static void AddNode(TabInfo objTab, DNNNodeCollection objNodes, Hashtable objBreadCrumbs, PortalSettings objPortalSettings, ToolTipSource eToolTips) { var objNode = new DNNNode(); if (objTab.Title == "~") //NEW! { //A title (text) of ~ denotes a break objNodes.AddBreak(); } else { //assign breadcrumb and selected properties if (objBreadCrumbs.Contains(objTab.TabID)) { objNode.BreadCrumb = true; if (objTab.TabID == objPortalSettings.ActiveTab.TabID) { objNode.Selected = true; } } if (objTab.DisableLink) { objNode.Enabled = false; } objNode.ID = objTab.TabID.ToString(); objNode.Key = objNode.ID; objNode.Text = objTab.LocalizedTabName; objNode.NavigateURL = objTab.FullUrl; objNode.ClickAction = eClickAction.Navigate; objNode.Image = objTab.IconFile; objNode.LargeImage = objTab.IconFileLarge; switch (eToolTips) { case ToolTipSource.TabName: objNode.ToolTip = objTab.LocalizedTabName; break; case ToolTipSource.Title: objNode.ToolTip = objTab.Title; break; case ToolTipSource.Description: objNode.ToolTip = objTab.Description; break; } bool newWindow = false; if (objTab.TabSettings["LinkNewWindow"] != null && Boolean.TryParse((string)objTab.TabSettings["LinkNewWindow"], out newWindow) && newWindow) { objNode.Target = "_new"; } objNodes.Add(objNode); } }
private static void AddNode(TabInfo objTab, NodeCollection objNodes, Hashtable objBreadCrumbs, PortalSettings objPortalSettings, ToolTipSource eToolTips) { Node objNode = new Node(); if (objTab.Title == "~") { objNodes.AddBreak(); } else { if (objBreadCrumbs.Contains(objTab.TabID)) { objNode.BreadCrumb = true; if (objTab.TabID == objPortalSettings.ActiveTab.TabID) { objNode.Selected = true; } } if (objTab.DisableLink) objNode.Enabled = false; objNode.ID = objTab.TabID.ToString(); objNode.Key = objNode.ID; objNode.Text = objTab.LocalizedTabName; objNode.NavigateURL = objTab.FullUrl; objNode.ClickAction = eClickAction.Navigate; objNode.Image = objTab.IconFile; switch (eToolTips) { case ToolTipSource.TabName: objNode.ToolTip = objTab.LocalizedTabName; break; case ToolTipSource.Title: objNode.ToolTip = objTab.Title; break; case ToolTipSource.Description: objNode.ToolTip = objTab.Description; break; } objNodes.Add(objNode); } }
/// ----------------------------------------------------------------------------- /// <summary> /// This function provides a central location to obtain a generic node collection of the pages/tabs included in /// the current context's (user) navigation hierarchy /// </summary> /// <param name="strNamespace">Namespace (typically control's ClientID) of node collection to create</param> /// <param name="eToolTips">Enumerator to determine what text to display in the tooltips</param> /// <param name="intStartTabId">If using Populate On Demand, then this is the tab id of the root element to retrieve (-1 for no POD)</param> /// <param name="intDepth">If Populate On Demand is enabled, then this parameter determines the number of nodes to retrieve beneath the starting tab passed in (intStartTabId) (-1 for no POD)</param> /// <param name="intNavNodeOptions">Bitwise integer containing values to determine what nodes to display (self, siblings, parent)</param> /// <returns>Collection of DNNNodes</returns> /// <remarks> /// Returns a subset of navigation nodes based off of passed in starting node id and depth /// </remarks> /// <history> /// [Jon Henning] 8/9/2005 Created /// </history> /// ----------------------------------------------------------------------------- public static DNNNodeCollection GetNavigationNodes(string strNamespace, ToolTipSource eToolTips, int intStartTabId, int intDepth, int intNavNodeOptions) { var objCol = new DNNNodeCollection(strNamespace); return(GetNavigationNodes(new DNNNode(objCol.XMLNode), eToolTips, intStartTabId, intDepth, intNavNodeOptions)); }