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); }
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; } }