/// <summary>Calculates an item url by walking it's parent path.</summary> /// <param name="item">The item whose url to compute.</param> /// <returns>A friendly url to the supplied item.</returns> public override Url BuildUrl(ContentItem item) { if (item == null) { throw new ArgumentNullException("item"); } if (item.VersionOf.HasValue) { return(BuildUrl(item.VersionOf) .SetQueryParameter(PathData.VersionQueryKey, item.VersionIndex)); } else if (item.ID == 0) { var page = Find.ClosestPage(item); if (page != null && page != item) { return(BuildUrl(page) .SetQueryParameter(PathData.VersionQueryKey, page.VersionIndex) .SetQueryParameter("versionKey", item.GetVersionKey())); } } // move up until first real page var current = Find.ClosestPage(item); // no page found, throw if (current == null) { throw new N2Exception("Cannot build url to data item '{0}' with no containing page item.", item); } Url url = BuildPageUrl(current, ref current); var startPage = FindStartPage(current); // no start page found, use rewritten url if (startPage == null) { return(item.FindPath(PathData.DefaultAction).GetRewrittenUrl()); } if (!item.IsPage) { // the item was not a page, add this information as a query string url = url.AppendQuery(PathData.ItemQueryKey, item.ID); } if (startPage.ID == host.CurrentSite.StartPageID) { // the start page belongs to the current site, use relative url return(Url.ToAbsolute("~" + url.PathAndQuery)); } var site = host.GetSite(startPage.ID) ?? host.DefaultSite; return(GetHostedUrl(item, url, site)); }
public string SelectedUrl(Url baseUrl, ContentItem selected = null) { return baseUrl.AppendQuery(SelectedQueryKey, (selected ?? SelectedItem).Path).ResolveTokens(); }
private ActionResult RedirectToIndex(string errorText) { N2.Web.Url url = CurrentPage.Url; return(Redirect(url.AppendQuery("failure", CurrentItem.ID).AppendQuery("errorText", errorText))); }
public ActionResult Reconfigure() { N2.Web.Url url = CurrentPage.Url; return(Redirect(url.AppendQuery("reconfigure", CurrentItem.ID))); }
public ActionResult ChangeAccount() { N2.Web.Url url = CurrentPage.Url; return(Redirect(url.AppendQuery("changeaccount", CurrentItem.ID))); }
public string GenerateCategoryLink(long? categoryId, bool? forceListPage, out object matchingCategoryPage) { //~~ a cheap and nasty chaos monkey //if (DateTime.Now.Minute % 2 == 1) // throw new Exception("chaos happened " + categoryId); //~~ string ret; var cacheKey = string.Format("{0} {1} {2} {3} {4}", WebSession.Current.SiteId, WebSession.Current.LanguageCode, "CategoryLink", categoryId, forceListPage); if (!_urlCache.TryGet(cacheKey, out ret)) { var catPages = CmsFinder.FindDescendentsOrFallbackOfCurrentPageLanguageRoot<CatalogPage>(); if (catPages.All(cps => cps.CategoryID.Length != 0)) { // find a category page from the root level that has no category ID var defaultCatPage = CmsFinder.FindAllNonSiteDescendentsOfRoot<CatalogPage>() .LastOrDefault(cps => cps.CategoryID.Length == 0); if (defaultCatPage != null) catPages.Add(defaultCatPage); } CatalogPage cp; if (forceListPage.HasValue && forceListPage.Value) cp = catPages.LastOrDefault(catalogPage => catalogPage.CategoryID.Length == 0); else cp = catPages.FirstOrDefault(catalogPage => catalogPage.CategoryID.Equals(categoryId.ToString(), StringComparison.InvariantCultureIgnoreCase)) ?? catPages.LastOrDefault(catalogPage => catalogPage.CategoryID.Length == 0); if (cp == null) ret = null; else { // If the category page came from the root, append it's name and parameters to the current page's url var url = new Url(GetNormalizedPageUrl(cp)); if (string.IsNullOrEmpty(cp.CategoryID) && categoryId != null) url = url.Append(categoryId.Value.ToString(CultureInfo.InvariantCulture)); if (forceListPage.HasValue && forceListPage.Value && string.IsNullOrEmpty(cp.CategoryID)) url = url.AppendQuery("list=true"); ret = url.ToString(); } AddCache(cacheKey, ret, cp); } _itemCache.TryGet(cacheKey, out matchingCategoryPage); return ret; }
/// <summary>Calculates an item url by walking it's parent path.</summary> /// <param name="item">The item whose url to compute.</param> /// <returns>A friendly url to the supplied item.</returns> public virtual Url BuildUrl(ContentItem item) { if (item == null) { throw new ArgumentNullException("item"); } if (item.VersionOf.HasValue) { ContentItem version = item.VersionOf; if (version != null) { return(BuildUrl(version) .SetQueryParameter(PathData.VersionQueryKey, item.VersionIndex)); } } else if (item.ID == 0) { var page = Find.ClosestPage(item); if (page != null && page != item) { return(BuildUrl(page) .SetQueryParameter(PathData.VersionQueryKey, page.VersionIndex) .SetQueryParameter("versionKey", item.GetVersionKey())); } } var current = Find.ClosestPage(item); // no page found, throw if (current == null) { throw new N2Exception("Cannot build url to data item '{0}' with no containing page item.", item); } Url url = BuildPageUrl(current, ref current); if (current == null) { // no start page found, use rewritten url return(item.FindPath(PathData.DefaultAction).GetRewrittenUrl()); } if (!item.IsPage) { // the item was not a page, add this information as a query string url = url.AppendQuery(PathData.ItemQueryKey, item.ID); } var absoluteUrl = Url.ToAbsolute("~" + url); if (BuiltUrl != null) { var args = new UrlEventArgs(item) { Url = absoluteUrl }; BuiltUrl(this, args); return(args.Url); } else { return(absoluteUrl); } }
void securityEnforcer_AuthorizationFailed(object sender, CancellableItemEventArgs e) { var url = new Url("{ManagementUrl}/Login.aspx").ResolveTokens(); url.AppendQuery("returnUrl", _context.Url.LocalUrl); _context.HttpContext.Response.Redirect(url); }