diff --git a/src/OrchardCore.Modules/OrchardCore.AdminDashboard/Drivers/DashboardPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.AdminDashboard/Drivers/DashboardPartDisplayDriver.cs index 455c8bdaaf7..2d502ed7903 100644 --- a/src/OrchardCore.Modules/OrchardCore.AdminDashboard/Drivers/DashboardPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.AdminDashboard/Drivers/DashboardPartDisplayDriver.cs @@ -20,9 +20,13 @@ public override IDisplayResult Edit(DashboardPart dashboardPart, BuildPartEditor return Initialize(GetEditorShapeType(context), m => BuildViewModel(m, dashboardPart)); } - public override async Task UpdateAsync(DashboardPart model, IUpdateModel updater, UpdatePartEditorContext context) + public override async Task UpdateAsync(DashboardPart model, UpdatePartEditorContext context) { - await updater.TryUpdateModelAsync(model, Prefix, t => t.Position, t => t.Width, t => t.Height); + await context.Updater.TryUpdateModelAsync(model, Prefix, + t => t.Position, + t => t.Width, + t => t.Height); + return Edit(model, context); } diff --git a/src/OrchardCore.Modules/OrchardCore.Alias/Drivers/AliasPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Alias/Drivers/AliasPartDisplayDriver.cs index 58aa64d4204..dbaa430ff9c 100644 --- a/src/OrchardCore.Modules/OrchardCore.Alias/Drivers/AliasPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Alias/Drivers/AliasPartDisplayDriver.cs @@ -5,7 +5,6 @@ using OrchardCore.Alias.ViewModels; using OrchardCore.ContentManagement.Display.ContentDisplay; using OrchardCore.ContentManagement.Display.Models; -using OrchardCore.DisplayManagement.ModelBinding; using OrchardCore.DisplayManagement.Views; using OrchardCore.Mvc.ModelBinding; using YesSql; @@ -32,13 +31,13 @@ public override IDisplayResult Edit(AliasPart aliasPart, BuildPartEditorContext return Initialize(GetEditorShapeType(context), m => BuildViewModel(m, aliasPart, context.TypePartDefinition.GetSettings())); } - public override async Task UpdateAsync(AliasPart model, IUpdateModel updater, UpdatePartEditorContext context) + public override async Task UpdateAsync(AliasPart model, UpdatePartEditorContext context) { - await updater.TryUpdateModelAsync(model, Prefix, t => t.Alias); + await context.Updater.TryUpdateModelAsync(model, Prefix, t => t.Alias); await foreach (var item in model.ValidateAsync(S, _session)) { - updater.ModelState.BindValidationResult(Prefix, item); + context.Updater.ModelState.BindValidationResult(Prefix, item); } return Edit(model, context); diff --git a/src/OrchardCore.Modules/OrchardCore.ArchiveLater/Drivers/ArchiveLaterPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ArchiveLater/Drivers/ArchiveLaterPartDisplayDriver.cs index 0f6f5142fbb..25a2b840b0f 100644 --- a/src/OrchardCore.Modules/OrchardCore.ArchiveLater/Drivers/ArchiveLaterPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ArchiveLater/Drivers/ArchiveLaterPartDisplayDriver.cs @@ -38,7 +38,7 @@ public override IDisplayResult Edit(ArchiveLaterPart part, BuildPartEditorContex GetEditorShapeType(context), model => PopulateViewModel(part, model)).Location("Actions:10.5"); - public override async Task UpdateAsync(ArchiveLaterPart part, IUpdateModel updater, UpdatePartEditorContext context) + public override async Task UpdateAsync(ArchiveLaterPart part, UpdatePartEditorContext context) { var httpContext = _httpContextAccessor.HttpContext; @@ -46,7 +46,7 @@ public override async Task UpdateAsync(ArchiveLaterPart part, IU { var viewModel = new ArchiveLaterPartViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix); if (viewModel.ScheduledArchiveLocalDateTime == null || httpContext.Request.Form["submit.Publish"] == "submit.CancelArchiveLater") { diff --git a/src/OrchardCore.Modules/OrchardCore.Autoroute/Drivers/AutoroutePartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Autoroute/Drivers/AutoroutePartDisplayDriver.cs index ec08ed288c9..a3bb9bfb137 100644 --- a/src/OrchardCore.Modules/OrchardCore.Autoroute/Drivers/AutoroutePartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Autoroute/Drivers/AutoroutePartDisplayDriver.cs @@ -79,11 +79,16 @@ public override IDisplayResult Edit(AutoroutePart autoroutePart, BuildPartEditor }); } - public override async Task UpdateAsync(AutoroutePart model, IUpdateModel updater, UpdatePartEditorContext context) + public override async Task UpdateAsync(AutoroutePart model, UpdatePartEditorContext context) { var viewModel = new AutoroutePartViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix, t => t.Path, t => t.UpdatePath, t => t.RouteContainedItems, t => t.Absolute, t => t.Disabled); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix, + t => t.Path, + t => t.UpdatePath, + t => t.RouteContainedItems, + t => t.Absolute, + t => t.Disabled); var settings = context.TypePartDefinition.GetSettings(); @@ -102,17 +107,17 @@ public override async Task UpdateAsync(AutoroutePart model, IUpd if (settings.AllowUpdatePath && viewModel.UpdatePath) { // Make it empty to force a regeneration - model.Path = ""; + model.Path = string.Empty; } var httpContext = _httpContextAccessor.HttpContext; if (httpContext != null && await _authorizationService.AuthorizeAsync(httpContext.User, Permissions.SetHomepage)) { - await updater.TryUpdateModelAsync(model, Prefix, t => t.SetHomepage); + await context.Updater.TryUpdateModelAsync(model, Prefix, t => t.SetHomepage); } - updater.ModelState.BindValidationResults(Prefix, model.ValidatePathFieldValue(S)); + context.Updater.ModelState.BindValidationResults(Prefix, model.ValidatePathFieldValue(S)); // This can only validate the path if the Autoroute is not managing content item routes or the path is absolute. if (!string.IsNullOrEmpty(model.Path) && (!settings.ManageContainedItemRoutes || (settings.ManageContainedItemRoutes && model.Absolute))) @@ -123,7 +128,7 @@ public override async Task UpdateAsync(AutoroutePart model, IUpd var possibleConflicts = await _session.QueryIndex(o => (o.Published || o.Latest) && o.Path.IsIn(paths)).ListAsync(); if (possibleConflicts.Any(x => x.ContentItemId != model.ContentItem.ContentItemId && x.ContainedContentItemId != model.ContentItem.ContentItemId)) { - updater.ModelState.AddModelError(Prefix, nameof(model.Path), S["Your permalink is already in use."]); + context.Updater.ModelState.AddModelError(Prefix, nameof(model.Path), S["Your permalink is already in use."]); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/BooleanFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/BooleanFieldDisplayDriver.cs index ea2b4112686..b7459fa82f0 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/BooleanFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/BooleanFieldDisplayDriver.cs @@ -36,9 +36,9 @@ public override IDisplayResult Edit(BooleanField field, BuildFieldEditorContext }); } - public override async Task UpdateAsync(BooleanField field, IUpdateModel updater, UpdateFieldEditorContext context) + public override async Task UpdateAsync(BooleanField field, UpdateFieldEditorContext context) { - await updater.TryUpdateModelAsync(field, Prefix, f => f.Value); + await context.Updater.TryUpdateModelAsync(field, Prefix, f => f.Value); return Edit(field, context); } diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/ContentPickerFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/ContentPickerFieldDisplayDriver.cs index 38370690101..f2ff68536fe 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/ContentPickerFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/ContentPickerFieldDisplayDriver.cs @@ -99,11 +99,11 @@ public override IDisplayResult Edit(ContentPickerField field, BuildFieldEditorCo }); } - public override async Task UpdateAsync(ContentPickerField field, IUpdateModel updater, UpdateFieldEditorContext context) + public override async Task UpdateAsync(ContentPickerField field, UpdateFieldEditorContext context) { var viewModel = new EditContentPickerFieldViewModel(); - var modelUpdated = await updater.TryUpdateModelAsync(viewModel, Prefix, f => f.ContentItemIds); + var modelUpdated = await context.Updater.TryUpdateModelAsync(viewModel, Prefix, f => f.ContentItemIds); if (!modelUpdated) { @@ -111,18 +111,19 @@ public override async Task UpdateAsync(ContentPickerField field, } field.ContentItemIds = viewModel.ContentItemIds == null - ? [] : viewModel.ContentItemIds.Split(',', StringSplitOptions.RemoveEmptyEntries); + ? [] + : viewModel.ContentItemIds.Split(',', StringSplitOptions.RemoveEmptyEntries); var settings = context.PartFieldDefinition.GetSettings(); if (settings.Required && field.ContentItemIds.Length == 0) { - updater.ModelState.AddModelError(Prefix, nameof(field.ContentItemIds), S["The {0} field is required.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.ContentItemIds), S["The {0} field is required.", context.PartFieldDefinition.DisplayName()]); } if (!settings.Multiple && field.ContentItemIds.Length > 1) { - updater.ModelState.AddModelError(Prefix, nameof(field.ContentItemIds), S["The {0} field cannot contain multiple items.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.ContentItemIds), S["The {0} field cannot contain multiple items.", context.PartFieldDefinition.DisplayName()]); } return Edit(field, context); diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/DateFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/DateFieldDisplayDriver.cs index bc87bdd309d..566ba0c2df6 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/DateFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/DateFieldDisplayDriver.cs @@ -44,14 +44,14 @@ public override IDisplayResult Edit(DateField field, BuildFieldEditorContext con }); } - public override async Task UpdateAsync(DateField field, IUpdateModel updater, UpdateFieldEditorContext context) + public override async Task UpdateAsync(DateField field, UpdateFieldEditorContext context) { - await updater.TryUpdateModelAsync(field, Prefix, f => f.Value); + await context.Updater.TryUpdateModelAsync(field, Prefix, f => f.Value); var settings = context.PartFieldDefinition.GetSettings(); if (settings.Required && field.Value == null) { - updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); } return Edit(field, context); diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/DateTimeFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/DateTimeFieldDisplayDriver.cs index 2056d6717f0..d591dc2335f 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/DateTimeFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/DateTimeFieldDisplayDriver.cs @@ -52,16 +52,16 @@ public override IDisplayResult Edit(DateTimeField field, BuildFieldEditorContext }); } - public override async Task UpdateAsync(DateTimeField field, IUpdateModel updater, UpdateFieldEditorContext context) + public override async Task UpdateAsync(DateTimeField field, UpdateFieldEditorContext context) { var model = new EditDateTimeFieldViewModel(); - await updater.TryUpdateModelAsync(model, Prefix, f => f.LocalDateTime); + await context.Updater.TryUpdateModelAsync(model, Prefix, f => f.LocalDateTime); var settings = context.PartFieldDefinition.GetSettings(); if (settings.Required && model.LocalDateTime == null) { - updater.ModelState.AddModelError(Prefix, nameof(model.LocalDateTime), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(model.LocalDateTime), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); } else { diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/HtmlFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/HtmlFieldDisplayDriver.cs index b6f6ae5c533..0dbc44efaf9 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/HtmlFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/HtmlFieldDisplayDriver.cs @@ -81,12 +81,12 @@ public override IDisplayResult Edit(HtmlField field, BuildFieldEditorContext con }); } - public override async Task UpdateAsync(HtmlField field, IUpdateModel updater, UpdateFieldEditorContext context) + public override async Task UpdateAsync(HtmlField field, UpdateFieldEditorContext context) { var viewModel = new EditHtmlFieldViewModel(); var settings = context.PartFieldDefinition.GetSettings(); - await updater.TryUpdateModelAsync(viewModel, Prefix, f => f.Html); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix, f => f.Html); if (!string.IsNullOrEmpty(viewModel.Html) && !_liquidTemplateManager.Validate(viewModel.Html, out var errors)) { diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/LinkFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/LinkFieldDisplayDriver.cs index 6ae38bdc792..abd44de36c6 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/LinkFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/LinkFieldDisplayDriver.cs @@ -67,9 +67,9 @@ public override IDisplayResult Edit(LinkField field, BuildFieldEditorContext con }); } - public override async Task UpdateAsync(LinkField field, IUpdateModel updater, UpdateFieldEditorContext context) + public override async Task UpdateAsync(LinkField field, UpdateFieldEditorContext context) { - var modelUpdated = await updater.TryUpdateModelAsync(field, Prefix, f => f.Url, f => f.Text, f => f.Target); + var modelUpdated = await context.Updater.TryUpdateModelAsync(field, Prefix, f => f.Url, f => f.Text, f => f.Target); if (modelUpdated) { @@ -96,13 +96,13 @@ public override async Task UpdateAsync(LinkField field, IUpdateM // Validate Url if (settings.Required && string.IsNullOrWhiteSpace(field.Url)) { - updater.ModelState.AddModelError(Prefix, nameof(field.Url), S["The url is required for {0}.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.Url), S["The url is required for {0}.", context.PartFieldDefinition.DisplayName()]); } else if (!string.IsNullOrWhiteSpace(field.Url)) { if (!Uri.IsWellFormedUriString(urlToValidate, UriKind.RelativeOrAbsolute)) { - updater.ModelState.AddModelError(Prefix, nameof(field.Url), S["{0} is an invalid url.", field.Url]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.Url), S["{0} is an invalid url.", field.Url]); } else { @@ -110,7 +110,7 @@ public override async Task UpdateAsync(LinkField field, IUpdateM if (!string.Equals(link, _htmlSanitizerService.Sanitize(link), StringComparison.OrdinalIgnoreCase)) { - updater.ModelState.AddModelError(Prefix, nameof(field.Url), S["{0} is an invalid url.", field.Url]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.Url), S["{0} is an invalid url.", field.Url]); } } } @@ -118,11 +118,11 @@ public override async Task UpdateAsync(LinkField field, IUpdateM // Validate Text if (settings.LinkTextMode == LinkTextMode.Required && string.IsNullOrWhiteSpace(field.Text)) { - updater.ModelState.AddModelError(Prefix, nameof(field.Text), S["The link text is required for {0}.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.Text), S["The link text is required for {0}.", context.PartFieldDefinition.DisplayName()]); } else if (settings.LinkTextMode == LinkTextMode.Static && string.IsNullOrWhiteSpace(settings.DefaultText)) { - updater.ModelState.AddModelError(Prefix, nameof(field.Text), S["The text default value is required for {0}.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.Text), S["The text default value is required for {0}.", context.PartFieldDefinition.DisplayName()]); } } diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/LocalizationSetContentPickerFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/LocalizationSetContentPickerFieldDisplayDriver.cs index 539e18daefa..ed9cf0f359c 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/LocalizationSetContentPickerFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/LocalizationSetContentPickerFieldDisplayDriver.cs @@ -77,11 +77,11 @@ public override IDisplayResult Edit(LocalizationSetContentPickerField field, Bui }); } - public override async Task UpdateAsync(LocalizationSetContentPickerField field, IUpdateModel updater, UpdateFieldEditorContext context) + public override async Task UpdateAsync(LocalizationSetContentPickerField field, UpdateFieldEditorContext context) { var viewModel = new EditLocalizationSetContentPickerFieldViewModel(); - var modelUpdated = await updater.TryUpdateModelAsync(viewModel, Prefix, f => f.LocalizationSets); + var modelUpdated = await context.Updater.TryUpdateModelAsync(viewModel, Prefix, f => f.LocalizationSets); if (!modelUpdated) { @@ -95,12 +95,12 @@ public override async Task UpdateAsync(LocalizationSetContentPic if (settings.Required && field.LocalizationSets.Length == 0) { - updater.ModelState.AddModelError(Prefix, nameof(field.LocalizationSets), S["The {0} field is required.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.LocalizationSets), S["The {0} field is required.", context.PartFieldDefinition.DisplayName()]); } if (!settings.Multiple && field.LocalizationSets.Length > 1) { - updater.ModelState.AddModelError(Prefix, nameof(field.LocalizationSets), S["The {0} field cannot contain multiple items.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.LocalizationSets), S["The {0} field cannot contain multiple items.", context.PartFieldDefinition.DisplayName()]); } return Edit(field, context); diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/MultiTextFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/MultiTextFieldDisplayDriver.cs index b281ad0a322..0a488a890af 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/MultiTextFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/MultiTextFieldDisplayDriver.cs @@ -56,17 +56,17 @@ public override IDisplayResult Edit(MultiTextField field, BuildFieldEditorContex }); } - public override async Task UpdateAsync(MultiTextField field, IUpdateModel updater, UpdateFieldEditorContext context) + public override async Task UpdateAsync(MultiTextField field, UpdateFieldEditorContext context) { var viewModel = new EditMultiTextFieldViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix); field.Values = viewModel.Values; var settings = context.PartFieldDefinition.GetSettings(); if (settings.Required && viewModel.Values.Length == 0) { - updater.ModelState.AddModelError(Prefix, nameof(field.Values), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.Values), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); } return Edit(field, context); diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/NumericFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/NumericFieldDisplayDriver.cs index 74f509aad94..5fe649fb873 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/NumericFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/NumericFieldDisplayDriver.cs @@ -8,7 +8,6 @@ using OrchardCore.ContentManagement.Display.ContentDisplay; using OrchardCore.ContentManagement.Display.Models; using OrchardCore.ContentManagement.Metadata.Models; -using OrchardCore.DisplayManagement.ModelBinding; using OrchardCore.DisplayManagement.Views; using OrchardCore.Mvc.ModelBinding; @@ -63,11 +62,11 @@ public override IDisplayResult Edit(NumericField field, BuildFieldEditorContext }); } - public override async Task UpdateAsync(NumericField field, IUpdateModel updater, UpdateFieldEditorContext context) + public override async Task UpdateAsync(NumericField field, UpdateFieldEditorContext context) { var viewModel = new EditNumericFieldViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix, f => f.Value); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix, f => f.Value); var settings = context.PartFieldDefinition.GetSettings(); field.Value = null; @@ -76,12 +75,12 @@ public override async Task UpdateAsync(NumericField field, IUpda { if (settings.Required) { - updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); } } else if (!decimal.TryParse(viewModel.Value, NumberStyles.Any, CultureInfo.CurrentUICulture, out var value)) { - updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["{0} is an invalid number.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["{0} is an invalid number.", context.PartFieldDefinition.DisplayName()]); } else { @@ -89,12 +88,12 @@ public override async Task UpdateAsync(NumericField field, IUpda if (settings.Minimum.HasValue && value < settings.Minimum.Value) { - updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["The value must be greater than {0}.", settings.Minimum.Value]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["The value must be greater than {0}.", settings.Minimum.Value]); } if (settings.Maximum.HasValue && value > settings.Maximum.Value) { - updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["The value must be less than {0}.", settings.Maximum.Value]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["The value must be less than {0}.", settings.Maximum.Value]); } // Check the number of decimals. @@ -102,11 +101,11 @@ public override async Task UpdateAsync(NumericField field, IUpda { if (settings.Scale == 0) { - updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["The {0} field must be an integer.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["The {0} field must be an integer.", context.PartFieldDefinition.DisplayName()]); } else { - updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["Invalid number of digits for {0}, max allowed: {1}.", context.PartFieldDefinition.DisplayName(), settings.Scale]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["Invalid number of digits for {0}, max allowed: {1}.", context.PartFieldDefinition.DisplayName(), settings.Scale]); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/TextFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/TextFieldDisplayDriver.cs index 9d2f94fede3..7c34fd37afa 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/TextFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/TextFieldDisplayDriver.cs @@ -1,5 +1,6 @@ using System.Threading.Tasks; using Microsoft.Extensions.Localization; +using Microsoft.Win32.SafeHandles; using OrchardCore.ContentFields.Fields; using OrchardCore.ContentFields.Settings; using OrchardCore.ContentFields.ViewModels; @@ -45,14 +46,14 @@ public override IDisplayResult Edit(TextField field, BuildFieldEditorContext con }); } - public override async Task UpdateAsync(TextField field, IUpdateModel updater, UpdateFieldEditorContext context) + public override async Task UpdateAsync(TextField field, UpdateFieldEditorContext context) { - await updater.TryUpdateModelAsync(field, Prefix, f => f.Text); + await context.Updater.TryUpdateModelAsync(field, Prefix, f => f.Text); var settings = context.PartFieldDefinition.GetSettings(); if (settings.Required && string.IsNullOrWhiteSpace(field.Text)) { - updater.ModelState.AddModelError(Prefix, nameof(field.Text), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.Text), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); } return Edit(field, context); diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/TimeFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/TimeFieldDisplayDriver.cs index 589146eb462..24392897836 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/TimeFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/TimeFieldDisplayDriver.cs @@ -6,7 +6,6 @@ using OrchardCore.ContentManagement.Display.ContentDisplay; using OrchardCore.ContentManagement.Display.Models; using OrchardCore.ContentManagement.Metadata.Models; -using OrchardCore.DisplayManagement.ModelBinding; using OrchardCore.DisplayManagement.Views; using OrchardCore.Mvc.ModelBinding; @@ -44,14 +43,14 @@ public override IDisplayResult Edit(TimeField field, BuildFieldEditorContext con }); } - public override async Task UpdateAsync(TimeField field, IUpdateModel updater, UpdateFieldEditorContext context) + public override async Task UpdateAsync(TimeField field, UpdateFieldEditorContext context) { - await updater.TryUpdateModelAsync(field, Prefix, f => f.Value); + await context.Updater.TryUpdateModelAsync(field, Prefix, f => f.Value); var settings = context.PartFieldDefinition.GetSettings(); if (settings.Required && field.Value == null) { - updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); } return Edit(field, context); diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/UserPickerFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/UserPickerFieldDisplayDriver.cs index a5f41cfc10f..5a52d950c44 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/UserPickerFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/UserPickerFieldDisplayDriver.cs @@ -73,11 +73,11 @@ public override IDisplayResult Edit(UserPickerField field, BuildFieldEditorConte }); } - public override async Task UpdateAsync(UserPickerField field, IUpdateModel updater, UpdateFieldEditorContext context) + public override async Task UpdateAsync(UserPickerField field, UpdateFieldEditorContext context) { var viewModel = new EditUserPickerFieldViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix, f => f.UserIds); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix, f => f.UserIds); field.UserIds = viewModel.UserIds == null ? [] : viewModel.UserIds.Split(',', StringSplitOptions.RemoveEmptyEntries); @@ -85,12 +85,12 @@ public override async Task UpdateAsync(UserPickerField field, IU if (settings.Required && field.UserIds.Length == 0) { - updater.ModelState.AddModelError(Prefix, nameof(field.UserIds), S["The value is required for {0}.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.UserIds), S["The value is required for {0}.", context.PartFieldDefinition.DisplayName()]); } if (!settings.Multiple && field.UserIds.Length > 1) { - updater.ModelState.AddModelError(Prefix, nameof(field.UserIds), S["The {0} field cannot contain multiple items.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.UserIds), S["The {0} field cannot contain multiple items.", context.PartFieldDefinition.DisplayName()]); } var users = await _session.Query().Where(x => x.UserId.IsIn(field.UserIds)).ListAsync(); diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/YoutubeFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/YoutubeFieldDisplayDriver.cs index bd7e3de8a50..a001454f965 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/YoutubeFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/YoutubeFieldDisplayDriver.cs @@ -47,16 +47,16 @@ public override IDisplayResult Edit(YoutubeField field, BuildFieldEditorContext }); } - public override async Task UpdateAsync(YoutubeField field, IUpdateModel updater, UpdateFieldEditorContext context) + public override async Task UpdateAsync(YoutubeField field, UpdateFieldEditorContext context) { var model = new EditYoutubeFieldViewModel(); - await updater.TryUpdateModelAsync(model, Prefix); + await context.Updater.TryUpdateModelAsync(model, Prefix); var settings = context.PartFieldDefinition.GetSettings(); if (settings.Required && string.IsNullOrWhiteSpace(model.RawAddress)) { - updater.ModelState.AddModelError(Prefix, nameof(model.RawAddress), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(model.RawAddress), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); } else { @@ -74,7 +74,7 @@ public override async Task UpdateAsync(YoutubeField field, IUpda } else { - updater.ModelState.AddModelError(Prefix, nameof(model.RawAddress), S["The format of the url is invalid"]); + context.Updater.ModelState.AddModelError(Prefix, nameof(model.RawAddress), S["The format of the url is invalid"]); } } else diff --git a/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Drivers/LocalizationPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Drivers/LocalizationPartDisplayDriver.cs index a6c06e83802..95aa4188f24 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Drivers/LocalizationPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Drivers/LocalizationPartDisplayDriver.cs @@ -43,10 +43,10 @@ public override IDisplayResult Edit(LocalizationPart localizationPart, BuildPart return Initialize(GetEditorShapeType(context), m => BuildViewModelAsync(m, localizationPart)); } - public override async Task UpdateAsync(LocalizationPart model, IUpdateModel updater, UpdatePartEditorContext context) + public override async Task UpdateAsync(LocalizationPart model, UpdatePartEditorContext context) { var viewModel = new LocalizationPartViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix, t => t.Culture); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix, t => t.Culture); // Invariant culture name is empty so a null value is bound. model.Culture = viewModel.Culture ?? string.Empty; @@ -56,7 +56,7 @@ public override async Task UpdateAsync(LocalizationPart model, I { model.LocalizationSet = _idGenerator.GenerateUniqueId(); } - return Edit(model); + return Edit(model, context); } public async ValueTask BuildViewModelAsync(LocalizationPartViewModel model, LocalizationPart localizationPart) diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/AuditTrail/Drivers/AuditTrailPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Contents/AuditTrail/Drivers/AuditTrailPartDisplayDriver.cs index df618f91a68..e2230fc5c6a 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/AuditTrail/Drivers/AuditTrailPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/AuditTrail/Drivers/AuditTrailPartDisplayDriver.cs @@ -28,9 +28,9 @@ public override IDisplayResult Edit(AuditTrailPart part, BuildPartEditorContext return null; } - public override async Task UpdateAsync(AuditTrailPart part, IUpdateModel updater, UpdatePartEditorContext context) + public override async Task UpdateAsync(AuditTrailPart part, UpdatePartEditorContext context) { - await updater.TryUpdateModelAsync(part, Prefix); + await context.Updater.TryUpdateModelAsync(part, Prefix); return Edit(part, context); } diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Drivers/DateEditorDriver.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Drivers/DateEditorDriver.cs index de5dd046b06..971ecb3595a 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Drivers/DateEditorDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Drivers/DateEditorDriver.cs @@ -35,14 +35,14 @@ public override IDisplayResult Edit(CommonPart part, BuildPartEditorContext cont return null; } - public override async Task UpdateAsync(CommonPart part, IUpdateModel updater, UpdatePartEditorContext context) + public override async Task UpdateAsync(CommonPart part, UpdatePartEditorContext context) { var settings = context.TypePartDefinition.GetSettings(); if (settings.DisplayDateEditor) { var model = new DateEditorViewModel(); - await updater.TryUpdateModelAsync(model, Prefix); + await context.Updater.TryUpdateModelAsync(model, Prefix); if (model.LocalDateTime == null) { diff --git a/src/OrchardCore.Modules/OrchardCore.Facebook/Widgets/Drivers/FacebookPluginPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Facebook/Widgets/Drivers/FacebookPluginPartDisplayDriver.cs index 81baf54a4c7..c0f34f78082 100644 --- a/src/OrchardCore.Modules/OrchardCore.Facebook/Widgets/Drivers/FacebookPluginPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Facebook/Widgets/Drivers/FacebookPluginPartDisplayDriver.cs @@ -3,8 +3,8 @@ using System.Threading.Tasks; using Microsoft.Extensions.Localization; using OrchardCore.ContentManagement.Display.ContentDisplay; +using OrchardCore.ContentManagement.Display.Models; using OrchardCore.ContentManagement.Metadata; -using OrchardCore.DisplayManagement.ModelBinding; using OrchardCore.DisplayManagement.Views; using OrchardCore.Facebook.Widgets.Models; using OrchardCore.Facebook.Widgets.Settings; @@ -30,7 +30,7 @@ public FacebookPluginPartDisplayDriver( S = localizer; } - public override IDisplayResult Display(FacebookPluginPart part) + public override IDisplayResult Display(FacebookPluginPart part, BuildPartDisplayContext context) { return Combine( Initialize("FacebookPluginPart", async m => await BuildViewModelAsync(m, part)) @@ -51,7 +51,7 @@ private async Task BuildViewModelAsync(FacebookPluginPartViewModel model, Facebo model.ContentItem = part.ContentItem; } - public override IDisplayResult Edit(FacebookPluginPart part) + public override IDisplayResult Edit(FacebookPluginPart part, BuildPartEditorContext context) { return Initialize("FacebookPluginPart_Edit", async model => { @@ -70,22 +70,22 @@ private async Task GetFacebookPluginPartSettingsAsyn return contentTypePartDefinition.GetSettings(); } - public override async Task UpdateAsync(FacebookPluginPart model, IUpdateModel updater) + public override async Task UpdateAsync(FacebookPluginPart model, UpdatePartEditorContext context) { var viewModel = new FacebookPluginPartViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix, t => t.Liquid); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix, t => t.Liquid); if (!string.IsNullOrEmpty(viewModel.Liquid) && !_liquidTemplateManager.Validate(viewModel.Liquid, out var errors)) { - updater.ModelState.AddModelError(nameof(model.Liquid), S["The FaceBook Body doesn't contain a valid Liquid expression. Details: {0}", string.Join(" ", errors)]); + context.Updater.ModelState.AddModelError(nameof(model.Liquid), S["The FaceBook Body doesn't contain a valid Liquid expression. Details: {0}", string.Join(" ", errors)]); } else { model.Liquid = viewModel.Liquid; } - return Edit(model); + return Edit(model, context); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ButtonPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ButtonPartDisplayDriver.cs index 159ca8318a9..1028f8a21fb 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ButtonPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ButtonPartDisplayDriver.cs @@ -1,5 +1,6 @@ using System.Threading.Tasks; using OrchardCore.ContentManagement.Display.ContentDisplay; +using OrchardCore.ContentManagement.Display.Models; using OrchardCore.DisplayManagement.ModelBinding; using OrchardCore.DisplayManagement.Views; using OrchardCore.Forms.Models; @@ -9,12 +10,13 @@ namespace OrchardCore.Forms.Drivers { public sealed class ButtonPartDisplayDriver : ContentPartDisplayDriver { - public override IDisplayResult Display(ButtonPart part) + public override IDisplayResult Display(ButtonPart part, BuildPartDisplayContext context) { - return View("ButtonPart", part).Location("Detail", "Content"); + return View("ButtonPart", part) + .Location("Detail", "Content"); } - public override IDisplayResult Edit(ButtonPart part) + public override IDisplayResult Edit(ButtonPart part, BuildPartEditorContext context) { return Initialize("ButtonPart_Fields_Edit", m => { @@ -23,16 +25,16 @@ public override IDisplayResult Edit(ButtonPart part) }); } - public async override Task UpdateAsync(ButtonPart part, IUpdateModel updater) + public async override Task UpdateAsync(ButtonPart part, UpdatePartEditorContext context) { var viewModel = new ButtonPartEditViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix); part.Text = viewModel.Text?.Trim(); part.Type = viewModel.Type?.Trim(); - return Edit(part); + return Edit(part, context); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementLabelPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementLabelPartDisplayDriver.cs index 18f271465c5..c26494991cf 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementLabelPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementLabelPartDisplayDriver.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; using OrchardCore.ContentManagement.Display.ContentDisplay; -using OrchardCore.DisplayManagement.ModelBinding; +using OrchardCore.ContentManagement.Display.Models; using OrchardCore.DisplayManagement.Views; using OrchardCore.Forms.Models; using OrchardCore.Forms.ViewModels; @@ -9,12 +9,13 @@ namespace OrchardCore.Forms.Drivers; public sealed class FormElementLabelPartDisplayDriver : ContentPartDisplayDriver { - public override IDisplayResult Display(FormElementLabelPart part) + public override IDisplayResult Display(FormElementLabelPart part, BuildPartDisplayContext context) { - return View("FormElementLabelPart", part).Location("Detail", "Content:before"); + return View("FormElementLabelPart", part) + .Location("Detail", "Content:before"); } - public override IDisplayResult Edit(FormElementLabelPart part) + public override IDisplayResult Edit(FormElementLabelPart part, BuildPartEditorContext context) { return Initialize("FormElementLabelPart_Fields_Edit", m => { @@ -23,15 +24,15 @@ public override IDisplayResult Edit(FormElementLabelPart part) }); } - public async override Task UpdateAsync(FormElementLabelPart part, IUpdateModel updater) + public async override Task UpdateAsync(FormElementLabelPart part, UpdatePartEditorContext context) { var viewModel = new FormElementLabelPartViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix); part.Label = viewModel.Label; part.Option = viewModel.LabelOption; - return Edit(part); + return Edit(part, context); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementPartDisplayDriver.cs index 140f0ab8752..4c0dacd30ab 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementPartDisplayDriver.cs @@ -1,5 +1,6 @@ using System.Threading.Tasks; using OrchardCore.ContentManagement.Display.ContentDisplay; +using OrchardCore.ContentManagement.Display.Models; using OrchardCore.DisplayManagement.ModelBinding; using OrchardCore.DisplayManagement.Views; using OrchardCore.Forms.Models; @@ -9,7 +10,7 @@ namespace OrchardCore.Forms.Drivers { public sealed class FormElementPartDisplayDriver : ContentPartDisplayDriver { - public override IDisplayResult Edit(FormElementPart part) + public override IDisplayResult Edit(FormElementPart part, BuildPartEditorContext context) { return Initialize("FormElementPart_Fields_Edit", m => { @@ -17,15 +18,15 @@ public override IDisplayResult Edit(FormElementPart part) }); } - public async override Task UpdateAsync(FormElementPart part, IUpdateModel updater) + public async override Task UpdateAsync(FormElementPart part, UpdatePartEditorContext context) { var viewModel = new FormElementPartEditViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix); part.Id = viewModel.Id?.Trim(); - return Edit(part); + return Edit(part, context); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementValidationPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementValidationPartDisplayDriver.cs index e6510b6168c..33164a4d2ef 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementValidationPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementValidationPartDisplayDriver.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; using OrchardCore.ContentManagement.Display.ContentDisplay; -using OrchardCore.DisplayManagement.ModelBinding; +using OrchardCore.ContentManagement.Display.Models; using OrchardCore.DisplayManagement.Views; using OrchardCore.Forms.Models; using OrchardCore.Forms.ViewModels; @@ -9,12 +9,13 @@ namespace OrchardCore.Forms.Drivers; public sealed class FormElementValidationPartDisplayDriver : ContentPartDisplayDriver { - public override IDisplayResult Display(FormElementValidationPart part) + public override IDisplayResult Display(FormElementValidationPart part, BuildPartDisplayContext context) { - return View("FormElementValidationPart", part).Location("Detail", "Content:after"); + return View("FormElementValidationPart", part) + .Location("Detail", "Content:after"); } - public override IDisplayResult Edit(FormElementValidationPart part) + public override IDisplayResult Edit(FormElementValidationPart part, BuildPartEditorContext context) { return Initialize("FormElementValidationPart_Fields_Edit", m => { @@ -22,14 +23,14 @@ public override IDisplayResult Edit(FormElementValidationPart part) }); } - public async override Task UpdateAsync(FormElementValidationPart part, IUpdateModel updater) + public async override Task UpdateAsync(FormElementValidationPart part, UpdatePartEditorContext context) { var viewModel = new FormElementValidationPartViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix); part.Option = viewModel.ValidationOption; - return Edit(part); + return Edit(part, context); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormInputElementPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormInputElementPartDisplayDriver.cs index 4de68eb5751..79ab960a471 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormInputElementPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormInputElementPartDisplayDriver.cs @@ -1,7 +1,7 @@ using System.Threading.Tasks; using Microsoft.Extensions.Localization; using OrchardCore.ContentManagement.Display.ContentDisplay; -using OrchardCore.DisplayManagement.ModelBinding; +using OrchardCore.ContentManagement.Display.Models; using OrchardCore.DisplayManagement.Views; using OrchardCore.Forms.Models; using OrchardCore.Forms.ViewModels; @@ -18,7 +18,7 @@ public FormInputElementPartDisplayDriver(IStringLocalizer("FormInputElementPart_Fields_Edit", m => { @@ -26,21 +26,21 @@ public override IDisplayResult Edit(FormInputElementPart part) }); } - public async override Task UpdateAsync(FormInputElementPart part, IUpdateModel updater) + public async override Task UpdateAsync(FormInputElementPart part, UpdatePartEditorContext context) { var viewModel = new FormInputElementPartEditViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix); if (string.IsNullOrWhiteSpace(viewModel.Name)) { - updater.ModelState.AddModelError(Prefix, nameof(viewModel.Name), S["A value is required for Name."]); + context.Updater.ModelState.AddModelError(Prefix, nameof(viewModel.Name), S["A value is required for Name."]); } part.Name = viewModel.Name?.Trim(); part.ContentItem.DisplayText = part.Name; - return Edit(part); + return Edit(part, context); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormPartDisplayDriver.cs index 81e7a4ab499..949981509b3 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormPartDisplayDriver.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; using OrchardCore.ContentManagement.Display.ContentDisplay; -using OrchardCore.DisplayManagement.ModelBinding; +using OrchardCore.ContentManagement.Display.Models; using OrchardCore.DisplayManagement.Views; using OrchardCore.Forms.Models; using OrchardCore.Forms.ViewModels; @@ -9,7 +9,7 @@ namespace OrchardCore.Forms.Drivers { public sealed class FormPartDisplayDriver : ContentPartDisplayDriver { - public override IDisplayResult Edit(FormPart part) + public override IDisplayResult Edit(FormPart part, BuildPartEditorContext context) { return Initialize("FormPart_Fields_Edit", m => { @@ -22,11 +22,11 @@ public override IDisplayResult Edit(FormPart part) }); } - public async override Task UpdateAsync(FormPart part, IUpdateModel updater) + public async override Task UpdateAsync(FormPart part, UpdatePartEditorContext context) { var viewModel = new FormPartEditViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix); part.Action = viewModel.Action?.Trim(); part.Method = viewModel.Method; @@ -35,7 +35,7 @@ public async override Task UpdateAsync(FormPart part, IUpdateMod part.EnableAntiForgeryToken = viewModel.EnableAntiForgeryToken; part.SaveFormLocation = viewModel.SaveFormLocation; - return Edit(part); + return Edit(part, context); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/InputPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/InputPartDisplayDriver.cs index dfa4de72bee..02d91c0a446 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/InputPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/InputPartDisplayDriver.cs @@ -1,5 +1,6 @@ using System.Threading.Tasks; using OrchardCore.ContentManagement.Display.ContentDisplay; +using OrchardCore.ContentManagement.Display.Models; using OrchardCore.DisplayManagement.ModelBinding; using OrchardCore.DisplayManagement.Views; using OrchardCore.Forms.Models; @@ -9,12 +10,12 @@ namespace OrchardCore.Forms.Drivers { public sealed class InputPartDisplayDriver : ContentPartDisplayDriver { - public override IDisplayResult Display(InputPart part) + public override IDisplayResult Display(InputPart part, BuildPartDisplayContext context) { return View("InputPart", part).Location("Detail", "Content"); } - public override IDisplayResult Edit(InputPart part) + public override IDisplayResult Edit(InputPart part, BuildPartEditorContext context) { return Initialize("InputPart_Fields_Edit", m => { @@ -24,17 +25,17 @@ public override IDisplayResult Edit(InputPart part) }); } - public async override Task UpdateAsync(InputPart part, IUpdateModel updater) + public async override Task UpdateAsync(InputPart part, UpdatePartEditorContext context) { var viewModel = new InputPartEditViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix); part.Placeholder = viewModel.Placeholder?.Trim(); part.DefaultValue = viewModel.DefaultValue?.Trim(); part.Type = viewModel.Type?.Trim(); - return Edit(part); + return Edit(part, context); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/LabelPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/LabelPartDisplayDriver.cs index eb6c71c9645..142c1b94d6a 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/LabelPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/LabelPartDisplayDriver.cs @@ -10,7 +10,7 @@ namespace OrchardCore.Forms.Drivers { public sealed class LabelPartDisplayDriver : ContentPartDisplayDriver { - public override IDisplayResult Display(LabelPart part) + public override IDisplayResult Display(LabelPart part, BuildPartDisplayContext context) { return View("LabelPart", part).Location("Detail", "Content"); } @@ -23,11 +23,11 @@ public override IDisplayResult Edit(LabelPart part, BuildPartEditorContext conte }); } - public override async Task UpdateAsync(LabelPart part, IUpdateModel updater, UpdatePartEditorContext context) + public override async Task UpdateAsync(LabelPart part, UpdatePartEditorContext context) { var viewModel = new LabelPartEditViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix); part.For = viewModel.For?.Trim(); diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/SelectPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/SelectPartDisplayDriver.cs index 7c69ac3e9c6..2c2092a4b84 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/SelectPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/SelectPartDisplayDriver.cs @@ -2,6 +2,7 @@ using System.Threading.Tasks; using Microsoft.Extensions.Localization; using OrchardCore.ContentManagement.Display.ContentDisplay; +using OrchardCore.ContentManagement.Display.Models; using OrchardCore.DisplayManagement.ModelBinding; using OrchardCore.DisplayManagement.Views; using OrchardCore.Forms.Models; @@ -18,12 +19,12 @@ public SelectPartDisplayDriver(IStringLocalizer stringL S = stringLocalizer; } - public override IDisplayResult Display(SelectPart part) + public override IDisplayResult Display(SelectPart part, BuildPartDisplayContext context) { return View("SelectPart", part).Location("Detail", "Content"); } - public override IDisplayResult Edit(SelectPart part) + public override IDisplayResult Edit(SelectPart part, BuildPartEditorContext context) { return Initialize("SelectPart_Fields_Edit", m => { @@ -33,10 +34,10 @@ public override IDisplayResult Edit(SelectPart part) }); } - public async override Task UpdateAsync(SelectPart part, IUpdateModel updater) + public async override Task UpdateAsync(SelectPart part, UpdatePartEditorContext context) { var viewModel = new SelectPartEditViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix); part.DefaultValue = viewModel.DefaultValue; try @@ -48,10 +49,10 @@ public async override Task UpdateAsync(SelectPart part, IUpdateM } catch { - updater.ModelState.AddModelError(Prefix + '.' + nameof(SelectPartEditViewModel.Options), S["The options are written in an incorrect format."]); + context.Updater.ModelState.AddModelError(Prefix + '.' + nameof(SelectPartEditViewModel.Options), S["The options are written in an incorrect format."]); } - return Edit(part); + return Edit(part, context); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/TextAreaPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/TextAreaPartDisplayDriver.cs index e4d9c3e71b9..8d15e60df88 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/TextAreaPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/TextAreaPartDisplayDriver.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; using OrchardCore.ContentManagement.Display.ContentDisplay; -using OrchardCore.DisplayManagement.ModelBinding; +using OrchardCore.ContentManagement.Display.Models; using OrchardCore.DisplayManagement.Views; using OrchardCore.Forms.Models; using OrchardCore.Forms.ViewModels; @@ -9,12 +9,12 @@ namespace OrchardCore.Forms.Drivers { public sealed class TextAreaPartDisplayDriver : ContentPartDisplayDriver { - public override IDisplayResult Display(TextAreaPart part) + public override IDisplayResult Display(TextAreaPart part, BuildPartDisplayContext context) { return View("TextAreaPart", part).Location("Detail", "Content"); } - public override IDisplayResult Edit(TextAreaPart part) + public override IDisplayResult Edit(TextAreaPart part, BuildPartEditorContext context) { return Initialize("TextAreaPart_Fields_Edit", m => { @@ -23,16 +23,16 @@ public override IDisplayResult Edit(TextAreaPart part) }); } - public async override Task UpdateAsync(TextAreaPart part, IUpdateModel updater) + public async override Task UpdateAsync(TextAreaPart part, UpdatePartEditorContext context) { var viewModel = new InputPartEditViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix); part.Placeholder = viewModel.Placeholder?.Trim(); part.DefaultValue = viewModel.DefaultValue?.Trim(); - return Edit(part); + return Edit(part, context); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ValidationPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ValidationPartDisplayDriver.cs index 27343d6d0dc..7730b38bfee 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ValidationPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ValidationPartDisplayDriver.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; using OrchardCore.ContentManagement.Display.ContentDisplay; -using OrchardCore.DisplayManagement.ModelBinding; +using OrchardCore.ContentManagement.Display.Models; using OrchardCore.DisplayManagement.Views; using OrchardCore.Forms.Models; using OrchardCore.Forms.ViewModels; @@ -9,12 +9,12 @@ namespace OrchardCore.Forms.Drivers { public sealed class ValidationPartDisplayDriver : ContentPartDisplayDriver { - public override IDisplayResult Display(ValidationPart part) + public override IDisplayResult Display(ValidationPart part, BuildPartDisplayContext context) { return View("ValidationPart", part).Location("Detail", "Content"); } - public override IDisplayResult Edit(ValidationPart part) + public override IDisplayResult Edit(ValidationPart part, BuildPartEditorContext context) { return Initialize("ValidationPart_Fields_Edit", m => { @@ -22,15 +22,15 @@ public override IDisplayResult Edit(ValidationPart part) }); } - public async override Task UpdateAsync(ValidationPart part, IUpdateModel updater) + public async override Task UpdateAsync(ValidationPart part, UpdatePartEditorContext context) { var viewModel = new ValidationPartEditViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix); part.For = viewModel.For?.Trim(); - return Edit(part); + return Edit(part, context); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ValidationSummaryPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ValidationSummaryPartDisplayDriver.cs index b8cc6e266f2..dbb75ababf6 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ValidationSummaryPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ValidationSummaryPartDisplayDriver.cs @@ -1,7 +1,6 @@ using System.Threading.Tasks; using OrchardCore.ContentManagement.Display.ContentDisplay; using OrchardCore.ContentManagement.Display.Models; -using OrchardCore.DisplayManagement.ModelBinding; using OrchardCore.DisplayManagement.Views; using OrchardCore.Forms.Models; using OrchardCore.Forms.ViewModels; @@ -10,12 +9,13 @@ namespace OrchardCore.Forms.Drivers { public sealed class ValidationSummaryPartDisplayDriver : ContentPartDisplayDriver { - public override IDisplayResult Display(ValidationSummaryPart part) + public override IDisplayResult Display(ValidationSummaryPart part, BuildPartDisplayContext context) { - return View("ValidationSummaryPart", part).Location("Detail", "Content"); + return View("ValidationSummaryPart", part) + .Location("Detail", "Content"); } - public override IDisplayResult Edit(ValidationSummaryPart part) + public override IDisplayResult Edit(ValidationSummaryPart part, BuildPartEditorContext context) { return Initialize("ValidationSummaryPart_Fields_Edit", model => { @@ -23,15 +23,15 @@ public override IDisplayResult Edit(ValidationSummaryPart part) }); } - public override async Task UpdateAsync(ValidationSummaryPart part, IUpdateModel updater, UpdatePartEditorContext context) + public override async Task UpdateAsync(ValidationSummaryPart part, UpdatePartEditorContext context) { var model = new ValidationSummaryViewModel(); - await updater.TryUpdateModelAsync(model, Prefix); + await context.Updater.TryUpdateModelAsync(model, Prefix); part.ModelOnly = model.ModelOnly; - return Edit(part); + return Edit(part, context); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Html/Drivers/HtmlBodyPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Html/Drivers/HtmlBodyPartDisplayDriver.cs index 6a099b3e856..434b3a61442 100644 --- a/src/OrchardCore.Modules/OrchardCore.Html/Drivers/HtmlBodyPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Html/Drivers/HtmlBodyPartDisplayDriver.cs @@ -59,18 +59,18 @@ public override IDisplayResult Edit(HtmlBodyPart HtmlBodyPart, BuildPartEditorCo }); } - public override async Task UpdateAsync(HtmlBodyPart model, IUpdateModel updater, UpdatePartEditorContext context) + public override async Task UpdateAsync(HtmlBodyPart model, UpdatePartEditorContext context) { var viewModel = new HtmlBodyPartViewModel(); var settings = context.TypePartDefinition.GetSettings(); - await updater.TryUpdateModelAsync(viewModel, Prefix, t => t.Html); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix, t => t.Html); if (!string.IsNullOrEmpty(viewModel.Html) && !_liquidTemplateManager.Validate(viewModel.Html, out var errors)) { var partName = context.TypePartDefinition.DisplayName(); - updater.ModelState.AddModelError(Prefix, nameof(viewModel.Html), S["{0} doesn't contain a valid Liquid expression. Details: {1}", partName, string.Join(" ", errors)]); + context.Updater.ModelState.AddModelError(Prefix, nameof(viewModel.Html), S["{0} doesn't contain a valid Liquid expression. Details: {1}", partName, string.Join(" ", errors)]); } else { diff --git a/src/OrchardCore.Modules/OrchardCore.Liquid/Drivers/LiquidPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Liquid/Drivers/LiquidPartDisplayDriver.cs index b489f74abaf..9c26f574e98 100644 --- a/src/OrchardCore.Modules/OrchardCore.Liquid/Drivers/LiquidPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Liquid/Drivers/LiquidPartDisplayDriver.cs @@ -1,7 +1,7 @@ using System.Threading.Tasks; using Microsoft.Extensions.Localization; using OrchardCore.ContentManagement.Display.ContentDisplay; -using OrchardCore.DisplayManagement.ModelBinding; +using OrchardCore.ContentManagement.Display.Models; using OrchardCore.DisplayManagement.Views; using OrchardCore.Liquid.Models; using OrchardCore.Liquid.ViewModels; @@ -23,9 +23,9 @@ public LiquidPartDisplayDriver( S = localizer; } - public override IDisplayResult Display(LiquidPart liquidPart) + public override Task DisplayAsync(LiquidPart liquidPart, BuildPartDisplayContext context) { - return Combine( + return CombineAsync( Initialize("LiquidPart", m => BuildViewModel(m, liquidPart)) .Location("Detail", "Content"), Initialize("LiquidPart_Summary", m => BuildViewModel(m, liquidPart)) @@ -33,27 +33,27 @@ public override IDisplayResult Display(LiquidPart liquidPart) ); } - public override IDisplayResult Edit(LiquidPart liquidPart) + public override IDisplayResult Edit(LiquidPart liquidPart, BuildPartEditorContext context) { return Initialize("LiquidPart_Edit", m => BuildViewModel(m, liquidPart)); } - public override async Task UpdateAsync(LiquidPart model, IUpdateModel updater) + public override async Task UpdateAsync(LiquidPart model, UpdatePartEditorContext context) { var viewModel = new LiquidPartViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix, t => t.Liquid); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix, t => t.Liquid); if (!string.IsNullOrEmpty(viewModel.Liquid) && !_liquidTemplateManager.Validate(viewModel.Liquid, out var errors)) { - updater.ModelState.AddModelError(Prefix, nameof(viewModel.Liquid), S["The Liquid Body doesn't contain a valid Liquid expression. Details: {0}", string.Join(" ", errors)]); + context.Updater.ModelState.AddModelError(Prefix, nameof(viewModel.Liquid), S["The Liquid Body doesn't contain a valid Liquid expression. Details: {0}", string.Join(" ", errors)]); } else { model.Liquid = viewModel.Liquid; } - return Edit(model); + return Edit(model, context); } private static void BuildViewModel(LiquidPartViewModel model, LiquidPart liquidPart) diff --git a/src/OrchardCore.Modules/OrchardCore.Lists/Feeds/ListPartFeedDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Lists/Feeds/ListPartFeedDisplayDriver.cs index f7e7e240b48..94bc71f510b 100644 --- a/src/OrchardCore.Modules/OrchardCore.Lists/Feeds/ListPartFeedDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Lists/Feeds/ListPartFeedDisplayDriver.cs @@ -18,7 +18,7 @@ public override IDisplayResult Display(ListPart listPart, BuildPartDisplayContex .Location("Detail", "Content"); } - public override IDisplayResult Edit(ListPart part) + public override IDisplayResult Edit(ListPart part, BuildPartEditorContext context) { return Initialize("ListPartFeed_Edit", m => { @@ -29,20 +29,20 @@ public override IDisplayResult Edit(ListPart part) }); } - public override async Task UpdateAsync(ListPart part, IUpdateModel updater) + public override async Task UpdateAsync(ListPart part, UpdatePartEditorContext context) { var model = new ListFeedEditViewModel { ContentItem = part.ContentItem, }; - await updater.TryUpdateModelAsync(model, Prefix, t => t.DisableRssFeed, t => t.FeedProxyUrl, t => t.FeedItemsCount); + await context.Updater.TryUpdateModelAsync(model, Prefix, t => t.DisableRssFeed, t => t.FeedProxyUrl, t => t.FeedItemsCount); part.ContentItem.Content.ListPart.DisableRssFeed = model.DisableRssFeed; part.ContentItem.Content.ListPart.FeedProxyUrl = model.FeedProxyUrl; part.ContentItem.Content.ListPart.FeedItemsCount = model.FeedItemsCount; - return Edit(part); + return Edit(part, context); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Markdown/Drivers/MarkdownBodyPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Markdown/Drivers/MarkdownBodyPartDisplayDriver.cs index 4bcd7c8aca9..2f95b24d24d 100644 --- a/src/OrchardCore.Modules/OrchardCore.Markdown/Drivers/MarkdownBodyPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Markdown/Drivers/MarkdownBodyPartDisplayDriver.cs @@ -63,7 +63,7 @@ public override IDisplayResult Edit(MarkdownBodyPart markdownBodyPart, BuildPart }); } - public override async Task UpdateAsync(MarkdownBodyPart model, IUpdateModel updater, UpdatePartEditorContext context) + public override async Task UpdateAsync(MarkdownBodyPart model, UpdatePartEditorContext context) { var viewModel = new MarkdownBodyPartViewModel(); @@ -72,7 +72,7 @@ public override async Task UpdateAsync(MarkdownBodyPart model, I if (!string.IsNullOrEmpty(viewModel.Markdown) && !_liquidTemplateManager.Validate(viewModel.Markdown, out var errors)) { var partName = context.TypePartDefinition.DisplayName(); - updater.ModelState.AddModelError(Prefix, nameof(viewModel.Markdown), S["{0} doesn't contain a valid Liquid expression. Details: {1}", partName, string.Join(" ", errors)]); + context.Updater.ModelState.AddModelError(Prefix, nameof(viewModel.Markdown), S["{0} doesn't contain a valid Liquid expression. Details: {1}", partName, string.Join(" ", errors)]); } else { diff --git a/src/OrchardCore.Modules/OrchardCore.Markdown/Drivers/MarkdownFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Markdown/Drivers/MarkdownFieldDisplayDriver.cs index c834b70e27b..991c587e73f 100644 --- a/src/OrchardCore.Modules/OrchardCore.Markdown/Drivers/MarkdownFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Markdown/Drivers/MarkdownFieldDisplayDriver.cs @@ -94,16 +94,16 @@ public override IDisplayResult Edit(MarkdownField field, BuildFieldEditorContext }); } - public override async Task UpdateAsync(MarkdownField field, IUpdateModel updater, UpdateFieldEditorContext context) + public override async Task UpdateAsync(MarkdownField field, UpdateFieldEditorContext context) { var viewModel = new EditMarkdownFieldViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix, vm => vm.Markdown); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix, vm => vm.Markdown); if (!string.IsNullOrEmpty(viewModel.Markdown) && !_liquidTemplateManager.Validate(viewModel.Markdown, out var errors)) { var fieldName = context.PartFieldDefinition.DisplayName(); - updater.ModelState.AddModelError(Prefix, nameof(viewModel.Markdown), S["{0} field doesn't contain a valid Liquid expression. Details: {1}", fieldName, string.Join(" ", errors)]); + context.Updater.ModelState.AddModelError(Prefix, nameof(viewModel.Markdown), S["{0} field doesn't contain a valid Liquid expression. Details: {1}", fieldName, string.Join(" ", errors)]); } else { diff --git a/src/OrchardCore.Modules/OrchardCore.Media/Drivers/MediaFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Media/Drivers/MediaFieldDisplayDriver.cs index b5d7e277b99..1fbd0d1c6e3 100644 --- a/src/OrchardCore.Modules/OrchardCore.Media/Drivers/MediaFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Media/Drivers/MediaFieldDisplayDriver.cs @@ -88,11 +88,11 @@ public override IDisplayResult Edit(MediaField field, BuildFieldEditorContext co }); } - public override async Task UpdateAsync(MediaField field, IUpdateModel updater, UpdateFieldEditorContext context) + public override async Task UpdateAsync(MediaField field, UpdateFieldEditorContext context) { var model = new EditMediaFieldViewModel(); - await updater.TryUpdateModelAsync(model, Prefix, f => f.Paths); + await context.Updater.TryUpdateModelAsync(model, Prefix, f => f.Paths); // Deserializing an empty string doesn't return an array var items = string.IsNullOrWhiteSpace(model.Paths) @@ -109,7 +109,7 @@ public override async Task UpdateAsync(MediaField field, IUpdate } catch (Exception e) { - updater.ModelState.AddModelError(Prefix, nameof(model.Paths), S["{0}: There was an error handling the files.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(model.Paths), S["{0}: There was an error handling the files.", context.PartFieldDefinition.DisplayName()]); _logger.LogError(e, "Error handling attached media files for field '{Field}'", context.PartFieldDefinition.DisplayName()); } } @@ -126,19 +126,19 @@ public override async Task UpdateAsync(MediaField field, IUpdate if (!settings.AllowedExtensions.Contains(extension)) { - updater.ModelState.AddModelError(Prefix, nameof(model.Paths), S["Media extension is not allowed. Only media with '{0}' extensions are allowed.", string.Join(", ", settings.AllowedExtensions)]); + context.Updater.ModelState.AddModelError(Prefix, nameof(model.Paths), S["Media extension is not allowed. Only media with '{0}' extensions are allowed.", string.Join(", ", settings.AllowedExtensions)]); } } } if (settings.Required && field.Paths.Length < 1) { - updater.ModelState.AddModelError(Prefix, nameof(model.Paths), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(model.Paths), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); } if (field.Paths.Length > 1 && !settings.Multiple) { - updater.ModelState.AddModelError(Prefix, nameof(model.Paths), S["{0}: Selecting multiple media is forbidden.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(model.Paths), S["{0}: Selecting multiple media is forbidden.", context.PartFieldDefinition.DisplayName()]); } if (settings.AllowMediaText) diff --git a/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/ContentMenuItemPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/ContentMenuItemPartDisplayDriver.cs index 815d26dbce2..1feada74a4e 100644 --- a/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/ContentMenuItemPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/ContentMenuItemPartDisplayDriver.cs @@ -26,7 +26,7 @@ public override IDisplayResult Display(ContentMenuItemPart part, BuildPartDispla ); } - public override IDisplayResult Edit(ContentMenuItemPart part) + public override IDisplayResult Edit(ContentMenuItemPart part, BuildPartEditorContext context) { return Initialize("ContentMenuItemPart_Edit", model => { @@ -35,15 +35,15 @@ public override IDisplayResult Edit(ContentMenuItemPart part) }); } - public override async Task UpdateAsync(ContentMenuItemPart part, IUpdateModel updater) + public override async Task UpdateAsync(ContentMenuItemPart part, UpdatePartEditorContext context) { var model = new ContentMenuItemPartEditViewModel(); - await updater.TryUpdateModelAsync(model, Prefix); + await context.Updater.TryUpdateModelAsync(model, Prefix); part.ContentItem.DisplayText = model.Name; - return Edit(part); + return Edit(part, context); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/HtmlMenuItemPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/HtmlMenuItemPartDisplayDriver.cs index 9a3a0ad5cf2..0a72c3800f0 100644 --- a/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/HtmlMenuItemPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/HtmlMenuItemPartDisplayDriver.cs @@ -62,7 +62,7 @@ public override IDisplayResult Display(HtmlMenuItemPart part, BuildPartDisplayCo ); } - public override IDisplayResult Edit(HtmlMenuItemPart part) + public override IDisplayResult Edit(HtmlMenuItemPart part, BuildPartEditorContext context) { return Initialize("HtmlMenuItemPart_Edit", model => { @@ -74,11 +74,11 @@ public override IDisplayResult Edit(HtmlMenuItemPart part) }); } - public override async Task UpdateAsync(HtmlMenuItemPart part, IUpdateModel updater, UpdatePartEditorContext context) + public override async Task UpdateAsync(HtmlMenuItemPart part, UpdatePartEditorContext context) { var settings = context.TypePartDefinition.GetSettings(); var model = new HtmlMenuItemPartEditViewModel(); - await updater.TryUpdateModelAsync(model, Prefix); + await context.Updater.TryUpdateModelAsync(model, Prefix); part.ContentItem.DisplayText = model.Name; part.Html = settings.SanitizeHtml ? _htmlSanitizerService.Sanitize(model.Html) : model.Html; @@ -101,7 +101,7 @@ public override async Task UpdateAsync(HtmlMenuItemPart part, IU if (!Uri.IsWellFormedUriString(urlToValidate, UriKind.RelativeOrAbsolute)) { - updater.ModelState.AddModelError(nameof(part.Url), S["{0} is an invalid url.", part.Url]); + context.Updater.ModelState.AddModelError(nameof(part.Url), S["{0} is an invalid url.", part.Url]); } else { @@ -109,7 +109,7 @@ public override async Task UpdateAsync(HtmlMenuItemPart part, IU if (!string.Equals(link, _htmlSanitizerService.Sanitize(link), StringComparison.OrdinalIgnoreCase)) { - updater.ModelState.AddModelError(nameof(part.Url), S["{0} is an invalid url.", part.Url]); + context.Updater.ModelState.AddModelError(nameof(part.Url), S["{0} is an invalid url.", part.Url]); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/LinkMenuItemPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/LinkMenuItemPartDisplayDriver.cs index 33cb16d670d..2e8cb84f694 100644 --- a/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/LinkMenuItemPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/LinkMenuItemPartDisplayDriver.cs @@ -54,7 +54,7 @@ public override IDisplayResult Display(LinkMenuItemPart part, BuildPartDisplayCo ); } - public override IDisplayResult Edit(LinkMenuItemPart part) + public override IDisplayResult Edit(LinkMenuItemPart part, BuildPartEditorContext context) { return Initialize("LinkMenuItemPart_Edit", model => { @@ -65,11 +65,11 @@ public override IDisplayResult Edit(LinkMenuItemPart part) }); } - public override async Task UpdateAsync(LinkMenuItemPart part, IUpdateModel updater) + public override async Task UpdateAsync(LinkMenuItemPart part, UpdatePartEditorContext context) { var model = new LinkMenuItemPartEditViewModel(); - await updater.TryUpdateModelAsync(model, Prefix); + await context.Updater.TryUpdateModelAsync(model, Prefix); part.Url = model.Url; part.Target = model.Target; @@ -91,7 +91,7 @@ public override async Task UpdateAsync(LinkMenuItemPart part, IU if (!Uri.IsWellFormedUriString(urlToValidate, UriKind.RelativeOrAbsolute)) { - updater.ModelState.AddModelError(nameof(part.Url), S["{0} is an invalid url.", part.Url]); + context.Updater.ModelState.AddModelError(nameof(part.Url), S["{0} is an invalid url.", part.Url]); } else { @@ -99,12 +99,12 @@ public override async Task UpdateAsync(LinkMenuItemPart part, IU if (!string.Equals(link, _htmlSanitizerService.Sanitize(link), StringComparison.OrdinalIgnoreCase)) { - updater.ModelState.AddModelError(nameof(part.Url), S["{0} is an invalid url.", part.Url]); + context.Updater.ModelState.AddModelError(nameof(part.Url), S["{0} is an invalid url.", part.Url]); } } } - return Edit(part); + return Edit(part, context); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/MenuPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/MenuPartDisplayDriver.cs index 3a64e89712e..c7f31e83f1f 100644 --- a/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/MenuPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/MenuPartDisplayDriver.cs @@ -7,6 +7,7 @@ using Microsoft.Extensions.Logging; using OrchardCore.ContentManagement; using OrchardCore.ContentManagement.Display.ContentDisplay; +using OrchardCore.ContentManagement.Display.Models; using OrchardCore.ContentManagement.Metadata; using OrchardCore.ContentManagement.Metadata.Models; using OrchardCore.DisplayManagement.ModelBinding; @@ -38,7 +39,7 @@ IHtmlLocalizer htmlLocalizer H = htmlLocalizer; } - public override IDisplayResult Edit(MenuPart part) + public override IDisplayResult Edit(MenuPart part, BuildPartEditorContext context) { return Initialize("MenuPart_Edit", async model => { @@ -68,10 +69,10 @@ public override IDisplayResult Edit(MenuPart part) }); } - public override async Task UpdateAsync(MenuPart part, IUpdateModel updater) + public override async Task UpdateAsync(MenuPart part, UpdatePartEditorContext context) { var model = new MenuPartEditViewModel(); - await updater.TryUpdateModelAsync(model, Prefix, t => t.Hierarchy); + await context.Updater.TryUpdateModelAsync(model, Prefix, t => t.Hierarchy); if (!string.IsNullOrWhiteSpace(model.Hierarchy)) { @@ -95,7 +96,7 @@ public override async Task UpdateAsync(MenuPart part, IUpdateMod }; } - return Edit(part); + return Edit(part, context); } /// diff --git a/src/OrchardCore.Modules/OrchardCore.PublishLater/Drivers/PublishLaterPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.PublishLater/Drivers/PublishLaterPartDisplayDriver.cs index bc7886474ce..f0293c728e3 100644 --- a/src/OrchardCore.Modules/OrchardCore.PublishLater/Drivers/PublishLaterPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.PublishLater/Drivers/PublishLaterPartDisplayDriver.cs @@ -30,10 +30,9 @@ public PublishLaterPartDisplayDriver( public override IDisplayResult Display(PublishLaterPart part, BuildPartDisplayContext context) { - return Initialize( - $"{nameof(PublishLaterPart)}_SummaryAdmin", + return Initialize($"{nameof(PublishLaterPart)}_SummaryAdmin", model => PopulateViewModel(part, model)) - .Location("SummaryAdmin", "Meta:25"); + .Location("SummaryAdmin", "Meta:25"); } public override IDisplayResult Edit(PublishLaterPart part, BuildPartEditorContext context) @@ -43,7 +42,7 @@ public override IDisplayResult Edit(PublishLaterPart part, BuildPartEditorContex .Location("Actions:10"); } - public override async Task UpdateAsync(PublishLaterPart part, IUpdateModel updater, UpdatePartEditorContext context) + public override async Task UpdateAsync(PublishLaterPart part, UpdatePartEditorContext context) { var httpContext = _httpContextAccessor.HttpContext; @@ -51,7 +50,7 @@ public override async Task UpdateAsync(PublishLaterPart part, IU { var viewModel = new PublishLaterPartViewModel(); - await updater.TryUpdateModelAsync(viewModel, Prefix); + await context.Updater.TryUpdateModelAsync(viewModel, Prefix); if (viewModel.ScheduledPublishLocalDateTime == null || httpContext.Request.Form["submit.Save"] == "submit.CancelPublishLater") { diff --git a/src/OrchardCore.Modules/OrchardCore.Search/Drivers/SearchFormPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Search/Drivers/SearchFormPartDisplayDriver.cs index 04c5239099f..1c19a820a3d 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search/Drivers/SearchFormPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search/Drivers/SearchFormPartDisplayDriver.cs @@ -12,7 +12,8 @@ public sealed class SearchFormPartDisplayDriver : ContentPartDisplayDriver UpdateAsync(SearchFormPart part, IUpdateModel updater, UpdatePartEditorContext context) + public override async Task UpdateAsync(SearchFormPart part, UpdatePartEditorContext context) { var model = new SearchPartViewModel(); - await updater.TryUpdateModelAsync(model, Prefix); + await context.Updater.TryUpdateModelAsync(model, Prefix); part.Placeholder = model.Placeholder; part.IndexName = string.IsNullOrWhiteSpace(model.IndexName) ? null : model.IndexName.Trim(); - return Edit(part); + return Edit(part, context); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Seo/Drivers/SeoMetaPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Seo/Drivers/SeoMetaPartDisplayDriver.cs index 561b6b8b0d9..d58d92e1451 100644 --- a/src/OrchardCore.Modules/OrchardCore.Seo/Drivers/SeoMetaPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Seo/Drivers/SeoMetaPartDisplayDriver.cs @@ -78,10 +78,10 @@ public override IDisplayResult Edit(SeoMetaPart part, BuildPartEditorContext con return Combine(results); } - public override async Task UpdateAsync(SeoMetaPart part, IUpdateModel updater, UpdatePartEditorContext context) + public override async Task UpdateAsync(SeoMetaPart part, UpdatePartEditorContext context) { var partViewModel = new SeoMetaPartViewModel(); - await updater.TryUpdateModelAsync(partViewModel, Prefix); + await context.Updater.TryUpdateModelAsync(partViewModel, Prefix); try { @@ -98,17 +98,17 @@ public override async Task UpdateAsync(SeoMetaPart part, IUpdate if (part.Canonical?.IndexOfAny(SeoMetaPart.InvalidCharactersForCanoncial) > -1 || part.Canonical?.IndexOf(' ') > -1) { - updater.ModelState.AddModelError(Prefix, S["The canonical entry contains invalid characters."]); + context.Updater.ModelState.AddModelError(Prefix, S["The canonical entry contains invalid characters."]); } } catch { - updater.ModelState.AddModelError(Prefix, S["The meta entries are written in an incorrect format."]); + context.Updater.ModelState.AddModelError(Prefix, S["The meta entries are written in an incorrect format."]); } var openGraphModel = new SeoMetaPartOpenGraphViewModel(); - await updater.TryUpdateModelAsync(openGraphModel, Prefix); + await context.Updater.TryUpdateModelAsync(openGraphModel, Prefix); part.OpenGraphType = openGraphModel.OpenGraphType; part.OpenGraphTitle = openGraphModel.OpenGraphTitle; @@ -116,7 +116,7 @@ public override async Task UpdateAsync(SeoMetaPart part, IUpdate var twitterModel = new SeoMetaPartTwitterViewModel(); - await updater.TryUpdateModelAsync(twitterModel, Prefix); + await context.Updater.TryUpdateModelAsync(twitterModel, Prefix); part.TwitterTitle = twitterModel.TwitterTitle; part.TwitterDescription = twitterModel.TwitterDescription; @@ -126,12 +126,12 @@ public override async Task UpdateAsync(SeoMetaPart part, IUpdate var googleSchemaModel = new SeoMetaPartGoogleSchemaViewModel(); - await updater.TryUpdateModelAsync(googleSchemaModel, Prefix); + await context.Updater.TryUpdateModelAsync(googleSchemaModel, Prefix); part.GoogleSchema = googleSchemaModel.GoogleSchema; if (!string.IsNullOrWhiteSpace(googleSchemaModel.GoogleSchema) && !googleSchemaModel.GoogleSchema.IsJson()) { - updater.ModelState.AddModelError(Prefix, S["The google schema is written in an incorrect format."]); + context.Updater.ModelState.AddModelError(Prefix, S["The google schema is written in an incorrect format."]); } return Edit(part, context); diff --git a/src/OrchardCore.Modules/OrchardCore.Sitemaps/Drivers/SitemapPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Sitemaps/Drivers/SitemapPartDisplayDriver.cs index 500f2d1d9c8..57800b497b3 100644 --- a/src/OrchardCore.Modules/OrchardCore.Sitemaps/Drivers/SitemapPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Sitemaps/Drivers/SitemapPartDisplayDriver.cs @@ -1,5 +1,6 @@ using System.Threading.Tasks; using OrchardCore.ContentManagement.Display.ContentDisplay; +using OrchardCore.ContentManagement.Display.Models; using OrchardCore.DisplayManagement.ModelBinding; using OrchardCore.DisplayManagement.Views; using OrchardCore.Sitemaps.Models; @@ -9,17 +10,17 @@ namespace OrchardCore.Sitemaps.Drivers { public sealed class SitemapPartDisplayDriver : ContentPartDisplayDriver { - public override IDisplayResult Edit(SitemapPart part) + public override IDisplayResult Edit(SitemapPart part, BuildPartEditorContext context) { return Initialize("SitemapPart_Edit", m => BuildViewModel(m, part)) .Location("Parts#SEO:5"); } - public override async Task UpdateAsync(SitemapPart model, IUpdateModel updater) + public override async Task UpdateAsync(SitemapPart model, UpdatePartEditorContext context) { var viewModel = new SitemapPartViewModel(); - await updater.TryUpdateModelAsync(viewModel, + await context.Updater.TryUpdateModelAsync(viewModel, Prefix, t => t.OverrideSitemapConfig, t => t.ChangeFrequency, @@ -31,7 +32,7 @@ await updater.TryUpdateModelAsync(viewModel, model.Exclude = viewModel.Exclude; model.Priority = viewModel.Priority; - return Edit(model); + return Edit(model, context); } diff --git a/src/OrchardCore.Modules/OrchardCore.Spatial/Drivers/GeoPointFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Spatial/Drivers/GeoPointFieldDisplayDriver.cs index da953450e3e..36d3cf69726 100644 --- a/src/OrchardCore.Modules/OrchardCore.Spatial/Drivers/GeoPointFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Spatial/Drivers/GeoPointFieldDisplayDriver.cs @@ -47,11 +47,11 @@ public override IDisplayResult Edit(GeoPointField field, BuildFieldEditorContext }); } - public override async Task UpdateAsync(GeoPointField field, IUpdateModel updater, UpdateFieldEditorContext context) + public override async Task UpdateAsync(GeoPointField field, UpdateFieldEditorContext context) { var viewModel = new EditGeoPointFieldViewModel(); - var modelUpdated = await updater.TryUpdateModelAsync(viewModel, Prefix, f => f.Latitude, f => f.Longitude); + var modelUpdated = await context.Updater.TryUpdateModelAsync(viewModel, Prefix, f => f.Latitude, f => f.Longitude); if (modelUpdated) { @@ -64,7 +64,7 @@ public override async Task UpdateAsync(GeoPointField field, IUpd { if (settings.Required) { - updater.ModelState.AddModelError(Prefix, nameof(field.Latitude), S["The {0} field is required.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.Latitude), S["The {0} field is required.", context.PartFieldDefinition.DisplayName()]); } else { @@ -73,7 +73,7 @@ public override async Task UpdateAsync(GeoPointField field, IUpd } else if (!decimal.TryParse(viewModel.Latitude, NumberStyles.Any, CultureInfo.InvariantCulture, out latitude)) { - updater.ModelState.AddModelError(Prefix, nameof(viewModel.Latitude), S["{0} is an invalid number.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(viewModel.Latitude), S["{0} is an invalid number.", context.PartFieldDefinition.DisplayName()]); } else { @@ -84,7 +84,7 @@ public override async Task UpdateAsync(GeoPointField field, IUpd { if (settings.Required) { - updater.ModelState.AddModelError(Prefix, nameof(field.Longitude), S["The {0} field is required.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(field.Longitude), S["The {0} field is required.", context.PartFieldDefinition.DisplayName()]); } else { @@ -93,7 +93,7 @@ public override async Task UpdateAsync(GeoPointField field, IUpd } else if (!decimal.TryParse(viewModel.Longitude, NumberStyles.Any, CultureInfo.InvariantCulture, out longitude)) { - updater.ModelState.AddModelError(Prefix, nameof(viewModel.Longitude), S["{0} is an invalid number.", context.PartFieldDefinition.DisplayName()]); + context.Updater.ModelState.AddModelError(Prefix, nameof(viewModel.Longitude), S["{0} is an invalid number.", context.PartFieldDefinition.DisplayName()]); } else { diff --git a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyFieldDisplayDriver.cs index 798af019804..5d3c82b1b46 100644 --- a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyFieldDisplayDriver.cs @@ -62,11 +62,11 @@ public override IDisplayResult Edit(TaxonomyField field, BuildFieldEditorContext }); } - public override async Task UpdateAsync(TaxonomyField field, IUpdateModel updater, UpdateFieldEditorContext context) + public override async Task UpdateAsync(TaxonomyField field, UpdateFieldEditorContext context) { var model = new EditTaxonomyFieldViewModel(); - await updater.TryUpdateModelAsync(model, Prefix); + await context.Updater.TryUpdateModelAsync(model, Prefix); var settings = context.PartFieldDefinition.GetSettings(); @@ -80,7 +80,7 @@ public override async Task UpdateAsync(TaxonomyField field, IUpd if (settings.Required && field.TermContentItemIds.Length == 0) { - updater.ModelState.AddModelError( + context.Updater.ModelState.AddModelError( nameof(EditTaxonomyFieldViewModel.TermEntries), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); } diff --git a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyFieldTagsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyFieldTagsDisplayDriver.cs index edb4df7c228..069591235a7 100644 --- a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyFieldTagsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyFieldTagsDisplayDriver.cs @@ -71,11 +71,11 @@ public override IDisplayResult Edit(TaxonomyField field, BuildFieldEditorContext }); } - public override async Task UpdateAsync(TaxonomyField field, IUpdateModel updater, UpdateFieldEditorContext context) + public override async Task UpdateAsync(TaxonomyField field, UpdateFieldEditorContext context) { var model = new EditTagTaxonomyFieldViewModel(); - await updater.TryUpdateModelAsync(model, Prefix, f => f.TermContentItemIds); + await context.Updater.TryUpdateModelAsync(model, Prefix, f => f.TermContentItemIds); var settings = context.PartFieldDefinition.GetSettings(); @@ -86,7 +86,7 @@ public override async Task UpdateAsync(TaxonomyField field, IUpd if (settings.Required && field.TermContentItemIds.Length == 0) { - updater.ModelState.AddModelError( + context.Updater.ModelState.AddModelError( nameof(EditTagTaxonomyFieldViewModel.TermContentItemIds), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); } diff --git a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyPartDisplayDriver.cs index 9b76face6f1..71a3da03a20 100644 --- a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyPartDisplayDriver.cs @@ -35,7 +35,7 @@ public override IDisplayResult Display(TaxonomyPart part, BuildPartDisplayContex }).Location("Detail", "Content"); } - public override IDisplayResult Edit(TaxonomyPart part) + public override IDisplayResult Edit(TaxonomyPart part, BuildPartEditorContext context) { return Initialize("TaxonomyPart_Edit", model => { @@ -44,15 +44,15 @@ public override IDisplayResult Edit(TaxonomyPart part) }); } - public override async Task UpdateAsync(TaxonomyPart part, IUpdateModel updater) + public override async Task UpdateAsync(TaxonomyPart part, UpdatePartEditorContext context) { var model = new TaxonomyPartEditViewModel(); - await updater.TryUpdateModelAsync(model, Prefix, t => t.Hierarchy, t => t.TermContentType); + await context.Updater.TryUpdateModelAsync(model, Prefix, t => t.Hierarchy, t => t.TermContentType); if (string.IsNullOrWhiteSpace(model.TermContentType)) { - updater.ModelState.AddModelError(Prefix, nameof(model.TermContentType), S["The Term Content Type field is required."]); + context.Updater.ModelState.AddModelError(Prefix, nameof(model.TermContentType), S["The Term Content Type field is required."]); } if (!string.IsNullOrWhiteSpace(model.Hierarchy)) @@ -73,7 +73,7 @@ public override async Task UpdateAsync(TaxonomyPart part, IUpdat part.TermContentType = model.TermContentType; - return Edit(part); + return Edit(part, context); } /// diff --git a/src/OrchardCore.Modules/OrchardCore.Title/Drivers/TitlePartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Title/Drivers/TitlePartDisplayDriver.cs index ce169dda98c..c193484fd33 100644 --- a/src/OrchardCore.Modules/OrchardCore.Title/Drivers/TitlePartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Title/Drivers/TitlePartDisplayDriver.cs @@ -48,14 +48,14 @@ public override IDisplayResult Edit(TitlePart titlePart, BuildPartEditorContext }); } - public override async Task UpdateAsync(TitlePart model, IUpdateModel updater, UpdatePartEditorContext context) + public override async Task UpdateAsync(TitlePart model, UpdatePartEditorContext context) { - await updater.TryUpdateModelAsync(model, Prefix, t => t.Title); + await context.Updater.TryUpdateModelAsync(model, Prefix, t => t.Title); var settings = context.TypePartDefinition.GetSettings(); if (settings.Options == TitlePartOptions.EditableRequired && string.IsNullOrWhiteSpace(model.Title)) { - updater.ModelState.AddModelError(Prefix, nameof(model.Title), S["A value is required for Title."]); + context.Updater.ModelState.AddModelError(Prefix, nameof(model.Title), S["A value is required for Title."]); } else { diff --git a/src/OrchardCore/OrchardCore.ContentManagement.Display/ContentDisplay/ContentFieldDisplayDriver.cs b/src/OrchardCore/OrchardCore.ContentManagement.Display/ContentDisplay/ContentFieldDisplayDriver.cs index 646221fea20..f1e94c1352e 100644 --- a/src/OrchardCore/OrchardCore.ContentManagement.Display/ContentDisplay/ContentFieldDisplayDriver.cs +++ b/src/OrchardCore/OrchardCore.ContentManagement.Display/ContentDisplay/ContentFieldDisplayDriver.cs @@ -205,7 +205,7 @@ async Task IContentFieldDisplayDriver.UpdateEditorAsync(ContentP _typePartDefinition = typePartDefinition; _partFieldDefinition = partFieldDefinition; - var result = await UpdateAsync(field, context.Updater, updateFieldEditorContext); + var result = await UpdateAsync(field, updateFieldEditorContext); _typePartDefinition = null; _partFieldDefinition = null; @@ -225,26 +225,35 @@ public virtual Task DisplayAsync(TField field, BuildFieldDisplay return Task.FromResult(Display(field, fieldDisplayContext)); } + public virtual IDisplayResult Display(TField field, BuildFieldDisplayContext fieldDisplayContext) + { + return null; + } + public virtual Task EditAsync(TField field, BuildFieldEditorContext context) { return Task.FromResult(Edit(field, context)); } - public virtual Task UpdateAsync(TField field, IUpdateModel updater, UpdateFieldEditorContext context) + public virtual IDisplayResult Edit(TField field, BuildFieldEditorContext context) { - return Task.FromResult(Update(field, updater, context)); + return null; } - public virtual IDisplayResult Display(TField field, BuildFieldDisplayContext fieldDisplayContext) + public virtual Task UpdateAsync(TField field, UpdateFieldEditorContext context) { - return null; +#pragma warning disable CS0618 // Type or member is obsolete + return UpdateAsync(field, context.Updater, context); +#pragma warning restore CS0618 // Type or member is obsolete } - public virtual IDisplayResult Edit(TField field, BuildFieldEditorContext context) + [Obsolete("This method is obsolete and will be removed in version 3. Instead, use the UpdateAsync(TField field, UpdateFieldEditorContext context) method.")] + public virtual Task UpdateAsync(TField field, IUpdateModel updater, UpdateFieldEditorContext context) { - return null; + return Task.FromResult(Update(field, updater, context)); } + [Obsolete("This method is obsolete and will be removed in version 3. Instead, use the UpdateAsync(TField field, UpdateFieldEditorContext context) method.")] public virtual IDisplayResult Update(TField field, IUpdateModel updater, UpdateFieldEditorContext context) { return null; diff --git a/src/OrchardCore/OrchardCore.ContentManagement.Display/ContentDisplay/ContentPartDisplayDriverTPart.cs b/src/OrchardCore/OrchardCore.ContentManagement.Display/ContentDisplay/ContentPartDisplayDriverTPart.cs index 5944ecbb94d..26db8564e9e 100644 --- a/src/OrchardCore/OrchardCore.ContentManagement.Display/ContentDisplay/ContentPartDisplayDriverTPart.cs +++ b/src/OrchardCore/OrchardCore.ContentManagement.Display/ContentDisplay/ContentPartDisplayDriverTPart.cs @@ -237,7 +237,7 @@ async Task IContentPartDisplayDriver.UpdateEditorAsync(ContentPa _typePartDefinition = typePartDefinition; - var result = await UpdateAsync(part, context.Updater, updateEditorContext); + var result = await UpdateAsync(part, updateEditorContext); part.ContentItem.Apply(typePartDefinition.Name, part); @@ -254,9 +254,12 @@ public virtual Task DisplayAsync(TPart part, BuildPartDisplayCon public virtual IDisplayResult Display(TPart part, BuildPartDisplayContext context) { +#pragma warning disable CS0618 // Type or member is obsolete return Display(part); +#pragma warning restore CS0618 // Type or member is obsolete } + [Obsolete("This method is obsolete and will be removed in version 3. Instead, use the DisplayAsync(TPart part, BuildPartDisplayContext context) or Display(TPart part, BuildPartDisplayContext context) method.")] public virtual IDisplayResult Display(TPart part) { return null; @@ -269,24 +272,25 @@ public virtual Task EditAsync(TPart part, BuildPartEditorContext public virtual IDisplayResult Edit(TPart part, BuildPartEditorContext context) { +#pragma warning disable CS0618 // Type or member is obsolete return Edit(part); +#pragma warning restore CS0618 // Type or member is obsolete } + [Obsolete("This method is obsolete and will be removed in version 3. Instead, use the EditAsync(TPart part, BuildPartEditorContext context) or Edit(TPart part, BuildPartEditorContext context) method.")] public virtual IDisplayResult Edit(TPart part) { return null; } - public virtual Task UpdateAsync(TPart part, IUpdateModel updater, UpdatePartEditorContext context) - { - return UpdateAsync(part, context); - } - public virtual Task UpdateAsync(TPart part, UpdatePartEditorContext context) { +#pragma warning disable CS0618 // Type or member is obsolete return UpdateAsync(part, context.Updater); +#pragma warning restore CS0618 // Type or member is obsolete } + [Obsolete("This method is obsolete and will be removed in version 3. Instead, use the UpdateAsync(TPart part, UpdatePartEditorContext context) method.")] public virtual Task UpdateAsync(TPart part, IUpdateModel updater) { return Task.FromResult(null); diff --git a/src/docs/releases/2.0.0.md b/src/docs/releases/2.0.0.md index c6297b293ea..6d9aa8ef531 100644 --- a/src/docs/releases/2.0.0.md +++ b/src/docs/releases/2.0.0.md @@ -315,6 +315,25 @@ A new `SiteDisplayDriver` base class was introduced to simplify the process of a !!! note With the new `SiteDisplayDriver` base class for custom settings, you no longer need explicit checks like `context.GroupId.Equals(GroupId, StringComparison.OrdinalIgnoreCase)` as the base class handles this check for you. +Similarly, the `ContentPartDisplayDriver` base class have undergone modifications. The following methods were marked obsolete: + +- `IDisplayResult Display(TPart part)` +- `IDisplayResult Edit(TPart part)` +- `Task UpdateAsync(TPart part, IUpdateModel updater)` + +At the same time, the following method was removed: + +- `Task UpdateAsync(TPart part, IUpdateModel updater)` + +Moreover, the `ContentFieldDisplayDriver` base class have undergone modifications. The following methods were marked obsolete: + +- `UpdateAsync(TField field, IUpdateModel updater, UpdateFieldEditorContext context)` +- `Update(TField field, IUpdateModel updater, UpdateFieldEditorContext context)` + +At the same time, the following method was added: + +- `UpdateAsync(TField field, UpdateFieldEditorContext context)` + ### GraphQL Module The GraphQL schema may change because fields are now always added to the correct part. Previously, additional fields may have been added to the parent content item type directly.