protected void Page_Load(object sender, EventArgs e) { List <SiteMapNode> source = new List <SiteMapNode>(); PXWikiProvider wiki = PXSiteMap.WikiProvider; SiteMapNode wikiRoot = wiki.RootNode; if (this.IsCallback) { this.EnableViewStateMac = false; } this.InitSearchBox(); foreach (SiteMapNode node in SiteMap.RootNode.ChildNodes) { PX.Data.PXSiteMapNode swNode = node as PX.Data.PXSiteMapNode; if (swNode == null) { source.Add(node); } } navPanel.DataBindings.TextField = "Title"; navPanel.DataBindings.ImageUrlField = "Description"; navPanel.DataBindings.ContentUrlField = "Url"; navPanel.DataSource = source; navPanel.DataBind(); bindComplete = false; }
protected void Page_Load(object sender, EventArgs e) { List <SiteMapNode> source = new List <SiteMapNode>(); SiteMapNode favorite = null; PXWikiProvider wiki = PXSiteMap.WikiProvider; SiteMapNode wikiRoot = wiki.RootNode; if (this.IsCallback) { this.EnableViewStateMac = false; } this.InitSearchBox(); foreach (SiteMapNode node in SiteMap.RootNode.ChildNodes) { PX.Data.PXSiteMapNode swNode = node as PX.Data.PXSiteMapNode; if (swNode != null) { if (swNode.ScreenID == "FV000000") { favorite = node; } else if (swNode.ScreenID != "HD000000") { source.Add(node); } } else { source.Add(node); } } bool?fvExists = PX.Common.PXContext.Session.FavoritesExists["FavoritesExists"]; if (fvExists == null) { fvExists = PX.Data.PXSiteMap.FavoritesProvider.FavoritesExists(); PX.Common.PXContext.Session.FavoritesExists["FavoritesExists"] = fvExists; } if ((bool)fvExists && favorite != null) { source.Insert(0, favorite); } navPanel.DataBindings.TextField = "Title"; navPanel.DataBindings.ImageUrlField = "Description"; navPanel.DataBindings.ContentUrlField = "Url"; navPanel.DataSource = source; navPanel.DataBind(); bindComplete = false; }
/// <summary> /// The tree node bound event handler. /// </summary> private void tree_NodeDataBound(object sender, PXTreeNodeEventArgs e) { INavigateUIData dataItem = e.Node.DataItem as INavigateUIData; // sets the node images PX.Data.PXSiteMapNode node = e.Node.DataItem as PX.Data.PXSiteMapNode; string descr = dataItem.Description; if (!string.IsNullOrEmpty(descr)) { string[] im = descr.Split('|'); e.Node.Images.Normal = this.ResolveUrl/**/ (im[0]); if (im.Length > 1) { e.Node.Images.Selected = this.ResolveUrl/**/ (im[1]); } }
/// <summary> /// Create the tree view control inside each band. /// </summary> protected void navPanel_BarItemDataBound(object sender, PXBarItemDataBoundEventArgs e) { if (bindComplete) { return; } INavigateUIData dataItem = e.BarItem.DataItem as INavigateUIData; PX.Data.PXSiteMapNode swNode = dataItem as PX.Data.PXSiteMapNode; int index = navPanel.Bars.IndexOf(e.BarItem); string req = this.Request.Params["__CALLBACKID"]; string trId = swNode.ScreenID == "FV000000" ? "favorites" : "tree" + swNode.Key.Replace('-', '_'); string descr = dataItem.Description; if (this.IsCallback && !req.Contains("sp" + index) && !req.Contains(trId)) { return; } if (!string.IsNullOrEmpty(descr)) { string[] im = descr.Split('|'); e.BarItem.ImageUrl = PXImages.ResolveImageUrl(im[0], this); if (im.Length > 1) { if (im[1].Contains(".") || im[1].Contains("@")) { e.BarItem.SmallImageUrl = PXImages.ResolveImageUrl(im[1], this); } else { e.BarItem.SmallText = im[1]; } } } e.BarItem.Tooltip = dataItem.Name; e.BarItem.ContentUrl = this.ResolveUrl/**/ (dataItem.NavigateUrl); e.BarItem.Target = "main"; PXSmartPanel panel = new PXSmartPanel(); panel.ID = "sp" + index.ToString(); panel.LoadOnDemand = index != 0; panel.AllowResize = panel.AllowMove = false; panel.RenderVisible = true; panel.Width = panel.Height = Unit.Percentage(100); e.BarItem.TemplateContainer.Controls.Add(panel); SiteMapDataSource ds = new SiteMapDataSource(); ds.ID = "ds" + index.ToString(); ds.StartingNodeUrl = dataItem.NavigateUrl; ds.ShowStartingNode = false; panel.Controls.Add(ds); Control content = null; if (PXSiteMap.WikiProvider.FindSiteMapNodeFromKey(swNode.NodeID) != null) { if (PXSiteMap.WikiProvider.GetWikiID(swNode.Title) != Guid.Empty || PXSiteMap.WikiProvider.GetWikiIDFromUrl(swNode.Url) != Guid.Empty) { content = CreateWikiTree(swNode, trId); } } else if (swNode.ScreenID == "FV000000") { ds.Provider = PXSiteMap.FavoritesProvider; ds.StartingNodeUrl = SiteMap.RootNode.Url; content = CreateTree(ds, trId); } else { content = CreateTree(ds, trId); } if (content == null) { return; } panel.Controls.Add(content); } protected void navPanel_OnDataBound(object sender, EventArgs e) { bindComplete = true; } #endregion #region Methods to work with sitemap tree private PXTreeView CreateTree(SiteMapDataSource ds, string controlName) { PXTreeView tree = new PXTreeView(); tree.DataSourceID = ds.ID; tree.ID = controlName; tree.Width = tree.Height = Unit.Percentage(100); tree.Style[HtmlTextWriterStyle.BorderWidth] = Unit.Pixel(0).ToString(); tree.ShowRootNode = false; tree.Target = "main"; tree.ApplyStyleSheetSkin(this); tree.Style[HtmlTextWriterStyle.Position] = "absolute"; tree.NodeDataBound += new PXTreeNodeEventHandler(tree_NodeDataBound); tree.ShowLines = false; tree.ClientEvents.NodeClick = "treeClick"; tree.Synchronize += new PXTreeSyncEventHandler(tree_Synchronize); return(tree); } private PXWikiTree CreateWikiTree(PX.Data.PXSiteMapNode node, string treeId) { PXWikiTree tree = new PXWikiTree(); string url = node.Url; Guid wikiId = PX.Data.PXSiteMap.WikiProvider.GetWikiIDFromUrl(node.Url); PX.SM.WikiReader reader = new PX.SM.WikiReader(); PX.SM.WikiDescriptor wiki = reader.wikis.SelectWindowed(0, 1, wikiId); tree.Provider = PX.Data.PXSiteMap.WikiProvider; url = PX.SM.Wiki.Url(wikiId); tree.ID = treeId; tree.WikiID = wikiId; tree.ShowRootNode = false; tree.Target = "main"; tree.StartingNodeUrl = this.ResolveUrl/**/ (url); tree.SearchUrl = this.ResolveUrl/**/ ("~/Search/Wiki.aspx") + "?query="; tree.NewArticleUrl = wiki == null || string.IsNullOrEmpty(wiki.UrlEdit) ? "" : this.ResolveUrl/**/ (wiki.UrlEdit) + "?wiki=" + wikiId; if (PXSiteMap.IsPortal) { tree.SearchUrl = this.ResolveUrl("~/Search/WikiSP.aspx") + "?adv=1&query="; } tree.Width = tree.Height = Unit.Percentage(100); tree.Style[HtmlTextWriterStyle.Position] = "absolute"; tree.ClientEvents.NodeClick = "treeClick"; tree.Synchronize += new PXTreeSyncEventHandler(wikiTree_Synchronize); return(tree); }