Beispiel #1
0
    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;
    }
Beispiel #2
0
    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;
    }
Beispiel #3
0
    /// <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]);
            }
        }
Beispiel #4
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);
    }