Beispiel #1
0
        //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)
 {
 }