/// <summary> /// Prepares the redirect URL. /// </summary> /// <param name="item">The item.</param> /// <returns> /// The redirect URL. /// </returns> private static string PrepareRedirectUrl(RedirectItem item) { if (item == null) { return string.Empty; } var queryString = item.TargetQueryString; var targetUrl = item.Target; if (!string.IsNullOrEmpty(queryString)) { targetUrl = !string.IsNullOrEmpty(Context.Request.QueryString.ToString()) ? string.Format("{0}?{1}&{2}", targetUrl, queryString, Context.Request.QueryString) : string.Format("{0}?{1}", targetUrl, queryString); } else { if (!string.IsNullOrEmpty(Context.Request.QueryString.ToString())) { targetUrl = string.Format("{0}?{1}", targetUrl, Context.Request.QueryString); } } if (!item.External) { targetUrl = string.Format("{0}{1}", UrlNormalizer.GetVirtualVolder(), targetUrl); } return UrlNormalizer.EncodeUrl(targetUrl); }
/// <summary> /// Adds the section to section redirect. /// </summary> /// <param name="item">The item.</param> /// <returns>Redirect item</returns> private static RedirectItem AddSectionToSectionRedirect(Item item) { if (item == null) { return null; } var sectionToSection = new SectionToSection(item); if (string.IsNullOrEmpty(sectionToSection.BaseSection.Value) || sectionToSection.TargetSection.TargetItem == null) { return null; } if (!CheckPresentation(sectionToSection.TargetSection.TargetItem)) { return null; } var redirectItem = new RedirectItem { ItemId = sectionToSection.ID, Target = UrlNormalizer.GetItemUrl(sectionToSection.TargetSection.TargetItem), Base = UrlNormalizer.Normalize(sectionToSection.BaseSection.Value), RedirectCode = sectionToSection.RedirectCode }; return redirectItem; }
/// <summary> /// Adds the section descendants. /// </summary> /// <param name="targetItemId">The target item id.</param> /// <param name="baseSectionUrl">The base section URL.</param> /// <param name="targetSectionUrl">The target section URL.</param> /// <param name="itemId">The item id.</param> /// <param name="redirectCode">The redirect code.</param> /// <returns> /// list of items redirects /// </returns> private static IEnumerable<RedirectItem> AddSectionDescendants( string targetItemId, string baseSectionUrl, string targetSectionUrl, ID itemId, int redirectCode) { var sectionItem = Factory.GetDatabase(Configuration.Database).GetItem(targetItemId); if (sectionItem == null) { return null; } var list = new List<RedirectItem>(); if (CheckPresentation(sectionItem)) { var sectionRedirectItem = new RedirectItem { ItemId = itemId, Target = targetSectionUrl, Base = UrlNormalizer.CheckPageExtension(baseSectionUrl), RedirectCode = redirectCode }; list.Add(sectionRedirectItem); } baseSectionUrl = UrlNormalizer.Normalize(baseSectionUrl); targetSectionUrl = UrlNormalizer.RemovePageExtension(targetSectionUrl); if (targetSectionUrl == "/") { list.AddRange( from item in sectionItem.Axes.GetDescendants().Where(CheckPresentation) select UrlNormalizer.GetItemUrl(item) into targetUrl let baseUrl = string.Format("{0}{1}", baseSectionUrl, targetUrl) select new RedirectItem { ItemId = itemId, Target = targetUrl, Base = baseUrl, External = false, RedirectCode = redirectCode }); } else { list.AddRange( from item in sectionItem.Axes.GetDescendants().Where(CheckPresentation) select UrlNormalizer.GetItemUrl(item) into targetUrl let baseUrl = targetUrl.Replace(targetSectionUrl, baseSectionUrl) select new RedirectItem { ItemId = itemId, Target = targetUrl, Base = baseUrl, External = false, RedirectCode = redirectCode }); } return list; }
/// <summary> /// Adds the section to item redirect. /// </summary> /// <param name="item">The item.</param> /// <returns>Redirect item</returns> private static RedirectItem AddSectionToItemRedirect(Item item) { if (item == null) { return null; } var sectionToItem = new SectionToItem(item); if (string.IsNullOrEmpty(sectionToItem.BaseSection.Value) || string.IsNullOrEmpty(sectionToItem.TargetItem.Url)) { return null; } if (!CheckPresentation(sectionToItem.TargetItem.TargetItem)) { return null; } var external = true; var targetUrl = sectionToItem.TargetItem.Url; if (sectionToItem.TargetItem.IsInternal) { targetUrl = UrlNormalizer.GetItemUrl(sectionToItem.TargetItem.TargetItem); external = false; } var redirectItem = new RedirectItem { ItemId = sectionToItem.ID, Target = targetUrl, TargetQueryString = sectionToItem.TargetItem.QueryString, Base = UrlNormalizer.RemovePageExtension(UrlNormalizer.Normalize(sectionToItem.BaseSection.Value)), External = external, RedirectCode = sectionToItem.RedirectCode }; return redirectItem; }
/// <summary> /// Adds the item to list. /// </summary> /// <param name="item">The item.</param> /// <param name="list">The list.</param> /// <returns> /// The list with added item. /// </returns> private static List<RedirectItem> AddItemToList(RedirectItem item, List<RedirectItem> list) { if (item != null) { if (!CheckDuplicates(item.Base, list)) { list.Add(item); } } return list; }