示例#1
0
        public IEnumerable <MenuItem> GetMenuItems()
        {
            var mainAdminMenu = new SectionMenuItem("Admin", "/global/admin")
            {
                IsAvailable = request => PrincipalInfo.Current.HasPathAccess(UriSupport.Combine("/AdminPage", string.Empty))
            };

            var firstMenuItem = new UrlMenuItem("Hangfire", "/global/admin/main", "/episerver/backoffice/Plugins/hangfire")
            {
                IsAvailable = request => true,
                SortIndex   = 100
            };

            var secondMenuItem = new UrlMenuItem("Logging", "/global/admin/logging", "/LogManager")
            {
                IsAvailable = request => true,
                SortIndex   = 100
            };

            var thirdMenuItem = new UrlMenuItem("Elmah Logs", "/global/admin/elmah", "/elmah")
            {
                IsAvailable = request => true,
                SortIndex   = 100
            };

            return(new MenuItem[]
            {
                mainAdminMenu,
                firstMenuItem,
                secondMenuItem,
                thirdMenuItem
            });
        }
示例#2
0
        private static string CreateExternalLinkInternal(PageData page)
        {
            UrlBuilder url = new UrlBuilder(UriSupport.Combine(Settings.Instance.SiteUrl.ToString(), page.LinkURL));

            if (UrlRewriteProvider.IsFurlEnabled)
            {
                EPiServer.Global.UrlRewriteProvider.ConvertToExternal(url, null, System.Text.Encoding.UTF8);
            }
            return(url.ToString());
        }
示例#3
0
        public static string CombineUrl(string baseUrl, string pageUrl)
        {
            var ub   = new UrlBuilder(pageUrl);
            var host = ub.Host;

            if (!string.IsNullOrEmpty(host))
            {
                return(pageUrl);
            }

            return(UriSupport.Combine(baseUrl, pageUrl));
        }
示例#4
0
        /// <summary>
        /// Generates an absolute link to a thread with an anchor to the latest reply in that thread.
        /// </summary>
        /// <remarks>
        /// Used by the RSS/Atom feed.
        /// </remarks>
        /// <param name="page">A PageData to create an absolute link from.</param>
        /// <returns>An absolute link to page.</returns>
        protected override string CreateExternalLink(PageData page)
        {
            UrlBuilder url = new UrlBuilder(UriSupport.Combine(Settings.Instance.SiteUrl.ToString(), page.LinkURL));

            url.Fragment = "Reply" + Manager.GetLatestReply(page.PageLink).PageName;

            if (UrlRewriteProvider.IsFurlEnabled)
            {
                Global.UrlRewriteProvider.ConvertToExternal(url, null, System.Text.UTF8Encoding.UTF8);
                return(url.ToString());
            }
            else
            {
                return(url.ToString());
            }
        }
        protected string GetAbsoluteUrl(string url)
        {
            Uri absoluteUri;

            // if the URL is relative we add the base site URL (protocol and hostname)
            if (!IsAbsoluteUrl(url, out absoluteUri))
            {
                url = UriSupport.Combine(this.SitemapData.SiteUrl, url);
            }
            // Force the SiteUrl
            else
            {
                url = UriSupport.Combine(this.SitemapData.SiteUrl, absoluteUri.AbsolutePath);
            }

            return(url);
        }
        private static string GetDebugControllerPath()
        {
            string uiPath = UriSupport.InternalUIUrl.Path;

            if (cmsRegex.IsMatch(uiPath) && uiPath.Length > 5) // length > 5 so that there is something left after the replacement other option is to just panic and throw an exception :D
            {
                // currently the episerver uiUrl has to always contain /cms/ at the end and we need to remove that
                uiPath = cmsRegex.Replace(uiPath, "/");
            }

            if (uiPath.StartsWith("~"))
            {
                uiPath = uiPath.Substring(1);
            }

            // we just know the url to the debug controller will be like this, mkay? :D
            return(UriSupport.Combine(uiPath, "/Shell/Debug/"));
        }
        private void AddFilteredPageElement(PageData page, IList <XElement> xmlElements)
        {
            if (PageFilter.ShouldExcludePage(page))
            {
                return;
            }

            string url = this._urlResolver.GetUrl(page.ContentLink, page.LanguageBranch);

            // Make 100% sure we remove the language part in the URL if the sitemap host is mapped to the page's LanguageBranch.
            if (this._hostLanguageBranch != null && page.LanguageBranch.Equals(this._hostLanguageBranch, StringComparison.InvariantCultureIgnoreCase))
            {
                url = url.Replace(string.Format("/{0}/", this._hostLanguageBranch), "/");
            }

            Uri absoluteUri;

            // if the URL is relative we add the base site URL (protocol and hostname)
            if (!IsAbsoluteUrl(url, out absoluteUri))
            {
                url = UriSupport.Combine(this._sitemapData.SiteUrl, url);
            }
            // Force the SiteUrl
            else
            {
                url = UriSupport.Combine(this._sitemapData.SiteUrl, absoluteUri.AbsolutePath);
            }

            var fullPageUrl = new Uri(url);

            if (this._urlSet.Contains(fullPageUrl.ToString()) || UrlFilter.IsUrlFiltered(fullPageUrl.AbsolutePath, this._sitemapData))
            {
                return;
            }

            XElement pageElement = this.GenerateSiteElement(page, fullPageUrl.ToString());

            xmlElements.Add(pageElement);
            this._urlSet.Add(fullPageUrl.ToString());
        }
示例#8
0
        public void One_extra_arg_when_existing_arg_ending_with_ampersand()
        {
            string uri = UriSupport.Combine("http://www.base.url", "part2?arg0=val0&", new UriArg("arg1", "val1"));

            Assert.That(uri, Is.EqualTo("http://www.base.url/part2?arg0=val0&arg1=val1"));
        }
示例#9
0
        public void One_extra_arg_with_illegal_chars()
        {
            string uri = UriSupport.Combine("http://www.base.url", "part2", new UriArg("arg:<?&>1", "val:<?&>1"));

            Assert.That(uri, Is.EqualTo("http://www.base.url/part2?arg%3A%3C%3F%26%3E1=val%3A%3C%3F%26%3E1"));
        }
示例#10
0
        public void Three_extra_args_with_non_string_value()
        {
            string uri = UriSupport.Combine("http://www.base.url", "part2", new UriArg("arg1", 42), new UriArg("arg2", Guid.Empty), new UriArg("arg3", false));

            Assert.That(uri, Is.EqualTo("http://www.base.url/part2?arg1=42&arg2=00000000-0000-0000-0000-000000000000&arg3=False"));
        }
示例#11
0
 public void Empty_baseUri_not_allowed(string baseUri, string apiEndpointPart)
 {
     Assert.Throws <ArgumentException>(() => UriSupport.Combine(baseUri, apiEndpointPart));
 }
示例#12
0
        private void WriteRssDocument()
        {
            XmlDocument  doc       = new XmlDocument();
            XmlNode      outerNode = doc.CreateElement("rss");
            XmlAttribute uriInfo   = doc.CreateAttribute("xmlns:dc");

            uriInfo.Value = "http://purl.org/dc/elements/1.1/";
            outerNode.Attributes.Append(uriInfo);
            doc.AppendChild(outerNode);

            XmlAttribute versionInfo = doc.CreateAttribute("version");

            versionInfo.Value = "2.0";
            outerNode.Attributes.Append(versionInfo);

            XmlNode channel = doc.CreateElement("channel");

            outerNode.AppendChild(channel);

            XmlNode title = doc.CreateElement("title");

            title.InnerText = CurrentPage.PageName;
            channel.AppendChild(title);

            XmlNode link = doc.CreateElement("link");

            if (UrlRewriteProvider.IsFurlEnabled)
            {
                UrlBuilder url = new UrlBuilder(EPiServer.Configuration.Settings.Instance.SiteUrl);
                EPiServer.Global.UrlRewriteProvider.ConvertToExternal(url, null, System.Text.UTF8Encoding.UTF8);
                link.InnerText = url.ToString();
            }
            else
            {
                link.InnerText = EPiServer.Configuration.Settings.Instance.SiteUrl.ToString();
            }
            channel.AppendChild(link);

            XmlNode description = doc.CreateElement("description");

            description.InnerText = CurrentPage["Description"] as string;
            channel.AppendChild(description);

            PageReference      listingContainer = CurrentPage["RssSource"] as PageReference;
            PageDataCollection children         = GetChildren(listingContainer);

            FilterForVisitor.Filter(children);
            foreach (PageData page in children)
            {
                XmlNode item = doc.CreateNode(XmlNodeType.Element, "item", null);

                XmlNode itemTitle = doc.CreateElement("title");
                itemTitle.InnerText = page.PageName;
                item.AppendChild(itemTitle);

                UrlBuilder url      = new UrlBuilder(UriSupport.Combine(EPiServer.Configuration.Settings.Instance.SiteUrl.ToString(), page.LinkURL).ToString());
                XmlNode    itemLink = doc.CreateElement("link");
                if (UrlRewriteProvider.IsFurlEnabled)
                {
                    EPiServer.Global.UrlRewriteProvider.ConvertToExternal(url, null, System.Text.UTF8Encoding.UTF8);
                    itemLink.InnerText = url.ToString();
                }
                else
                {
                    itemLink.InnerText = url.ToString();
                }
                item.AppendChild(itemLink);

                XmlNode itemDescription = doc.CreateElement("description");
                itemDescription.InnerText = CreatePreviewText(page);
                item.AppendChild(itemDescription);

                XmlNode itemGuid = doc.CreateElement("guid");
                itemGuid.InnerText = url.ToString();
                item.AppendChild(itemGuid);

                XmlNode itemPubDate = doc.CreateElement("pubDate");
                itemPubDate.InnerText = page.Changed.ToString("r");
                item.AppendChild(itemPubDate);

                foreach (int category in page.Category)
                {
                    XmlNode itemCategory = doc.CreateElement("category");
                    itemCategory.InnerText = page.Category.GetCategoryName(category);
                    item.AppendChild(itemCategory);
                }

                channel.AppendChild(item);
            }

            doc.Save(Response.OutputStream);
        }
示例#13
0
        /// <summary>
        /// Create a string with an absolute link to the page. Checks if furl is enabled and rewrites the link if appropriate.
        /// </summary>
        /// <param name="page">A PageData to create an absolute link from.</param>
        /// <returns>An absolute link to page</returns>
        public static string CreateExternalLink(PageData page)
        {
            UrlBuilder url = new UrlBuilder(UriSupport.Combine(Settings.Instance.SiteUrl.ToString(), page.LinkURL));

            return(url.ToString());
        }
示例#14
0
        public void Three_extra_args()
        {
            string uri = UriSupport.Combine("http://www.base.url", "part2", new UriArg("arg1", "val1"), new UriArg("arg2", "val2"), new UriArg("arg3", "val3"));

            Assert.That(uri, Is.EqualTo("http://www.base.url/part2?arg1=val1&arg2=val2&arg3=val3"));
        }
示例#15
0
        public void One_extra_arg_when_ending_with_questionmark()
        {
            string uri = UriSupport.Combine("http://www.base.url", "part2?", new UriArg("arg1", "val1"));

            Assert.That(uri, Is.EqualTo("http://www.base.url/part2?arg1=val1"));
        }
示例#16
0
        public void One_extra_arg()
        {
            string uri = UriSupport.Combine("http://www.base.url", "part2", new UriArg("arg1", "val1"));

            Assert.That(uri, Is.EqualTo("http://www.base.url/part2?arg1=val1"));
        }
示例#17
0
        public void Double_glue_slash()
        {
            string uri = UriSupport.Combine("http://www.base.url/", "/part2");

            Assert.That(uri, Is.EqualTo("http://www.base.url/part2"));
        }
示例#18
0
        public void Empty_apiEndpointPart(string apiEndpointPart)
        {
            string uri = UriSupport.Combine("http://www.base.url", apiEndpointPart);

            Assert.That(uri, Is.EqualTo("http://www.base.url"));
        }