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