Пример #1
0
        public static PXSettings GetSettings(Page page)
        {
            PXSettings settings = new PXSettings
            {
                NamedLinks            = false,
                EditLinkText          = PXMessages.LocalizeNoPrefix(Messages.Edit),
                CloseLinkText         = PXMessages.LocalizeNoPrefix(Messages.Close),
                DefaultStylesPath     = page.ResolveUrl/**/ ("~/App_Themes/Wiki.css"),
                GetCSSUrl             = page.ResolveUrl/**/ ("~/App_Themes/GetCSS.aspx"),
                ArticleShowUrl        = page.ResolveUrl/**/ ("~/Wiki/ShowWiki.aspx"),
                GetFileUrl            = page.ResolveUrl/**/ ("~/Frames/GetFile.ashx"),
                FileEditUrl           = page.ResolveUrl/**/ ("~/Pages/SM/SM202510.aspx"),
                GetRSSUrl             = page.ResolveUrl/**/ ("~/Frames/GetRSS.ashx"),
                HintImageUrl          = PXImages.ResolveImageUrl("~/App_Themes/Default/Images/Wiki/info.png"),
                WarnImageUrl          = PXImages.ResolveImageUrl("~/App_Themes/Default/Images/Wiki/Warn.png"),
                MagnifyImageUrl       = PXImages.ResolveImageUrl("~/App_Themes/Default/Images/Wiki/magnify.png"),
                DefaultExtensionImage = PXImages.ResolveImageUrl("~/App_Themes/Default/Images/Wiki/binary.gif"),
                RSSImageUrl           = PXImages.ResolveImageUrl("~/App_Themes/Default/Images/Wiki/rss.gif"),
                FilesDirectAccess     = true
            };

            foreach (UploadAllowedFileTypes ext in SitePolicy.AllowedFileTypes)
            {
                if (!string.IsNullOrEmpty(ext.IconUrl) && !settings.ExtensionsImages.ContainsKey(ext.FileExt.ToLower()))
                {
                    settings.ExtensionsImages.Add(ext.FileExt.ToLower(), page.ResolveUrl/**/ (ext.IconUrl));
                }
            }
            return(settings);
        }
Пример #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);
    }