コード例 #1
0
        private IHtmlString GetLinkUrl(ContactBlock contactBlock)
        {
            if (contactBlock.LinkUrl != null && !contactBlock.LinkUrl.IsEmpty())
            {
                var linkUrl = contactBlock.LinkUrl.ToString();

                //If the url maps to a page on the site we convert it from the internal (permanent, GUID-like) format
                //to the human readable and pretty public format
                var linkMap = _permanentLinkMapper.Find(new UrlBuilder(linkUrl));
                if (linkMap != null && !ContentReference.IsNullOrEmpty(linkMap.ContentReference))
                {
                    return(Url.PageLinkUrl(linkMap.ContentReference));
                }

                return(new MvcHtmlString(contactBlock.LinkUrl.ToString()));
            }

            return(null);
        }
コード例 #2
0
        public override string GetUrl(UrlBuilder urlBuilderWithInternalUrl, VirtualPathArguments arguments)
        {
            var url = _defaultUrlResolver.GetUrl(urlBuilderWithInternalUrl, arguments);

            if (!ExternalReview.IsInProjectReviewContext || !ExternalReview.IsInExternalReviewContext || url == null)
            {
                return(url);
            }

            var linkMap = _permanentLinkMapper.Find(urlBuilderWithInternalUrl);

            if (linkMap != null)
            {
                var content = _contentLoader.Get <IContent>(linkMap.ContentReference);
                if (content is PageData)
                {
                    return(AppendGeneratedPostfix(url));
                }
            }

            return(url);
        }
        protected override IContent Import(ImportedContentData importedContentData
                                           , AccessLevel requiredDestinationAccess, IContentTransferContext context
                                           , TransferImportOptions options, out Guid importedPageGuid)
        {
            if (options.TransferType != TypeOfTransfer.Importing)
            {
                return(base.Import(importedContentData
                                   , requiredDestinationAccess
                                   , context, options, out importedPageGuid));
            }

            CultureInfo originalSelectedLanguage = null;

            if (importedContentData.SelectedLanguage != null)
            {
                originalSelectedLanguage = CultureInfo.GetCultureInfo(importedContentData.SelectedLanguage.Name);
            }

            var selectedLanguageAction = importedContentData.GetType().GetProperty("SelectedLanguage");
            var contentLanguage        = importedContentData.GetLanguageBranch();

            if (!string.IsNullOrEmpty(contentLanguage))
            {
                selectedLanguageAction.SetValue(importedContentData, CultureInfo.GetCultureInfo(contentLanguage));
            }

            var        status              = importedContentData.GetStatus();
            var        propSaveAction      = context.GetType().GetProperty("SaveAction");
            SaveAction originalSaveActions = SaveAction.Publish | SaveAction.SkipValidation;

            if (!string.IsNullOrEmpty(status) && int.Parse(status) < (int)VersionStatus.Published)
            {
                propSaveAction.SetValue(context, SaveAction.CheckOut | SaveAction.ForceNewVersion | SaveAction.SkipValidation);
            }

            var orgPageSaveDBChangeBy  = ContextCache.Current["PageSaveDB:ChangedBy"];
            var orgPageSaveDBPageSaved = ContextCache.Current["PageSaveDB:PageSaved"];

            ContextCache.Current["PageSaveDB:ChangedBy"] = string.Empty;
            ContextCache.Current["PageSaveDB:PageSaved"] = string.Empty;

            try
            {
                var importedContentGuid     = new Guid(importedContentData.GetContentGuid());
                var handleContentGuidMethod = defaultContentImporter.GetType()
                                              .GetMethod("HandleContentGuid", BindingFlags.NonPublic | BindingFlags.Instance);
                var guid = (Guid)handleContentGuidMethod.Invoke(
                    defaultContentImporter
                    , new object[] { importedContentGuid, context });
                PermanentLinkMap permanentLinkMap = permanentLinkMapper.Find(guid);

                var baseContent = base.Import(importedContentData
                                              , requiredDestinationAccess
                                              , context, options, out importedPageGuid);

                if (permanentLinkMap != null && (context.SaveAction & SaveAction.Publish) != SaveAction.Publish)
                {
                    contentRepository.Save(baseContent, context.SaveAction, requiredDestinationAccess);
                }

                return(baseContent);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw;
            }
            finally
            {
                selectedLanguageAction.SetValue(importedContentData, originalSelectedLanguage);
                propSaveAction.SetValue(context, originalSaveActions);
                ContextCache.Current["PageSaveDB:ChangedBy"] = orgPageSaveDBChangeBy;
                ContextCache.Current["PageSaveDB:PageSaved"] = orgPageSaveDBPageSaved;
            }
        }