Пример #1
0
        /// <summary>
        /// The default action to render the front-end view
        /// </summary>
        /// <param name="model"/>
        /// <returns/>
        public new async Task <ActionResult> Index(RenderModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            var mediaUrlTransformer = new RemoveMediaDomainUrlTransformer();
            var viewModel           = new JobsHomeViewModelFromUmbraco(model.Content,
                                                                       new RelatedLinksService(mediaUrlTransformer, new RemoveAzureDomainUrlTransformer())).BuildModel();

            // Add common properties to the model
            var expiryDate   = new ExpiryDateFromExamine(model.Content.Id, ExamineManager.Instance.SearchProviderCollection["ExternalSearcher"], new ExpiryDateMemoryCache(TimeSpan.FromHours(1)));
            var modelBuilder = new BaseViewModelBuilder(new EastSussexGovUKTemplateRequest(Request, webChatSettingsService: new UmbracoWebChatSettingsService(model.Content, new UrlListReader())));
            await modelBuilder.PopulateBaseViewModel(viewModel, model.Content, new ContentExperimentSettingsService(),
                                                     expiryDate.ExpiryDate,
                                                     UmbracoContext.Current.InPreviewMode);

            modelBuilder.PopulateBaseViewModelWithInheritedContent(viewModel,
                                                                   new UmbracoLatestService(model.Content),
                                                                   new UmbracoSocialMediaService(model.Content),
                                                                   null, null, null);

            new HttpCachingService().SetHttpCacheHeadersFromUmbracoContent(model.Content, UmbracoContext.Current.InPreviewMode, Response.Cache, new IExpiryDateSource[] { expiryDate, new ExpiryDateFromPropertyValue(model.Content, "latestUnpublishDate_Latest") });

            return(CurrentTemplate(viewModel));
        }
        /// <summary>
        /// The default action to render the front-end view
        /// </summary>
        /// <param name="model"/>
        /// <returns/>
        public override ActionResult Index(RenderModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException("model");
            }

            var mediaUrlTransformer = new RemoveMediaDomainUrlTransformer();
            var viewModel           = MapUmbracoContentToViewModel(model.Content,
                                                                   new UmbracoLatestService(model.Content),
                                                                   new UmbracoSocialMediaService(model.Content),
                                                                   new UmbracoEastSussex1SpaceService(model.Content),
                                                                   new UmbracoWebChatSettingsService(model.Content, new UrlListReader()),
                                                                   new UmbracoOnAzureRelatedLinksService(mediaUrlTransformer),
                                                                   new ContentExperimentSettingsService(),
                                                                   new UmbracoEscisService(model.Content),
                                                                   mediaUrlTransformer);

            new HttpCachingService().SetHttpCacheHeadersFromUmbracoContent(model.Content, UmbracoContext.Current.InPreviewMode, Response.Cache, new List <string>()
            {
                "latestUnpublishDate_Latest"
            });

            return(CurrentTemplate(viewModel));
        }
Пример #3
0
        /// <summary>
        /// The default action to render the front-end view
        /// </summary>
        /// <param name="model"/>
        /// <returns/>
        public override ActionResult Index(RenderModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            var mediaUrlTransformer = new RemoveMediaDomainUrlTransformer();
            var viewModel           = new JobsHomeViewModelFromUmbraco(model.Content,
                                                                       new UmbracoOnAzureRelatedLinksService(mediaUrlTransformer)).BuildModel();

            // Add common properties to the model
            var modelBuilder = new BaseViewModelBuilder();

            modelBuilder.PopulateBaseViewModel(viewModel, model.Content, new ContentExperimentSettingsService(), UmbracoContext.Current.InPreviewMode);
            modelBuilder.PopulateBaseViewModelWithInheritedContent(viewModel,
                                                                   new UmbracoLatestService(model.Content),
                                                                   new UmbracoSocialMediaService(model.Content),
                                                                   null,
                                                                   new UmbracoWebChatSettingsService(model.Content, new UrlListReader()),
                                                                   null);

            new HttpCachingService().SetHttpCacheHeadersFromUmbracoContent(model.Content, UmbracoContext.Current.InPreviewMode, Response.Cache, new List <string>()
            {
                "latestUnpublishDate_Latest"
            });

            return(CurrentTemplate(viewModel));
        }
Пример #4
0
        /// <summary>
        /// The default action to render the front-end view
        /// </summary>
        /// <param name="model"/>
        /// <returns/>
        public new async Task <ActionResult> Index(RenderModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException("model");
            }

            var expiryDate          = new ExpiryDateFromExamine(model.Content.Id, ExamineManager.Instance.SearchProviderCollection["ExternalSearcher"], new ExpiryDateMemoryCache(TimeSpan.FromHours(1)));
            var mediaUrlTransformer = new RemoveMediaDomainUrlTransformer();
            var viewModel           = await MapUmbracoContentToViewModel(model.Content, expiryDate.ExpiryDate,
                                                                         new UmbracoLatestService(model.Content),
                                                                         new UmbracoSocialMediaService(model.Content),
                                                                         new UmbracoEastSussex1SpaceService(model.Content),
                                                                         new UmbracoWebChatSettingsService(model.Content, new UrlListReader()),
                                                                         new RelatedLinksService(mediaUrlTransformer, new ElibraryUrlTransformer(), new RemoveAzureDomainUrlTransformer()),
                                                                         new ContentExperimentSettingsService(),
                                                                         new UmbracoEscisService(model.Content),
                                                                         new RatingSettingsFromUmbraco(model.Content),
                                                                         mediaUrlTransformer,
                                                                         new SkinFromUmbraco());

            SetupHttpCaching(model, viewModel, expiryDate);

            return(CurrentTemplate(viewModel));
        }
        public void AbsoluteUrlIsUpdatedInHtml(string before, string expected)
        {
            var linkTransformer = new RemoveMediaDomainUrlTransformer();

            var after = linkTransformer.ParseAndTransformMediaUrlsInHtml(before);

            Assert.AreEqual(expected, after);
        }
        public void UnrelatedAbsoluteUrlIsNotUpdated()
        {
            var url = new Uri("https://www.accesseastsussex.org/jobs/index.aspx");

            var linkTransformer = new RemoveMediaDomainUrlTransformer();

            url = linkTransformer.TransformUrl(url);

            Assert.AreEqual("https://www.accesseastsussex.org/jobs/index.aspx", url.ToString());
        }
        public void AbsoluteMediaUrlIsUpdated()
        {
            var url = new Uri("https://different-site.blob.core.windows.net/media/1234/some-media-item-in-umbraco.pdf");

            var linkTransformer = new RemoveMediaDomainUrlTransformer();

            url = linkTransformer.TransformUrl(url);

            Assert.AreEqual("/media/1234/some-media-item-in-umbraco.pdf", url.ToString());
        }
        public void UnrelatedRelativeUrlIsNotUpdated()
        {
            var url = new Uri("/mediafiles/1234/some-other-media-item.pdf", UriKind.Relative);

            var linkTransformer = new RemoveMediaDomainUrlTransformer();

            url = linkTransformer.TransformUrl(url);

            Assert.AreEqual("/mediafiles/1234/some-other-media-item.pdf", url.ToString());
        }
        public void RelativeMediaUrlIsUnchanged()
        {
            var url = new Uri("/media/1234/some-media-item-in-umbraco.pdf", UriKind.Relative);

            var linkTransformer = new RemoveMediaDomainUrlTransformer();

            url = linkTransformer.TransformUrl(url);

            Assert.AreEqual("/media/1234/some-media-item-in-umbraco.pdf", url.ToString());
        }
        private static GuideStepViewModel MapUmbracoContentToGuideStepViewModel(IPublishedContent content)
        {
            var mediaUrlTransformer = new RemoveMediaDomainUrlTransformer();
            var viewModel           = new GuideStepViewModelFromUmbraco(content,
                                                                        new UmbracoOnAzureRelatedLinksService(mediaUrlTransformer),
                                                                        mediaUrlTransformer
                                                                        ).BuildModel();

            // Add common properties to the model
            var modelBuilder = new BaseViewModelBuilder();

            modelBuilder.PopulateBaseViewModel(viewModel, content, new ContentExperimentSettingsService(), UmbracoContext.Current.InPreviewMode);
            modelBuilder.PopulateBaseViewModelWithInheritedContent(viewModel,
                                                                   new UmbracoLatestService(content),
                                                                   new UmbracoSocialMediaService(content),
                                                                   new UmbracoEastSussex1SpaceService(content),
                                                                   new UmbracoWebChatSettingsService(content, new UrlListReader()),
                                                                   new UmbracoEscisService(content));

            return(viewModel);
        }
Пример #11
0
        private async static Task <GuideStepViewModel> MapUmbracoContentToGuideStepViewModel(IPublishedContent content, IEastSussexGovUKTemplateRequest templateRequest)
        {
            var mediaUrlTransformer = new RemoveMediaDomainUrlTransformer();
            var viewModel           = new GuideStepViewModelFromUmbraco(content,
                                                                        new RelatedLinksService(mediaUrlTransformer, new RemoveAzureDomainUrlTransformer()),
                                                                        mediaUrlTransformer
                                                                        ).BuildModel();

            // Add common properties to the model
            var modelBuilder = new BaseViewModelBuilder(templateRequest);
            await modelBuilder.PopulateBaseViewModel(viewModel, content, new ContentExperimentSettingsService(),
                                                     new ExpiryDateFromExamine(content.Id, ExamineManager.Instance.SearchProviderCollection["ExternalSearcher"], new ExpiryDateMemoryCache(TimeSpan.FromHours(1))).ExpiryDate,
                                                     UmbracoContext.Current.InPreviewMode, new SkinFromUmbraco());

            modelBuilder.PopulateBaseViewModelWithInheritedContent(viewModel,
                                                                   new UmbracoLatestService(content),
                                                                   new UmbracoSocialMediaService(content),
                                                                   new UmbracoEastSussex1SpaceService(content),
                                                                   new UmbracoEscisService(content));

            return(viewModel);
        }
Пример #12
0
        /// <summary>
        /// The default action to render the front-end view
        /// </summary>
        /// <param name="model"/>
        /// <returns/>
        public override ActionResult Index(RenderModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            var urlTransformer = new RemoveMediaDomainUrlTransformer();
            var viewModel      = new CampaignContentViewModelFromUmbraco(model.Content, urlTransformer).BuildModel();

            // Add common properties to the model
            var modelBuilder = new BaseViewModelBuilder();

            modelBuilder.PopulateBaseViewModel(viewModel, model.Content, new ContentExperimentSettingsService(), UmbracoContext.Current.InPreviewMode);

            new HttpCachingService().SetHttpCacheHeadersFromUmbracoContent(model.Content, UmbracoContext.Current.InPreviewMode, Response.Cache, new List <string>()
            {
                "latestUnpublishDate_Latest"
            });

            return(CurrentTemplate(viewModel));
        }
        /// <summary>
        /// The default action to render the front-end view
        /// </summary>
        /// <param name="model"/>
        /// <returns/>
        public override ActionResult Index(RenderModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException("model");
            }

            var mediaUrlTransformer = new RemoveMediaDomainUrlTransformer();
            var viewModel           = MapUmbracoContentToViewModel(model.Content,
                                                                   new UmbracoLatestService(model.Content),
                                                                   new UmbracoSocialMediaService(model.Content),
                                                                   new UmbracoEastSussex1SpaceService(model.Content),
                                                                   new UmbracoWebChatSettingsService(model.Content, new UrlListReader()),
                                                                   new UmbracoOnAzureRelatedLinksService(mediaUrlTransformer),
                                                                   new ContentExperimentSettingsService(),
                                                                   new UmbracoEscisService(model.Content),
                                                                   mediaUrlTransformer);

            SetupHttpCaching(model, viewModel);

            return(CurrentTemplate(viewModel));
        }
Пример #14
0
        public override ActionResult Index(RenderModel model)
        {
            var viewModel           = new FormModel();
            var mediaUrlTransformer = new RemoveMediaDomainUrlTransformer();

            viewModel.LeadingText = new HtmlString(mediaUrlTransformer.ParseAndTransformMediaUrlsInHtml(model.Content.GetPropertyValue <string>("LeadingText_Content")));
            viewModel.FormGuid    = model.Content.GetPropertyValue <Guid>("Form_Content");

            var modelBuilder = new BaseViewModelBuilder(new EastSussexGovUKTemplateRequest(Request, webChatSettingsService: new UmbracoWebChatSettingsService(model.Content, new UrlListReader())));

            // Unfortunately we can't use async/await in this action as it causes an error when navigating multi-page forms, or when using the default submit message.
            // As a workaround, add a return value to the following two methods purely so that .Result can be used to run them synchronously in this controller.
            // https://github.com/umbraco/Umbraco.Forms.Issues/issues/86
            var asyncMethodCompletedSynchronously = modelBuilder.PopulateBaseViewModel(viewModel, model.Content, null,
                                                                                       new ExpiryDateFromExamine(model.Content.Id, ExamineManager.Instance.SearchProviderCollection["ExternalSearcher"], new ExpiryDateMemoryCache(TimeSpan.FromHours(1))).ExpiryDate,
                                                                                       UmbracoContext.Current.InPreviewMode, new SkinFromUmbraco()).Result;

            modelBuilder.PopulateBaseViewModelWithInheritedContent(viewModel,
                                                                   new UmbracoLatestService(model.Content),
                                                                   null, null, null, null);

            return(CurrentTemplate(viewModel));
        }
        public override ActionResult Index(RenderModel model)
        {
            var viewModel           = new FormModel();
            var mediaUrlTransformer = new RemoveMediaDomainUrlTransformer();

            viewModel.LeadingText = new HtmlString(mediaUrlTransformer.ParseAndTransformMediaUrlsInHtml(model.Content.GetPropertyValue <string>("LeadingText_Content")));
            viewModel.FormGuid    = model.Content.GetPropertyValue <Guid>("Form_Content");

            var modelBuilder = new BaseViewModelBuilder(new EastSussexGovUKTemplateRequest(Request, webChatSettingsService: new UmbracoWebChatSettingsService(model.Content, new UrlListReader())));

            // Unfortunately we can't use async/await in this action as it causes an error when navigating multi-page forms, or when using the default submit message.
            // As a workaround, add a return value to the following two methods purely so that .Result can be used to run them synchronously in this controller.
            // https://github.com/umbraco/Umbraco.Forms.Issues/issues/86
            var asyncMethodCompletedSynchronously = modelBuilder.PopulateBaseViewModel(viewModel, model.Content, null,
                                                                                       new ExpiryDateFromExamine(model.Content.Id, ExamineManager.Instance.SearchProviderCollection["ExternalSearcher"], new ExpiryDateMemoryCache(TimeSpan.FromHours(1))).ExpiryDate,
                                                                                       UmbracoContext.Current.InPreviewMode, new SkinFromUmbraco()).Result;

            modelBuilder.PopulateBaseViewModelWithInheritedContent(viewModel,
                                                                   new UmbracoLatestService(model.Content),
                                                                   null, null, null, null);

            // Prevent the sitewide JQuery from loading because Umbraco Forms needs a newer one, and can't cope with both being on the same page.
            // The version loaded for use by Umbraco Forms handles the sitewide requirements.
            if (viewModel.TemplateHtml.Scripts != null)
            {
                var sitewideScripts = new HtmlDocument();
                sitewideScripts.LoadHtml(viewModel.TemplateHtml.Scripts.ToHtmlString());
                var jquery = sitewideScripts.DocumentNode.ChildNodes.FirstOrDefault(x => x.Attributes["src"] != null && x.Attributes["src"].Value.EndsWith("jquery.min.js", StringComparison.OrdinalIgnoreCase));
                if (jquery != null)
                {
                    jquery.ParentNode.RemoveChild(jquery);
                }
                viewModel.TemplateHtml.Scripts = new HtmlString(sitewideScripts.DocumentNode.OuterHtml);
            }

            return(CurrentTemplate(viewModel));
        }
        /// <summary>
        /// Loads the content from Umbraco in the same way MCMS would have loaded it from its node cache.
        /// </summary>
        private void LoadContentFromUmbraco()
        {
            if (String.IsNullOrWhiteSpace(this.PlaceholderToBind))
            {
                return;
            }
            if (UmbracoContext.Current == null || !UmbracoContext.Current.PageId.HasValue)
            {
                return;
            }

            var content = UmbracoContext.Current.ContentCache.GetById(UmbracoContext.Current.PageId.Value);

            if (content == null)
            {
                return;
            }

            var transformer = new RemoveMediaDomainUrlTransformer();

            Html = transformer.ParseAndTransformMediaUrlsInHtml(content.GetPropertyValue <string>(this.PlaceholderToBind + "_Content"));

            HasContent = !String.IsNullOrWhiteSpace(Html);
        }