//TODO - share this with RedirectItemResolver protected virtual string GetRedirectUrl(Item redirectItem) { LinkField redirectLinkField = redirectItem.Fields[Templates.AdvancedRedirect.Fields.Target]; string redirectUrl = null; if (redirectLinkField != null) { if (!redirectLinkField.IsInternal || redirectLinkField.TargetItem == null) { redirectUrl = (!redirectLinkField.IsMediaLink || redirectLinkField.TargetItem == null ? redirectLinkField.Url : ((MediaItem)redirectLinkField.TargetItem).GetMediaUrl(null)); } else { //TODO - get site of taret item, not context, to support cross site resolving SiteInfo siteInfo = Context.Site.SiteInfo; //get the base options from the link provider ItemUrlBuilderOptions defaultOptions = new DefaultItemUrlBuilderOptions(); defaultOptions.Site = SiteContextFactory.GetSiteContext(siteInfo.Name); defaultOptions.AlwaysIncludeServerUrl = true; defaultOptions.SiteResolving = true; //inject option for languageembedding defaultOptions.LanguageEmbedding = LanguageEmbedding.Never; redirectUrl = LinkManager.GetItemUrl(redirectLinkField.TargetItem, defaultOptions); } } return(redirectUrl); }
public CustomLinkProvider(DefaultItemUrlBuilderOptions option) : base(option) { }