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 }); }
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()); }
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)); }
/// <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()); }
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")); }
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")); }
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")); }
public void Empty_baseUri_not_allowed(string baseUri, string apiEndpointPart) { Assert.Throws <ArgumentException>(() => UriSupport.Combine(baseUri, apiEndpointPart)); }
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); }
/// <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()); }
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")); }
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")); }
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")); }
public void Double_glue_slash() { string uri = UriSupport.Combine("http://www.base.url/", "/part2"); Assert.That(uri, Is.EqualTo("http://www.base.url/part2")); }
public void Empty_apiEndpointPart(string apiEndpointPart) { string uri = UriSupport.Combine("http://www.base.url", apiEndpointPart); Assert.That(uri, Is.EqualTo("http://www.base.url")); }