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

            var after = linkTransformer.ParseAndTransformMediaUrlsInHtml(before);

            Assert.AreEqual(expected, after);
        }
Пример #2
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);
        }