public override void Bind(DNNNodeCollection objNodes) { DNNNode objNode = null; MenuNode objMenuItem; DNNNode objPrevNode = null; bool RootFlag = false; int intIndex; if (IndicateChildren == false) { IndicateChildImageSub = ""; IndicateChildImageRoot = ""; } if (!String.IsNullOrEmpty(CSSNodeSelectedRoot) && CSSNodeSelectedRoot == CSSNodeSelectedSub) { Menu.DefaultNodeCssClassSelected = CSSNodeSelectedRoot; //set on parent, thus decreasing overall payload } //JH - 2/5/07 - support for custom attributes foreach (CustomAttribute objAttr in CustomAttributes) { switch (objAttr.Name.ToLower()) { case "submenuorientation": Menu.SubMenuOrientation = (UI.WebControls.Orientation)Enum.Parse(Menu.SubMenuOrientation.GetType(), objAttr.Value); break; case "usetables": Menu.RenderMode = DNNMenu.MenuRenderMode.Normal; break; case "rendermode": Menu.RenderMode = (DNNMenu.MenuRenderMode)Enum.Parse(typeof(DNNMenu.MenuRenderMode), objAttr.Value); break; case "animationtype": Menu.Animation.AnimationType = (AnimationType)Enum.Parse(typeof(AnimationType), objAttr.Value); break; case "easingdirection": Menu.Animation.EasingDirection = (EasingDirection)Enum.Parse(typeof(EasingDirection), objAttr.Value); break; case "easingtype": Menu.Animation.EasingType = (EasingType)Enum.Parse(typeof(EasingType), objAttr.Value); break; case "animationinterval": Menu.Animation.Interval = int.Parse(objAttr.Value); break; case "animationlength": Menu.Animation.Length = int.Parse(objAttr.Value); break; } } foreach (DNNNode node in objNodes) { objNode = node; if (objNode.Level == 0) //root menu { intIndex = Menu.MenuNodes.Import(objNode, false); objMenuItem = Menu.MenuNodes[intIndex]; if (objNode.BreadCrumb && string.IsNullOrEmpty(NodeRightHTMLBreadCrumbRoot) == false) { objMenuItem.RightHTML += NodeRightHTMLBreadCrumbRoot; } else if (string.IsNullOrEmpty(NodeRightHTMLRoot) == false) { objMenuItem.RightHTML = NodeRightHTMLRoot; } if (RootFlag) //first root item has already been entered { AddSeparator("All", objPrevNode, objNode, objMenuItem); } else { if (string.IsNullOrEmpty(SeparatorLeftHTML) == false || string.IsNullOrEmpty(SeparatorLeftHTMLBreadCrumb) == false || string.IsNullOrEmpty(SeparatorLeftHTMLActive) == false) { AddSeparator("Left", objPrevNode, objNode, objMenuItem); } RootFlag = true; } if (objNode.BreadCrumb && string.IsNullOrEmpty(NodeLeftHTMLBreadCrumbRoot) == false) { objMenuItem.LeftHTML += NodeLeftHTMLBreadCrumbRoot; } else if (string.IsNullOrEmpty(NodeLeftHTMLRoot) == false) { objMenuItem.LeftHTML += NodeLeftHTMLRoot; } if (!String.IsNullOrEmpty(CSSNodeRoot)) { objMenuItem.CSSClass = CSSNodeRoot; } if (!String.IsNullOrEmpty(CSSNodeHoverRoot) && CSSNodeHoverRoot != CSSNodeHoverSub) { objMenuItem.CSSClassHover = CSSNodeHoverRoot; } objMenuItem.CSSIcon = " "; //< ignore for root...??? if (objNode.BreadCrumb) { if (!String.IsNullOrEmpty(CSSBreadCrumbRoot)) { objMenuItem.CSSClass = CSSBreadCrumbRoot; } if (objNode.Selected && String.IsNullOrEmpty(Menu.DefaultNodeCssClassSelected)) { objMenuItem.CSSClassSelected = CSSNodeSelectedRoot; } } } else //If Not blnRootOnly Then { try { MenuNode objParent = Menu.MenuNodes.FindNode(objNode.ParentNode.ID); if (objParent == null) //POD { objParent = Menu.MenuNodes[Menu.MenuNodes.Import(objNode.ParentNode.Clone(), true)]; } objMenuItem = objParent.MenuNodes.FindNode(objNode.ID); if (objMenuItem == null) //POD { objMenuItem = objParent.MenuNodes[objParent.MenuNodes.Import(objNode.Clone(), true)]; } if (!String.IsNullOrEmpty(NodeLeftHTMLSub)) { objMenuItem.LeftHTML = NodeLeftHTMLSub; } if (!String.IsNullOrEmpty(NodeRightHTMLSub)) { objMenuItem.RightHTML = NodeRightHTMLSub; } if (!String.IsNullOrEmpty(CSSNodeHoverSub) && CSSNodeHoverRoot != CSSNodeHoverSub) { objMenuItem.CSSClassHover = CSSNodeHoverSub; } if (objNode.BreadCrumb) { if (!String.IsNullOrEmpty(CSSBreadCrumbSub)) { objMenuItem.CSSClass = CSSBreadCrumbSub; } if (!String.IsNullOrEmpty(NodeLeftHTMLBreadCrumbSub)) { objMenuItem.LeftHTML = NodeLeftHTMLBreadCrumbSub; } if (!String.IsNullOrEmpty(NodeRightHTMLBreadCrumbSub)) { objMenuItem.RightHTML = NodeRightHTMLBreadCrumbSub; } if (objNode.Selected && String.IsNullOrEmpty(Menu.DefaultNodeCssClassSelected)) { objMenuItem.CSSClass = CSSNodeSelectedSub; } } } catch { //throws exception if the parent tab has not been loaded ( may be related to user role security not allowing access to a parent tab ) objMenuItem = null; } } if (!String.IsNullOrEmpty(objNode.Image)) { if (objNode.Image.StartsWith("~/images/")) { objNode.Image = objNode.Image.Replace("~/images/", PathSystemImage); } else if (objNode.Image.StartsWith("~/")) { objNode.Image = Globals.ResolveUrl(objNode.Image); } else if (!objNode.Image.Contains("://") && objNode.Image.StartsWith("/") == false && !String.IsNullOrEmpty(PathImage)) { objNode.Image = PathImage + objNode.Image; } objMenuItem.Image = objNode.Image; } if (objMenuItem.IsBreak) { objMenuItem.CSSClass = CSSBreak; } objMenuItem.ToolTip = objNode.ToolTip; Bind(objNode.DNNNodes); objPrevNode = objNode; } if (objNode != null && objNode.Level == 0) //root menu { //solpartactions has a hardcoded image with no path information. Assume if value is present and no path we need to add one. if (!String.IsNullOrEmpty(IndicateChildImageSub) && IndicateChildImageSub.IndexOf("/") == -1) { IndicateChildImageSub = PathSystemImage + IndicateChildImageSub; } if (!String.IsNullOrEmpty(IndicateChildImageRoot) && IndicateChildImageRoot.IndexOf("/") == -1) { IndicateChildImageRoot = PathSystemImage + IndicateChildImageRoot; } } }
public override void Bind(DNNNodeCollection objNodes) { DNNNode objNode = null; DNNNode objPrevNode = null; bool isRoot = false; if (IndicateChildren == false) { IndicateChildImageSub = ""; IndicateChildImageRoot = ""; } if (this.CSSNodeSelectedRoot.Length > 0 && this.CSSNodeSelectedRoot == this.CSSNodeSelectedSub) { Menu.DefaultNodeCssClassSelected = this.CSSNodeSelectedRoot; //set on parent, thus decreasing overall payload } //For i = 0 To objNodes.Count - 1 foreach (DNNNode dnnNode in objNodes) { objNode = dnnNode; //objNode = objNodes(i) MenuNode objMenuItem; if (objNode.Level == 0) // root menu { if (isRoot) //first root item has already been entered { AddSeparator("All", objPrevNode, objNode); } else { if (!String.IsNullOrEmpty(SeparatorLeftHTML) || !String.IsNullOrEmpty(SeparatorLeftHTMLBreadCrumb) || !String.IsNullOrEmpty(this.SeparatorLeftHTMLActive)) { AddSeparator("Left", objPrevNode, objNode); } isRoot = true; } //If objNode.Enabled = False Then // intIndex = Menu.MenuNodes.Add(objNode.ID.ToString, objNode.Key, objNode.Text & " ", "") 'TODO: Do we want to space here??? //Else // intIndex = Menu.MenuNodes.Add(objNode.ID.ToString, objNode.Key, objNode.Text & " ", objNode.NavigateURL) //End If int intIndex = Menu.MenuNodes.Import(objNode, false); objMenuItem = Menu.MenuNodes[intIndex]; if (!String.IsNullOrEmpty(this.CSSNodeRoot)) { objMenuItem.CSSClass = this.CSSNodeRoot; } if (!String.IsNullOrEmpty(this.CSSNodeHoverRoot) && this.CSSNodeHoverRoot != this.CSSNodeHoverSub) { objMenuItem.CSSClassHover = this.CSSNodeHoverRoot; } if (!String.IsNullOrEmpty(this.NodeLeftHTMLRoot)) { objMenuItem.LeftHTML = this.NodeLeftHTMLRoot; } objMenuItem.CSSIcon = " "; //< ignore for root...??? if (objNode.BreadCrumb) { if (!String.IsNullOrEmpty(CSSBreadCrumbRoot)) { objMenuItem.CSSClass = CSSBreadCrumbRoot; } if (!String.IsNullOrEmpty(NodeLeftHTMLBreadCrumbRoot)) { objMenuItem.LeftHTML = NodeLeftHTMLBreadCrumbRoot; } if (!String.IsNullOrEmpty(NodeRightHTMLBreadCrumbRoot)) { objMenuItem.RightHTML = NodeRightHTMLBreadCrumbRoot; } if (objNode.Selected && String.IsNullOrEmpty(Menu.DefaultNodeCssClassSelected)) //<--- not necessary when both are the same { objMenuItem.CSSClassSelected = this.CSSNodeSelectedRoot; } } if (!String.IsNullOrEmpty(this.NodeRightHTMLRoot)) { objMenuItem.RightHTML = NodeRightHTMLRoot; } } else //If Not blnRootOnly Then { try { MenuNode objParent = Menu.MenuNodes.FindNode(objNode.ParentNode.ID); if (objParent == null) //POD { objParent = Menu.MenuNodes[Menu.MenuNodes.Import(objNode.ParentNode.Clone(), true)]; } objMenuItem = objParent.MenuNodes.FindNode(objNode.ID); if (objMenuItem == null) //POD { objMenuItem = objParent.MenuNodes[objParent.MenuNodes.Import(objNode.Clone(), true)]; } //If objNode.Enabled = False Then // intIndex = objParent.MenuNodes.Add(objNode.ID.ToString, objNode.Key, objNode.Text, "") //Else // intIndex = objParent.MenuNodes.Add(objNode.ID.ToString, objNode.Key, objNode.Text, objNode.NavigateURL) //End If if (!String.IsNullOrEmpty(CSSNodeHoverSub) && this.CSSNodeHoverRoot != this.CSSNodeHoverSub) { objMenuItem.CSSClassHover = CSSNodeHoverSub; } if (!String.IsNullOrEmpty(NodeLeftHTMLSub)) { objMenuItem.LeftHTML = NodeLeftHTMLSub; } if (objNode.BreadCrumb) { if (!String.IsNullOrEmpty(CSSBreadCrumbSub)) { objMenuItem.CSSClass = this.CSSBreadCrumbSub; } if (!String.IsNullOrEmpty(NodeLeftHTMLBreadCrumbSub)) { objMenuItem.LeftHTML = NodeLeftHTMLBreadCrumbSub; } if (!String.IsNullOrEmpty(NodeRightHTMLBreadCrumbSub)) { objMenuItem.RightHTML = NodeRightHTMLBreadCrumbSub; } if (objNode.Selected && String.IsNullOrEmpty(Menu.DefaultNodeCssClassSelected)) { objMenuItem.CSSClass = this.CSSNodeSelectedSub; } } if (!String.IsNullOrEmpty(this.NodeRightHTMLSub)) { objMenuItem.RightHTML = this.NodeRightHTMLSub; } } catch { // throws exception if the parent tab has not been loaded ( may be related to user role security not allowing access to a parent tab ) objMenuItem = null; } //Else // objMenuItem = Nothing } if (objMenuItem != null) { if (objNode.Image.Length > 0) { if (objNode.Image.StartsWith("/") == false && this.PathImage.Length > 0) { objNode.Image = this.PathImage + objNode.Image; } objMenuItem.Image = objNode.Image; } if (objMenuItem.IsBreak) { objMenuItem.CSSClass = this.CSSBreak; } objMenuItem.ToolTip = objNode.ToolTip; } Bind(objNode.DNNNodes); objPrevNode = objNode; } if (objNode != null && objNode.Level == 0) // root menu { if (!String.IsNullOrEmpty(SeparatorRightHTML) || !String.IsNullOrEmpty(SeparatorRightHTMLBreadCrumb) || !String.IsNullOrEmpty(this.SeparatorRightHTMLActive)) { AddSeparator("Right", objPrevNode, null); } //solpartactions has a hardcoded image with no path information. Assume if value is present and no path we need to add one. if (IndicateChildImageSub.Length > 0 && IndicateChildImageSub.IndexOf("/") == -1) { IndicateChildImageSub = this.PathSystemImage + IndicateChildImageSub; } if (IndicateChildImageRoot.Length > 0 && IndicateChildImageRoot.IndexOf("/") == -1) { IndicateChildImageRoot = this.PathSystemImage + IndicateChildImageRoot; } } }