Ejemplo n.º 1
0
        public override async Task <IDisplayResult> UpdateAsync(HtmlMenuItemPart part, IUpdateModel updater, UpdatePartEditorContext context)
        {
            var viewModel = new HtmlMenuItemPartEditViewModel();

            await updater.TryUpdateModelAsync(viewModel, Prefix, t => t.Name, t => t.Source);

            part.Name = viewModel.Name;
            part.Html = viewModel.Source;


            return(Edit(part, context));
        }
Ejemplo n.º 2
0
        public override async Task <IDisplayResult> UpdateAsync(HtmlMenuItemPart part, IUpdateModel updater, UpdatePartEditorContext context)
        {
            var settings = context.TypePartDefinition.GetSettings <HtmlMenuItemPartSettings>();
            var model    = new HtmlMenuItemPartEditViewModel();

            if (await updater.TryUpdateModelAsync(model, Prefix))
            {
                part.ContentItem.DisplayText = model.Name;
                part.Html = settings.SanitizeHtml ? _htmlSanitizerService.Sanitize(model.Html) : model.Html;
                part.Url  = model.Url;
            }

            return(Edit(part, context));
        }
        public override async Task <IDisplayResult> UpdateAsync(HtmlMenuItemPart part, IUpdateModel updater, UpdatePartEditorContext context)
        {
            var settings = context.TypePartDefinition.GetSettings <HtmlMenuItemPartSettings>();
            var model    = new HtmlMenuItemPartEditViewModel();

            if (await updater.TryUpdateModelAsync(model, Prefix))
            {
                part.ContentItem.DisplayText = model.Name;
                part.Html = settings.SanitizeHtml ? _htmlSanitizerService.Sanitize(model.Html) : model.Html;
                part.Url  = model.Url;

                var urlToValidate = part.Url;

                if (!String.IsNullOrEmpty(urlToValidate))
                {
                    urlToValidate = urlToValidate.Split('#', 2)[0];

                    if (urlToValidate.StartsWith("~/", StringComparison.Ordinal))
                    {
                        var urlHelper = _urlHelperFactory.GetUrlHelper(_actionContextAccessor.ActionContext);
                        urlToValidate = urlHelper.Content(urlToValidate);
                    }

                    urlToValidate = urlToValidate.ToUriComponents();

                    if (!Uri.IsWellFormedUriString(urlToValidate, UriKind.RelativeOrAbsolute))
                    {
                        updater.ModelState.AddModelError(nameof(part.Url), S["{0} is an invalid url.", part.Url]);
                    }
                    else
                    {
                        var link = $"<a href=\"{_htmlencoder.Encode(urlToValidate)}\"></a>";

                        if (!String.Equals(link, _htmlSanitizerService.Sanitize(link), StringComparison.OrdinalIgnoreCase))
                        {
                            updater.ModelState.AddModelError(nameof(part.Url), S["{0} is an invalid url.", part.Url]);
                        }
                    }
                }
            }

            return(Edit(part, context));
        }
Ejemplo n.º 4
0
        private Task BuildViewModel(HtmlMenuItemPartEditViewModel model, HtmlMenuItemPart part, ContentTypePartDefinition definition)
        {
            // var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(HtmlBodyPart.ContentItem.ContentType);
            // var contentTypePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(p => p.Name == nameof(HtmlBodyPart));
            //   var settings = contentTypePartDefinition.GetSettings<HtmlBodyPartSettings>();

//            var templateContext = new TemplateContext();
//            templateContext.SetValue("ContentItem", HtmlBodyPart.ContentItem);
//            templateContext.MemberAccessStrategy.Register<HtmlBodyPartViewModel>();
//
//            using (var writer = new StringWriter())
//            {
//                await _liquidTemplatemanager.RenderAsync(HtmlBodyPart.Html, writer, HtmlEncoder.Default, templateContext);
//                model.Html = writer.ToString();
//            }

            //    model.ContentItem = HtmlBodyPart.ContentItem;
            model.Name               = part.Name;
            model.Source             = part.Html;
            model.HtmlMenuItemPart   = part;
            model.TypePartDefinition = definition;

            return(Task.CompletedTask);
        }