private void RenderTreeView() { #if NET35 if (WebConfigSettings.DisablePageViewStateByDefault) {Page.EnableViewState = true; } #endif //menu1.Visible = false; mojoTreeView treeMenu1; if (useArtisteer) { treeMenu1 = new ArtisteerTreeView(); treeMenu1.EnableViewState = false; treeMenu1.ShowExpandCollapse = false; } else { treeMenu1 = new mojoTreeView(); treeMenu1.UseDataRole = useDataRole; treeMenu1.SuppressImages = suppressImages; if (treeViewShowExpandCollapse) { treeMenu1.EnableViewState = true; treeMenu1.ShowExpandCollapse = true; treeMenu1.TreeNodeExpanded += new TreeNodeEventHandler(treeMenu1_TreeNodeExpanded); } else { treeMenu1.ShowExpandCollapse = false; #if !NET35 //http://www.4guysfromrolla.com/articles/071410-1.aspx //optimize viewstate for .NET 4 this.ViewStateMode = ViewStateMode.Disabled; treeMenu1.ViewStateMode = ViewStateMode.Disabled; #endif } } treeMenu1.EnableTheming = true; treeMenu1.SkinID = menuSkinID; treeMenu1.UseMenuTooltipForCustomCss = useMenuTooltipForCustomCss; this.menuPlaceHolder.Controls.Add(treeMenu1); #if !MONO treeMenu1.PopulateNodesFromClient = treeViewPopulateOnDemand; #endif treeMenu1.CollapseImageToolTip = Resource.TreeMenuCollapseTooltip; treeMenu1.ExpandImageToolTip = Resource.TreeMenuExpandTooltip; treeMenu1.ExpandDepth = 0; //treeMenu1.TreeNodePopulate += new TreeNodeEventHandler(treeMenu1_TreeNodePopulate); treeMenu1.TreeNodeDataBound += new TreeNodeEventHandler(treeMenu1_TreeNodeDataBound); //older skins have this StyleSheet stylesheet = (StyleSheet)Page.Master.FindControl("StyleSheet"); if (stylesheet != null) { if (stylesheet.FindControl("treeviewcss") == null) { Literal cssLink = new Literal(); cssLink.ID = "treeviewcss"; cssLink.Text = "\n<link href='" + SiteUtils.GetSkinBaseUrl(Page) + "styletreeview.css' type='text/css' rel='stylesheet' media='screen' />"; stylesheet.Controls.Add(cssLink); log.Debug("added stylesheet for treeiew"); } } treeMenu1.ExpandDepth = treeViewExpandDepth; //log.Debug("set ExpandDepth to " + treeViewExpandDepth.ToString(CultureInfo.InvariantCulture)); if (Page.IsPostBack) { // return if menu already bound if(treeMenu1.Nodes.Count > 0) return; } treeMenu1.PathSeparator = '|'; treeMenu1.DataSourceID = this.siteMapDataSource.ID; try { treeMenu1.DataBind(); } catch (ArgumentException ex) { log.Error(ex); } if ( (treeMenu1.SelectedNode != null) &&(!suppressPageSelection) ) { mojoTreeView.ExpandToValuePath(treeMenu1, treeMenu1.SelectedNode.ValuePath); log.Debug("called mojoTreeview.ExpandToValuePath for selectednode value path: " + treeMenu1.SelectedNode.ValuePath); } else { bool didSelect = false; if (!suppressPageSelection) { String valuePath = SiteUtils.GetActivePageValuePath(siteMapDataSource.Provider.RootNode, startingNodeOffset, Request.RawUrl); mojoTreeView.ExpandToValuePath(treeMenu1, valuePath); log.Debug("called mojoTreeview.ExpandToValuePath for value path: " + valuePath); TreeNode nodeToSelect = treeMenu1.FindNode(valuePath); if (nodeToSelect != null) { try { nodeToSelect.Selected = true; didSelect = true; log.Debug("selected node " + nodeToSelect.Text); } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } if (!didSelect) { valuePath = SiteUtils.GetActivePageValuePath(siteMapDataSource.Provider.RootNode, startingNodeOffset); mojoTreeView.ExpandToValuePath(treeMenu1, valuePath); log.Debug("called mojoTreeview.ExpandToValuePath for value path: " + valuePath); if (valuePath.Length > 0) { nodeToSelect = treeMenu1.FindNode(valuePath); if (nodeToSelect != null) { try { nodeToSelect.Selected = true; didSelect = true; log.Debug("selected node " + nodeToSelect.Text); } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } } if (!didSelect) { if ((currentPage != null)&&(currentPage.Url.Length > 0)) { string u = currentPage.Url.Replace("~/", "/"); valuePath = SiteUtils.GetActivePageValuePath(siteMapDataSource.Provider.RootNode, startingNodeOffset, u); mojoTreeView.ExpandToValuePath(treeMenu1, valuePath); nodeToSelect = treeMenu1.FindNode(valuePath); if (nodeToSelect != null) { try { nodeToSelect.Selected = true; didSelect = true; log.Debug("selected node " + nodeToSelect.Text); } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } } if (!didSelect) { valuePath = SiteUtils.GetActivePageValuePath(siteMapDataSource.Provider.RootNode, startingNodeOffset); if(valuePath.IndexOf(treeMenu1.PathSeparator) > -1) { valuePath = valuePath.Substring(0, (valuePath.IndexOf(treeMenu1.PathSeparator))); nodeToSelect = treeMenu1.FindNode(valuePath); if (nodeToSelect != null) { try { nodeToSelect.Selected = true; didSelect = true; log.Debug("selected node " + nodeToSelect.Text); } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } } } } }
private void RenderTreeView() { #if NET35 if (WebConfigSettings.DisablePageViewStateByDefault) { Page.EnableViewState = true; } #endif if (currentPage == null) { currentPage = CacheHelper.GetCurrentPage(); } mojoTreeView treeMenu1; if (useArtisteer) { treeMenu1 = new ArtisteerTreeView(); } else { treeMenu1 = new mojoTreeView(); } treeMenu1.EnableTheming = true; treeMenu1.SkinID = menuSkinID; treeMenu1.ShowExpandCollapse = treeViewShowExpandCollapse; treeMenu1.UseMenuTooltipForCustomCss = useMenuTooltipForCustomCss; if (treeViewShowExpandCollapse) { treeMenu1.ShowExpandCollapse = true; treeMenu1.EnableViewState = true; treeMenu1.TreeNodeExpanded += new TreeNodeEventHandler(treeMenu1_TreeNodeExpanded); //this.EnableViewState = false; } else { treeMenu1.ShowExpandCollapse = false; treeMenu1.EnableViewState = false; this.EnableViewState = false; } treeMenu1.PopulateNodesFromClient = treeViewPopulateOnDemand; treeMenu1.ExpandDepth = treeViewExpandDepth; treeMenu1.TreeNodeDataBound += new TreeNodeEventHandler(treeMenu1_TreeNodeDataBound); treeMenu1.CollapseImageToolTip = Resource.TreeMenuCollapseTooltip; treeMenu1.ExpandImageToolTip = Resource.TreeMenuExpandTooltip; this.menuPlaceHolder.Controls.Add(treeMenu1); if (isSubMenu) { if ( (currentPage != null) && (currentPage.ParentId == -1) ) { if ( (currentPage.UseUrl) && (currentPage.Url.Length > 0) && (WebConfigSettings.UseUrlReWriting) ) { pageMapDataSource.StartingNodeUrl = currentPage.Url; } else { pageMapDataSource.StartingNodeUrl = "~/Default.aspx?pageid=" + currentPage.PageId.ToInvariantString(); } } else { pageMapDataSource.StartingNodeUrl = SiteUtils.GetStartUrlForPageMenu(pageMapDataSource.Provider.RootNode, startingNodeOffset); } } if (startingNodeUrl.Length > 0) { pageMapDataSource.StartingNodeUrl = startingNodeUrl; } if (Page.IsPostBack) { // return if menu already bound if (treeMenu1.Nodes.Count > 0) { return; } } if (startingNodeOffset > (currentPageDepth + 1)) { this.Visible = false; return; } treeMenu1.PathSeparator = '|'; treeMenu1.DataSourceID = pageMapDataSource.ID; try { treeMenu1.DataBind(); } catch (ArgumentException ex) { log.Error(ex); } if (treeMenu1.SelectedNode != null) { mojoTreeView.ExpandToValuePath(treeMenu1, treeMenu1.SelectedNode.ValuePath); } else { //bool didSelect = false; String valuePath = string.Empty; if (isSubMenu) { valuePath = SiteUtils.GetPageMenuActivePageValuePath(pageMapDataSource.Provider.RootNode); if (startingNodeOffset > 0) { for (int i = 1; i <= startingNodeOffset; i++) { if (valuePath.IndexOf("|") > -1) { valuePath = valuePath.Remove(0, valuePath.IndexOf("|") + 1); } } } } else { valuePath = SiteUtils.GetActivePageValuePath(pageMapDataSource.Provider.RootNode, startingNodeOffset, Request.RawUrl); } mojoTreeView.ExpandToValuePath(treeMenu1, valuePath); TreeNode nodeToSelect = treeMenu1.FindNode(valuePath); if (nodeToSelect == null) { nodeToSelect = treeMenu1.FindNode(currentPage.PageName); } if (nodeToSelect != null) { try { nodeToSelect.Selected = true; //didSelect = true; } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } if (treeMenu1.Nodes.Count == 0) { this.Visible = false; } }
private void RenderTreeView() { #if NET35 if (WebConfigSettings.DisablePageViewStateByDefault) { Page.EnableViewState = true; } #endif if (currentPage == null) { currentPage = CacheHelper.GetCurrentPage(); } mojoTreeView treeMenu1; if (useArtisteer) { treeMenu1 = new ArtisteerTreeView(); } else { treeMenu1 = new mojoTreeView(); } treeMenu1.EnableTheming = true; treeMenu1.SkinID = menuSkinID; treeMenu1.ShowExpandCollapse = treeViewShowExpandCollapse; treeMenu1.UseMenuTooltipForCustomCss = useMenuTooltipForCustomCss; if (treeViewShowExpandCollapse) { treeMenu1.ShowExpandCollapse = true; treeMenu1.EnableViewState = true; treeMenu1.TreeNodeExpanded += new TreeNodeEventHandler(treeMenu1_TreeNodeExpanded); //this.EnableViewState = false; } else { treeMenu1.ShowExpandCollapse = false; treeMenu1.EnableViewState = false; this.EnableViewState = false; } treeMenu1.PopulateNodesFromClient = treeViewPopulateOnDemand; treeMenu1.ExpandDepth = treeViewExpandDepth; treeMenu1.TreeNodeDataBound += new TreeNodeEventHandler(treeMenu1_TreeNodeDataBound); treeMenu1.CollapseImageToolTip = Resource.TreeMenuCollapseTooltip; treeMenu1.ExpandImageToolTip = Resource.TreeMenuExpandTooltip; this.menuPlaceHolder.Controls.Add(treeMenu1); if (isSubMenu) { if ( (currentPage != null) && (currentPage.ParentId == -1) ) { if ( (currentPage.UseUrl) && (currentPage.Url.Length > 0) &&(WebConfigSettings.UseUrlReWriting) ) { pageMapDataSource.StartingNodeUrl = currentPage.Url; } else { pageMapDataSource.StartingNodeUrl = "~/Default.aspx?pageid=" + currentPage.PageId.ToInvariantString(); } } else { pageMapDataSource.StartingNodeUrl = SiteUtils.GetStartUrlForPageMenu(pageMapDataSource.Provider.RootNode, startingNodeOffset); } } if (startingNodeUrl.Length > 0) { pageMapDataSource.StartingNodeUrl = startingNodeUrl; } if (Page.IsPostBack) { // return if menu already bound if (treeMenu1.Nodes.Count > 0) return; } if (startingNodeOffset > (currentPageDepth + 1)) { this.Visible = false; return; } treeMenu1.PathSeparator = '|'; treeMenu1.DataSourceID = pageMapDataSource.ID; try { treeMenu1.DataBind(); } catch (ArgumentException ex) { log.Error(ex); } if (treeMenu1.SelectedNode != null) { mojoTreeView.ExpandToValuePath(treeMenu1, treeMenu1.SelectedNode.ValuePath); } else { //bool didSelect = false; String valuePath = string.Empty; if (isSubMenu) { valuePath = SiteUtils.GetPageMenuActivePageValuePath(pageMapDataSource.Provider.RootNode); if (startingNodeOffset > 0) { for (int i = 1; i <= startingNodeOffset; i++) { if (valuePath.IndexOf("|") > -1) { valuePath = valuePath.Remove(0, valuePath.IndexOf("|") + 1); } } } } else { valuePath = SiteUtils.GetActivePageValuePath(pageMapDataSource.Provider.RootNode, startingNodeOffset, Request.RawUrl); } mojoTreeView.ExpandToValuePath(treeMenu1, valuePath); TreeNode nodeToSelect = treeMenu1.FindNode(valuePath); if (nodeToSelect == null) { nodeToSelect = treeMenu1.FindNode(currentPage.PageName); } if (nodeToSelect != null) { try { nodeToSelect.Selected = true; //didSelect = true; } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } if (treeMenu1.Nodes.Count == 0) this.Visible = false; }
private void RenderTreeView() { #if NET35 if (WebConfigSettings.DisablePageViewStateByDefault) { Page.EnableViewState = true; } #endif //menu1.Visible = false; mojoTreeView treeMenu1; if (useArtisteer) { treeMenu1 = new ArtisteerTreeView(); treeMenu1.EnableViewState = false; treeMenu1.ShowExpandCollapse = false; } else { treeMenu1 = new mojoTreeView(); treeMenu1.UseDataRole = useDataRole; treeMenu1.SuppressImages = suppressImages; if (treeViewShowExpandCollapse) { treeMenu1.EnableViewState = true; treeMenu1.ShowExpandCollapse = true; treeMenu1.TreeNodeExpanded += new TreeNodeEventHandler(treeMenu1_TreeNodeExpanded); } else { treeMenu1.ShowExpandCollapse = false; #if !NET35 //http://www.4guysfromrolla.com/articles/071410-1.aspx //optimize viewstate for .NET 4 this.ViewStateMode = ViewStateMode.Disabled; treeMenu1.ViewStateMode = ViewStateMode.Disabled; #endif } } treeMenu1.EnableTheming = true; treeMenu1.SkinID = menuSkinID; treeMenu1.UseMenuTooltipForCustomCss = useMenuTooltipForCustomCss; this.menuPlaceHolder.Controls.Add(treeMenu1); #if !MONO treeMenu1.PopulateNodesFromClient = treeViewPopulateOnDemand; #endif treeMenu1.CollapseImageToolTip = Resource.TreeMenuCollapseTooltip; treeMenu1.ExpandImageToolTip = Resource.TreeMenuExpandTooltip; treeMenu1.ExpandDepth = 0; //treeMenu1.TreeNodePopulate += new TreeNodeEventHandler(treeMenu1_TreeNodePopulate); treeMenu1.TreeNodeDataBound += new TreeNodeEventHandler(treeMenu1_TreeNodeDataBound); //older skins have this StyleSheet stylesheet = (StyleSheet)Page.Master.FindControl("StyleSheet"); if (stylesheet != null) { if (stylesheet.FindControl("treeviewcss") == null) { Literal cssLink = new Literal(); cssLink.ID = "treeviewcss"; cssLink.Text = "\n<link href='" + SiteUtils.GetSkinBaseUrl(Page) + "styletreeview.css' type='text/css' rel='stylesheet' media='screen' />"; stylesheet.Controls.Add(cssLink); log.Debug("added stylesheet for treeiew"); } } treeMenu1.ExpandDepth = treeViewExpandDepth; //log.Debug("set ExpandDepth to " + treeViewExpandDepth.ToString(CultureInfo.InvariantCulture)); if (Page.IsPostBack) { // return if menu already bound if (treeMenu1.Nodes.Count > 0) { return; } } treeMenu1.PathSeparator = '|'; treeMenu1.DataSourceID = this.siteMapDataSource.ID; try { treeMenu1.DataBind(); } catch (ArgumentException ex) { log.Error(ex); } if ( (treeMenu1.SelectedNode != null) && (!suppressPageSelection) ) { mojoTreeView.ExpandToValuePath(treeMenu1, treeMenu1.SelectedNode.ValuePath); log.Debug("called mojoTreeview.ExpandToValuePath for selectednode value path: " + treeMenu1.SelectedNode.ValuePath); } else { bool didSelect = false; if (!suppressPageSelection) { String valuePath = SiteUtils.GetActivePageValuePath(siteMapDataSource.Provider.RootNode, startingNodeOffset, Request.RawUrl); mojoTreeView.ExpandToValuePath(treeMenu1, valuePath); log.Debug("called mojoTreeview.ExpandToValuePath for value path: " + valuePath); TreeNode nodeToSelect = treeMenu1.FindNode(valuePath); if (nodeToSelect != null) { try { nodeToSelect.Selected = true; didSelect = true; log.Debug("selected node " + nodeToSelect.Text); } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } if (!didSelect) { valuePath = SiteUtils.GetActivePageValuePath(siteMapDataSource.Provider.RootNode, startingNodeOffset); mojoTreeView.ExpandToValuePath(treeMenu1, valuePath); log.Debug("called mojoTreeview.ExpandToValuePath for value path: " + valuePath); if (valuePath.Length > 0) { nodeToSelect = treeMenu1.FindNode(valuePath); if (nodeToSelect != null) { try { nodeToSelect.Selected = true; didSelect = true; log.Debug("selected node " + nodeToSelect.Text); } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } } if (!didSelect) { if ((currentPage != null) && (currentPage.Url.Length > 0)) { string u = currentPage.Url.Replace("~/", "/"); valuePath = SiteUtils.GetActivePageValuePath(siteMapDataSource.Provider.RootNode, startingNodeOffset, u); mojoTreeView.ExpandToValuePath(treeMenu1, valuePath); nodeToSelect = treeMenu1.FindNode(valuePath); if (nodeToSelect != null) { try { nodeToSelect.Selected = true; didSelect = true; log.Debug("selected node " + nodeToSelect.Text); } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } } if (!didSelect) { valuePath = SiteUtils.GetActivePageValuePath(siteMapDataSource.Provider.RootNode, startingNodeOffset); if (valuePath.IndexOf(treeMenu1.PathSeparator) > -1) { valuePath = valuePath.Substring(0, (valuePath.IndexOf(treeMenu1.PathSeparator))); nodeToSelect = treeMenu1.FindNode(valuePath); if (nodeToSelect != null) { try { nodeToSelect.Selected = true; didSelect = true; log.Debug("selected node " + nodeToSelect.Text); } catch (InvalidOperationException) { //can happen if node disabled or unselectable } } } } } } }
//#region OnInit // protected override void OnInit(EventArgs e) // { // base.OnInit(e); // this.Load += new EventHandler(Page_Load); // } //#endregion protected void Page_Load(object sender, EventArgs e) { startingPageId = WebUtils.ParseInt32FromHashtable(Settings, "CustomMenuStartingPage", startingPageId); useTreeView = WebUtils.ParseBoolFromHashtable(Settings, "CustomMenuUseTreeView", useTreeView); maxDepth = WebUtils.ParseInt32FromHashtable(Settings, "CustomMenuMaxDepth", maxDepth); showStartingNode = WebUtils.ParseBoolFromHashtable(Settings, "CustomMenuShowStartingNode", showStartingNode); if (Settings.Contains("CustomMenuView")) { if (Settings["CustomMenuView"].ToString() != string.Empty) { viewName = Settings["CustomMenuView"].ToString(); } } PageSettings pageSettings = new PageSettings(siteSettings.SiteId, startingPageId); SiteMapDataSource menuDataSource = new SiteMapDataSource(); menuDataSource.SiteMapProvider = "mojosite" + siteSettings.SiteId.ToInvariantString(); var model = new mojoPortal.Web.Models.CustomMenu { MenuData = menuDataSource, StartingPage = pageSettings, CurrentPage = currentPage, UseTreeView = useTreeView, ShowStartingNode = showStartingNode, MaxDepth = maxDepth }; if (pageSettings == null || pageSettings.PageId == -2) { } else { SiteMapNode node = menuDataSource.Provider.FindSiteMapNode(pageSettings.Url); if (node != null || pageSettings.PageId == -1) { if (!useTreeView) { FlexMenu flexMenu = new FlexMenu(); flexMenu.MaxDataRenderDepth = maxDepth; flexMenu.StartingNodePageId = startingPageId; //flexMenu.SkinID = skinID; if (showStartingNode) { string startingPageName = pageSettings.PageId == -1 ? "Root" : pageSettings.PageName; if (currentPage.PageId == pageSettings.PageId) { flexMenu.ExtraTopMarkup += $@"<ul class='{flexMenu.RootUlCssClass} {flexMenu.UlSelectedCssClass}'> <li class='{flexMenu.RootLevelLiCssClass} {flexMenu.LiSelectedCssClass}'> <a href='{WebUtils.ResolveUrl(pageSettings.Url)}' class='{flexMenu.AnchorSelectedCssClass}'>{startingPageName }</a>" ; } else { flexMenu.ExtraTopMarkup += $@"<ul class='{flexMenu.RootUlCssClass} {flexMenu.UlChildSelectedCssClass}'> <li class='{flexMenu.RootLevelLiCssClass} {flexMenu.LiChildSelectedCssClass}'> <a href='{WebUtils.ResolveUrl(pageSettings.Url)}' class='{flexMenu.AnchorChildSelectedCssClass}'>{startingPageName }</a>" ; } flexMenu.ExtraBottomMarkup += "</li></ul>"; } pnlInnerBody.Controls.Add(flexMenu); } else //useTreeView { menuDataSource.StartingNodeUrl = node == null ? "~/" : node.Url; menuDataSource.ShowStartingNode = showStartingNode; mojoTreeView treeView = new mojoTreeView(); //treeView.SkinID = skinID; treeView.MaxDataBindDepth = maxDepth; treeView.DataSource = menuDataSource; try { treeView.DataBind(); } catch (ArgumentException ex) { //log.Error(ex); } pnlInnerBody.Controls.Add(treeView); } } } }