Ejemplo n.º 1
0
    /// <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);
    }
Ejemplo n.º 2
0
	/// <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;
	}