diff --git a/src/OrchardCore.Modules/OrchardCore.Admin/Drivers/AdminSiteSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Admin/Drivers/AdminSiteSettingsDisplayDriver.cs index 81b9665bf23..ae16daa2e1d 100644 --- a/src/OrchardCore.Modules/OrchardCore.Admin/Drivers/AdminSiteSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Admin/Drivers/AdminSiteSettingsDisplayDriver.cs @@ -43,7 +43,7 @@ public override async Task EditAsync(AdminSettings settings, Bui }).Location("Content:3").OnGroup(GroupId); } - public override async Task UpdateAsync(AdminSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(AdminSettings settings, UpdateEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; diff --git a/src/OrchardCore.Modules/OrchardCore.AdminMenu/AdminNodes/LinkAdminNodeDriver.cs b/src/OrchardCore.Modules/OrchardCore.AdminMenu/AdminNodes/LinkAdminNodeDriver.cs index 8b46ca2bf06..780cdce97e4 100644 --- a/src/OrchardCore.Modules/OrchardCore.AdminMenu/AdminNodes/LinkAdminNodeDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.AdminMenu/AdminNodes/LinkAdminNodeDriver.cs @@ -56,19 +56,18 @@ public override IDisplayResult Edit(LinkAdminNode treeNode) public override async Task UpdateAsync(LinkAdminNode treeNode, IUpdateModel updater) { var model = new LinkAdminNodeViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix, x => x.LinkUrl, x => x.LinkText, x => x.IconClass, x => x.SelectedPermissionNames)) - { - treeNode.LinkText = model.LinkText; - treeNode.LinkUrl = model.LinkUrl; - treeNode.IconClass = model.IconClass; + await updater.TryUpdateModelAsync(model, Prefix, x => x.LinkUrl, x => x.LinkText, x => x.IconClass, x => x.SelectedPermissionNames); - var selectedPermissions = (model.SelectedPermissionNames == null ? [] : model.SelectedPermissionNames.Split(',', StringSplitOptions.RemoveEmptyEntries)); + treeNode.LinkText = model.LinkText; + treeNode.LinkUrl = model.LinkUrl; + treeNode.IconClass = model.IconClass; - var permissions = await _adminMenuPermissionService.GetPermissionsAsync(); - treeNode.PermissionNames = permissions - .Where(p => selectedPermissions.Contains(p.Name)) - .Select(p => p.Name).ToArray(); - } + var selectedPermissions = (model.SelectedPermissionNames == null ? [] : model.SelectedPermissionNames.Split(',', StringSplitOptions.RemoveEmptyEntries)); + + var permissions = await _adminMenuPermissionService.GetPermissionsAsync(); + treeNode.PermissionNames = permissions + .Where(p => selectedPermissions.Contains(p.Name)) + .Select(p => p.Name).ToArray(); return Edit(treeNode); } diff --git a/src/OrchardCore.Modules/OrchardCore.AdminMenu/AdminNodes/PlaceholderAdminNodeDriver.cs b/src/OrchardCore.Modules/OrchardCore.AdminMenu/AdminNodes/PlaceholderAdminNodeDriver.cs index 9976d19a583..0cfaa3053ce 100644 --- a/src/OrchardCore.Modules/OrchardCore.AdminMenu/AdminNodes/PlaceholderAdminNodeDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.AdminMenu/AdminNodes/PlaceholderAdminNodeDriver.cs @@ -55,17 +55,16 @@ public override IDisplayResult Edit(PlaceholderAdminNode treeNode) public override async Task UpdateAsync(PlaceholderAdminNode treeNode, IUpdateModel updater) { var model = new PlaceholderAdminNodeViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix, x => x.LinkText, x => x.IconClass, x => x.SelectedPermissionNames)) - { - treeNode.LinkText = model.LinkText; - treeNode.IconClass = model.IconClass; + await updater.TryUpdateModelAsync(model, Prefix, x => x.LinkText, x => x.IconClass, x => x.SelectedPermissionNames); - var selectedPermissions = (model.SelectedPermissionNames == null ? Array.Empty() : model.SelectedPermissionNames.Split(',', StringSplitOptions.RemoveEmptyEntries)); - var permissions = await _adminMenuPermissionService.GetPermissionsAsync(); - treeNode.PermissionNames = permissions - .Where(p => selectedPermissions.Contains(p.Name)) - .Select(p => p.Name).ToArray(); - } + treeNode.LinkText = model.LinkText; + treeNode.IconClass = model.IconClass; + + var selectedPermissions = (model.SelectedPermissionNames == null ? Array.Empty() : model.SelectedPermissionNames.Split(',', StringSplitOptions.RemoveEmptyEntries)); + var permissions = await _adminMenuPermissionService.GetPermissionsAsync(); + treeNode.PermissionNames = permissions + .Where(p => selectedPermissions.Contains(p.Name)) + .Select(p => p.Name).ToArray(); return Edit(treeNode); } diff --git a/src/OrchardCore.Modules/OrchardCore.Alias/Settings/AliasPartSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Alias/Settings/AliasPartSettingsDisplayDriver.cs index 1215a4b31c9..3b67103fd0d 100644 --- a/src/OrchardCore.Modules/OrchardCore.Alias/Settings/AliasPartSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Alias/Settings/AliasPartSettingsDisplayDriver.cs @@ -36,16 +36,15 @@ public override async Task UpdateAsync(ContentTypePartDefinition { var model = new AliasPartSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix, m => m.Pattern, m => m.Options)) + await context.Updater.TryUpdateModelAsync(model, Prefix, m => m.Pattern, m => m.Options); + + if (!string.IsNullOrEmpty(model.Pattern) && !_templateManager.Validate(model.Pattern, out var errors)) + { + context.Updater.ModelState.AddModelError(nameof(model.Pattern), S["Pattern doesn't contain a valid Liquid expression. Details: {0}", string.Join(" ", errors)]); + } + else { - if (!string.IsNullOrEmpty(model.Pattern) && !_templateManager.Validate(model.Pattern, out var errors)) - { - context.Updater.ModelState.AddModelError(nameof(model.Pattern), S["Pattern doesn't contain a valid Liquid expression. Details: {0}", string.Join(" ", errors)]); - } - else - { - context.Builder.WithSettings(new AliasPartSettings { Pattern = model.Pattern, Options = model.Options }); - } + context.Builder.WithSettings(new AliasPartSettings { Pattern = model.Pattern, Options = model.Options }); } return Edit(contentTypePartDefinition, context.Updater); diff --git a/src/OrchardCore.Modules/OrchardCore.AuditTrail/Drivers/AuditTrailSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.AuditTrail/Drivers/AuditTrailSettingsDisplayDriver.cs index b419eaf2be3..5fd1954dfad 100644 --- a/src/OrchardCore.Modules/OrchardCore.AuditTrail/Drivers/AuditTrailSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.AuditTrail/Drivers/AuditTrailSettingsDisplayDriver.cs @@ -78,7 +78,7 @@ public override async Task EditAsync(AuditTrailSettings settings }).Location("Content:1#Events").OnGroup(AuditTrailSettingsGroup.Id); } - public override async Task UpdateAsync(AuditTrailSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(AuditTrailSettings settings, UpdateEditorContext context) { if (!await _authorizationService.AuthorizeAsync(_httpContextAccessor.HttpContext?.User, AuditTrailPermissions.ManageAuditTrailSettings)) { diff --git a/src/OrchardCore.Modules/OrchardCore.AuditTrail/Drivers/AuditTrailTrimmingSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.AuditTrail/Drivers/AuditTrailTrimmingSettingsDisplayDriver.cs index 855814ecc13..78a6eee6c08 100644 --- a/src/OrchardCore.Modules/OrchardCore.AuditTrail/Drivers/AuditTrailTrimmingSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.AuditTrail/Drivers/AuditTrailTrimmingSettingsDisplayDriver.cs @@ -37,7 +37,7 @@ public override async Task EditAsync(AuditTrailTrimmingSettings }).Location("Content:10#Trimming;0").OnGroup(AuditTrailSettingsGroup.Id); } - public override async Task UpdateAsync(AuditTrailTrimmingSettings section, BuildEditorContext context) + public override async Task UpdateAsync(AuditTrailTrimmingSettings section, UpdateEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; if (!await _authorizationService.AuthorizeAsync(user, AuditTrailPermissions.ManageAuditTrailSettings)) diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/DateFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/DateFieldDisplayDriver.cs index 06a9096539b..9a319c82894 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/DateFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/DateFieldDisplayDriver.cs @@ -46,13 +46,12 @@ public override IDisplayResult Edit(DateField field, BuildFieldEditorContext con public override async Task UpdateAsync(DateField field, IUpdateModel updater, UpdateFieldEditorContext context) { - if (await updater.TryUpdateModelAsync(field, Prefix, f => f.Value)) + await updater.TryUpdateModelAsync(field, Prefix, f => f.Value); + var settings = context.PartFieldDefinition.GetSettings(); + + if (settings.Required && field.Value == null) { - 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()]); - } + 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 a9cdaae1af3..0c79a2ded8f 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/DateTimeFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/DateTimeFieldDisplayDriver.cs @@ -55,23 +55,22 @@ public override async Task UpdateAsync(DateTimeField field, IUpd { var model = new EditDateTimeFieldViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix, f => f.LocalDateTime)) + await 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()]); + } + else { - var settings = context.PartFieldDefinition.GetSettings(); - if (settings.Required && model.LocalDateTime == null) + if (model.LocalDateTime == null) { - updater.ModelState.AddModelError(Prefix, nameof(model.LocalDateTime), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); + field.Value = null; } else { - if (model.LocalDateTime == null) - { - field.Value = null; - } - else - { - field.Value = await _localClock.ConvertToUtcAsync(model.LocalDateTime.Value); - } + field.Value = await _localClock.ConvertToUtcAsync(model.LocalDateTime.Value); } } diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/HtmlFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/HtmlFieldDisplayDriver.cs index aafb66f4652..44c1c3fe5fe 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/HtmlFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/HtmlFieldDisplayDriver.cs @@ -84,22 +84,20 @@ public override async Task UpdateAsync(HtmlField field, IUpdateM var viewModel = new EditHtmlFieldViewModel(); var settings = context.PartFieldDefinition.GetSettings(); + await updater.TryUpdateModelAsync(viewModel, Prefix, f => f.Html); - if (await updater.TryUpdateModelAsync(viewModel, Prefix, f => f.Html)) + if (!string.IsNullOrEmpty(viewModel.Html) && !_liquidTemplateManager.Validate(viewModel.Html, out var errors)) { - if (!string.IsNullOrEmpty(viewModel.Html) && !_liquidTemplateManager.Validate(viewModel.Html, out var errors)) - { - var fieldName = context.PartFieldDefinition.DisplayName(); - context.Updater.ModelState.AddModelError( - Prefix, - nameof(viewModel.Html), S["{0} doesn't contain a valid Liquid expression. Details: {1}", - fieldName, - string.Join(' ', errors)]); - } - else - { - field.Html = settings.SanitizeHtml ? _htmlSanitizerService.Sanitize(viewModel.Html) : viewModel.Html; - } + var fieldName = context.PartFieldDefinition.DisplayName(); + context.Updater.ModelState.AddModelError( + Prefix, + nameof(viewModel.Html), S["{0} doesn't contain a valid Liquid expression. Details: {1}", + fieldName, + string.Join(' ', errors)]); + } + else + { + field.Html = settings.SanitizeHtml ? _htmlSanitizerService.Sanitize(viewModel.Html) : viewModel.Html; } 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 913a73f30f1..54ffb0bdde2 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/MultiTextFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/MultiTextFieldDisplayDriver.cs @@ -59,15 +59,14 @@ public override IDisplayResult Edit(MultiTextField field, BuildFieldEditorContex public override async Task UpdateAsync(MultiTextField field, IUpdateModel updater, UpdateFieldEditorContext context) { var viewModel = new EditMultiTextFieldViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix)) - { - field.Values = viewModel.Values; + await updater.TryUpdateModelAsync(viewModel, Prefix); - 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()]); - } + 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()]); } 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 6790236c763..78c2b9bb958 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/NumericFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/NumericFieldDisplayDriver.cs @@ -67,48 +67,46 @@ public override async Task UpdateAsync(NumericField field, IUpda { var viewModel = new EditNumericFieldViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix, f => f.Value)) - { - var settings = context.PartFieldDefinition.GetSettings(); + await updater.TryUpdateModelAsync(viewModel, Prefix, f => f.Value); + var settings = context.PartFieldDefinition.GetSettings(); - field.Value = null; + field.Value = null; - if (string.IsNullOrWhiteSpace(viewModel.Value)) + if (string.IsNullOrWhiteSpace(viewModel.Value)) + { + if (settings.Required) { - if (settings.Required) - { - updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); - } + 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)) + } + 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()]); + } + else + { + field.Value = value; + + if (settings.Minimum.HasValue && value < settings.Minimum.Value) { - updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["{0} is an invalid number.", context.PartFieldDefinition.DisplayName()]); + updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["The value must be greater than {0}.", settings.Minimum.Value]); } - else - { - field.Value = value; - 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]); - } + 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]); + } - if (settings.Maximum.HasValue && value > settings.Maximum.Value) + // Check the number of decimals. + if (Math.Round(value, settings.Scale) != value) + { + if (settings.Scale == 0) { - updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["The value must be less than {0}.", settings.Maximum.Value]); + updater.ModelState.AddModelError(Prefix, nameof(field.Value), S["The {0} field must be an integer.", context.PartFieldDefinition.DisplayName()]); } - - // Check the number of decimals. - if (Math.Round(value, settings.Scale) != value) + else { - if (settings.Scale == 0) - { - 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]); - } + 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 cf8518c535d..08b17228e00 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/TextFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/TextFieldDisplayDriver.cs @@ -47,13 +47,12 @@ public override IDisplayResult Edit(TextField field, BuildFieldEditorContext con public override async Task UpdateAsync(TextField field, IUpdateModel updater, UpdateFieldEditorContext context) { - if (await updater.TryUpdateModelAsync(field, Prefix, f => f.Text)) + await updater.TryUpdateModelAsync(field, Prefix, f => f.Text); + var settings = context.PartFieldDefinition.GetSettings(); + + if (settings.Required && string.IsNullOrWhiteSpace(field.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()]); - } + 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 21029aa74bc..2ab89c28a6f 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/TimeFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/TimeFieldDisplayDriver.cs @@ -46,13 +46,12 @@ public override IDisplayResult Edit(TimeField field, BuildFieldEditorContext con public override async Task UpdateAsync(TimeField field, IUpdateModel updater, UpdateFieldEditorContext context) { - if (await updater.TryUpdateModelAsync(field, Prefix, f => f.Value)) + await updater.TryUpdateModelAsync(field, Prefix, f => f.Value); + var settings = context.PartFieldDefinition.GetSettings(); + + if (settings.Required && field.Value == null) { - 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()]); - } + 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 e8eedc8b9d2..f48453d3d52 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/UserPickerFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/UserPickerFieldDisplayDriver.cs @@ -76,27 +76,25 @@ public override async Task UpdateAsync(UserPickerField field, IU { var viewModel = new EditUserPickerFieldViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix, f => f.UserIds)) - { - field.UserIds = viewModel.UserIds == null - ? [] : viewModel.UserIds.Split(',', StringSplitOptions.RemoveEmptyEntries); + await updater.TryUpdateModelAsync(viewModel, Prefix, f => f.UserIds); + field.UserIds = viewModel.UserIds == null + ? [] : viewModel.UserIds.Split(',', StringSplitOptions.RemoveEmptyEntries); - var settings = context.PartFieldDefinition.GetSettings(); + var settings = context.PartFieldDefinition.GetSettings(); - if (settings.Required && field.UserIds.Length == 0) - { - 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()]); - } + if (settings.Required && field.UserIds.Length == 0) + { + updater.ModelState.AddModelError(Prefix, nameof(field.UserIds), S["The value is required for {0}.", context.PartFieldDefinition.DisplayName()]); + } - var users = await _session.Query().Where(x => x.UserId.IsIn(field.UserIds)).ListAsync(); - field.SetUserNames(users.Select(t => t.UserName).ToArray()); + 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()]); } + var users = await _session.Query().Where(x => x.UserId.IsIn(field.UserIds)).ListAsync(); + field.SetUserNames(users.Select(t => t.UserName).ToArray()); + return Edit(field, context); } } diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/YoutubeFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/YoutubeFieldDisplayDriver.cs index 4ed03ff9061..35b0dfb8ea5 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/YoutubeFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Drivers/YoutubeFieldDisplayDriver.cs @@ -51,46 +51,45 @@ public override async Task UpdateAsync(YoutubeField field, IUpda { var model = new EditYoutubeFieldViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix)) + await updater.TryUpdateModelAsync(model, Prefix); + var settings = context.PartFieldDefinition.GetSettings(); + + if (settings.Required && string.IsNullOrWhiteSpace(model.RawAddress)) { - 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()]); - } - else + updater.ModelState.AddModelError(Prefix, nameof(model.RawAddress), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); + } + else + { + if (model.RawAddress != null) { - if (model.RawAddress != null) - { - var uri = new Uri(model.RawAddress); + var uri = new Uri(model.RawAddress); - // If it is a url with QueryString. - if (!string.IsNullOrWhiteSpace(uri.Query)) + // If it is a url with QueryString. + if (!string.IsNullOrWhiteSpace(uri.Query)) + { + var query = QueryHelpers.ParseQuery(uri.Query); + if (query.TryGetValue("v", out var values)) { - var query = QueryHelpers.ParseQuery(uri.Query); - if (query.TryGetValue("v", out var values)) - { - model.EmbeddedAddress = $"{uri.GetLeftPart(UriPartial.Authority)}/embed/{values}"; - } - else - { - updater.ModelState.AddModelError(Prefix, nameof(model.RawAddress), S["The format of the url is invalid"]); - } + model.EmbeddedAddress = $"{uri.GetLeftPart(UriPartial.Authority)}/embed/{values}"; } else { - var path = uri.AbsolutePath.Split('?')[0]; - model.EmbeddedAddress = $"{uri.GetLeftPart(UriPartial.Authority)}/embed/{path}"; + updater.ModelState.AddModelError(Prefix, nameof(model.RawAddress), S["The format of the url is invalid"]); } - - field.RawAddress = model.RawAddress; - field.EmbeddedAddress = model.EmbeddedAddress; } else { - field.RawAddress = null; - field.EmbeddedAddress = null; + var path = uri.AbsolutePath.Split('?')[0]; + model.EmbeddedAddress = $"{uri.GetLeftPart(UriPartial.Authority)}/embed/{path}"; } + + field.RawAddress = model.RawAddress; + field.EmbeddedAddress = model.EmbeddedAddress; + } + else + { + field.RawAddress = null; + field.EmbeddedAddress = null; } } diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/ContentPickerFieldSettingsDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/ContentPickerFieldSettingsDriver.cs index 19cb2705da6..50d4afe674c 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/ContentPickerFieldSettingsDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/ContentPickerFieldSettingsDriver.cs @@ -41,33 +41,32 @@ public override async Task UpdateAsync(ContentPartFieldDefinitio { var model = new ContentPickerFieldSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) + await context.Updater.TryUpdateModelAsync(model, Prefix); + + var settings = new ContentPickerFieldSettings + { + Hint = model.Hint, + Required = model.Required, + Multiple = model.Multiple, + TitlePattern = model.TitlePattern, + }; + + switch (model.Source) + { + case ContentPickerSettingType.ContentTypes: + SetContentTypes(context.Updater, model.DisplayedContentTypes, settings); + break; + case ContentPickerSettingType.Stereotypes: + SetStereoTypes(context.Updater, model.Stereotypes, settings); + break; + default: + settings.DisplayAllContentTypes = true; + break; + } + + if (IsValidTitlePattern(context, model)) { - var settings = new ContentPickerFieldSettings - { - Hint = model.Hint, - Required = model.Required, - Multiple = model.Multiple, - TitlePattern = model.TitlePattern, - }; - - switch (model.Source) - { - case ContentPickerSettingType.ContentTypes: - SetContentTypes(context.Updater, model.DisplayedContentTypes, settings); - break; - case ContentPickerSettingType.Stereotypes: - SetStereoTypes(context.Updater, model.Stereotypes, settings); - break; - default: - settings.DisplayAllContentTypes = true; - break; - } - - if (IsValidTitlePattern(context, model)) - { - context.Builder.WithSettings(settings); - } + context.Builder.WithSettings(settings); } return Edit(partFieldDefinition); diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/MultiTextFieldSettingsDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/MultiTextFieldSettingsDriver.cs index b39c9d07a0b..a76f09ab480 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/MultiTextFieldSettingsDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/MultiTextFieldSettingsDriver.cs @@ -36,22 +36,22 @@ public override async Task UpdateAsync(ContentPartFieldDefinitio var model = new MultiTextFieldSettingsViewModel(); var settings = new MultiTextFieldSettings(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) + await context.Updater.TryUpdateModelAsync(model, Prefix); + + settings.Required = model.Required; + settings.Hint = model.Hint; + + try { - settings.Required = model.Required; - settings.Hint = model.Hint; - try - { - settings.Options = JConvert.DeserializeObject(model.Options); - } - catch - { - context.Updater.ModelState.AddModelError(Prefix, S["The options are written in an incorrect format."]); - return Edit(partFieldDefinition); - } - - context.Builder.WithSettings(settings); + settings.Options = JConvert.DeserializeObject(model.Options); } + catch + { + context.Updater.ModelState.AddModelError(Prefix, S["The options are written in an incorrect format."]); + return Edit(partFieldDefinition); + } + + context.Builder.WithSettings(settings); return Edit(partFieldDefinition); } diff --git a/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/UserPickerFieldSettingsDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/UserPickerFieldSettingsDriver.cs index 0c5459e3ab1..486f152c18e 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/UserPickerFieldSettingsDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentFields/Settings/UserPickerFieldSettingsDriver.cs @@ -45,31 +45,30 @@ public override async Task UpdateAsync(ContentPartFieldDefinitio { var model = new UserPickerFieldSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) - { - var settings = new UserPickerFieldSettings - { - Hint = model.Hint, - Required = model.Required, - Multiple = model.Multiple - }; + await context.Updater.TryUpdateModelAsync(model, Prefix); - var selectedRoles = model.Roles.Where(x => x.IsSelected).Select(x => x.Role).ToArray(); + var settings = new UserPickerFieldSettings + { + Hint = model.Hint, + Required = model.Required, + Multiple = model.Multiple + }; - if (model.DisplayAllUsers || selectedRoles.Length == 0) - { - // No selected role should have the same effect as display all users - settings.DisplayedRoles = []; - settings.DisplayAllUsers = true; - } - else - { - settings.DisplayedRoles = selectedRoles; - settings.DisplayAllUsers = false; - } + var selectedRoles = model.Roles.Where(x => x.IsSelected).Select(x => x.Role).ToArray(); - context.Builder.WithSettings(settings); + if (model.DisplayAllUsers || selectedRoles.Length == 0) + { + // No selected role should have the same effect as display all users + settings.DisplayedRoles = []; + settings.DisplayAllUsers = true; } + else + { + settings.DisplayedRoles = selectedRoles; + settings.DisplayAllUsers = false; + } + + context.Builder.WithSettings(settings); return Edit(partFieldDefinition, context.Updater); } diff --git a/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Drivers/ContentCulturePickerSettingsDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Drivers/ContentCulturePickerSettingsDriver.cs index 1904052433b..b559a662788 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Drivers/ContentCulturePickerSettingsDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Drivers/ContentCulturePickerSettingsDriver.cs @@ -40,7 +40,7 @@ public override async Task EditAsync(ContentCulturePickerSetting }).Location("Content:5").OnGroup(GroupId); } - public override async Task UpdateAsync(ContentCulturePickerSettings section, BuildEditorContext context) + public override async Task UpdateAsync(ContentCulturePickerSettings section, UpdateEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; diff --git a/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Drivers/ContentRequestCultureProviderSettingsDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Drivers/ContentRequestCultureProviderSettingsDriver.cs index 04256a09ebb..3e84b1a92de 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Drivers/ContentRequestCultureProviderSettingsDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Drivers/ContentRequestCultureProviderSettingsDriver.cs @@ -39,7 +39,7 @@ public override async Task EditAsync(ContentRequestCultureProvid }).Location("Content:5").OnGroup(GroupId); } - public override async Task UpdateAsync(ContentRequestCultureProviderSettings section, BuildEditorContext context) + public override async Task UpdateAsync(ContentRequestCultureProviderSettings section, UpdateEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; diff --git a/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Drivers/LocalizationContentsAdminListDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Drivers/LocalizationContentsAdminListDisplayDriver.cs index 1bbf1455e77..5f06f9dcc4f 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Drivers/LocalizationContentsAdminListDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Drivers/LocalizationContentsAdminListDisplayDriver.cs @@ -52,16 +52,15 @@ public override IDisplayResult Edit(ContentOptionsViewModel model, IUpdateModel public override async Task UpdateAsync(ContentOptionsViewModel model, IUpdateModel updater) { var viewModel = new LocalizationContentsAdminFilterViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, "Localization")) - { - if (viewModel.ShowLocalizedContentTypes) - { - model.RouteValues.TryAdd("Localization.ShowLocalizedContentTypes", viewModel.ShowLocalizedContentTypes); - } + await updater.TryUpdateModelAsync(viewModel, "Localization"); - model.FilterResult.MapFrom(viewModel); + if (viewModel.ShowLocalizedContentTypes) + { + model.RouteValues.TryAdd("Localization.ShowLocalizedContentTypes", viewModel.ShowLocalizedContentTypes); } + model.FilterResult.MapFrom(viewModel); + return Edit(model, updater); } } diff --git a/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Services/LocalizationPartContentsAdminListFilter.cs b/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Services/LocalizationPartContentsAdminListFilter.cs index 2682fd54750..69cc22a8d3b 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Services/LocalizationPartContentsAdminListFilter.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentLocalization/Services/LocalizationPartContentsAdminListFilter.cs @@ -25,20 +25,20 @@ public LocalizationPartContentsAdminListFilter(IContentDefinitionManager content public async Task FilterAsync(ContentOptionsViewModel model, IQuery query, IUpdateModel updater) { var viewModel = new LocalizationContentsAdminFilterViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, "Localization")) + await updater.TryUpdateModelAsync(viewModel, "Localization"); + + // Show localization content items + // This is intended to be used by adding ?Localization.ShowLocalizedContentTypes to an AdminMenu url. + if (viewModel.ShowLocalizedContentTypes) { - // Show localization content items - // This is intended to be used by adding ?Localization.ShowLocalizedContentTypes to an AdminMenu url. - if (viewModel.ShowLocalizedContentTypes) - { - var localizedTypes = (await _contentDefinitionManager.ListTypeDefinitionsAsync()) - .Where(x => - x.Parts.Any(p => - p.PartDefinition.Name == nameof(LocalizationPart))) - .Select(x => x.Name); + var localizedTypes = (await _contentDefinitionManager.ListTypeDefinitionsAsync()) + .Where(x => + x.Parts.Any(p => + p.PartDefinition.Name == nameof(LocalizationPart))) + .Select(x => x.Name); + + query.With(x => x.ContentType.IsIn(localizedTypes)); - query.With(x => x.ContentType.IsIn(localizedTypes)); - } } } } diff --git a/src/OrchardCore.Modules/OrchardCore.ContentTypes/Deployment/DeleteContentDefinitionDeploymentStepDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentTypes/Deployment/DeleteContentDefinitionDeploymentStepDriver.cs index 06d6003beb1..d96a87b949f 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentTypes/Deployment/DeleteContentDefinitionDeploymentStepDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentTypes/Deployment/DeleteContentDefinitionDeploymentStepDriver.cs @@ -34,11 +34,10 @@ public override async Task UpdateAsync(DeleteContentDefinitionDe { var model = new DeleteContentDefinitionStepViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix)) - { - step.ContentTypes = model.ContentTypes.Split(_separator, StringSplitOptions.RemoveEmptyEntries); - step.ContentParts = model.ContentParts.Split(_separator, StringSplitOptions.RemoveEmptyEntries); - } + await updater.TryUpdateModelAsync(model, Prefix); + + step.ContentTypes = model.ContentTypes.Split(_separator, StringSplitOptions.RemoveEmptyEntries); + step.ContentParts = model.ContentParts.Split(_separator, StringSplitOptions.RemoveEmptyEntries); return Edit(step); } diff --git a/src/OrchardCore.Modules/OrchardCore.ContentTypes/Editors/ContentPartSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentTypes/Editors/ContentPartSettingsDisplayDriver.cs index 7c55a5cdfbe..fdadd48d181 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentTypes/Editors/ContentPartSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentTypes/Editors/ContentPartSettingsDisplayDriver.cs @@ -26,13 +26,12 @@ public override async Task UpdateAsync(ContentPartDefinition con { var model = new ContentPartSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) - { - context.Builder.Attachable(model.Attachable); - context.Builder.Reusable(model.Reusable); - context.Builder.WithDescription(model.Description); - context.Builder.WithDisplayName(model.DisplayName); - } + await context.Updater.TryUpdateModelAsync(model, Prefix); + + context.Builder.Attachable(model.Attachable); + context.Builder.Reusable(model.Reusable); + context.Builder.WithDescription(model.Description); + context.Builder.WithDisplayName(model.DisplayName); return Edit(contentPartDefinition); } diff --git a/src/OrchardCore.Modules/OrchardCore.ContentTypes/Editors/ContentTypeSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ContentTypes/Editors/ContentTypeSettingsDisplayDriver.cs index 29a3ddc0fee..36b86fb09f7 100644 --- a/src/OrchardCore.Modules/OrchardCore.ContentTypes/Editors/ContentTypeSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ContentTypes/Editors/ContentTypeSettingsDisplayDriver.cs @@ -44,22 +44,20 @@ public override async Task UpdateAsync(ContentTypeDefinition con { var model = new ContentTypeSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) - { - var stereotype = model.Stereotype?.Trim(); - context.Builder.WithDescription(model.Description); - context.Builder.Stereotype(stereotype); - - if (!IsAlphaNumericOrEmpty(stereotype)) - { - context.Updater.ModelState.AddModelError(nameof(ContentTypeSettingsViewModel.Stereotype), S["The stereotype should be alphanumeric."]); - } + await context.Updater.TryUpdateModelAsync(model, Prefix); - var options = GetOptions(contentTypeDefinition, stereotype); + var stereotype = model.Stereotype?.Trim(); + context.Builder.WithDescription(model.Description); + context.Builder.Stereotype(stereotype); - Apply(context, model, options); + if (!IsAlphaNumericOrEmpty(stereotype)) + { + context.Updater.ModelState.AddModelError(nameof(ContentTypeSettingsViewModel.Stereotype), S["The stereotype should be alphanumeric."]); } - + + var options = GetOptions(contentTypeDefinition, stereotype); + Apply(context, model, options); + return Edit(contentTypeDefinition); } diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/AdminNodes/ContentTypesAdminNodeDriver.cs b/src/OrchardCore.Modules/OrchardCore.Contents/AdminNodes/ContentTypesAdminNodeDriver.cs index afc1c7e7e0e..a5ca69a8c6b 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/AdminNodes/ContentTypesAdminNodeDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/AdminNodes/ContentTypesAdminNodeDriver.cs @@ -62,20 +62,19 @@ public override async Task UpdateAsync(ContentTypesAdminNode tre var model = new ContentTypesAdminNodeViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix, x => x.ShowAll, x => x.IconClass, x => x.ContentTypes)) - { - treeNode.ShowAll = model.ShowAll; - treeNode.IconClass = model.IconClass; - treeNode.ContentTypes = model.ContentTypes - .Where(x => x.IsChecked == true) - .Select(x => - new ContentTypeEntry - { - ContentTypeId = x.ContentTypeId, - IconClass = x.IconClass - }) - .ToArray(); - }; + await updater.TryUpdateModelAsync(model, Prefix, x => x.ShowAll, x => x.IconClass, x => x.ContentTypes); + + treeNode.ShowAll = model.ShowAll; + treeNode.IconClass = model.IconClass; + treeNode.ContentTypes = model.ContentTypes + .Where(x => x.IsChecked == true) + .Select(x => + new ContentTypeEntry + { + ContentTypeId = x.ContentTypeId, + IconClass = x.IconClass + }) + .ToArray(); return Edit(treeNode); } diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/AuditTrail/Drivers/AuditTrailPartSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Contents/AuditTrail/Drivers/AuditTrailPartSettingsDisplayDriver.cs index 069516f1af1..58018973771 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/AuditTrail/Drivers/AuditTrailPartSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/AuditTrail/Drivers/AuditTrailPartSettingsDisplayDriver.cs @@ -35,13 +35,12 @@ public override async Task UpdateAsync(ContentTypePartDefinition var viewModel = new AuditTrailPartSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(viewModel, Prefix, m => m.ShowCommentInput)) + await context.Updater.TryUpdateModelAsync(viewModel, Prefix, m => m.ShowCommentInput); + + context.Builder.WithSettings(new AuditTrailPartSettings { - context.Builder.WithSettings(new AuditTrailPartSettings - { - ShowCommentInput = viewModel.ShowCommentInput - }); - } + ShowCommentInput = viewModel.ShowCommentInput + }); return Edit(model, context.Updater); } diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/AuditTrail/Drivers/ContentAuditTrailSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Contents/AuditTrail/Drivers/ContentAuditTrailSettingsDisplayDriver.cs index 36e63aa1d6a..f935216c762 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/AuditTrail/Drivers/ContentAuditTrailSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/AuditTrail/Drivers/ContentAuditTrailSettingsDisplayDriver.cs @@ -37,7 +37,7 @@ public override async Task EditAsync(ContentAuditTrailSettings s }).Location("Content:10#Content;5").OnGroup(AuditTrailSettingsGroup.Id); } - public override async Task UpdateAsync(ContentAuditTrailSettings section, BuildEditorContext context) + public override async Task UpdateAsync(ContentAuditTrailSettings section, UpdateEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; if (!await _authorizationService.AuthorizeAsync(user, AuditTrailPermissions.ManageAuditTrailSettings)) diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Deployment/AddToDeploymentPlan/ContentItemDeploymentStepDriver.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Deployment/AddToDeploymentPlan/ContentItemDeploymentStepDriver.cs index 6d6467296fe..7702de04c89 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Deployment/AddToDeploymentPlan/ContentItemDeploymentStepDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Deployment/AddToDeploymentPlan/ContentItemDeploymentStepDriver.cs @@ -42,17 +42,16 @@ public override async Task UpdateAsync(ContentItemDeploymentStep { var model = new ContentItemDeploymentStepViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix, x => x.ContentItemId)) + await updater.TryUpdateModelAsync(model, Prefix, x => x.ContentItemId); + var contentItem = await _contentManager.GetAsync(model.ContentItemId); + + if (contentItem == null) + { + updater.ModelState.AddModelError(Prefix, nameof(step.ContentItemId), S["Your content item does not exist."]); + } + else { - var contentItem = await _contentManager.GetAsync(model.ContentItemId); - if (contentItem == null) - { - updater.ModelState.AddModelError(Prefix, nameof(step.ContentItemId), S["Your content item does not exist."]); - } - else - { - step.ContentItemId = model.ContentItemId; - } + step.ContentItemId = model.ContentItemId; } return Edit(step); diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Deployment/ExportContentToDeploymentTarget/ExportContentToDeploymentTargetSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Deployment/ExportContentToDeploymentTarget/ExportContentToDeploymentTargetSettingsDisplayDriver.cs index a6eb5199659..da43c68e359 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Deployment/ExportContentToDeploymentTarget/ExportContentToDeploymentTargetSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Deployment/ExportContentToDeploymentTarget/ExportContentToDeploymentTargetSettingsDisplayDriver.cs @@ -37,7 +37,7 @@ public override async Task EditAsync(ExportContentToDeploymentTa }).Location("Content:2").OnGroup(GroupId); } - public override async Task UpdateAsync(ExportContentToDeploymentTargetSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(ExportContentToDeploymentTargetSettings settings, UpdateEditorContext context) { if (context.GroupId == GroupId) { diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Settings/CommonPartSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Settings/CommonPartSettingsDisplayDriver.cs index a79a3382284..9ba96d7fde5 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Settings/CommonPartSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Settings/CommonPartSettingsDisplayDriver.cs @@ -24,10 +24,9 @@ public override async Task UpdateAsync(ContentTypePartDefinition { var model = new CommonPartSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) - { - context.Builder.WithSettings(new CommonPartSettings { DisplayDateEditor = model.DisplayDateEditor, DisplayOwnerEditor = model.DisplayOwnerEditor }); - } + await context.Updater.TryUpdateModelAsync(model, Prefix); + + context.Builder.WithSettings(new CommonPartSettings { DisplayDateEditor = model.DisplayDateEditor, DisplayOwnerEditor = model.DisplayOwnerEditor }); return Edit(contentTypePartDefinition, context.Updater); } diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Sitemaps/ContentTypesSitemapSourceDriver.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Sitemaps/ContentTypesSitemapSourceDriver.cs index 6beff7bf168..fa6416ed006 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Sitemaps/ContentTypesSitemapSourceDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Sitemaps/ContentTypesSitemapSourceDriver.cs @@ -82,7 +82,7 @@ public override async Task UpdateAsync(ContentTypesSitemapSource { var model = new ContentTypesSitemapSourceViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, + await context.Updater.TryUpdateModelAsync(model, Prefix, m => m.IndexAll, m => m.LimitItems, @@ -91,36 +91,35 @@ public override async Task UpdateAsync(ContentTypesSitemapSource m => m.ContentTypes, m => m.LimitedContentTypes, m => m.LimitedContentType - )) - { - sitemap.IndexAll = model.IndexAll; - sitemap.LimitItems = model.LimitItems; - sitemap.Priority = model.Priority; - sitemap.ChangeFrequency = model.ChangeFrequency; - sitemap.ContentTypes = model.ContentTypes - .Where(x => x.IsChecked == true) - .Select(x => new ContentTypeSitemapEntry - { - ContentTypeName = x.ContentTypeName, - ChangeFrequency = x.ChangeFrequency, - Priority = x.Priority, - }) - .ToArray(); + ); - var limitedEntry = model.LimitedContentTypes.FirstOrDefault(lct => string.Equals(lct.ContentTypeName, model.LimitedContentType, StringComparison.Ordinal)); - if (limitedEntry != null) - { - sitemap.LimitedContentType.ContentTypeName = limitedEntry.ContentTypeName; - sitemap.LimitedContentType.ChangeFrequency = limitedEntry.ChangeFrequency; - sitemap.LimitedContentType.Priority = limitedEntry.Priority; - sitemap.LimitedContentType.Skip = limitedEntry.Skip; - sitemap.LimitedContentType.Take = limitedEntry.Take; - } - else + sitemap.IndexAll = model.IndexAll; + sitemap.LimitItems = model.LimitItems; + sitemap.Priority = model.Priority; + sitemap.ChangeFrequency = model.ChangeFrequency; + sitemap.ContentTypes = model.ContentTypes + .Where(x => x.IsChecked == true) + .Select(x => new ContentTypeSitemapEntry { - sitemap.LimitedContentType = new LimitedContentTypeSitemapEntry(); - } - }; + ContentTypeName = x.ContentTypeName, + ChangeFrequency = x.ChangeFrequency, + Priority = x.Priority, + }) + .ToArray(); + + var limitedEntry = model.LimitedContentTypes.FirstOrDefault(lct => string.Equals(lct.ContentTypeName, model.LimitedContentType, StringComparison.Ordinal)); + if (limitedEntry != null) + { + sitemap.LimitedContentType.ContentTypeName = limitedEntry.ContentTypeName; + sitemap.LimitedContentType.ChangeFrequency = limitedEntry.ChangeFrequency; + sitemap.LimitedContentType.Priority = limitedEntry.Priority; + sitemap.LimitedContentType.Skip = limitedEntry.Skip; + sitemap.LimitedContentType.Take = limitedEntry.Take; + } + else + { + sitemap.LimitedContentType = new LimitedContentTypeSitemapEntry(); + } return Edit(sitemap, context.Updater); } diff --git a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Drivers/ContentEventDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Drivers/ContentEventDisplayDriver.cs index 74b8883a45f..6b0408f94d2 100644 --- a/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Drivers/ContentEventDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Contents/Workflows/Drivers/ContentEventDisplayDriver.cs @@ -28,10 +28,10 @@ protected override void EditActivity(TActivity source, TViewModel target) public async override Task UpdateAsync(TActivity model, IUpdateModel updater) { var viewModel = new TViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix, x => x.SelectedContentTypeNames)) - { - model.ContentTypeFilter = (await FilterContentTypesQueryAsync(viewModel.SelectedContentTypeNames)).ToList(); - } + await updater.TryUpdateModelAsync(viewModel, Prefix, x => x.SelectedContentTypeNames); + + model.ContentTypeFilter = (await FilterContentTypesQueryAsync(viewModel.SelectedContentTypeNames)).ToList(); + return Edit(model); } diff --git a/src/OrchardCore.Modules/OrchardCore.Demo/ContentElementDisplays/TestContentElementDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Demo/ContentElementDisplays/TestContentElementDisplayDriver.cs index f992d1da8af..d10b998c643 100644 --- a/src/OrchardCore.Modules/OrchardCore.Demo/ContentElementDisplays/TestContentElementDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Demo/ContentElementDisplays/TestContentElementDisplayDriver.cs @@ -69,16 +69,15 @@ public override async Task UpdateAsync(ContentItem contentItem, return null; } - if (await updater.TryUpdateModelAsync(testContentPart, "")) + await updater.TryUpdateModelAsync(testContentPart, ""); + + if (testContentPart.Line.EndsWith(' ')) + { + updater.ModelState.AddModelError(nameof(testContentPart.Line), "Value cannot end with a space"); + } + else { - if (testContentPart.Line.EndsWith(' ')) - { - updater.ModelState.AddModelError(nameof(testContentPart.Line), "Value cannot end with a space"); - } - else - { - contentItem.Apply(testContentPart); - } + contentItem.Apply(testContentPart); } return Copy("TestContentPartA_Edit", testContentPart).Location("Content"); diff --git a/src/OrchardCore.Modules/OrchardCore.Demo/Drivers/UserProfileDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Demo/Drivers/UserProfileDisplayDriver.cs index 2365a6f0a3f..44c02e539c8 100644 --- a/src/OrchardCore.Modules/OrchardCore.Demo/Drivers/UserProfileDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Demo/Drivers/UserProfileDisplayDriver.cs @@ -34,7 +34,7 @@ public override IDisplayResult Edit(UserProfile profile, BuildEditorContext cont .RenderWhen(() => _authorizationService.AuthorizeAsync(_httpContextAccessor.HttpContext.User, Permissions.ManageOwnUserProfile)); } - public override async Task UpdateAsync(UserProfile profile, BuildEditorContext context) + public override async Task UpdateAsync(UserProfile profile, UpdateEditorContext context) { if (!await _authorizationService.AuthorizeAsync(_httpContextAccessor.HttpContext.User, Permissions.ManageOwnUserProfile)) { @@ -43,13 +43,12 @@ public override async Task UpdateAsync(UserProfile profile, Buil var model = new EditUserProfileViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) - { - profile.Age = model.Age; - profile.FirstName = model.FirstName; - profile.LastName = model.LastName; - profile.UpdatedAt = DateTime.UtcNow; - } + await context.Updater.TryUpdateModelAsync(model, Prefix); + + profile.Age = model.Age; + profile.FirstName = model.FirstName; + profile.LastName = model.LastName; + profile.UpdatedAt = DateTime.UtcNow; return Edit(profile, context); } diff --git a/src/OrchardCore.Modules/OrchardCore.Deployment/Steps/JsonRecipeDeploymentStepDriver.cs b/src/OrchardCore.Modules/OrchardCore.Deployment/Steps/JsonRecipeDeploymentStepDriver.cs index 6a97cbfa7be..bdcf1c85dae 100644 --- a/src/OrchardCore.Modules/OrchardCore.Deployment/Steps/JsonRecipeDeploymentStepDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Deployment/Steps/JsonRecipeDeploymentStepDriver.cs @@ -60,25 +60,25 @@ public override async Task UpdateAsync(JsonRecipeDeploymentStep { var model = new JsonRecipeDeploymentStepViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix)) + await updater.TryUpdateModelAsync(model, Prefix); + + try { - try + var jObject = JObject.Parse(model.Json); + if (!jObject.ContainsKey("name")) { - var jObject = JObject.Parse(model.Json); - if (!jObject.ContainsKey("name")) - { - - updater.ModelState.AddModelError(Prefix, nameof(JsonRecipeDeploymentStepViewModel.Json), S["The recipe must have a name property"]); - } + updater.ModelState.AddModelError(Prefix, nameof(JsonRecipeDeploymentStepViewModel.Json), S["The recipe must have a name property"]); } - catch (Exception) - { - updater.ModelState.AddModelError(Prefix, nameof(JsonRecipeDeploymentStepViewModel.Json), S["Invalid JSON supplied"]); - } - step.Json = model.Json; } + catch (Exception) + { + updater.ModelState.AddModelError(Prefix, nameof(JsonRecipeDeploymentStepViewModel.Json), S["Invalid JSON supplied"]); + + } + + step.Json = model.Json; return Edit(step); } diff --git a/src/OrchardCore.Modules/OrchardCore.Email.Azure/Drivers/AzureEmailSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Email.Azure/Drivers/AzureEmailSettingsDisplayDriver.cs index e2d5fecd337..84a6dc23acb 100644 --- a/src/OrchardCore.Modules/OrchardCore.Email.Azure/Drivers/AzureEmailSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Email.Azure/Drivers/AzureEmailSettingsDisplayDriver.cs @@ -72,7 +72,7 @@ public override async Task EditAsync(AzureEmailSettings settings .OnGroup(EmailSettings.GroupId); } - public override async Task UpdateAsync(ISite site, AzureEmailSettings settings, IUpdateModel updater, BuildEditorContext context) + public override async Task UpdateAsync(ISite site, AzureEmailSettings settings, IUpdateModel updater, UpdateEditorContext context) { if (!context.GroupId.EqualsOrdinalIgnoreCase(EmailSettings.GroupId)) { @@ -86,73 +86,72 @@ public override async Task UpdateAsync(ISite site, AzureEmailSet var model = new AzureEmailSettingsViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix)) + await updater.TryUpdateModelAsync(model, Prefix); + + var emailSettings = site.As(); + + var hasChanges = model.IsEnabled != settings.IsEnabled; + + settings.IsEnabled = model.IsEnabled; + + if (!model.IsEnabled) { - var emailSettings = site.As(); + if (hasChanges && emailSettings.DefaultProviderName == AzureEmailProvider.TechnicalName) + { + emailSettings.DefaultProviderName = null; - var hasChanges = model.IsEnabled != settings.IsEnabled; + site.Put(emailSettings); + } + } + else + { + hasChanges |= model.DefaultSender != settings.DefaultSender; - settings.IsEnabled = model.IsEnabled; + if (string.IsNullOrEmpty(model.DefaultSender)) + { + context.Updater.ModelState.AddModelError(Prefix, nameof(model.DefaultSender), S["The Default Sender is a required field."]); + } + else if (!_emailValidator.Validate(model.DefaultSender)) + { + context.Updater.ModelState.AddModelError(Prefix, nameof(model.DefaultSender), S["The Default Sender is invalid."]); + } + + settings.DefaultSender = model.DefaultSender; - if (!model.IsEnabled) + if (string.IsNullOrWhiteSpace(model.ConnectionString) + && settings.ConnectionString is null) { - if (hasChanges && emailSettings.DefaultProviderName == AzureEmailProvider.TechnicalName) - { - emailSettings.DefaultProviderName = null; + context.Updater.ModelState.AddModelError(Prefix, nameof(model.ConnectionString), S["Connection string is required."]); + } + else if (!string.IsNullOrWhiteSpace(model.ConnectionString)) + { + // Encrypt the connection string. + var protector = _dataProtectionProvider.CreateProtector(AzureEmailOptionsConfiguration.ProtectorName); + + var protectedConnection = protector.Protect(model.ConnectionString); - site.Put(emailSettings); - } + // Check if the connection string changed before setting it. + hasChanges |= protectedConnection != settings.ConnectionString; + + settings.ConnectionString = protectedConnection; } - else + } + + if (context.Updater.ModelState.IsValid) + { + if (settings.IsEnabled && string.IsNullOrEmpty(emailSettings.DefaultProviderName)) { - hasChanges |= model.DefaultSender != settings.DefaultSender; - - if (string.IsNullOrEmpty(model.DefaultSender)) - { - context.Updater.ModelState.AddModelError(Prefix, nameof(model.DefaultSender), S["The Default Sender is a required field."]); - } - else if (!_emailValidator.Validate(model.DefaultSender)) - { - context.Updater.ModelState.AddModelError(Prefix, nameof(model.DefaultSender), S["The Default Sender is invalid."]); - } - - settings.DefaultSender = model.DefaultSender; - - if (string.IsNullOrWhiteSpace(model.ConnectionString) - && settings.ConnectionString is null) - { - context.Updater.ModelState.AddModelError(Prefix, nameof(model.ConnectionString), S["Connection string is required."]); - } - else if (!string.IsNullOrWhiteSpace(model.ConnectionString)) - { - // Encrypt the connection string. - var protector = _dataProtectionProvider.CreateProtector(AzureEmailOptionsConfiguration.ProtectorName); - - var protectedConnection = protector.Protect(model.ConnectionString); - - // Check if the connection string changed before setting it. - hasChanges |= protectedConnection != settings.ConnectionString; - - settings.ConnectionString = protectedConnection; - } + // If we are enabling the only provider, set it as the default one. + emailSettings.DefaultProviderName = AzureEmailProvider.TechnicalName; + site.Put(emailSettings); + + hasChanges = true; } - if (context.Updater.ModelState.IsValid) + if (hasChanges) { - if (settings.IsEnabled && string.IsNullOrEmpty(emailSettings.DefaultProviderName)) - { - // If we are enabling the only provider, set it as the default one. - emailSettings.DefaultProviderName = AzureEmailProvider.TechnicalName; - site.Put(emailSettings); - - hasChanges = true; - } - - if (hasChanges) - { - // Release the tenant to apply the settings when something changed. - await _shellHost.ReleaseShellContextAsync(_shellSettings); - } + // Release the tenant to apply the settings when something changed. + await _shellHost.ReleaseShellContextAsync(_shellSettings); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Email.Smtp/Drivers/SmtpSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Email.Smtp/Drivers/SmtpSettingsDisplayDriver.cs index decc75f2aaa..4c006df36f3 100644 --- a/src/OrchardCore.Modules/OrchardCore.Email.Smtp/Drivers/SmtpSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Email.Smtp/Drivers/SmtpSettingsDisplayDriver.cs @@ -90,7 +90,7 @@ public override async Task EditAsync(SmtpSettings settings, Buil .OnGroup(EmailSettings.GroupId); } - public override async Task UpdateAsync(ISite site, SmtpSettings settings, IUpdateModel updater, BuildEditorContext context) + public override async Task UpdateAsync(ISite site, SmtpSettings settings, IUpdateModel updater, UpdateEditorContext context) { if (!context.GroupId.EqualsOrdinalIgnoreCase(EmailSettings.GroupId)) { @@ -104,105 +104,104 @@ public override async Task UpdateAsync(ISite site, SmtpSettings var model = new SmtpSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) + await context.Updater.TryUpdateModelAsync(model, Prefix); + + var emailSettings = site.As(); + + var hasChanges = model.IsEnabled != settings.IsEnabled; + + if (!model.IsEnabled) { - var emailSettings = site.As(); + if (hasChanges && emailSettings.DefaultProviderName == SmtpEmailProvider.TechnicalName) + { + emailSettings.DefaultProviderName = null; - var hasChanges = model.IsEnabled != settings.IsEnabled; + site.Put(emailSettings); + } - if (!model.IsEnabled) + settings.IsEnabled = false; + } + else + { + if (string.IsNullOrEmpty(model.DefaultSender)) + { + context.Updater.ModelState.AddModelError(Prefix, nameof(model.DefaultSender), S["The Default Sender is a required field."]); + } + else if (!_emailValidator.Validate(model.DefaultSender)) { - if (hasChanges && emailSettings.DefaultProviderName == SmtpEmailProvider.TechnicalName) - { - emailSettings.DefaultProviderName = null; + context.Updater.ModelState.AddModelError(Prefix, nameof(model.DefaultSender), S["The Default Sender is invalid."]); + } - site.Put(emailSettings); - } + if (model.DeliveryMethod == SmtpDeliveryMethod.Network + && string.IsNullOrWhiteSpace(model.Host)) + { + updater.ModelState.AddModelError(Prefix, nameof(model.Host), S["The {0} field is required.", "Host name"]); + } + else if (model.DeliveryMethod == SmtpDeliveryMethod.SpecifiedPickupDirectory + && string.IsNullOrWhiteSpace(model.PickupDirectoryLocation)) + { + updater.ModelState.AddModelError(Prefix, nameof(model.PickupDirectoryLocation), S["The {0} field is required.", "Pickup directory location"]); + } + + hasChanges |= model.DefaultSender != settings.DefaultSender; + hasChanges |= model.Host != settings.Host; + hasChanges |= model.Port != settings.Port; + hasChanges |= model.AutoSelectEncryption != settings.AutoSelectEncryption; + hasChanges |= model.RequireCredentials != settings.RequireCredentials; + hasChanges |= model.UseDefaultCredentials != settings.UseDefaultCredentials; + hasChanges |= model.EncryptionMethod != settings.EncryptionMethod; + hasChanges |= model.UserName != settings.UserName; + hasChanges |= model.ProxyHost != settings.ProxyHost; + hasChanges |= model.ProxyPort != settings.ProxyPort; + hasChanges |= model.IgnoreInvalidSslCertificate != settings.IgnoreInvalidSslCertificate; + hasChanges |= model.DeliveryMethod != settings.DeliveryMethod; + hasChanges |= model.PickupDirectoryLocation != settings.PickupDirectoryLocation; + + // Store the password when there is a new value. + if (!string.IsNullOrWhiteSpace(model.Password)) + { + // Encrypt the password. + var protector = _dataProtectionProvider.CreateProtector(SmtpOptionsConfiguration.ProtectorName); + + var protectedPassword = protector.Protect(model.Password); + + // Check if the password changed before setting the password. + hasChanges |= protectedPassword != settings.Password; - settings.IsEnabled = false; + settings.Password = protectedPassword; } - else + + settings.IsEnabled = true; + settings.DefaultSender = model.DefaultSender; + settings.Host = model.Host; + settings.Port = model.Port; + settings.AutoSelectEncryption = model.AutoSelectEncryption; + settings.RequireCredentials = model.RequireCredentials; + settings.UseDefaultCredentials = model.UseDefaultCredentials; + settings.EncryptionMethod = model.EncryptionMethod; + settings.UserName = model.UserName; + settings.ProxyHost = model.ProxyHost; + settings.ProxyPort = model.ProxyPort; + settings.IgnoreInvalidSslCertificate = model.IgnoreInvalidSslCertificate; + settings.DeliveryMethod = model.DeliveryMethod; + settings.PickupDirectoryLocation = model.PickupDirectoryLocation; + } + + if (context.Updater.ModelState.IsValid) + { + if (settings.IsEnabled == true && string.IsNullOrEmpty(emailSettings.DefaultProviderName)) { - if (string.IsNullOrEmpty(model.DefaultSender)) - { - context.Updater.ModelState.AddModelError(Prefix, nameof(model.DefaultSender), S["The Default Sender is a required field."]); - } - else if (!_emailValidator.Validate(model.DefaultSender)) - { - context.Updater.ModelState.AddModelError(Prefix, nameof(model.DefaultSender), S["The Default Sender is invalid."]); - } - - if (model.DeliveryMethod == SmtpDeliveryMethod.Network - && string.IsNullOrWhiteSpace(model.Host)) - { - updater.ModelState.AddModelError(Prefix, nameof(model.Host), S["The {0} field is required.", "Host name"]); - } - else if (model.DeliveryMethod == SmtpDeliveryMethod.SpecifiedPickupDirectory - && string.IsNullOrWhiteSpace(model.PickupDirectoryLocation)) - { - updater.ModelState.AddModelError(Prefix, nameof(model.PickupDirectoryLocation), S["The {0} field is required.", "Pickup directory location"]); - } - - hasChanges |= model.DefaultSender != settings.DefaultSender; - hasChanges |= model.Host != settings.Host; - hasChanges |= model.Port != settings.Port; - hasChanges |= model.AutoSelectEncryption != settings.AutoSelectEncryption; - hasChanges |= model.RequireCredentials != settings.RequireCredentials; - hasChanges |= model.UseDefaultCredentials != settings.UseDefaultCredentials; - hasChanges |= model.EncryptionMethod != settings.EncryptionMethod; - hasChanges |= model.UserName != settings.UserName; - hasChanges |= model.ProxyHost != settings.ProxyHost; - hasChanges |= model.ProxyPort != settings.ProxyPort; - hasChanges |= model.IgnoreInvalidSslCertificate != settings.IgnoreInvalidSslCertificate; - hasChanges |= model.DeliveryMethod != settings.DeliveryMethod; - hasChanges |= model.PickupDirectoryLocation != settings.PickupDirectoryLocation; - - // Store the password when there is a new value. - if (!string.IsNullOrWhiteSpace(model.Password)) - { - // Encrypt the password. - var protector = _dataProtectionProvider.CreateProtector(SmtpOptionsConfiguration.ProtectorName); - - var protectedPassword = protector.Protect(model.Password); - - // Check if the password changed before setting the password. - hasChanges |= protectedPassword != settings.Password; - - settings.Password = protectedPassword; - } - - settings.IsEnabled = true; - settings.DefaultSender = model.DefaultSender; - settings.Host = model.Host; - settings.Port = model.Port; - settings.AutoSelectEncryption = model.AutoSelectEncryption; - settings.RequireCredentials = model.RequireCredentials; - settings.UseDefaultCredentials = model.UseDefaultCredentials; - settings.EncryptionMethod = model.EncryptionMethod; - settings.UserName = model.UserName; - settings.ProxyHost = model.ProxyHost; - settings.ProxyPort = model.ProxyPort; - settings.IgnoreInvalidSslCertificate = model.IgnoreInvalidSslCertificate; - settings.DeliveryMethod = model.DeliveryMethod; - settings.PickupDirectoryLocation = model.PickupDirectoryLocation; + // If we are enabling the only provider, set it as the default one. + emailSettings.DefaultProviderName = SmtpEmailProvider.TechnicalName; + site.Put(emailSettings); + + hasChanges = true; } - if (context.Updater.ModelState.IsValid) + if (hasChanges) { - if (settings.IsEnabled == true && string.IsNullOrEmpty(emailSettings.DefaultProviderName)) - { - // If we are enabling the only provider, set it as the default one. - emailSettings.DefaultProviderName = SmtpEmailProvider.TechnicalName; - site.Put(emailSettings); - - hasChanges = true; - } - - if (hasChanges) - { - // Release the tenant to apply the settings when something changed. - await _shellHost.ReleaseShellContextAsync(_shellSettings); - } + // Release the tenant to apply the settings when something changed. + await _shellHost.ReleaseShellContextAsync(_shellSettings); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Email/Drivers/EmailSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Email/Drivers/EmailSettingsDisplayDriver.cs index b471f4b469a..77d135ece9e 100644 --- a/src/OrchardCore.Modules/OrchardCore.Email/Drivers/EmailSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Email/Drivers/EmailSettingsDisplayDriver.cs @@ -71,7 +71,7 @@ public override async Task EditAsync(EmailSettings settings, Bui .OnGroup(EmailSettings.GroupId); } - public override async Task UpdateAsync(EmailSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(EmailSettings settings, UpdateEditorContext context) { if (!context.GroupId.EqualsOrdinalIgnoreCase(EmailSettings.GroupId)) { @@ -85,14 +85,13 @@ public override async Task UpdateAsync(EmailSettings settings, B var model = new EmailSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) + await context.Updater.TryUpdateModelAsync(model, Prefix); + + if (settings.DefaultProviderName != model.DefaultProvider) { - if (settings.DefaultProviderName != model.DefaultProvider) - { - settings.DefaultProviderName = model.DefaultProvider; + settings.DefaultProviderName = model.DefaultProvider; - await _shellHost.ReleaseShellContextAsync(_shellSettings); - } + await _shellHost.ReleaseShellContextAsync(_shellSettings); } return await EditAsync(settings, context); diff --git a/src/OrchardCore.Modules/OrchardCore.Facebook/Drivers/FacebookPixelSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Facebook/Drivers/FacebookPixelSettingsDisplayDriver.cs index ddb5eee62a1..a135544eab5 100644 --- a/src/OrchardCore.Modules/OrchardCore.Facebook/Drivers/FacebookPixelSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Facebook/Drivers/FacebookPixelSettingsDisplayDriver.cs @@ -39,7 +39,7 @@ public override async Task EditAsync(FacebookPixelSettings setti .OnGroup(FacebookConstants.PixelSettingsGroupId); } - public override async Task UpdateAsync(FacebookPixelSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(FacebookPixelSettings settings, UpdateEditorContext context) { if (!string.Equals(FacebookConstants.PixelSettingsGroupId, context.GroupId, StringComparison.OrdinalIgnoreCase) || !await _authorizationService.AuthorizeAsync(_httpContextAccessor.HttpContext?.User, Permissions.ManageFacebookApp)) diff --git a/src/OrchardCore.Modules/OrchardCore.Facebook/Drivers/FacebookSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Facebook/Drivers/FacebookSettingsDisplayDriver.cs index bbce3f93e65..27bb5179b09 100644 --- a/src/OrchardCore.Modules/OrchardCore.Facebook/Drivers/FacebookSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Facebook/Drivers/FacebookSettingsDisplayDriver.cs @@ -73,7 +73,7 @@ public override async Task EditAsync(FacebookSettings settings, }).Location("Content:0").OnGroup(FacebookConstants.Features.Core); } - public override async Task UpdateAsync(FacebookSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(FacebookSettings settings, UpdateEditorContext context) { if (context.GroupId == FacebookConstants.Features.Core) { diff --git a/src/OrchardCore.Modules/OrchardCore.Facebook/Login/Drivers/FacebookLoginSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Facebook/Login/Drivers/FacebookLoginSettingsDisplayDriver.cs index 4314721082f..7b2a019424f 100644 --- a/src/OrchardCore.Modules/OrchardCore.Facebook/Login/Drivers/FacebookLoginSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Facebook/Login/Drivers/FacebookLoginSettingsDisplayDriver.cs @@ -45,7 +45,7 @@ public override async Task EditAsync(FacebookLoginSettings setti }).Location("Content:5").OnGroup(FacebookConstants.Features.Login); } - public override async Task UpdateAsync(FacebookLoginSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(FacebookLoginSettings settings, UpdateEditorContext context) { if (context.GroupId == FacebookConstants.Features.Login) { diff --git a/src/OrchardCore.Modules/OrchardCore.Facebook/Widgets/Drivers/FacebookPluginPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Facebook/Widgets/Drivers/FacebookPluginPartDisplayDriver.cs index 4d990463934..7d0880914f4 100644 --- a/src/OrchardCore.Modules/OrchardCore.Facebook/Widgets/Drivers/FacebookPluginPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Facebook/Widgets/Drivers/FacebookPluginPartDisplayDriver.cs @@ -73,16 +73,15 @@ public override async Task UpdateAsync(FacebookPluginPart model, { var viewModel = new FacebookPluginPartViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix, t => t.Liquid)) + await 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)]); + } + else { - 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)]); - } - else - { - model.Liquid = viewModel.Liquid; - } + model.Liquid = viewModel.Liquid; } return Edit(model); diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ButtonPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ButtonPartDisplayDriver.cs index 07222857eca..249478db06e 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ButtonPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ButtonPartDisplayDriver.cs @@ -27,11 +27,10 @@ public async override Task UpdateAsync(ButtonPart part, IUpdateM { var viewModel = new ButtonPartEditViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix)) - { - part.Text = viewModel.Text?.Trim(); - part.Type = viewModel.Type?.Trim(); - } + await updater.TryUpdateModelAsync(viewModel, Prefix); + + part.Text = viewModel.Text?.Trim(); + part.Type = viewModel.Type?.Trim(); return Edit(part); } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementLabelPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementLabelPartDisplayDriver.cs index b525bb75750..5eabf67e38e 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementLabelPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementLabelPartDisplayDriver.cs @@ -27,11 +27,10 @@ public async override Task UpdateAsync(FormElementLabelPart part { var viewModel = new FormElementLabelPartViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix)) - { - part.Label = viewModel.Label; - part.Option = viewModel.LabelOption; - } + await updater.TryUpdateModelAsync(viewModel, Prefix); + + part.Label = viewModel.Label; + part.Option = viewModel.LabelOption; return Edit(part); } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementPartDisplayDriver.cs index e2399cf8a27..a1002dd40ef 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementPartDisplayDriver.cs @@ -21,10 +21,9 @@ public async override Task UpdateAsync(FormElementPart part, IUp { var viewModel = new FormElementPartEditViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix)) - { - part.Id = viewModel.Id?.Trim(); - } + await updater.TryUpdateModelAsync(viewModel, Prefix); + + part.Id = viewModel.Id?.Trim(); return Edit(part); } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementValidationPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementValidationPartDisplayDriver.cs index aa8b227e548..633ed5d68c9 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementValidationPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormElementValidationPartDisplayDriver.cs @@ -26,10 +26,9 @@ public async override Task UpdateAsync(FormElementValidationPart { var viewModel = new FormElementValidationPartViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix)) - { - part.Option = viewModel.ValidationOption; - } + await updater.TryUpdateModelAsync(viewModel, Prefix); + + part.Option = viewModel.ValidationOption; return Edit(part); } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormInputElementPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormInputElementPartDisplayDriver.cs index eb689235623..73b8f1ee3f6 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormInputElementPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormInputElementPartDisplayDriver.cs @@ -30,17 +30,16 @@ public async override Task UpdateAsync(FormInputElementPart part { var viewModel = new FormInputElementPartEditViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix)) - { - if (string.IsNullOrWhiteSpace(viewModel.Name)) - { - updater.ModelState.AddModelError(Prefix, nameof(viewModel.Name), S["A value is required for Name."]); - } + await updater.TryUpdateModelAsync(viewModel, Prefix); - part.Name = viewModel.Name?.Trim(); - part.ContentItem.DisplayText = part.Name; + if (string.IsNullOrWhiteSpace(viewModel.Name)) + { + 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); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormPartDisplayDriver.cs index 3816418a7dd..87c0106e607 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/FormPartDisplayDriver.cs @@ -26,15 +26,14 @@ public async override Task UpdateAsync(FormPart part, IUpdateMod { var viewModel = new FormPartEditViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix)) - { - part.Action = viewModel.Action?.Trim(); - part.Method = viewModel.Method; - part.WorkflowTypeId = viewModel.WorkflowTypeId; - part.EncType = viewModel.EncType; - part.EnableAntiForgeryToken = viewModel.EnableAntiForgeryToken; - part.SaveFormLocation = viewModel.SaveFormLocation; - } + await updater.TryUpdateModelAsync(viewModel, Prefix); + + part.Action = viewModel.Action?.Trim(); + part.Method = viewModel.Method; + part.WorkflowTypeId = viewModel.WorkflowTypeId; + part.EncType = viewModel.EncType; + part.EnableAntiForgeryToken = viewModel.EnableAntiForgeryToken; + part.SaveFormLocation = viewModel.SaveFormLocation; return Edit(part); } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/InputPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/InputPartDisplayDriver.cs index cd3577d3107..7940eb1c8be 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/InputPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/InputPartDisplayDriver.cs @@ -28,12 +28,11 @@ public async override Task UpdateAsync(InputPart part, IUpdateMo { var viewModel = new InputPartEditViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix)) - { - part.Placeholder = viewModel.Placeholder?.Trim(); - part.DefaultValue = viewModel.DefaultValue?.Trim(); - part.Type = viewModel.Type?.Trim(); - } + await updater.TryUpdateModelAsync(viewModel, Prefix); + + part.Placeholder = viewModel.Placeholder?.Trim(); + part.DefaultValue = viewModel.DefaultValue?.Trim(); + part.Type = viewModel.Type?.Trim(); return Edit(part); } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/LabelPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/LabelPartDisplayDriver.cs index 23cfe8d49a9..9d00c483247 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/LabelPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/LabelPartDisplayDriver.cs @@ -27,10 +27,9 @@ public override async Task UpdateAsync(LabelPart part, IUpdateMo { var viewModel = new LabelPartEditViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix)) - { - part.For = viewModel.For?.Trim(); - } + await updater.TryUpdateModelAsync(viewModel, Prefix); + + part.For = viewModel.For?.Trim(); return Edit(part, context); } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/SelectPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/SelectPartDisplayDriver.cs index aed21a58a3e..81f05ecf3c6 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/SelectPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/SelectPartDisplayDriver.cs @@ -36,21 +36,19 @@ public override IDisplayResult Edit(SelectPart part) public async override Task UpdateAsync(SelectPart part, IUpdateModel updater) { var viewModel = new SelectPartEditViewModel(); + await updater.TryUpdateModelAsync(viewModel, Prefix); + part.DefaultValue = viewModel.DefaultValue; - if (await updater.TryUpdateModelAsync(viewModel, Prefix)) + try { - part.DefaultValue = viewModel.DefaultValue; - try - { - part.Editor = viewModel.Editor; - part.Options = string.IsNullOrWhiteSpace(viewModel.Options) - ? [] - : JConvert.DeserializeObject(viewModel.Options); - } - catch - { - updater.ModelState.AddModelError(Prefix + '.' + nameof(SelectPartEditViewModel.Options), S["The options are written in an incorrect format."]); - } + part.Editor = viewModel.Editor; + part.Options = string.IsNullOrWhiteSpace(viewModel.Options) + ? [] + : JConvert.DeserializeObject(viewModel.Options); + } + catch + { + updater.ModelState.AddModelError(Prefix + '.' + nameof(SelectPartEditViewModel.Options), S["The options are written in an incorrect format."]); } return Edit(part); diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/TextAreaPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/TextAreaPartDisplayDriver.cs index bf297e440a8..9a196fe3e9c 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/TextAreaPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/TextAreaPartDisplayDriver.cs @@ -27,11 +27,10 @@ public async override Task UpdateAsync(TextAreaPart part, IUpdat { var viewModel = new InputPartEditViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix)) - { - part.Placeholder = viewModel.Placeholder?.Trim(); - part.DefaultValue = viewModel.DefaultValue?.Trim(); - } + await updater.TryUpdateModelAsync(viewModel, Prefix); + + part.Placeholder = viewModel.Placeholder?.Trim(); + part.DefaultValue = viewModel.DefaultValue?.Trim(); return Edit(part); } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ValidationPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ValidationPartDisplayDriver.cs index e9b12c46cf1..1212dbb675c 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ValidationPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ValidationPartDisplayDriver.cs @@ -26,10 +26,9 @@ public async override Task UpdateAsync(ValidationPart part, IUpd { var viewModel = new ValidationPartEditViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix)) - { - part.For = viewModel.For?.Trim(); - } + await updater.TryUpdateModelAsync(viewModel, Prefix); + + part.For = viewModel.For?.Trim(); return Edit(part); } diff --git a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ValidationSummaryPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ValidationSummaryPartDisplayDriver.cs index 757d78e16e8..eaff9bf2f59 100644 --- a/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ValidationSummaryPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Forms/Drivers/ValidationSummaryPartDisplayDriver.cs @@ -27,10 +27,9 @@ public override async Task UpdateAsync(ValidationSummaryPart par { var model = new ValidationSummaryViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix)) - { - part.ModelOnly = model.ModelOnly; - } + await updater.TryUpdateModelAsync(model, Prefix); + + part.ModelOnly = model.ModelOnly; return Edit(part); } diff --git a/src/OrchardCore.Modules/OrchardCore.GitHub/Drivers/GithubAuthenticationSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.GitHub/Drivers/GithubAuthenticationSettingsDisplayDriver.cs index 6d8d2bb049d..611b3d3b8ad 100644 --- a/src/OrchardCore.Modules/OrchardCore.GitHub/Drivers/GithubAuthenticationSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.GitHub/Drivers/GithubAuthenticationSettingsDisplayDriver.cs @@ -76,7 +76,7 @@ public override async Task EditAsync(GitHubAuthenticationSetting }).Location("Content:5").OnGroup(GitHubConstants.Features.GitHubAuthentication); } - public override async Task UpdateAsync(GitHubAuthenticationSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(GitHubAuthenticationSettings settings, UpdateEditorContext context) { if (context.GroupId == GitHubConstants.Features.GitHubAuthentication) { diff --git a/src/OrchardCore.Modules/OrchardCore.Google/Analytics/Drivers/GoogleAnalyticsSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Google/Analytics/Drivers/GoogleAnalyticsSettingsDisplayDriver.cs index 55e920df597..5ab7db81f9a 100644 --- a/src/OrchardCore.Modules/OrchardCore.Google/Analytics/Drivers/GoogleAnalyticsSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Google/Analytics/Drivers/GoogleAnalyticsSettingsDisplayDriver.cs @@ -37,7 +37,7 @@ public override async Task EditAsync(GoogleAnalyticsSettings set }).Location("Content:5").OnGroup(GoogleConstants.Features.GoogleAnalytics); } - public override async Task UpdateAsync(GoogleAnalyticsSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(GoogleAnalyticsSettings settings, UpdateEditorContext context) { if (context.GroupId == GoogleConstants.Features.GoogleAnalytics) { diff --git a/src/OrchardCore.Modules/OrchardCore.Google/Authentication/Drivers/GoogleAuthenticationSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Google/Authentication/Drivers/GoogleAuthenticationSettingsDisplayDriver.cs index 86260536322..e55a70d373d 100644 --- a/src/OrchardCore.Modules/OrchardCore.Google/Authentication/Drivers/GoogleAuthenticationSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Google/Authentication/Drivers/GoogleAuthenticationSettingsDisplayDriver.cs @@ -76,7 +76,7 @@ public override async Task EditAsync(GoogleAuthenticationSetting }).Location("Content:5").OnGroup(GoogleConstants.Features.GoogleAuthentication); } - public override async Task UpdateAsync(GoogleAuthenticationSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(GoogleAuthenticationSettings settings, UpdateEditorContext context) { if (context.GroupId == GoogleConstants.Features.GoogleAuthentication) { diff --git a/src/OrchardCore.Modules/OrchardCore.Google/TagManager/Drivers/GoogleTagManagerSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Google/TagManager/Drivers/GoogleTagManagerSettingsDisplayDriver.cs index 1eaa91a8b24..2bb504fd1db 100644 --- a/src/OrchardCore.Modules/OrchardCore.Google/TagManager/Drivers/GoogleTagManagerSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Google/TagManager/Drivers/GoogleTagManagerSettingsDisplayDriver.cs @@ -37,7 +37,7 @@ public override async Task EditAsync(GoogleTagManagerSettings se }).Location("Content:5").OnGroup(GoogleConstants.Features.GoogleTagManager); } - public override async Task UpdateAsync(GoogleTagManagerSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(GoogleTagManagerSettings settings, UpdateEditorContext context) { if (context.GroupId == GoogleConstants.Features.GoogleTagManager) { diff --git a/src/OrchardCore.Modules/OrchardCore.Html/Drivers/HtmlBodyPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Html/Drivers/HtmlBodyPartDisplayDriver.cs index dfe53cdbf94..71d962427ce 100644 --- a/src/OrchardCore.Modules/OrchardCore.Html/Drivers/HtmlBodyPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Html/Drivers/HtmlBodyPartDisplayDriver.cs @@ -64,17 +64,16 @@ public override async Task UpdateAsync(HtmlBodyPart model, IUpda var settings = context.TypePartDefinition.GetSettings(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix, t => t.Html)) + await updater.TryUpdateModelAsync(viewModel, Prefix, t => t.Html); + + if (!string.IsNullOrEmpty(viewModel.Html) && !_liquidTemplateManager.Validate(viewModel.Html, out var errors)) { - 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)]); - } - else - { - model.Html = settings.SanitizeHtml ? _htmlSanitizerService.Sanitize(viewModel.Html) : viewModel.Html; - } + 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)]); + } + else + { + model.Html = settings.SanitizeHtml ? _htmlSanitizerService.Sanitize(viewModel.Html) : viewModel.Html; } return Edit(model, context); diff --git a/src/OrchardCore.Modules/OrchardCore.Html/Settings/HtmlBodyPartSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Html/Settings/HtmlBodyPartSettingsDisplayDriver.cs index f5e3902f4b1..2bd69738a5f 100644 --- a/src/OrchardCore.Modules/OrchardCore.Html/Settings/HtmlBodyPartSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Html/Settings/HtmlBodyPartSettingsDisplayDriver.cs @@ -26,12 +26,11 @@ public override async Task UpdateAsync(ContentTypePartDefinition var model = new HtmlBodyPartSettingsViewModel(); var settings = new HtmlBodyPartSettings(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) - { - settings.SanitizeHtml = model.SanitizeHtml; + await context.Updater.TryUpdateModelAsync(model, Prefix); + + settings.SanitizeHtml = model.SanitizeHtml; - context.Builder.WithSettings(settings); - } + context.Builder.WithSettings(settings); return Edit(contentTypePartDefinition, context.Updater); } diff --git a/src/OrchardCore.Modules/OrchardCore.Https/Drivers/HttpsSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Https/Drivers/HttpsSettingsDisplayDriver.cs index 8de473bb2cf..c58e42bb141 100644 --- a/src/OrchardCore.Modules/OrchardCore.Https/Drivers/HttpsSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Https/Drivers/HttpsSettingsDisplayDriver.cs @@ -75,7 +75,7 @@ public override async Task EditAsync(HttpsSettings settings, Bui .OnGroup(GroupId); } - public override async Task UpdateAsync(HttpsSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(HttpsSettings settings, UpdateEditorContext context) { if (context.GroupId.Equals(GroupId, StringComparison.OrdinalIgnoreCase)) { diff --git a/src/OrchardCore.Modules/OrchardCore.Layers/Drivers/LayerMetadataWelder.cs b/src/OrchardCore.Modules/OrchardCore.Layers/Drivers/LayerMetadataWelder.cs index 572d02797e2..eebbf7a4963 100644 --- a/src/OrchardCore.Modules/OrchardCore.Layers/Drivers/LayerMetadataWelder.cs +++ b/src/OrchardCore.Modules/OrchardCore.Layers/Drivers/LayerMetadataWelder.cs @@ -38,10 +38,10 @@ public override async Task EditAsync(ContentItem model, BuildEdi if (layerMetadata == null) { layerMetadata = new LayerMetadata(); + await context.Updater.TryUpdateModelAsync(layerMetadata, Prefix, m => m.Zone, m => m.Position); // Are we loading an editor that requires layer metadata? - if (await context.Updater.TryUpdateModelAsync(layerMetadata, Prefix, m => m.Zone, m => m.Position) - && !string.IsNullOrEmpty(layerMetadata.Zone)) + if (!string.IsNullOrEmpty(layerMetadata.Zone)) { model.Weld(layerMetadata); } diff --git a/src/OrchardCore.Modules/OrchardCore.Layers/Drivers/LayerSiteSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Layers/Drivers/LayerSiteSettingsDisplayDriver.cs index 18a9b028baa..49bade39027 100644 --- a/src/OrchardCore.Modules/OrchardCore.Layers/Drivers/LayerSiteSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Layers/Drivers/LayerSiteSettingsDisplayDriver.cs @@ -41,7 +41,7 @@ public override async Task EditAsync(LayerSettings settings, Bui }).Location("Content:3").OnGroup(GroupId); } - public override async Task UpdateAsync(LayerSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(LayerSettings settings, UpdateEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; diff --git a/src/OrchardCore.Modules/OrchardCore.Liquid/Drivers/LiquidPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Liquid/Drivers/LiquidPartDisplayDriver.cs index ee03e39ef6c..c033547ff8a 100644 --- a/src/OrchardCore.Modules/OrchardCore.Liquid/Drivers/LiquidPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Liquid/Drivers/LiquidPartDisplayDriver.cs @@ -39,16 +39,15 @@ public override async Task UpdateAsync(LiquidPart model, IUpdate { var viewModel = new LiquidPartViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix, t => t.Liquid)) + await 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)]); + } + else { - 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)]); - } - else - { - model.Liquid = viewModel.Liquid; - } + model.Liquid = viewModel.Liquid; } return Edit(model); diff --git a/src/OrchardCore.Modules/OrchardCore.Lists/AdminNodes/ListsAdminNodeDriver.cs b/src/OrchardCore.Modules/OrchardCore.Lists/AdminNodes/ListsAdminNodeDriver.cs index f476ba23a3c..26c8c2ab24f 100644 --- a/src/OrchardCore.Modules/OrchardCore.Lists/AdminNodes/ListsAdminNodeDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Lists/AdminNodes/ListsAdminNodeDriver.cs @@ -45,15 +45,14 @@ public override async Task UpdateAsync(ListsAdminNode treeNode, { var model = new ListsAdminNodeViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix, + await updater.TryUpdateModelAsync(model, Prefix, x => x.ContentType, x => x.IconForContentItems, - x => x.AddContentTypeAsParent, x => x.IconForParentLink)) - { - treeNode.ContentType = model.ContentType; - treeNode.IconForContentItems = model.IconForContentItems; - treeNode.AddContentTypeAsParent = model.AddContentTypeAsParent; - treeNode.IconForParentLink = model.IconForParentLink; - }; + x => x.AddContentTypeAsParent, x => x.IconForParentLink); + + treeNode.ContentType = model.ContentType; + treeNode.IconForContentItems = model.IconForContentItems; + treeNode.AddContentTypeAsParent = model.AddContentTypeAsParent; + treeNode.IconForParentLink = model.IconForParentLink; return Edit(treeNode); } diff --git a/src/OrchardCore.Modules/OrchardCore.Lists/Drivers/ContainedPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Lists/Drivers/ContainedPartDisplayDriver.cs index 07da41aad2c..c5c38832c06 100644 --- a/src/OrchardCore.Modules/OrchardCore.Lists/Drivers/ContainedPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Lists/Drivers/ContainedPartDisplayDriver.cs @@ -44,10 +44,9 @@ public override async Task EditAsync(ContentItem model, IUpdateM } var viewModel = new EditContainedPartViewModel(); + await updater.TryUpdateModelAsync(viewModel, nameof(ListPart)); - if (await updater.TryUpdateModelAsync(viewModel, nameof(ListPart)) - && viewModel.ContainerId != null - && viewModel.ContentType == model.ContentType) + if (viewModel.ContainerId != null && viewModel.ContentType == model.ContentType) { // We are creating a content item that needs to be added to a container. // Render the container id as part of the form. The content type, and the enable ordering setting. @@ -74,12 +73,11 @@ await model.AlterAsync(async part => public override async Task UpdateAsync(ContentItem model, IUpdateModel updater) { var viewModel = new EditContainedPartViewModel(); + await updater.TryUpdateModelAsync(viewModel, nameof(ListPart)); // The content type must match the value provided in the query string // in order for the ContainedPart to be included on the Content Item. - if (await updater.TryUpdateModelAsync(viewModel, nameof(ListPart)) - && viewModel.ContainerId != null - && viewModel.ContentType == model.ContentType) + if (viewModel.ContainerId != null && viewModel.ContentType == model.ContentType) { await model.AlterAsync(async part => { diff --git a/src/OrchardCore.Modules/OrchardCore.Lists/Drivers/ListPartContentsAdminListDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Lists/Drivers/ListPartContentsAdminListDisplayDriver.cs index 6b2e84a140c..4e481bd6de0 100644 --- a/src/OrchardCore.Modules/OrchardCore.Lists/Drivers/ListPartContentsAdminListDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Lists/Drivers/ListPartContentsAdminListDisplayDriver.cs @@ -23,17 +23,16 @@ public override IDisplayResult Edit(ContentOptionsViewModel model, IUpdateModel public override async Task UpdateAsync(ContentOptionsViewModel model, IUpdateModel updater) { var viewModel = new ListPartContentsAdminFilterViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, nameof(ListPart))) + await updater.TryUpdateModelAsync(viewModel, nameof(ListPart)); + + if (viewModel.ShowListContentTypes) { - if (viewModel.ShowListContentTypes) - { - model.RouteValues.TryAdd("ListPart.ShowListContentTypes", viewModel.ShowListContentTypes); - } + model.RouteValues.TryAdd("ListPart.ShowListContentTypes", viewModel.ShowListContentTypes); + } - if (!string.IsNullOrEmpty(viewModel.ListContentItemId)) - { - model.RouteValues.TryAdd("ListPart.ListContentItemId", viewModel.ListContentItemId); - } + if (!string.IsNullOrEmpty(viewModel.ListContentItemId)) + { + model.RouteValues.TryAdd("ListPart.ListContentItemId", viewModel.ListContentItemId); } return Edit(model, updater); diff --git a/src/OrchardCore.Modules/OrchardCore.Lists/Services/ListPartContentsAdminListFilter.cs b/src/OrchardCore.Modules/OrchardCore.Lists/Services/ListPartContentsAdminListFilter.cs index 09fe7b0601e..91e4c3f05d8 100644 --- a/src/OrchardCore.Modules/OrchardCore.Lists/Services/ListPartContentsAdminListFilter.cs +++ b/src/OrchardCore.Modules/OrchardCore.Lists/Services/ListPartContentsAdminListFilter.cs @@ -26,25 +26,24 @@ public ListPartContentsAdminListFilter(IContentDefinitionManager contentDefiniti public async Task FilterAsync(ContentOptionsViewModel model, IQuery query, IUpdateModel updater) { var viewModel = new ListPartContentsAdminFilterViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, nameof(ListPart))) + await updater.TryUpdateModelAsync(viewModel, nameof(ListPart)); + + // Show list content items + if (viewModel.ShowListContentTypes) { - // Show list content items - if (viewModel.ShowListContentTypes) - { - var listableTypes = (await _contentDefinitionManager.ListTypeDefinitionsAsync()) - .Where(x => - x.Parts.Any(p => - p.PartDefinition.Name == nameof(ListPart))) - .Select(x => x.Name); + var listableTypes = (await _contentDefinitionManager.ListTypeDefinitionsAsync()) + .Where(x => + x.Parts.Any(p => + p.PartDefinition.Name == nameof(ListPart))) + .Select(x => x.Name); - query.With(x => x.ContentType.IsIn(listableTypes)); - } + query.With(x => x.ContentType.IsIn(listableTypes)); + } - // Show contained elements for the specified list - else if (viewModel.ListContentItemId != null) - { - query.With(x => x.ListContentItemId == viewModel.ListContentItemId); - } + // Show contained elements for the specified list + else if (viewModel.ListContentItemId != null) + { + query.With(x => x.ListContentItemId == viewModel.ListContentItemId); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Localization/Drivers/LocalizationSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Localization/Drivers/LocalizationSettingsDisplayDriver.cs index 78b7357dc18..dec0c6d6575 100644 --- a/src/OrchardCore.Modules/OrchardCore.Localization/Drivers/LocalizationSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Localization/Drivers/LocalizationSettingsDisplayDriver.cs @@ -95,7 +95,7 @@ public override async Task EditAsync(LocalizationSettings settin } /// - public override async Task UpdateAsync(LocalizationSettings section, BuildEditorContext context) + public override async Task UpdateAsync(LocalizationSettings section, UpdateEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; diff --git a/src/OrchardCore.Modules/OrchardCore.Markdown/Drivers/MarkdownBodyPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Markdown/Drivers/MarkdownBodyPartDisplayDriver.cs index 95acec8ad01..4b168f9ea47 100644 --- a/src/OrchardCore.Modules/OrchardCore.Markdown/Drivers/MarkdownBodyPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Markdown/Drivers/MarkdownBodyPartDisplayDriver.cs @@ -66,17 +66,16 @@ public override async Task UpdateAsync(MarkdownBodyPart model, I { var viewModel = new MarkdownBodyPartViewModel(); - if (await context.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)) { - 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)]); - } - else - { - model.Markdown = viewModel.Markdown; - } + 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)]); + } + else + { + model.Markdown = viewModel.Markdown; } return Edit(model, context); diff --git a/src/OrchardCore.Modules/OrchardCore.Markdown/Drivers/MarkdownFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Markdown/Drivers/MarkdownFieldDisplayDriver.cs index c5062afbe04..ec1c4060ea9 100644 --- a/src/OrchardCore.Modules/OrchardCore.Markdown/Drivers/MarkdownFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Markdown/Drivers/MarkdownFieldDisplayDriver.cs @@ -97,17 +97,16 @@ public override async Task UpdateAsync(MarkdownField field, IUpd { var viewModel = new EditMarkdownFieldViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix, vm => vm.Markdown)) + await updater.TryUpdateModelAsync(viewModel, Prefix, vm => vm.Markdown); + + if (!string.IsNullOrEmpty(viewModel.Markdown) && !_liquidTemplateManager.Validate(viewModel.Markdown, out var errors)) { - 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)]); - } - else - { - field.Markdown = viewModel.Markdown; - } + 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)]); + } + else + { + field.Markdown = viewModel.Markdown; } return Edit(field, context); diff --git a/src/OrchardCore.Modules/OrchardCore.Markdown/Settings/MarkdownBodyPartSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Markdown/Settings/MarkdownBodyPartSettingsDisplayDriver.cs index c1e80881c81..f5dcf7d88f2 100644 --- a/src/OrchardCore.Modules/OrchardCore.Markdown/Settings/MarkdownBodyPartSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Markdown/Settings/MarkdownBodyPartSettingsDisplayDriver.cs @@ -26,12 +26,11 @@ public override async Task UpdateAsync(ContentTypePartDefinition var model = new MarkdownBodyPartSettingsViewModel(); var settings = new MarkdownBodyPartSettings(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) - { - settings.SanitizeHtml = model.SanitizeHtml; + await context.Updater.TryUpdateModelAsync(model, Prefix); - context.Builder.WithSettings(settings); - } + settings.SanitizeHtml = model.SanitizeHtml; + + context.Builder.WithSettings(settings); return Edit(contentTypePartDefinition, context.Updater); } diff --git a/src/OrchardCore.Modules/OrchardCore.Markdown/Settings/MarkdownFieldSettingsDriver.cs b/src/OrchardCore.Modules/OrchardCore.Markdown/Settings/MarkdownFieldSettingsDriver.cs index 5deba7bb77c..473d4bde420 100644 --- a/src/OrchardCore.Modules/OrchardCore.Markdown/Settings/MarkdownFieldSettingsDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Markdown/Settings/MarkdownFieldSettingsDriver.cs @@ -26,13 +26,12 @@ public override async Task UpdateAsync(ContentPartFieldDefinitio var model = new MarkdownFieldSettingsViewModel(); var settings = new MarkdownFieldSettings(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) - { - settings.SanitizeHtml = model.SanitizeHtml; - settings.Hint = model.Hint; + await context.Updater.TryUpdateModelAsync(model, Prefix); + + settings.SanitizeHtml = model.SanitizeHtml; + settings.Hint = model.Hint; - context.Builder.WithSettings(settings); - } + context.Builder.WithSettings(settings); return Edit(partFieldDefinition); } diff --git a/src/OrchardCore.Modules/OrchardCore.Media/Drivers/MediaFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Media/Drivers/MediaFieldDisplayDriver.cs index b5305ea6d8b..7ededc49906 100644 --- a/src/OrchardCore.Modules/OrchardCore.Media/Drivers/MediaFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Media/Drivers/MediaFieldDisplayDriver.cs @@ -91,72 +91,71 @@ public override async Task UpdateAsync(MediaField field, IUpdate { var model = new EditMediaFieldViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix, f => f.Paths)) - { - // Deserializing an empty string doesn't return an array - var items = string.IsNullOrWhiteSpace(model.Paths) - ? [] - : JConvert.DeserializeObject>(model.Paths, JOptions.CamelCase); + await updater.TryUpdateModelAsync(model, Prefix, f => f.Paths); + + // Deserializing an empty string doesn't return an array + var items = string.IsNullOrWhiteSpace(model.Paths) + ? [] + : JConvert.DeserializeObject>(model.Paths, JOptions.CamelCase); - // If it's an attached media field editor the files are automatically handled by _attachedMediaFieldFileService. - if (string.Equals(context.PartFieldDefinition.Editor(), "Attached", StringComparison.OrdinalIgnoreCase)) + // If it's an attached media field editor the files are automatically handled by _attachedMediaFieldFileService. + if (string.Equals(context.PartFieldDefinition.Editor(), "Attached", StringComparison.OrdinalIgnoreCase)) + { + try { - try - { - field.SetAttachedFileNames(items.Where(i => !i.IsRemoved).Select(i => i.AttachedFileName).ToArray()); - await _attachedMediaFieldFileService.HandleFilesOnFieldUpdateAsync(items, context.ContentPart.ContentItem); - } - catch (Exception e) - { - 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()); - } + field.SetAttachedFileNames(items.Where(i => !i.IsRemoved).Select(i => i.AttachedFileName).ToArray()); + await _attachedMediaFieldFileService.HandleFilesOnFieldUpdateAsync(items, context.ContentPart.ContentItem); } + catch (Exception e) + { + 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()); + } + } - field.Paths = items.Where(p => !p.IsRemoved).Select(p => p.Path).ToArray() ?? []; + field.Paths = items.Where(p => !p.IsRemoved).Select(p => p.Path).ToArray() ?? []; - var settings = context.PartFieldDefinition.GetSettings(); + var settings = context.PartFieldDefinition.GetSettings(); - if (settings.AllowedExtensions?.Length > 0) + if (settings.AllowedExtensions?.Length > 0) + { + for (var i = 0; i < field.Paths.Length; i++) { - for (var i = 0; i < field.Paths.Length; i++) - { - var extension = Path.GetExtension(field.Paths[i]); + var extension = Path.GetExtension(field.Paths[i]); - 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)]); - } + 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)]); } } + } - if (settings.Required && field.Paths.Length < 1) - { - updater.ModelState.AddModelError(Prefix, nameof(model.Paths), S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); - } + if (settings.Required && field.Paths.Length < 1) + { + 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()]); - } + if (field.Paths.Length > 1 && !settings.Multiple) + { + updater.ModelState.AddModelError(Prefix, nameof(model.Paths), S["{0}: Selecting multiple media is forbidden.", context.PartFieldDefinition.DisplayName()]); + } - if (settings.AllowMediaText) - { - field.MediaTexts = items.Select(t => t.MediaText).ToArray(); - } - else - { - field.MediaTexts = []; - } + if (settings.AllowMediaText) + { + field.MediaTexts = items.Select(t => t.MediaText).ToArray(); + } + else + { + field.MediaTexts = []; + } - if (settings.AllowAnchors) - { - field.SetAnchors(items.Select(t => t.Anchor).ToArray()); - } - else if (field.Content.ContainsKey("Anchors")) // Less well known properties should be self healing. - { - field.Content.Remove("Anchors"); - } + if (settings.AllowAnchors) + { + field.SetAnchors(items.Select(t => t.Anchor).ToArray()); + } + else if (field.Content.ContainsKey("Anchors")) // Less well known properties should be self healing. + { + field.Content.Remove("Anchors"); } return Edit(field, context); diff --git a/src/OrchardCore.Modules/OrchardCore.Media/Settings/MediaFieldSettingsDriver.cs b/src/OrchardCore.Modules/OrchardCore.Media/Settings/MediaFieldSettingsDriver.cs index f8db6dbbe2d..ff290147dd0 100644 --- a/src/OrchardCore.Modules/OrchardCore.Media/Settings/MediaFieldSettingsDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Media/Settings/MediaFieldSettingsDriver.cs @@ -75,36 +75,33 @@ public override IDisplayResult Edit(ContentPartFieldDefinition partFieldDefiniti public override async Task UpdateAsync(ContentPartFieldDefinition partFieldDefinition, UpdatePartFieldEditorContext context) { var model = new MediaFieldSettingsViewModel(); - - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) + await context.Updater.TryUpdateModelAsync(model, Prefix); + var settings = new MediaFieldSettings() { - var settings = new MediaFieldSettings() - { - Hint = model.Hint, - Required = model.Required, - Multiple = model.Multiple, - AllowMediaText = model.AllowMediaText, - AllowAnchors = model.AllowAnchors, - }; + Hint = model.Hint, + Required = model.Required, + Multiple = model.Multiple, + AllowMediaText = model.AllowMediaText, + AllowAnchors = model.AllowAnchors, + }; + + if (!model.AllowAllDefaultMediaTypes) + { + var selectedExtensions = model.MediaTypes.Where(vm => vm.IsSelected && _mediaOptions.AllowedFileExtensions.Contains(vm.Extension)) + .Select(x => x.Extension) + .ToArray(); - if (!model.AllowAllDefaultMediaTypes) + if (selectedExtensions.Length == 0) { - var selectedExtensions = model.MediaTypes.Where(vm => vm.IsSelected && _mediaOptions.AllowedFileExtensions.Contains(vm.Extension)) - .Select(x => x.Extension) - .ToArray(); - - if (selectedExtensions.Length == 0) - { - context.Updater.ModelState.AddModelError(Prefix, string.Empty, S["Please select at least one extension."]); - } - - settings.AllowedExtensions = selectedExtensions; + context.Updater.ModelState.AddModelError(Prefix, string.Empty, S["Please select at least one extension."]); } - if (context.Updater.ModelState.IsValid) - { - context.Builder.WithSettings(settings); - } + settings.AllowedExtensions = selectedExtensions; + } + + if (context.Updater.ModelState.IsValid) + { + context.Builder.WithSettings(settings); } return Edit(partFieldDefinition); diff --git a/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/ContentMenuItemPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/ContentMenuItemPartDisplayDriver.cs index 5d07cc7748f..df343140e0f 100644 --- a/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/ContentMenuItemPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/ContentMenuItemPartDisplayDriver.cs @@ -39,14 +39,13 @@ public override async Task UpdateAsync(ContentMenuItemPart part, { var model = new ContentMenuItemPartEditViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix)) - { - part.ContentItem.DisplayText = model.Name; - // This code can be removed in a later release. + await updater.TryUpdateModelAsync(model, Prefix); + + part.ContentItem.DisplayText = model.Name; + // This code can be removed in a later release. #pragma warning disable 0618 - part.Name = model.Name; + part.Name = model.Name; #pragma warning restore 0618 - } return Edit(part); } diff --git a/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/HtmlMenuItemPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/HtmlMenuItemPartDisplayDriver.cs index c10348387e4..9d52962dbf4 100644 --- a/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/HtmlMenuItemPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/HtmlMenuItemPartDisplayDriver.cs @@ -76,39 +76,38 @@ public override async Task UpdateAsync(HtmlMenuItemPart part, IU { var settings = context.TypePartDefinition.GetSettings(); var model = new HtmlMenuItemPartEditViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix)) - { - part.ContentItem.DisplayText = model.Name; - part.Html = settings.SanitizeHtml ? _htmlSanitizerService.Sanitize(model.Html) : model.Html; - part.Url = model.Url; + await updater.TryUpdateModelAsync(model, Prefix); + + part.ContentItem.DisplayText = model.Name; + part.Html = settings.SanitizeHtml ? _htmlSanitizerService.Sanitize(model.Html) : model.Html; + part.Url = model.Url; - var urlToValidate = part.Url; + var urlToValidate = part.Url; + + if (!string.IsNullOrEmpty(urlToValidate)) + { + urlToValidate = urlToValidate.Split('#', 2)[0]; - if (!string.IsNullOrEmpty(urlToValidate)) + if (urlToValidate.StartsWith("~/", StringComparison.Ordinal)) { - urlToValidate = urlToValidate.Split('#', 2)[0]; + var urlHelper = _urlHelperFactory.GetUrlHelper(_actionContextAccessor.ActionContext); + urlToValidate = urlHelper.Content(urlToValidate); + } - if (urlToValidate.StartsWith("~/", StringComparison.Ordinal)) - { - var urlHelper = _urlHelperFactory.GetUrlHelper(_actionContextAccessor.ActionContext); - urlToValidate = urlHelper.Content(urlToValidate); - } + urlToValidate = urlToValidate.ToUriComponents(); - urlToValidate = urlToValidate.ToUriComponents(); + if (!Uri.IsWellFormedUriString(urlToValidate, UriKind.RelativeOrAbsolute)) + { + updater.ModelState.AddModelError(nameof(part.Url), S["{0} is an invalid url.", part.Url]); + } + else + { + var link = $""; - if (!Uri.IsWellFormedUriString(urlToValidate, UriKind.RelativeOrAbsolute)) + if (!string.Equals(link, _htmlSanitizerService.Sanitize(link), StringComparison.OrdinalIgnoreCase)) { updater.ModelState.AddModelError(nameof(part.Url), S["{0} is an invalid url.", part.Url]); } - else - { - var link = $""; - - if (!string.Equals(link, _htmlSanitizerService.Sanitize(link), StringComparison.OrdinalIgnoreCase)) - { - 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 1fee2baa094..a06b65985c3 100644 --- a/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/LinkMenuItemPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/LinkMenuItemPartDisplayDriver.cs @@ -67,43 +67,42 @@ public override async Task UpdateAsync(LinkMenuItemPart part, IU { var model = new LinkMenuItemPartEditViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix)) - { - part.Url = model.Url; - part.ContentItem.DisplayText = model.Name; + await updater.TryUpdateModelAsync(model, Prefix); + + part.Url = model.Url; + part.ContentItem.DisplayText = model.Name; - // This code can be removed in a later release. + // This code can be removed in a later release. #pragma warning disable 0618 - part.Name = model.Name; + part.Name = model.Name; #pragma warning restore 0618 - var urlToValidate = part.Url; + var urlToValidate = part.Url; + + if (!string.IsNullOrEmpty(urlToValidate)) + { + urlToValidate = urlToValidate.Split('#', 2)[0]; - if (!string.IsNullOrEmpty(urlToValidate)) + if (urlToValidate.StartsWith("~/", StringComparison.Ordinal)) { - urlToValidate = urlToValidate.Split('#', 2)[0]; + var urlHelper = _urlHelperFactory.GetUrlHelper(_actionContextAccessor.ActionContext); + urlToValidate = urlHelper.Content(urlToValidate); + } - if (urlToValidate.StartsWith("~/", StringComparison.Ordinal)) - { - var urlHelper = _urlHelperFactory.GetUrlHelper(_actionContextAccessor.ActionContext); - urlToValidate = urlHelper.Content(urlToValidate); - } + urlToValidate = urlToValidate.ToUriComponents(); - urlToValidate = urlToValidate.ToUriComponents(); + if (!Uri.IsWellFormedUriString(urlToValidate, UriKind.RelativeOrAbsolute)) + { + updater.ModelState.AddModelError(nameof(part.Url), S["{0} is an invalid url.", part.Url]); + } + else + { + var link = $""; - if (!Uri.IsWellFormedUriString(urlToValidate, UriKind.RelativeOrAbsolute)) + if (!string.Equals(link, _htmlSanitizerService.Sanitize(link), StringComparison.OrdinalIgnoreCase)) { updater.ModelState.AddModelError(nameof(part.Url), S["{0} is an invalid url.", part.Url]); } - else - { - var link = $""; - - if (!string.Equals(link, _htmlSanitizerService.Sanitize(link), StringComparison.OrdinalIgnoreCase)) - { - updater.ModelState.AddModelError(nameof(part.Url), S["{0} is an invalid url.", part.Url]); - } - } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/MenuPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/MenuPartDisplayDriver.cs index 5b2b512e18a..5e16573fa12 100644 --- a/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/MenuPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Menu/Drivers/MenuPartDisplayDriver.cs @@ -71,9 +71,9 @@ public override IDisplayResult Edit(MenuPart part) public override async Task UpdateAsync(MenuPart part, IUpdateModel updater) { var model = new MenuPartEditViewModel(); + await updater.TryUpdateModelAsync(model, Prefix, t => t.Hierarchy); - if (await updater.TryUpdateModelAsync(model, Prefix, t => t.Hierarchy) && - !string.IsNullOrWhiteSpace(model.Hierarchy)) + if (!string.IsNullOrWhiteSpace(model.Hierarchy)) { var menuItems = new JsonArray(); diff --git a/src/OrchardCore.Modules/OrchardCore.Menu/Settings/HtmlMenuItemPartSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Menu/Settings/HtmlMenuItemPartSettingsDisplayDriver.cs index b452dec1e45..02702d4bb06 100644 --- a/src/OrchardCore.Modules/OrchardCore.Menu/Settings/HtmlMenuItemPartSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Menu/Settings/HtmlMenuItemPartSettingsDisplayDriver.cs @@ -26,12 +26,11 @@ public override async Task UpdateAsync(ContentTypePartDefinition var model = new HtmlMenuItemPartSettingsViewModel(); var settings = new HtmlMenuItemPartSettings(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) - { - settings.SanitizeHtml = model.SanitizeHtml; + await context.Updater.TryUpdateModelAsync(model, Prefix); + + settings.SanitizeHtml = model.SanitizeHtml; - context.Builder.WithSettings(settings); - } + context.Builder.WithSettings(settings); return Edit(contentTypePartDefinition, context.Updater); } diff --git a/src/OrchardCore.Modules/OrchardCore.Microsoft.Authentication/Drivers/AzureADSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Microsoft.Authentication/Drivers/AzureADSettingsDisplayDriver.cs index eeeb6472f3c..0c4476ff957 100644 --- a/src/OrchardCore.Modules/OrchardCore.Microsoft.Authentication/Drivers/AzureADSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Microsoft.Authentication/Drivers/AzureADSettingsDisplayDriver.cs @@ -50,7 +50,7 @@ public override async Task EditAsync(AzureADSettings settings, B }).Location("Content:0").OnGroup(MicrosoftAuthenticationConstants.Features.AAD); } - public override async Task UpdateAsync(AzureADSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(AzureADSettings settings, UpdateEditorContext context) { if (context.GroupId == MicrosoftAuthenticationConstants.Features.AAD) { diff --git a/src/OrchardCore.Modules/OrchardCore.Microsoft.Authentication/Drivers/MicrosoftAccountSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Microsoft.Authentication/Drivers/MicrosoftAccountSettingsDisplayDriver.cs index c66aa8edbca..ea78b820391 100644 --- a/src/OrchardCore.Modules/OrchardCore.Microsoft.Authentication/Drivers/MicrosoftAccountSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Microsoft.Authentication/Drivers/MicrosoftAccountSettingsDisplayDriver.cs @@ -76,7 +76,7 @@ public override async Task EditAsync(MicrosoftAccountSettings se }).Location("Content:5").OnGroup(MicrosoftAuthenticationConstants.Features.MicrosoftAccount); } - public override async Task UpdateAsync(MicrosoftAccountSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(MicrosoftAccountSettings settings, UpdateEditorContext context) { if (context.GroupId == MicrosoftAuthenticationConstants.Features.MicrosoftAccount) { diff --git a/src/OrchardCore.Modules/OrchardCore.Notifications/Drivers/NotifyUserTaskActivityDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Notifications/Drivers/NotifyUserTaskActivityDisplayDriver.cs index c44d2f08195..a6408af4151 100644 --- a/src/OrchardCore.Modules/OrchardCore.Notifications/Drivers/NotifyUserTaskActivityDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Notifications/Drivers/NotifyUserTaskActivityDisplayDriver.cs @@ -51,32 +51,31 @@ public override IDisplayResult Edit(TActivity model) public async override Task UpdateAsync(TActivity model, IUpdateModel updater) { var viewModel = new TEditViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix)) + await updater.TryUpdateModelAsync(viewModel, Prefix); + + if (!_liquidTemplateManager.Validate(viewModel.Subject, out var subjectErrors)) { - if (!_liquidTemplateManager.Validate(viewModel.Subject, out var subjectErrors)) - { - updater.ModelState.AddModelError(Prefix, nameof(viewModel.Subject), S["Subject field does not contain a valid Liquid expression. Details: {0}", string.Join(' ', subjectErrors)]); - } - - if (!_liquidTemplateManager.Validate(viewModel.Summary, out var summaryErrors)) - { - updater.ModelState.AddModelError(Prefix, nameof(viewModel.Summary), S["Summary field does not contain a valid Liquid expression. Details: {0}", string.Join(' ', summaryErrors)]); - } - - if (!_liquidTemplateManager.Validate(viewModel.TextBody, out var textBodyErrors)) - { - updater.ModelState.AddModelError(Prefix, nameof(viewModel.TextBody), S["Text Body field does not contain a valid Liquid expression. Details: {0}", string.Join(' ', textBodyErrors)]); - } - - if (!_liquidTemplateManager.Validate(viewModel.HtmlBody, out var htmlBodyErrors)) - { - updater.ModelState.AddModelError(Prefix, nameof(viewModel.HtmlBody), S["HTML Body field does not contain a valid Liquid expression. Details: {0}", string.Join(' ', htmlBodyErrors)]); - } - - if (updater.ModelState.IsValid) - { - await UpdateActivityAsync(viewModel, model); - } + updater.ModelState.AddModelError(Prefix, nameof(viewModel.Subject), S["Subject field does not contain a valid Liquid expression. Details: {0}", string.Join(' ', subjectErrors)]); + } + + if (!_liquidTemplateManager.Validate(viewModel.Summary, out var summaryErrors)) + { + updater.ModelState.AddModelError(Prefix, nameof(viewModel.Summary), S["Summary field does not contain a valid Liquid expression. Details: {0}", string.Join(' ', summaryErrors)]); + } + + if (!_liquidTemplateManager.Validate(viewModel.TextBody, out var textBodyErrors)) + { + updater.ModelState.AddModelError(Prefix, nameof(viewModel.TextBody), S["Text Body field does not contain a valid Liquid expression. Details: {0}", string.Join(' ', textBodyErrors)]); + } + + if (!_liquidTemplateManager.Validate(viewModel.HtmlBody, out var htmlBodyErrors)) + { + updater.ModelState.AddModelError(Prefix, nameof(viewModel.HtmlBody), S["HTML Body field does not contain a valid Liquid expression. Details: {0}", string.Join(' ', htmlBodyErrors)]); + } + + if (updater.ModelState.IsValid) + { + await UpdateActivityAsync(viewModel, model); } return Edit(model); diff --git a/src/OrchardCore.Modules/OrchardCore.Notifications/Drivers/UserNotificationPreferencesPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Notifications/Drivers/UserNotificationPreferencesPartDisplayDriver.cs index de90879412c..2c4c02fc0a9 100644 --- a/src/OrchardCore.Modules/OrchardCore.Notifications/Drivers/UserNotificationPreferencesPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Notifications/Drivers/UserNotificationPreferencesPartDisplayDriver.cs @@ -54,38 +54,37 @@ public override Task EditAsync(User user, UserNotificationPrefer return Task.FromResult(result); } - public override async Task UpdateAsync(User user, UserNotificationPreferencesPart part, IUpdateModel updater, BuildEditorContext context) + public override async Task UpdateAsync(User user, UserNotificationPreferencesPart part, IUpdateModel updater, UpdateEditorContext context) { var model = new UserNotificationViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix)) - { - var sortedMethods = new List(model.SortedMethods ?? []); - - if (sortedMethods.Count > 0) - { - // Important to execute this code only when sortedMethods has at least one element to avoid exception. - // Store all methods in the same order they appear. - part.Methods = _notificationMethodProviders - .OrderBy(provider => sortedMethods.IndexOf(provider.Method)) - .ThenBy(provider => provider.Name.ToString()) - .Select(x => x.Method) - .ToArray(); - } - else - { - part.Methods = _notificationMethodProviders.OrderBy(provider => provider.Name.ToString()) - .Select(x => x.Method) - .ToArray(); - } + await updater.TryUpdateModelAsync(model, Prefix); - var selectedMethods = new List(model.Methods ?? []); + var sortedMethods = new List(model.SortedMethods ?? []); - // Store any method that is not selected as an optout. - part.Optout = _notificationMethodProviders.Where(provider => !selectedMethods.Contains(provider.Method)) - .Select(provider => provider.Method) + if (sortedMethods.Count > 0) + { + // Important to execute this code only when sortedMethods has at least one element to avoid exception. + // Store all methods in the same order they appear. + part.Methods = _notificationMethodProviders + .OrderBy(provider => sortedMethods.IndexOf(provider.Method)) + .ThenBy(provider => provider.Name.ToString()) + .Select(x => x.Method) .ToArray(); } + else + { + part.Methods = _notificationMethodProviders.OrderBy(provider => provider.Name.ToString()) + .Select(x => x.Method) + .ToArray(); + } + + var selectedMethods = new List(model.Methods ?? []); + + // Store any method that is not selected as an optout. + part.Optout = _notificationMethodProviders.Where(provider => !selectedMethods.Contains(provider.Method)) + .Select(provider => provider.Method) + .ToArray(); return await EditAsync(user, part, context); } diff --git a/src/OrchardCore.Modules/OrchardCore.OpenId/Drivers/OpenIdClientSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.OpenId/Drivers/OpenIdClientSettingsDisplayDriver.cs index acc02e34764..14a66304c54 100644 --- a/src/OrchardCore.Modules/OrchardCore.OpenId/Drivers/OpenIdClientSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.OpenId/Drivers/OpenIdClientSettingsDisplayDriver.cs @@ -109,7 +109,7 @@ public override async Task EditAsync(OpenIdClientSettings settin }).Location("Content:2").OnGroup(SettingsGroupId); } - public override async Task UpdateAsync(OpenIdClientSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(OpenIdClientSettings settings, UpdateEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; if (!await _authorizationService.AuthorizeAsync(user, Permissions.ManageClientSettings)) diff --git a/src/OrchardCore.Modules/OrchardCore.Queries/Deployment/QueryBasedContentDeploymentStepDriver.cs b/src/OrchardCore.Modules/OrchardCore.Queries/Deployment/QueryBasedContentDeploymentStepDriver.cs index e22d2ff3de8..43b71b41959 100644 --- a/src/OrchardCore.Modules/OrchardCore.Queries/Deployment/QueryBasedContentDeploymentStepDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Queries/Deployment/QueryBasedContentDeploymentStepDriver.cs @@ -47,36 +47,34 @@ public override IDisplayResult Edit(QueryBasedContentDeploymentStep step) public override async Task UpdateAsync(QueryBasedContentDeploymentStep step, IUpdateModel updater) { var queryBasedContentViewModel = new QueryBasedContentDeploymentStepViewModel(); + await updater.TryUpdateModelAsync(queryBasedContentViewModel, Prefix, viewModel => viewModel.QueryName, viewModel => viewModel.QueryParameters, viewModel => viewModel.ExportAsSetupRecipe); + var query = await _queryManager.LoadQueryAsync(queryBasedContentViewModel.QueryName); - if (await updater.TryUpdateModelAsync(queryBasedContentViewModel, Prefix, viewModel => viewModel.QueryName, viewModel => viewModel.QueryParameters, viewModel => viewModel.ExportAsSetupRecipe)) + if (!query.ResultsOfType()) { - var query = await _queryManager.LoadQueryAsync(queryBasedContentViewModel.QueryName); - if (!query.ResultsOfType()) - { - updater.ModelState.AddModelError(Prefix, nameof(step.QueryName), S["Your Query is not returning content items."]); - } + updater.ModelState.AddModelError(Prefix, nameof(step.QueryName), S["Your Query is not returning content items."]); + } - if (queryBasedContentViewModel.QueryParameters != null) + if (queryBasedContentViewModel.QueryParameters != null) + { + try { - try - { - var parameters = JConvert.DeserializeObject>(queryBasedContentViewModel.QueryParameters); - if (parameters == null) - { - updater.ModelState.AddModelError(Prefix, nameof(step.QueryParameters), S["Make sure it is a valid JSON object. Example: { key : 'value' }"]); - } - } - catch (JsonException) + var parameters = JConvert.DeserializeObject>(queryBasedContentViewModel.QueryParameters); + if (parameters == null) { - updater.ModelState.AddModelError(Prefix, nameof(step.QueryParameters), S["Something is wrong with your JSON."]); + updater.ModelState.AddModelError(Prefix, nameof(step.QueryParameters), S["Make sure it is a valid JSON object. Example: { key : 'value' }"]); } } - - step.QueryName = queryBasedContentViewModel.QueryName; - step.ExportAsSetupRecipe = queryBasedContentViewModel.ExportAsSetupRecipe; - step.QueryParameters = queryBasedContentViewModel.QueryParameters; + catch (JsonException) + { + updater.ModelState.AddModelError(Prefix, nameof(step.QueryParameters), S["Something is wrong with your JSON."]); + } } + step.QueryName = queryBasedContentViewModel.QueryName; + step.ExportAsSetupRecipe = queryBasedContentViewModel.ExportAsSetupRecipe; + step.QueryParameters = queryBasedContentViewModel.QueryParameters; + return Edit(step); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Queries/Sql/Drivers/SqlQueryDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Queries/Sql/Drivers/SqlQueryDisplayDriver.cs index d0ce86cca59..58f1605e8e3 100644 --- a/src/OrchardCore.Modules/OrchardCore.Queries/Sql/Drivers/SqlQueryDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Queries/Sql/Drivers/SqlQueryDisplayDriver.cs @@ -48,11 +48,10 @@ public override IDisplayResult Edit(SqlQuery query, IUpdateModel updater) public override async Task UpdateAsync(SqlQuery model, IUpdateModel updater) { var viewModel = new SqlQueryViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix, m => m.Query, m => m.ReturnDocuments)) - { - model.Template = viewModel.Query; - model.ReturnDocuments = viewModel.ReturnDocuments; - } + await updater.TryUpdateModelAsync(viewModel, Prefix, m => m.Query, m => m.ReturnDocuments); + + model.Template = viewModel.Query; + model.ReturnDocuments = viewModel.ReturnDocuments; if (string.IsNullOrWhiteSpace(model.Template)) { diff --git a/src/OrchardCore.Modules/OrchardCore.ReCaptcha/Drivers/ReCaptchaSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ReCaptcha/Drivers/ReCaptchaSettingsDisplayDriver.cs index c4d1dbb0338..62bbaec4cba 100644 --- a/src/OrchardCore.Modules/OrchardCore.ReCaptcha/Drivers/ReCaptchaSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ReCaptcha/Drivers/ReCaptchaSettingsDisplayDriver.cs @@ -58,7 +58,7 @@ public override async Task EditAsync(ReCaptchaSettings settings, .OnGroup(GroupId); } - public override async Task UpdateAsync(ReCaptchaSettings section, BuildEditorContext context) + public override async Task UpdateAsync(ReCaptchaSettings section, UpdateEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; @@ -71,14 +71,13 @@ public override async Task UpdateAsync(ReCaptchaSettings section { var model = new ReCaptchaSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) - { - section.SiteKey = model.SiteKey?.Trim(); - section.SecretKey = model.SecretKey?.Trim(); + await context.Updater.TryUpdateModelAsync(model, Prefix); + + section.SiteKey = model.SiteKey?.Trim(); + section.SecretKey = model.SecretKey?.Trim(); - // Release the tenant to apply settings. - await _shellHost.ReleaseShellContextAsync(_shellSettings); - } + // Release the tenant to apply settings. + await _shellHost.ReleaseShellContextAsync(_shellSettings); } return await EditAsync(section, context); diff --git a/src/OrchardCore.Modules/OrchardCore.ReverseProxy/Drivers/ReverseProxySettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.ReverseProxy/Drivers/ReverseProxySettingsDisplayDriver.cs index a63d7c01859..517f26a2ccd 100644 --- a/src/OrchardCore.Modules/OrchardCore.ReverseProxy/Drivers/ReverseProxySettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.ReverseProxy/Drivers/ReverseProxySettingsDisplayDriver.cs @@ -60,7 +60,7 @@ public override async Task EditAsync(ReverseProxySettings settin .OnGroup(GroupId); } - public override async Task UpdateAsync(ReverseProxySettings section, BuildEditorContext context) + public override async Task UpdateAsync(ReverseProxySettings section, UpdateEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; diff --git a/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/ContentTypeConditionDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/ContentTypeConditionDisplayDriver.cs index d0602ebbc67..dbdf34f4d86 100644 --- a/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/ContentTypeConditionDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/ContentTypeConditionDisplayDriver.cs @@ -42,13 +42,12 @@ public override IDisplayResult Edit(ContentTypeCondition condition) public override async Task UpdateAsync(ContentTypeCondition condition, IUpdateModel updater) { var model = new ContentTypeConditionViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix)) + await updater.TryUpdateModelAsync(model, Prefix); + + condition.Value = model.Value; + if (!string.IsNullOrEmpty(model.SelectedOperation) && _options.Factories.TryGetValue(model.SelectedOperation, out var factory)) { - condition.Value = model.Value; - if (!string.IsNullOrEmpty(model.SelectedOperation) && _options.Factories.TryGetValue(model.SelectedOperation, out var factory)) - { - condition.Operation = factory.Create(); - } + condition.Operation = factory.Create(); } return Edit(condition); diff --git a/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/CultureConditionDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/CultureConditionDisplayDriver.cs index 6654d81562e..62160b46bcc 100644 --- a/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/CultureConditionDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/CultureConditionDisplayDriver.cs @@ -42,13 +42,12 @@ public override IDisplayResult Edit(CultureCondition condition) public override async Task UpdateAsync(CultureCondition condition, IUpdateModel updater) { var model = new CultureConditionViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix)) + await updater.TryUpdateModelAsync(model, Prefix); + + condition.Value = model.Value; + if (!string.IsNullOrEmpty(model.SelectedOperation) && _options.Factories.TryGetValue(model.SelectedOperation, out var factory)) { - condition.Value = model.Value; - if (!string.IsNullOrEmpty(model.SelectedOperation) && _options.Factories.TryGetValue(model.SelectedOperation, out var factory)) - { - condition.Operation = factory.Create(); - } + condition.Operation = factory.Create(); } return Edit(condition); diff --git a/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/JavascriptConditionDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/JavascriptConditionDisplayDriver.cs index 927dd91c03b..92b439af998 100644 --- a/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/JavascriptConditionDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/JavascriptConditionDisplayDriver.cs @@ -30,11 +30,10 @@ public override IDisplayResult Edit(JavascriptCondition condition) public override async Task UpdateAsync(JavascriptCondition condition, IUpdateModel updater) { var model = new JavascriptConditionViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix)) - { - // TODO is empty. - condition.Script = model.Script; - } + await updater.TryUpdateModelAsync(model, Prefix); + + // TODO is empty. + condition.Script = model.Script; return Edit(condition); } diff --git a/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/RoleConditionDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/RoleConditionDisplayDriver.cs index 70e3decf055..5072c51709c 100644 --- a/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/RoleConditionDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/RoleConditionDisplayDriver.cs @@ -42,13 +42,12 @@ public override IDisplayResult Edit(RoleCondition condition) public override async Task UpdateAsync(RoleCondition condition, IUpdateModel updater) { var model = new RoleConditionViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix)) + await updater.TryUpdateModelAsync(model, Prefix); + condition.Value = model.Value; + + if (!string.IsNullOrEmpty(model.SelectedOperation) && _options.Factories.TryGetValue(model.SelectedOperation, out var factory)) { - condition.Value = model.Value; - if (!string.IsNullOrEmpty(model.SelectedOperation) && _options.Factories.TryGetValue(model.SelectedOperation, out var factory)) - { - condition.Operation = factory.Create(); - } + condition.Operation = factory.Create(); } return Edit(condition); diff --git a/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/UrlConditionDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/UrlConditionDisplayDriver.cs index dd170ce8695..1c468d9d8a5 100644 --- a/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/UrlConditionDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Rules/Drivers/UrlConditionDisplayDriver.cs @@ -42,13 +42,12 @@ public override IDisplayResult Edit(UrlCondition condition) public override async Task UpdateAsync(UrlCondition condition, IUpdateModel updater) { var model = new UrlConditionViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix)) + await updater.TryUpdateModelAsync(model, Prefix); + condition.Value = model.Value; + + if (!string.IsNullOrEmpty(model.SelectedOperation) && _options.Factories.TryGetValue(model.SelectedOperation, out var factory)) { - condition.Value = model.Value; - if (!string.IsNullOrEmpty(model.SelectedOperation) && _options.Factories.TryGetValue(model.SelectedOperation, out var factory)) - { - condition.Operation = factory.Create(); - } + condition.Operation = factory.Create(); } return Edit(condition); diff --git a/src/OrchardCore.Modules/OrchardCore.Search.AzureAI/Drivers/AzureAISearchDefaultSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Search.AzureAI/Drivers/AzureAISearchDefaultSettingsDisplayDriver.cs index 3f669eb0339..07bd71badcd 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search.AzureAI/Drivers/AzureAISearchDefaultSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search.AzureAI/Drivers/AzureAISearchDefaultSettingsDisplayDriver.cs @@ -83,7 +83,7 @@ public override IDisplayResult Edit(AzureAISearchDefaultSettings settings) .OnGroup(GroupId); } - public override async Task UpdateAsync(AzureAISearchDefaultSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(AzureAISearchDefaultSettings settings, UpdateEditorContext context) { if (!GroupId.EqualsOrdinalIgnoreCase(context.GroupId) || _searchOptions.DisableUIConfiguration) { @@ -97,58 +97,57 @@ public override async Task UpdateAsync(AzureAISearchDefaultSetti var model = new AzureAISearchDefaultSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) + await context.Updater.TryUpdateModelAsync(model, Prefix); + + if (!_searchOptions.FileConfigurationExists()) + { + model.UseCustomConfiguration = true; + } + + var useCustomConfigurationChanged = settings.UseCustomConfiguration != model.UseCustomConfiguration; + + if (model.UseCustomConfiguration) { - if (!_searchOptions.FileConfigurationExists()) + settings.AuthenticationType = model.AuthenticationType.Value; + settings.Endpoint = model.Endpoint; + settings.IdentityClientId = model.IdentityClientId?.Trim(); + + if (string.IsNullOrWhiteSpace(model.Endpoint)) { - model.UseCustomConfiguration = true; + context.Updater.ModelState.AddModelError(Prefix, nameof(model.Endpoint), S["Endpoint is required."]); + } + else if (!Uri.TryCreate(model.Endpoint, UriKind.Absolute, out var _)) + { + context.Updater.ModelState.AddModelError(Prefix, nameof(model.Endpoint), S["Endpoint must be a valid url."]); } - var useCustomConfigurationChanged = settings.UseCustomConfiguration != model.UseCustomConfiguration; - - if (model.UseCustomConfiguration) + if (model.AuthenticationType == AzureAIAuthenticationType.ApiKey) { - settings.AuthenticationType = model.AuthenticationType.Value; - settings.Endpoint = model.Endpoint; - settings.IdentityClientId = model.IdentityClientId?.Trim(); + var hasNewKey = !string.IsNullOrWhiteSpace(model.ApiKey); - if (string.IsNullOrWhiteSpace(model.Endpoint)) + if (!hasNewKey && string.IsNullOrEmpty(settings.ApiKey)) { - context.Updater.ModelState.AddModelError(Prefix, nameof(model.Endpoint), S["Endpoint is required."]); + context.Updater.ModelState.AddModelError(Prefix, nameof(model.ApiKey), S["API Key is required when using API Key authentication type."]); } - else if (!Uri.TryCreate(model.Endpoint, UriKind.Absolute, out var _)) + else if (hasNewKey) { - context.Updater.ModelState.AddModelError(Prefix, nameof(model.Endpoint), S["Endpoint must be a valid url."]); - } + var protector = _dataProtectionProvider.CreateProtector(AzureAISearchDefaultOptionsConfigurations.ProtectorName); - if (model.AuthenticationType == AzureAIAuthenticationType.ApiKey) - { - var hasNewKey = !string.IsNullOrWhiteSpace(model.ApiKey); - - if (!hasNewKey && string.IsNullOrEmpty(settings.ApiKey)) - { - context.Updater.ModelState.AddModelError(Prefix, nameof(model.ApiKey), S["API Key is required when using API Key authentication type."]); - } - else if (hasNewKey) - { - var protector = _dataProtectionProvider.CreateProtector(AzureAISearchDefaultOptionsConfigurations.ProtectorName); - - settings.ApiKey = protector.Protect(model.ApiKey); - } + settings.ApiKey = protector.Protect(model.ApiKey); } } + } - settings.UseCustomConfiguration = model.UseCustomConfiguration; + settings.UseCustomConfiguration = model.UseCustomConfiguration; - if (context.Updater.ModelState.IsValid && - (_searchOptions.Credential?.Key != model.ApiKey - || _searchOptions.Endpoint != settings.Endpoint - || _searchOptions.AuthenticationType != settings.AuthenticationType - || _searchOptions.IdentityClientId != settings.IdentityClientId - || useCustomConfigurationChanged)) - { - await _shellHost.ReleaseShellContextAsync(_shellSettings); - } + if (context.Updater.ModelState.IsValid && + (_searchOptions.Credential?.Key != model.ApiKey + || _searchOptions.Endpoint != settings.Endpoint + || _searchOptions.AuthenticationType != settings.AuthenticationType + || _searchOptions.IdentityClientId != settings.IdentityClientId + || useCustomConfigurationChanged)) + { + await _shellHost.ReleaseShellContextAsync(_shellSettings); } return Edit(settings); diff --git a/src/OrchardCore.Modules/OrchardCore.Search.AzureAI/Drivers/AzureAISearchSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Search.AzureAI/Drivers/AzureAISearchSettingsDisplayDriver.cs index db223d97686..0a7589b675a 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search.AzureAI/Drivers/AzureAISearchSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search.AzureAI/Drivers/AzureAISearchSettingsDisplayDriver.cs @@ -58,7 +58,7 @@ public override IDisplayResult Edit(AzureAISearchSettings settings) .RenderWhen(() => _authorizationService.AuthorizeAsync(_httpContextAccessor.HttpContext.User, AzureAISearchIndexPermissionHelper.ManageAzureAISearchIndexes)) .OnGroup(SearchConstants.SearchSettingsGroupId); - public override async Task UpdateAsync(AzureAISearchSettings section, BuildEditorContext context) + public override async Task UpdateAsync(AzureAISearchSettings section, UpdateEditorContext context) { if (!SearchConstants.SearchSettingsGroupId.EqualsOrdinalIgnoreCase(context.GroupId)) { @@ -72,33 +72,33 @@ public override async Task UpdateAsync(AzureAISearchSettings sec var model = new AzureAISearchSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) + await context.Updater.TryUpdateModelAsync(model, Prefix); + + + if (string.IsNullOrEmpty(model.SearchIndex)) { - if (string.IsNullOrEmpty(model.SearchIndex)) + context.Updater.ModelState.AddModelError(Prefix, nameof(model.SearchIndex), S["Search Index is required."]); + } + else + { + var indexes = await _indexSettingsService.GetSettingsAsync(); + + if (!indexes.Any(index => index.IndexName == model.SearchIndex)) { - context.Updater.ModelState.AddModelError(Prefix, nameof(model.SearchIndex), S["Search Index is required."]); + context.Updater.ModelState.AddModelError(Prefix, nameof(model.SearchIndex), S["Invalid Search Index value."]); } - else - { - var indexes = await _indexSettingsService.GetSettingsAsync(); + } - if (!indexes.Any(index => index.IndexName == model.SearchIndex)) - { - context.Updater.ModelState.AddModelError(Prefix, nameof(model.SearchIndex), S["Invalid Search Index value."]); - } - } + var fields = model.SearchFields?.Split(_separator, StringSplitOptions.RemoveEmptyEntries); - var fields = model.SearchFields?.Split(_separator, StringSplitOptions.RemoveEmptyEntries); + if (section.SearchIndex != model.SearchIndex || !AreTheSame(section.DefaultSearchFields, fields)) + { + section.SearchIndex = model.SearchIndex; + section.DefaultSearchFields = fields; - if (section.SearchIndex != model.SearchIndex || !AreTheSame(section.DefaultSearchFields, fields)) + if (context.Updater.ModelState.IsValid) { - section.SearchIndex = model.SearchIndex; - section.DefaultSearchFields = fields; - - if (context.Updater.ModelState.IsValid) - { - await _shellHost.ReleaseShellContextAsync(_shellSettings); - } + await _shellHost.ReleaseShellContextAsync(_shellSettings); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Drivers/ElasticQueryDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Drivers/ElasticQueryDisplayDriver.cs index fed0a23e0d8..b64c9e9ec80 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Drivers/ElasticQueryDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Drivers/ElasticQueryDisplayDriver.cs @@ -52,12 +52,11 @@ public override IDisplayResult Edit(ElasticQuery query, IUpdateModel updater) public override async Task UpdateAsync(ElasticQuery model, IUpdateModel updater) { var viewModel = new ElasticQueryViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix, m => m.Query, m => m.Index, m => m.ReturnContentItems)) - { - model.Template = viewModel.Query; - model.Index = viewModel.Index; - model.ReturnContentItems = viewModel.ReturnContentItems; - } + await updater.TryUpdateModelAsync(viewModel, Prefix, m => m.Query, m => m.Index, m => m.ReturnContentItems); + + model.Template = viewModel.Query; + model.Index = viewModel.Index; + model.ReturnContentItems = viewModel.ReturnContentItems; if (string.IsNullOrWhiteSpace(model.Template)) { diff --git a/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Drivers/ElasticSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Drivers/ElasticSettingsDisplayDriver.cs index 23da1d9031d..c266e70ccd9 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Drivers/ElasticSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search.Elasticsearch/Drivers/ElasticSettingsDisplayDriver.cs @@ -73,7 +73,7 @@ public override IDisplayResult Edit(ElasticSettings settings) .RenderWhen(() => _authorizationService.AuthorizeAsync(_httpContextAccessor.HttpContext.User, Permissions.ManageElasticIndexes)) .OnGroup(SearchConstants.SearchSettingsGroupId); - public override async Task UpdateAsync(ElasticSettings section, BuildEditorContext context) + public override async Task UpdateAsync(ElasticSettings section, UpdateEditorContext context) { if (!SearchConstants.SearchSettingsGroupId.EqualsOrdinalIgnoreCase(context.GroupId)) { diff --git a/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Drivers/LuceneQueryDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Drivers/LuceneQueryDisplayDriver.cs index 55a668c7552..f7567efda7c 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Drivers/LuceneQueryDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Drivers/LuceneQueryDisplayDriver.cs @@ -50,12 +50,11 @@ public override IDisplayResult Edit(LuceneQuery query, IUpdateModel updater) public override async Task UpdateAsync(LuceneQuery model, IUpdateModel updater) { var viewModel = new LuceneQueryViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix, m => m.Query, m => m.Index, m => m.ReturnContentItems)) - { - model.Template = viewModel.Query; - model.Index = viewModel.Index; - model.ReturnContentItems = viewModel.ReturnContentItems; - } + await updater.TryUpdateModelAsync(viewModel, Prefix, m => m.Query, m => m.Index, m => m.ReturnContentItems); + + model.Template = viewModel.Query; + model.Index = viewModel.Index; + model.ReturnContentItems = viewModel.ReturnContentItems; if (string.IsNullOrWhiteSpace(model.Template)) { diff --git a/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Drivers/LuceneSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Drivers/LuceneSettingsDisplayDriver.cs index 49dda406d54..053d04dcf30 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Drivers/LuceneSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search.Lucene/Drivers/LuceneSettingsDisplayDriver.cs @@ -43,7 +43,7 @@ public override async Task EditAsync(LuceneSettings settings, Bu .OnGroup(SearchConstants.SearchSettingsGroupId); } - public override async Task UpdateAsync(LuceneSettings section, BuildEditorContext context) + public override async Task UpdateAsync(LuceneSettings section, UpdateEditorContext context) { if (!SearchConstants.SearchSettingsGroupId.EqualsOrdinalIgnoreCase(context.GroupId)) { diff --git a/src/OrchardCore.Modules/OrchardCore.Search/Drivers/SearchFormPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Search/Drivers/SearchFormPartDisplayDriver.cs index 3306aadb804..6b6103574b0 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search/Drivers/SearchFormPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search/Drivers/SearchFormPartDisplayDriver.cs @@ -28,11 +28,10 @@ public override async Task UpdateAsync(SearchFormPart part, IUpd { var model = new SearchPartViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix)) - { - part.Placeholder = model.Placeholder; - part.IndexName = string.IsNullOrWhiteSpace(model.IndexName) ? null : model.IndexName.Trim(); - } + await updater.TryUpdateModelAsync(model, Prefix); + + part.Placeholder = model.Placeholder; + part.IndexName = string.IsNullOrWhiteSpace(model.IndexName) ? null : model.IndexName.Trim(); return Edit(part); } diff --git a/src/OrchardCore.Modules/OrchardCore.Search/Drivers/SearchSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Search/Drivers/SearchSettingsDisplayDriver.cs index 392c46f310f..4be08e2b290 100644 --- a/src/OrchardCore.Modules/OrchardCore.Search/Drivers/SearchSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Search/Drivers/SearchSettingsDisplayDriver.cs @@ -57,7 +57,7 @@ public override async Task EditAsync(SearchSettings settings, Bu .OnGroup(SearchConstants.SearchSettingsGroupId); } - public override async Task UpdateAsync(SearchSettings section, BuildEditorContext context) + public override async Task UpdateAsync(SearchSettings section, UpdateEditorContext context) { if (!SearchConstants.SearchSettingsGroupId.EqualsOrdinalIgnoreCase(context.GroupId)) { @@ -73,12 +73,11 @@ public override async Task UpdateAsync(SearchSettings section, B var model = new SearchSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) - { - section.ProviderName = model.ProviderName; - section.Placeholder = model.Placeholder; - section.PageTitle = model.PageTitle; - } + await context.Updater.TryUpdateModelAsync(model, Prefix); + + section.ProviderName = model.ProviderName; + section.Placeholder = model.Placeholder; + section.PageTitle = model.PageTitle; return await EditAsync(section, context); } diff --git a/src/OrchardCore.Modules/OrchardCore.Security/Drivers/SecuritySettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Security/Drivers/SecuritySettingsDisplayDriver.cs index d2f2390fdbc..7645b3b8532 100644 --- a/src/OrchardCore.Modules/OrchardCore.Security/Drivers/SecuritySettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Security/Drivers/SecuritySettingsDisplayDriver.cs @@ -77,7 +77,7 @@ public override async Task EditAsync(SecuritySettings settings, }).Location("Content:2").OnGroup(SettingsGroupId); } - public override async Task UpdateAsync(SecuritySettings section, BuildEditorContext context) + public override async Task UpdateAsync(SecuritySettings section, UpdateEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; diff --git a/src/OrchardCore.Modules/OrchardCore.Seo/Drivers/RobotsSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Seo/Drivers/RobotsSettingsDisplayDriver.cs index 4c3b7967737..c8baf40e490 100644 --- a/src/OrchardCore.Modules/OrchardCore.Seo/Drivers/RobotsSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Seo/Drivers/RobotsSettingsDisplayDriver.cs @@ -60,7 +60,7 @@ public override async Task EditAsync(RobotsSettings settings, Bu .OnGroup(SeoConstants.RobotsSettingsGroupId); } - public override async Task UpdateAsync(RobotsSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(RobotsSettings settings, UpdateEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; diff --git a/src/OrchardCore.Modules/OrchardCore.Seo/Drivers/SeoMetaPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Seo/Drivers/SeoMetaPartDisplayDriver.cs index fe5a65157b3..1551c69d5f8 100644 --- a/src/OrchardCore.Modules/OrchardCore.Seo/Drivers/SeoMetaPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Seo/Drivers/SeoMetaPartDisplayDriver.cs @@ -81,58 +81,57 @@ public override IDisplayResult Edit(SeoMetaPart part, BuildPartEditorContext con public override async Task UpdateAsync(SeoMetaPart part, IUpdateModel updater, UpdatePartEditorContext context) { var partViewModel = new SeoMetaPartViewModel(); - if (await updater.TryUpdateModelAsync(partViewModel, Prefix)) + await updater.TryUpdateModelAsync(partViewModel, Prefix); + + try { - try - { - part.Render = partViewModel.Render; - part.PageTitle = partViewModel.PageTitle; - part.MetaDescription = partViewModel.MetaDescription; - part.MetaKeywords = partViewModel.MetaKeywords; - part.Canonical = partViewModel.Canonical; - part.MetaRobots = partViewModel.MetaRobots; - - part.CustomMetaTags = string.IsNullOrWhiteSpace(partViewModel.CustomMetaTags) - ? [] - : JConvert.DeserializeObject(partViewModel.CustomMetaTags); - - if (part.Canonical?.IndexOfAny(SeoMetaPart.InvalidCharactersForCanoncial) > -1 || part.Canonical?.IndexOf(' ') > -1) - { - updater.ModelState.AddModelError(Prefix, S["The canonical entry contains invalid characters."]); - } - } - catch + part.Render = partViewModel.Render; + part.PageTitle = partViewModel.PageTitle; + part.MetaDescription = partViewModel.MetaDescription; + part.MetaKeywords = partViewModel.MetaKeywords; + part.Canonical = partViewModel.Canonical; + part.MetaRobots = partViewModel.MetaRobots; + + part.CustomMetaTags = string.IsNullOrWhiteSpace(partViewModel.CustomMetaTags) + ? [] + : JConvert.DeserializeObject(partViewModel.CustomMetaTags); + + if (part.Canonical?.IndexOfAny(SeoMetaPart.InvalidCharactersForCanoncial) > -1 || part.Canonical?.IndexOf(' ') > -1) { - updater.ModelState.AddModelError(Prefix, S["The meta entries are written in an incorrect format."]); + updater.ModelState.AddModelError(Prefix, S["The canonical entry contains invalid characters."]); } } - - var openGraphModel = new SeoMetaPartOpenGraphViewModel(); - if (await updater.TryUpdateModelAsync(openGraphModel, Prefix)) + catch { - part.OpenGraphType = openGraphModel.OpenGraphType; - part.OpenGraphTitle = openGraphModel.OpenGraphTitle; - part.OpenGraphDescription = openGraphModel.OpenGraphDescription; + updater.ModelState.AddModelError(Prefix, S["The meta entries are written in an incorrect format."]); } + var openGraphModel = new SeoMetaPartOpenGraphViewModel(); + + await updater.TryUpdateModelAsync(openGraphModel, Prefix); + + part.OpenGraphType = openGraphModel.OpenGraphType; + part.OpenGraphTitle = openGraphModel.OpenGraphTitle; + part.OpenGraphDescription = openGraphModel.OpenGraphDescription; + var twitterModel = new SeoMetaPartTwitterViewModel(); - if (await updater.TryUpdateModelAsync(twitterModel, Prefix)) - { - part.TwitterTitle = twitterModel.TwitterTitle; - part.TwitterDescription = twitterModel.TwitterDescription; - part.TwitterCard = twitterModel.TwitterCard; - part.TwitterCreator = twitterModel.TwitterCreator; - part.TwitterSite = twitterModel.TwitterSite; - } + + await updater.TryUpdateModelAsync(twitterModel, Prefix); + + part.TwitterTitle = twitterModel.TwitterTitle; + part.TwitterDescription = twitterModel.TwitterDescription; + part.TwitterCard = twitterModel.TwitterCard; + part.TwitterCreator = twitterModel.TwitterCreator; + part.TwitterSite = twitterModel.TwitterSite; var googleSchemaModel = new SeoMetaPartGoogleSchemaViewModel(); - if (await updater.TryUpdateModelAsync(googleSchemaModel, Prefix)) + + await updater.TryUpdateModelAsync(googleSchemaModel, Prefix); + + part.GoogleSchema = googleSchemaModel.GoogleSchema; + if (!string.IsNullOrWhiteSpace(googleSchemaModel.GoogleSchema) && !googleSchemaModel.GoogleSchema.IsJson()) { - 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."]); - } + 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.Settings/Drivers/DefaultSiteSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Settings/Drivers/DefaultSiteSettingsDisplayDriver.cs index 88df5d00a27..634cbf46c69 100644 --- a/src/OrchardCore.Modules/OrchardCore.Settings/Drivers/DefaultSiteSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Settings/Drivers/DefaultSiteSettingsDisplayDriver.cs @@ -61,28 +61,27 @@ public override async Task UpdateAsync(ISite site, UpdateEditorC var model = new SiteSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) + await context.Updater.TryUpdateModelAsync(model, Prefix); + + site.SiteName = model.SiteName; + site.PageTitleFormat = model.PageTitleFormat; + site.BaseUrl = model.BaseUrl; + site.TimeZoneId = model.TimeZone; + site.PageSize = model.PageSize.Value; + site.UseCdn = model.UseCdn; + site.CdnBaseUrl = model.CdnBaseUrl; + site.ResourceDebugMode = model.ResourceDebugMode; + site.AppendVersion = model.AppendVersion; + site.CacheMode = model.CacheMode; + + if (model.PageSize.Value < 1) { - site.SiteName = model.SiteName; - site.PageTitleFormat = model.PageTitleFormat; - site.BaseUrl = model.BaseUrl; - site.TimeZoneId = model.TimeZone; - site.PageSize = model.PageSize.Value; - site.UseCdn = model.UseCdn; - site.CdnBaseUrl = model.CdnBaseUrl; - site.ResourceDebugMode = model.ResourceDebugMode; - site.AppendVersion = model.AppendVersion; - site.CacheMode = model.CacheMode; - - if (model.PageSize.Value < 1) - { - context.Updater.ModelState.AddModelError(Prefix, nameof(model.PageSize), S["The page size must be greater than zero."]); - } - - if (site.MaxPageSize > 0 && model.PageSize.Value > site.MaxPageSize) - { - context.Updater.ModelState.AddModelError(Prefix, nameof(model.PageSize), S["The page size must be less than or equal to {0}.", site.MaxPageSize]); - } + context.Updater.ModelState.AddModelError(Prefix, nameof(model.PageSize), S["The page size must be greater than zero."]); + } + + if (site.MaxPageSize > 0 && model.PageSize.Value > site.MaxPageSize) + { + context.Updater.ModelState.AddModelError(Prefix, nameof(model.PageSize), S["The page size must be less than or equal to {0}.", site.MaxPageSize]); } if (!string.IsNullOrEmpty(site.BaseUrl) && !Uri.TryCreate(site.BaseUrl, UriKind.Absolute, out _)) diff --git a/src/OrchardCore.Modules/OrchardCore.Sitemaps/Drivers/CustomPathSitemapSourceDriver.cs b/src/OrchardCore.Modules/OrchardCore.Sitemaps/Drivers/CustomPathSitemapSourceDriver.cs index 76f493b2e5b..420b31184fa 100644 --- a/src/OrchardCore.Modules/OrchardCore.Sitemaps/Drivers/CustomPathSitemapSourceDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Sitemaps/Drivers/CustomPathSitemapSourceDriver.cs @@ -43,29 +43,28 @@ public override async Task UpdateAsync(CustomPathSitemapSource s { var model = new CustomPathSitemapSourceViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, + await context.Updater.TryUpdateModelAsync(model, Prefix, m => m.Path, m => m.Priority, m => m.ChangeFrequency - )) - { - sitemap.Path = model.Path; - sitemap.Priority = model.Priority; - sitemap.ChangeFrequency = model.ChangeFrequency; - sitemap.LastUpdate = DateTime.Now; + ); + + sitemap.Path = model.Path; + sitemap.Priority = model.Priority; + sitemap.ChangeFrequency = model.ChangeFrequency; + sitemap.LastUpdate = DateTime.Now; - if (sitemap.Path?.IndexOfAny(CustomPathSitemapSource.InvalidCharactersForPath) > -1 || sitemap.Path?.IndexOf(' ') > -1 || sitemap.Path?.IndexOf("//") > -1) - { - var invalidCharactersForMessage = string.Join(", ", CustomPathSitemapSource.InvalidCharactersForPath.Select(c => $"\"{c}\"")); - context.Updater.ModelState.AddModelError(Prefix, sitemap.Path, S["Please do not use any of the following characters in your permalink: {0}. No spaces, or consecutive slashes, are allowed (please use dashes or underscores instead).", invalidCharactersForMessage]); - } + if (sitemap.Path?.IndexOfAny(CustomPathSitemapSource.InvalidCharactersForPath) > -1 || sitemap.Path?.IndexOf(' ') > -1 || sitemap.Path?.IndexOf("//") > -1) + { + var invalidCharactersForMessage = string.Join(", ", CustomPathSitemapSource.InvalidCharactersForPath.Select(c => $"\"{c}\"")); + context.Updater.ModelState.AddModelError(Prefix, sitemap.Path, S["Please do not use any of the following characters in your permalink: {0}. No spaces, or consecutive slashes, are allowed (please use dashes or underscores instead).", invalidCharactersForMessage]); + } - if (sitemap.Path?.Length > CustomPathSitemapSource.MaxPathLength) - { - context.Updater.ModelState.AddModelError(Prefix, sitemap.Path, S["Your path is too long. The path can only be up to {0} characters.", CustomPathSitemapSource.MaxPathLength]); - } - }; + if (sitemap.Path?.Length > CustomPathSitemapSource.MaxPathLength) + { + context.Updater.ModelState.AddModelError(Prefix, sitemap.Path, S["Your path is too long. The path can only be up to {0} characters.", CustomPathSitemapSource.MaxPathLength]); + } return Edit(sitemap, context.Updater); } diff --git a/src/OrchardCore.Modules/OrchardCore.Sitemaps/Drivers/SitemapPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Sitemaps/Drivers/SitemapPartDisplayDriver.cs index 37718f67775..6d7641e6383 100644 --- a/src/OrchardCore.Modules/OrchardCore.Sitemaps/Drivers/SitemapPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Sitemaps/Drivers/SitemapPartDisplayDriver.cs @@ -19,19 +19,18 @@ public override async Task UpdateAsync(SitemapPart model, IUpdat { var viewModel = new SitemapPartViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, + await updater.TryUpdateModelAsync(viewModel, Prefix, t => t.OverrideSitemapConfig, t => t.ChangeFrequency, t => t.Exclude, t => t.Priority - )) - { - model.OverrideSitemapConfig = viewModel.OverrideSitemapConfig; - model.ChangeFrequency = viewModel.ChangeFrequency; - model.Exclude = viewModel.Exclude; - model.Priority = viewModel.Priority; - } + ); + + model.OverrideSitemapConfig = viewModel.OverrideSitemapConfig; + model.ChangeFrequency = viewModel.ChangeFrequency; + model.Exclude = viewModel.Exclude; + model.Priority = viewModel.Priority; return Edit(model); } diff --git a/src/OrchardCore.Modules/OrchardCore.Sitemaps/Drivers/SitemapsRobotsSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Sitemaps/Drivers/SitemapsRobotsSettingsDisplayDriver.cs index cbf0954fc02..e48aa37ce63 100644 --- a/src/OrchardCore.Modules/OrchardCore.Sitemaps/Drivers/SitemapsRobotsSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Sitemaps/Drivers/SitemapsRobotsSettingsDisplayDriver.cs @@ -40,7 +40,7 @@ public override async Task EditAsync(SitemapsRobotsSettings sett .OnGroup(SeoConstants.RobotsSettingsGroupId); } - public override async Task UpdateAsync(SitemapsRobotsSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(SitemapsRobotsSettings settings, UpdateEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; diff --git a/src/OrchardCore.Modules/OrchardCore.Sms/Drivers/SmsSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Sms/Drivers/SmsSettingsDisplayDriver.cs index ae34d3f81ec..387546125bd 100644 --- a/src/OrchardCore.Modules/OrchardCore.Sms/Drivers/SmsSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Sms/Drivers/SmsSettingsDisplayDriver.cs @@ -58,7 +58,7 @@ public override IDisplayResult Edit(SmsSettings settings) .RenderWhen(() => _authorizationService.AuthorizeAsync(_httpContextAccessor.HttpContext?.User, SmsPermissions.ManageSmsSettings)) .OnGroup(SmsSettings.GroupId); - public override async Task UpdateAsync(SmsSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(SmsSettings settings, UpdateEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; @@ -70,20 +70,19 @@ public override async Task UpdateAsync(SmsSettings settings, Bui var model = new SmsSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) + await context.Updater.TryUpdateModelAsync(model, Prefix); + + if (string.IsNullOrEmpty(model.DefaultProvider)) { - if (string.IsNullOrEmpty(model.DefaultProvider)) - { - context.Updater.ModelState.AddModelError(Prefix, nameof(model.DefaultProvider), S["You must select a default provider."]); - } - else + context.Updater.ModelState.AddModelError(Prefix, nameof(model.DefaultProvider), S["You must select a default provider."]); + } + else + { + if (settings.DefaultProviderName != model.DefaultProvider) { - if (settings.DefaultProviderName != model.DefaultProvider) - { - settings.DefaultProviderName = model.DefaultProvider; + settings.DefaultProviderName = model.DefaultProvider; - await _shellHost.ReleaseShellContextAsync(_shellSettings); - } + await _shellHost.ReleaseShellContextAsync(_shellSettings); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Sms/Drivers/SmsTaskDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Sms/Drivers/SmsTaskDisplayDriver.cs index 8afef0de028..a0f5748e079 100644 --- a/src/OrchardCore.Modules/OrchardCore.Sms/Drivers/SmsTaskDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Sms/Drivers/SmsTaskDisplayDriver.cs @@ -40,30 +40,29 @@ public async override Task UpdateAsync(SmsTask activity, IUpdate { var viewModel = new SmsTaskViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix)) - { - if (string.IsNullOrWhiteSpace(viewModel.PhoneNumber)) - { - updater.ModelState.AddModelError(Prefix, nameof(viewModel.PhoneNumber), S["Phone number requires a value."]); - } - else if (!_phoneFormatValidator.IsValid(viewModel.PhoneNumber)) - { - updater.ModelState.AddModelError(Prefix, nameof(viewModel.PhoneNumber), S["Invalid phone number used."]); - } + await updater.TryUpdateModelAsync(viewModel, Prefix); - if (string.IsNullOrWhiteSpace(viewModel.Body)) - { - updater.ModelState.AddModelError(Prefix, nameof(viewModel.Body), S["Message Body requires a value."]); - } - else if (!_liquidTemplateManager.Validate(viewModel.Body, out var bodyErrors)) - { - updater.ModelState.AddModelError(Prefix, nameof(viewModel.Body), string.Join(' ', bodyErrors)); - } + if (string.IsNullOrWhiteSpace(viewModel.PhoneNumber)) + { + updater.ModelState.AddModelError(Prefix, nameof(viewModel.PhoneNumber), S["Phone number requires a value."]); + } + else if (!_phoneFormatValidator.IsValid(viewModel.PhoneNumber)) + { + updater.ModelState.AddModelError(Prefix, nameof(viewModel.PhoneNumber), S["Invalid phone number used."]); + } - activity.PhoneNumber = new WorkflowExpression(viewModel.PhoneNumber); - activity.Body = new WorkflowExpression(viewModel.Body); + if (string.IsNullOrWhiteSpace(viewModel.Body)) + { + updater.ModelState.AddModelError(Prefix, nameof(viewModel.Body), S["Message Body requires a value."]); + } + else if (!_liquidTemplateManager.Validate(viewModel.Body, out var bodyErrors)) + { + updater.ModelState.AddModelError(Prefix, nameof(viewModel.Body), string.Join(' ', bodyErrors)); } + activity.PhoneNumber = new WorkflowExpression(viewModel.PhoneNumber); + activity.Body = new WorkflowExpression(viewModel.Body); + return Edit(activity); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Sms/Drivers/TwilioSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Sms/Drivers/TwilioSettingsDisplayDriver.cs index ec6c7836d7b..35cc4082bab 100644 --- a/src/OrchardCore.Modules/OrchardCore.Sms/Drivers/TwilioSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Sms/Drivers/TwilioSettingsDisplayDriver.cs @@ -69,7 +69,7 @@ public override IDisplayResult Edit(TwilioSettings settings) .OnGroup(SmsSettings.GroupId); } - public override async Task UpdateAsync(ISite site, TwilioSettings settings, IUpdateModel updater, BuildEditorContext context) + public override async Task UpdateAsync(ISite site, TwilioSettings settings, IUpdateModel updater, UpdateEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; @@ -81,72 +81,70 @@ public override async Task UpdateAsync(ISite site, TwilioSetting var model = new TwilioSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) + await context.Updater.TryUpdateModelAsync(model, Prefix); + var hasChanges = settings.IsEnabled != model.IsEnabled; + + if (!model.IsEnabled) { - var hasChanges = settings.IsEnabled != model.IsEnabled; + var smsSettings = site.As(); - if (!model.IsEnabled) + if (hasChanges && smsSettings.DefaultProviderName == TwilioSmsProvider.TechnicalName) { - var smsSettings = site.As(); + await _notifier.WarningAsync(H["You have successfully disabled the default SMS provider. The SMS service is now disable and will remain disabled until you designate a new default provider."]); + + smsSettings.DefaultProviderName = null; - if (hasChanges && smsSettings.DefaultProviderName == TwilioSmsProvider.TechnicalName) - { - await _notifier.WarningAsync(H["You have successfully disabled the default SMS provider. The SMS service is now disable and will remain disabled until you designate a new default provider."]); + site.Put(smsSettings); + } - smsSettings.DefaultProviderName = null; + settings.IsEnabled = false; + } + else + { + settings.IsEnabled = true; - site.Put(smsSettings); - } + if (string.IsNullOrWhiteSpace(model.PhoneNumber)) + { + context.Updater.ModelState.AddModelError(Prefix, nameof(model.PhoneNumber), S["Phone number requires a value."]); + } + else if (!_phoneFormatValidator.IsValid(model.PhoneNumber)) + { + context.Updater.ModelState.AddModelError(Prefix, nameof(model.PhoneNumber), S["Please provide a valid phone number."]); + } - settings.IsEnabled = false; + if (string.IsNullOrWhiteSpace(model.AccountSID)) + { + context.Updater.ModelState.AddModelError(Prefix, nameof(model.AccountSID), S["Account SID requires a value."]); } - else + + if (settings.AuthToken == null && string.IsNullOrWhiteSpace(model.AuthToken)) { - settings.IsEnabled = true; - - if (string.IsNullOrWhiteSpace(model.PhoneNumber)) - { - context.Updater.ModelState.AddModelError(Prefix, nameof(model.PhoneNumber), S["Phone number requires a value."]); - } - else if (!_phoneFormatValidator.IsValid(model.PhoneNumber)) - { - context.Updater.ModelState.AddModelError(Prefix, nameof(model.PhoneNumber), S["Please provide a valid phone number."]); - } - - if (string.IsNullOrWhiteSpace(model.AccountSID)) - { - context.Updater.ModelState.AddModelError(Prefix, nameof(model.AccountSID), S["Account SID requires a value."]); - } - - if (settings.AuthToken == null && string.IsNullOrWhiteSpace(model.AuthToken)) - { - context.Updater.ModelState.AddModelError(Prefix, nameof(model.AuthToken), S["Auth Token required a value."]); - } - - // Has change should be evaluated before updating the value. - hasChanges |= settings.PhoneNumber != model.PhoneNumber; - hasChanges |= settings.AccountSID != model.AccountSID; - - settings.PhoneNumber = model.PhoneNumber; - settings.AccountSID = model.AccountSID; - - if (!string.IsNullOrWhiteSpace(model.AuthToken)) - { - var protector = _dataProtectionProvider.CreateProtector(TwilioSmsProvider.ProtectorName); - - var protectedToken = protector.Protect(model.AuthToken); - hasChanges |= settings.AuthToken != protectedToken; - - settings.AuthToken = protectedToken; - } + context.Updater.ModelState.AddModelError(Prefix, nameof(model.AuthToken), S["Auth Token required a value."]); } - if (context.Updater.ModelState.IsValid && hasChanges) + // Has change should be evaluated before updating the value. + hasChanges |= settings.PhoneNumber != model.PhoneNumber; + hasChanges |= settings.AccountSID != model.AccountSID; + + settings.PhoneNumber = model.PhoneNumber; + settings.AccountSID = model.AccountSID; + + if (!string.IsNullOrWhiteSpace(model.AuthToken)) { - await _shellHost.ReleaseShellContextAsync(_shellSettings); + var protector = _dataProtectionProvider.CreateProtector(TwilioSmsProvider.ProtectorName); + + var protectedToken = protector.Protect(model.AuthToken); + hasChanges |= settings.AuthToken != protectedToken; + + settings.AuthToken = protectedToken; } } + if (context.Updater.ModelState.IsValid && hasChanges) + { + await _shellHost.ReleaseShellContextAsync(_shellSettings); + } + return Edit(settings); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyContentsAdminListDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyContentsAdminListDisplayDriver.cs index 4e3cb88a468..240518005cc 100644 --- a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyContentsAdminListDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyContentsAdminListDisplayDriver.cs @@ -121,12 +121,11 @@ public override async Task UpdateAsync(ContentOptionsViewModel m foreach (var contentItemId in settings.TaxonomyContentItemIds) { var viewModel = new TaxonomyContentsAdminFilterViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, "Taxonomy" + contentItemId)) + await updater.TryUpdateModelAsync(viewModel, "Taxonomy" + contentItemId); + + if (!string.IsNullOrEmpty(viewModel.SelectedContentItemId)) { - if (!string.IsNullOrEmpty(viewModel.SelectedContentItemId)) - { - model.RouteValues.TryAdd("Taxonomy" + contentItemId + ".SelectedContentItemId", viewModel.SelectedContentItemId); - } + model.RouteValues.TryAdd("Taxonomy" + contentItemId + ".SelectedContentItemId", viewModel.SelectedContentItemId); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyFieldDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyFieldDisplayDriver.cs index 1f43702fc63..671ca8307c8 100644 --- a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyFieldDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyFieldDisplayDriver.cs @@ -66,24 +66,23 @@ public override async Task UpdateAsync(TaxonomyField field, IUpd { var model = new EditTaxonomyFieldViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix)) - { - var settings = context.PartFieldDefinition.GetSettings(); + await updater.TryUpdateModelAsync(model, Prefix); - field.TaxonomyContentItemId = settings.TaxonomyContentItemId; - field.TermContentItemIds = model.TermEntries.Where(x => x.Selected).Select(x => x.ContentItemId).ToArray(); + var settings = context.PartFieldDefinition.GetSettings(); - if (settings.Unique && !string.IsNullOrEmpty(model.UniqueValue)) - { - field.TermContentItemIds = [model.UniqueValue]; - } + field.TaxonomyContentItemId = settings.TaxonomyContentItemId; + field.TermContentItemIds = model.TermEntries.Where(x => x.Selected).Select(x => x.ContentItemId).ToArray(); - if (settings.Required && field.TermContentItemIds.Length == 0) - { - updater.ModelState.AddModelError( - nameof(EditTaxonomyFieldViewModel.TermEntries), - S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); - } + if (settings.Unique && !string.IsNullOrEmpty(model.UniqueValue)) + { + field.TermContentItemIds = [model.UniqueValue]; + } + + if (settings.Required && field.TermContentItemIds.Length == 0) + { + updater.ModelState.AddModelError( + nameof(EditTaxonomyFieldViewModel.TermEntries), + S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); } return Edit(field, context); diff --git a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyFieldTagsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyFieldTagsDisplayDriver.cs index fc36306bead..b7ed252a386 100644 --- a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyFieldTagsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyFieldTagsDisplayDriver.cs @@ -76,44 +76,43 @@ public override async Task UpdateAsync(TaxonomyField field, IUpd { var model = new EditTagTaxonomyFieldViewModel(); - if (await updater.TryUpdateModelAsync(model, Prefix, f => f.TermContentItemIds)) - { - var settings = context.PartFieldDefinition.GetSettings(); + await updater.TryUpdateModelAsync(model, Prefix, f => f.TermContentItemIds); - field.TaxonomyContentItemId = settings.TaxonomyContentItemId; + var settings = context.PartFieldDefinition.GetSettings(); - field.TermContentItemIds = model.TermContentItemIds == null - ? [] : model.TermContentItemIds.Split(',', StringSplitOptions.RemoveEmptyEntries); + field.TaxonomyContentItemId = settings.TaxonomyContentItemId; - if (settings.Required && field.TermContentItemIds.Length == 0) - { - updater.ModelState.AddModelError( - nameof(EditTagTaxonomyFieldViewModel.TermContentItemIds), - S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); - } + field.TermContentItemIds = model.TermContentItemIds == null + ? [] : model.TermContentItemIds.Split(',', StringSplitOptions.RemoveEmptyEntries); - // Update display text for tags. - var taxonomy = await _contentManager.GetAsync(settings.TaxonomyContentItemId, VersionOptions.Latest); + if (settings.Required && field.TermContentItemIds.Length == 0) + { + updater.ModelState.AddModelError( + nameof(EditTagTaxonomyFieldViewModel.TermContentItemIds), + S["A value is required for {0}.", context.PartFieldDefinition.DisplayName()]); + } - if (taxonomy == null) - { - return null; - } + // Update display text for tags. + var taxonomy = await _contentManager.GetAsync(settings.TaxonomyContentItemId, VersionOptions.Latest); - var terms = new List(); + if (taxonomy == null) + { + return null; + } - foreach (var termContentItemId in field.TermContentItemIds) - { - var term = TaxonomyOrchardHelperExtensions.FindTerm( - (JsonArray)taxonomy.Content["TaxonomyPart"]["Terms"], - termContentItemId); + var terms = new List(); - terms.Add(term); - } + foreach (var termContentItemId in field.TermContentItemIds) + { + var term = TaxonomyOrchardHelperExtensions.FindTerm( + (JsonArray)taxonomy.Content["TaxonomyPart"]["Terms"], + termContentItemId); - field.SetTagNames(terms.Select(t => t.DisplayText).ToArray()); + terms.Add(term); } + field.SetTagNames(terms.Select(t => t.DisplayText).ToArray()); + return Edit(field, context); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyPartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyPartDisplayDriver.cs index df668d7331f..febcb104770 100644 --- a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyPartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Drivers/TaxonomyPartDisplayDriver.cs @@ -48,32 +48,31 @@ public override async Task UpdateAsync(TaxonomyPart part, IUpdat { var model = new TaxonomyPartEditViewModel(); - if (await 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."]); - } + await updater.TryUpdateModelAsync(model, Prefix, t => t.Hierarchy, t => t.TermContentType); - if (!string.IsNullOrWhiteSpace(model.Hierarchy)) - { - var originalTaxonomyItems = part.ContentItem.As(); + if (string.IsNullOrWhiteSpace(model.TermContentType)) + { + updater.ModelState.AddModelError(Prefix, nameof(model.TermContentType), S["The Term Content Type field is required."]); + } - var newHierarchy = JsonNode.Parse(model.Hierarchy).AsArray(); + if (!string.IsNullOrWhiteSpace(model.Hierarchy)) + { + var originalTaxonomyItems = part.ContentItem.As(); - var taxonomyItems = new JsonArray(); + var newHierarchy = JsonNode.Parse(model.Hierarchy).AsArray(); - foreach (var item in newHierarchy) - { - taxonomyItems.Add(ProcessItem(originalTaxonomyItems, item as JsonObject)); - } + var taxonomyItems = new JsonArray(); - part.Terms = taxonomyItems.ToObject>(); + foreach (var item in newHierarchy) + { + taxonomyItems.Add(ProcessItem(originalTaxonomyItems, item as JsonObject)); } - part.TermContentType = model.TermContentType; + part.Terms = taxonomyItems.ToObject>(); } + part.TermContentType = model.TermContentType; + return Edit(part); } diff --git a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Services/TaxonomyContentsAdminListFilter.cs b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Services/TaxonomyContentsAdminListFilter.cs index d96284818ad..c1760a77678 100644 --- a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Services/TaxonomyContentsAdminListFilter.cs +++ b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Services/TaxonomyContentsAdminListFilter.cs @@ -30,25 +30,24 @@ public async Task FilterAsync(ContentOptionsViewModel model, IQuery foreach (var contentItemId in settings.TaxonomyContentItemIds) { var viewModel = new TaxonomyContentsAdminFilterViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, "Taxonomy" + contentItemId)) + await updater.TryUpdateModelAsync(viewModel, "Taxonomy" + contentItemId); + + // Show all items categorized by the taxonomy + if (!string.IsNullOrEmpty(viewModel.SelectedContentItemId)) { - // Show all items categorized by the taxonomy - if (!string.IsNullOrEmpty(viewModel.SelectedContentItemId)) + if (viewModel.SelectedContentItemId.StartsWith("Taxonomy:", StringComparison.OrdinalIgnoreCase)) + { + viewModel.SelectedContentItemId = viewModel.SelectedContentItemId[9..]; + query.All( + x => query.With(x => x.TaxonomyContentItemId == viewModel.SelectedContentItemId) + ); + } + else if (viewModel.SelectedContentItemId.StartsWith("Term:", StringComparison.OrdinalIgnoreCase)) { - if (viewModel.SelectedContentItemId.StartsWith("Taxonomy:", StringComparison.OrdinalIgnoreCase)) - { - viewModel.SelectedContentItemId = viewModel.SelectedContentItemId[9..]; - query.All( - x => query.With(x => x.TaxonomyContentItemId == viewModel.SelectedContentItemId) - ); - } - else if (viewModel.SelectedContentItemId.StartsWith("Term:", StringComparison.OrdinalIgnoreCase)) - { - viewModel.SelectedContentItemId = viewModel.SelectedContentItemId[5..]; - query.All( - x => query.With(x => x.TermContentItemId == viewModel.SelectedContentItemId) - ); - } + viewModel.SelectedContentItemId = viewModel.SelectedContentItemId[5..]; + query.All( + x => query.With(x => x.TermContentItemId == viewModel.SelectedContentItemId) + ); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Settings/TaxonomyContentsAdminListSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Settings/TaxonomyContentsAdminListSettingsDisplayDriver.cs index 34a69553ef9..da0fcc509a3 100644 --- a/src/OrchardCore.Modules/OrchardCore.Taxonomies/Settings/TaxonomyContentsAdminListSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Taxonomies/Settings/TaxonomyContentsAdminListSettingsDisplayDriver.cs @@ -55,16 +55,15 @@ public override async Task EditAsync(TaxonomyContentsAdminListSe }).Location("Content:2").OnGroup(GroupId); } - public override async Task UpdateAsync(TaxonomyContentsAdminListSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(TaxonomyContentsAdminListSettings settings, UpdateEditorContext context) { if (context.GroupId == GroupId) { var model = new TaxonomyContentsAdminListSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) - { - settings.TaxonomyContentItemIds = model.TaxonomyEntries.Where(e => e.IsChecked).Select(e => e.ContentItemId).ToArray(); - } + await context.Updater.TryUpdateModelAsync(model, Prefix); + + settings.TaxonomyContentItemIds = model.TaxonomyEntries.Where(e => e.IsChecked).Select(e => e.ContentItemId).ToArray(); } return await EditAsync(settings, context); diff --git a/src/OrchardCore.Modules/OrchardCore.Title/Drivers/TitlePartDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Title/Drivers/TitlePartDisplayDriver.cs index 9087cfac5c4..c129bbdd360 100644 --- a/src/OrchardCore.Modules/OrchardCore.Title/Drivers/TitlePartDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Title/Drivers/TitlePartDisplayDriver.cs @@ -51,17 +51,16 @@ public override IDisplayResult Edit(TitlePart titlePart, BuildPartEditorContext public override async Task UpdateAsync(TitlePart model, IUpdateModel updater, UpdatePartEditorContext context) { - if (await updater.TryUpdateModelAsync(model, Prefix, t => t.Title)) + await 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."]); + } + else { - 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."]); - } - else - { - model.ContentItem.DisplayText = model.Title; - } + model.ContentItem.DisplayText = model.Title; } return Edit(model, context); diff --git a/src/OrchardCore.Modules/OrchardCore.Twitter/Drivers/TwitterSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Twitter/Drivers/TwitterSettingsDisplayDriver.cs index 431cc0d744f..bb768c59d54 100644 --- a/src/OrchardCore.Modules/OrchardCore.Twitter/Drivers/TwitterSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Twitter/Drivers/TwitterSettingsDisplayDriver.cs @@ -91,7 +91,7 @@ public override async Task EditAsync(TwitterSettings settings, B }).Location("Content:5").OnGroup(TwitterConstants.Features.Twitter); } - public override async Task UpdateAsync(TwitterSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(TwitterSettings settings, UpdateEditorContext context) { if (context.GroupId == TwitterConstants.Features.Twitter) { diff --git a/src/OrchardCore.Modules/OrchardCore.Twitter/Signin/Drivers/TwitterSigninSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Twitter/Signin/Drivers/TwitterSigninSettingsDisplayDriver.cs index e1ac716337d..467b16bf3c0 100644 --- a/src/OrchardCore.Modules/OrchardCore.Twitter/Signin/Drivers/TwitterSigninSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Twitter/Signin/Drivers/TwitterSigninSettingsDisplayDriver.cs @@ -48,7 +48,7 @@ public override async Task EditAsync(TwitterSigninSettings setti }).Location("Content:5").OnGroup(TwitterConstants.Features.Signin); } - public override async Task UpdateAsync(TwitterSigninSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(TwitterSigninSettings settings, UpdateEditorContext context) { if (context.GroupId == TwitterConstants.Features.Signin) { diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/AuthenticatorAppLoginSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/AuthenticatorAppLoginSettingsDisplayDriver.cs index 124d73790bf..50f180d322f 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/AuthenticatorAppLoginSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/AuthenticatorAppLoginSettingsDisplayDriver.cs @@ -33,7 +33,7 @@ public override IDisplayResult Edit(AuthenticatorAppLoginSettings settings) .OnGroup(LoginSettingsDisplayDriver.GroupId); } - public override async Task UpdateAsync(AuthenticatorAppLoginSettings section, BuildEditorContext context) + public override async Task UpdateAsync(AuthenticatorAppLoginSettings section, UpdateEditorContext context) { if (!context.GroupId.Equals(LoginSettingsDisplayDriver.GroupId, StringComparison.OrdinalIgnoreCase) || !await _authorizationService.AuthorizeAsync(_httpContextAccessor.HttpContext?.User, CommonPermissions.ManageUsers)) diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/ChangeEmailSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/ChangeEmailSettingsDisplayDriver.cs index 43111693731..4f44c0e58be 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/ChangeEmailSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/ChangeEmailSettingsDisplayDriver.cs @@ -40,7 +40,7 @@ public override async Task EditAsync(ChangeEmailSettings setting }).Location("Content:5").OnGroup(GroupId); } - public override async Task UpdateAsync(ChangeEmailSettings section, BuildEditorContext context) + public override async Task UpdateAsync(ChangeEmailSettings section, UpdateEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/EmailAuthenticatorLoginSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/EmailAuthenticatorLoginSettingsDisplayDriver.cs index 4e7e366b831..8ffb7c8316a 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/EmailAuthenticatorLoginSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/EmailAuthenticatorLoginSettingsDisplayDriver.cs @@ -40,7 +40,7 @@ public override IDisplayResult Edit(EmailAuthenticatorLoginSettings settings) .OnGroup(LoginSettingsDisplayDriver.GroupId); } - public override async Task UpdateAsync(EmailAuthenticatorLoginSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(EmailAuthenticatorLoginSettings settings, UpdateEditorContext context) { if (!context.GroupId.Equals(LoginSettingsDisplayDriver.GroupId, StringComparison.OrdinalIgnoreCase) || !await _authorizationService.AuthorizeAsync(_httpContextAccessor.HttpContext?.User, CommonPermissions.ManageUsers)) diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/LoginSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/LoginSettingsDisplayDriver.cs index 2be02b5d23a..f799eb8737e 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/LoginSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/LoginSettingsDisplayDriver.cs @@ -42,7 +42,7 @@ public override IDisplayResult Edit(LoginSettings settings) .OnGroup(GroupId); } - public override async Task UpdateAsync(LoginSettings section, BuildEditorContext context) + public override async Task UpdateAsync(LoginSettings section, UpdateEditorContext context) { if (!context.GroupId.Equals(GroupId, StringComparison.OrdinalIgnoreCase) || !await _authorizationService.AuthorizeAsync(_httpContextAccessor.HttpContext?.User, CommonPermissions.ManageUsers)) diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/RegistrationSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/RegistrationSettingsDisplayDriver.cs index 65b0f06cb26..a585df302ee 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/RegistrationSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/RegistrationSettingsDisplayDriver.cs @@ -48,7 +48,7 @@ public override async Task EditAsync(RegistrationSettings settin }).Location("Content:5").OnGroup(GroupId); } - public override async Task UpdateAsync(RegistrationSettings section, BuildEditorContext context) + public override async Task UpdateAsync(RegistrationSettings section, UpdateEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/ResetPasswordSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/ResetPasswordSettingsDisplayDriver.cs index 805e3695f68..90432d427ee 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/ResetPasswordSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/ResetPasswordSettingsDisplayDriver.cs @@ -42,7 +42,7 @@ public override async Task EditAsync(ResetPasswordSettings setti }).Location("Content:5").OnGroup(GroupId); } - public override async Task UpdateAsync(ResetPasswordSettings section, BuildEditorContext context) + public override async Task UpdateAsync(ResetPasswordSettings section, UpdateEditorContext context) { var user = _httpContextAccessor.HttpContext?.User; diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/RoleLoginSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/RoleLoginSettingsDisplayDriver.cs index 24cc8b2ff7f..e2bd80e9991 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/RoleLoginSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/RoleLoginSettingsDisplayDriver.cs @@ -52,7 +52,7 @@ public override IDisplayResult Edit(RoleLoginSettings settings) .OnGroup(LoginSettingsDisplayDriver.GroupId); } - public override async Task UpdateAsync(RoleLoginSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(RoleLoginSettings settings, UpdateEditorContext context) { if (!context.GroupId.Equals(LoginSettingsDisplayDriver.GroupId, StringComparison.OrdinalIgnoreCase) || !await _authorizationService.AuthorizeAsync(_httpContextAccessor.HttpContext?.User, CommonPermissions.ManageUsers)) diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/SmsAuthenticatorLoginSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/SmsAuthenticatorLoginSettingsDisplayDriver.cs index e614b2acf23..0328ac389e3 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/SmsAuthenticatorLoginSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/SmsAuthenticatorLoginSettingsDisplayDriver.cs @@ -41,7 +41,7 @@ public override IDisplayResult Edit(SmsAuthenticatorLoginSettings settings) .OnGroup(LoginSettingsDisplayDriver.GroupId); } - public override async Task UpdateAsync(SmsAuthenticatorLoginSettings settings, BuildEditorContext context) + public override async Task UpdateAsync(SmsAuthenticatorLoginSettings settings, UpdateEditorContext context) { if (!context.GroupId.Equals(LoginSettingsDisplayDriver.GroupId, StringComparison.OrdinalIgnoreCase) || !await _authorizationService.AuthorizeAsync(_httpContextAccessor.HttpContext?.User, CommonPermissions.ManageUsers)) diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/TwoFactorLoginSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/TwoFactorLoginSettingsDisplayDriver.cs index 27f53a1d4e4..7bcd53d5027 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/TwoFactorLoginSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/TwoFactorLoginSettingsDisplayDriver.cs @@ -40,7 +40,7 @@ public override IDisplayResult Edit(TwoFactorLoginSettings settings) .OnGroup(LoginSettingsDisplayDriver.GroupId); } - public override async Task UpdateAsync(TwoFactorLoginSettings section, BuildEditorContext context) + public override async Task UpdateAsync(TwoFactorLoginSettings section, UpdateEditorContext context) { if (!context.GroupId.Equals(LoginSettingsDisplayDriver.GroupId, StringComparison.OrdinalIgnoreCase) || !await _authorizationService.AuthorizeAsync(_httpContextAccessor.HttpContext?.User, CommonPermissions.ManageUsers)) diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/UserInformationDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/UserInformationDisplayDriver.cs index 5046d74887b..b93fcace0ff 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/UserInformationDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/UserInformationDisplayDriver.cs @@ -92,26 +92,23 @@ public override async Task UpdateAsync(User user, UpdateEditorCo if (context.IsNew) { - if (await context.Updater.TryUpdateModelAsync(userNameModel, Prefix)) - { - user.UserName = userNameModel.UserName; - } + await context.Updater.TryUpdateModelAsync(userNameModel, Prefix); + + user.UserName = userNameModel.UserName; + + await context.Updater.TryUpdateModelAsync(emailModel, Prefix); + + user.Email = emailModel.Email; + + await context.Updater.TryUpdateModelAsync(phoneNumberModel, Prefix); - if (await context.Updater.TryUpdateModelAsync(emailModel, Prefix)) + if (!string.IsNullOrEmpty(phoneNumberModel.PhoneNumber) && !_phoneFormatValidator.IsValid(phoneNumberModel.PhoneNumber)) { - user.Email = emailModel.Email; + context.Updater.ModelState.AddModelError(Prefix, nameof(phoneNumberModel.PhoneNumber), S["Please provide a valid phone number."]); } - - if (await context.Updater.TryUpdateModelAsync(phoneNumberModel, Prefix)) + else { - if (!string.IsNullOrEmpty(phoneNumberModel.PhoneNumber) && !_phoneFormatValidator.IsValid(phoneNumberModel.PhoneNumber)) - { - context.Updater.ModelState.AddModelError(Prefix, nameof(phoneNumberModel.PhoneNumber), S["Please provide a valid phone number."]); - } - else - { - user.PhoneNumber = phoneNumberModel.PhoneNumber; - } + user.PhoneNumber = phoneNumberModel.PhoneNumber; } } else diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/UserRoleDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/UserRoleDisplayDriver.cs index 87e70d36100..4a38923d9a1 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Drivers/UserRoleDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Drivers/UserRoleDisplayDriver.cs @@ -103,68 +103,68 @@ public override async Task UpdateAsync(User user, UpdateEditorCo var model = new EditUserRoleViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) - { + await context.Updater.TryUpdateModelAsync(model, Prefix); + + var roles = await GetRoleAsync(); - // Authorize each role in the model to prevent html injection. - var accessibleRoleNames = await GetAccessibleRoleNamesAsync(roles); - var currentUserRoleNames = await _userRoleStore.GetRolesAsync(user, default); + // Authorize each role in the model to prevent html injection. + var accessibleRoleNames = await GetAccessibleRoleNamesAsync(roles); + var currentUserRoleNames = await _userRoleStore.GetRolesAsync(user, default); - var selectedRoleNames = model.Roles.Where(x => x.IsSelected).Select(x => x.Role); - var selectedRoles = roles.Where(x => selectedRoleNames.Contains(x.RoleName, StringComparer.OrdinalIgnoreCase)); - var accessibleAndSelectedRoleNames = await GetAccessibleRoleNamesAsync(selectedRoles); + var selectedRoleNames = model.Roles.Where(x => x.IsSelected).Select(x => x.Role); + var selectedRoles = roles.Where(x => selectedRoleNames.Contains(x.RoleName, StringComparer.OrdinalIgnoreCase)); + var accessibleAndSelectedRoleNames = await GetAccessibleRoleNamesAsync(selectedRoles); - if (context.IsNew) + if (context.IsNew) + { + // Only add authorized new roles. + foreach (var role in accessibleAndSelectedRoleNames) { - // Only add authorized new roles. - foreach (var role in accessibleAndSelectedRoleNames) - { - await _userRoleStore.AddToRoleAsync(user, _userManager.NormalizeName(role), default); - } + await _userRoleStore.AddToRoleAsync(user, _userManager.NormalizeName(role), default); } - else + } + else + { + // Remove roles in two steps to prevent an iteration on a modified collection. + var rolesToRemove = new List(); + foreach (var role in currentUserRoleNames) { - // Remove roles in two steps to prevent an iteration on a modified collection. - var rolesToRemove = new List(); - foreach (var role in currentUserRoleNames) + // When the user has permission to manage the role and it is no longer selected the role can be removed. + if (accessibleRoleNames.Contains(role, StringComparer.OrdinalIgnoreCase) + && !accessibleAndSelectedRoleNames.Contains(role, StringComparer.OrdinalIgnoreCase)) { - // When the user has permission to manage the role and it is no longer selected the role can be removed. - if (accessibleRoleNames.Contains(role, StringComparer.OrdinalIgnoreCase) - && !accessibleAndSelectedRoleNames.Contains(role, StringComparer.OrdinalIgnoreCase)) - { - rolesToRemove.Add(role); - } + rolesToRemove.Add(role); } + } - foreach (var role in rolesToRemove) + foreach (var role in rolesToRemove) + { + if (string.Equals(role, OrchardCoreConstants.Roles.Administrator, StringComparison.OrdinalIgnoreCase)) { - if (string.Equals(role, OrchardCoreConstants.Roles.Administrator, StringComparison.OrdinalIgnoreCase)) + var enabledUsersOfAdminRole = (await _userManager.GetUsersInRoleAsync(OrchardCoreConstants.Roles.Administrator)) + .Cast() + .Where(user => user.IsEnabled) + .ToList(); + + // Make sure we always have at least one enabled administrator account. + if (enabledUsersOfAdminRole.Count == 1 && user.UserId == enabledUsersOfAdminRole.First().UserId) { - var enabledUsersOfAdminRole = (await _userManager.GetUsersInRoleAsync(OrchardCoreConstants.Roles.Administrator)) - .Cast() - .Where(user => user.IsEnabled) - .ToList(); - - // Make sure we always have at least one enabled administrator account. - if (enabledUsersOfAdminRole.Count == 1 && user.UserId == enabledUsersOfAdminRole.First().UserId) - { - await _notifier.WarningAsync(H[$"Cannot remove {OrchardCoreConstants.Roles.Administrator} role from the only enabled administrator."]); - - continue; - } - } + await _notifier.WarningAsync(H[$"Cannot remove {OrchardCoreConstants.Roles.Administrator} role from the only enabled administrator."]); - await _userRoleStore.RemoveFromRoleAsync(user, _userManager.NormalizeName(role), default); + continue; + } } - // Add new roles. - foreach (var role in accessibleAndSelectedRoleNames) + await _userRoleStore.RemoveFromRoleAsync(user, _userManager.NormalizeName(role), default); + } + + // Add new roles. + foreach (var role in accessibleAndSelectedRoleNames) + { + var normalizedName = _userManager.NormalizeName(role); + if (!await _userRoleStore.IsInRoleAsync(user, normalizedName, default)) { - var normalizedName = _userManager.NormalizeName(role); - if (!await _userRoleStore.IsInRoleAsync(user, normalizedName, default)) - { - await _userRoleStore.AddToRoleAsync(user, normalizedName, default); - } + await _userRoleStore.AddToRoleAsync(user, normalizedName, default); } } } diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Localization/Drivers/UserLocalizationDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Users/Localization/Drivers/UserLocalizationDisplayDriver.cs index 3f849bdf7cc..848922abd23 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Localization/Drivers/UserLocalizationDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Localization/Drivers/UserLocalizationDisplayDriver.cs @@ -54,14 +54,13 @@ public override Task EditAsync(UserLocalizationSettings section, }).Location("Content:2")); } - public override async Task UpdateAsync(User model, UserLocalizationSettings section, IUpdateModel updater, BuildEditorContext context) + public override async Task UpdateAsync(User model, UserLocalizationSettings section, IUpdateModel updater, UpdateEditorContext context) { var viewModel = new UserLocalizationViewModel(); - if (await context.Updater.TryUpdateModelAsync(viewModel, Prefix)) - { - section.Culture = viewModel.SelectedCulture; - } + await context.Updater.TryUpdateModelAsync(viewModel, Prefix); + + section.Culture = viewModel.SelectedCulture; return await EditAsync(section, context); } diff --git a/src/OrchardCore.Modules/OrchardCore.Users/TimeZone/Drivers/UserTimeZoneDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Users/TimeZone/Drivers/UserTimeZoneDisplayDriver.cs index f4a0436697c..c89d5d592dd 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/TimeZone/Drivers/UserTimeZoneDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/TimeZone/Drivers/UserTimeZoneDisplayDriver.cs @@ -35,18 +35,16 @@ public override async Task UpdateAsync( User user, UserTimeZone userTimeZone, IUpdateModel updater, - BuildEditorContext context + UpdateEditorContext context ) { var model = new UserTimeZoneViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix)) - { - userTimeZone.TimeZoneId = model.TimeZoneId; + await context.Updater.TryUpdateModelAsync(model, Prefix); + userTimeZone.TimeZoneId = model.TimeZoneId; - // Remove the cache entry, don't update it, as the form might still fail validation for other reasons. - await _userTimeZoneService.UpdateUserTimeZoneAsync(user); - } + // Remove the cache entry, don't update it, as the form might still fail validation for other reasons. + await _userTimeZoneService.UpdateUserTimeZoneAsync(user); return await EditAsync(userTimeZone, context); } diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Workflows/Drivers/RegisterUserTaskDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Users/Workflows/Drivers/RegisterUserTaskDisplayDriver.cs index c8122f1d794..9ec7cfb25ba 100644 --- a/src/OrchardCore.Modules/OrchardCore.Users/Workflows/Drivers/RegisterUserTaskDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Users/Workflows/Drivers/RegisterUserTaskDisplayDriver.cs @@ -30,24 +30,23 @@ protected override void EditActivity(RegisterUserTask activity, RegisterUserTask public async override Task UpdateAsync(RegisterUserTask model, IUpdateModel updater) { var viewModel = new RegisterUserTaskViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix)) + await updater.TryUpdateModelAsync(viewModel, Prefix); + + model.SendConfirmationEmail = viewModel.SendConfirmationEmail; + model.RequireModeration = viewModel.RequireModeration; + model.ConfirmationEmailSubject = new WorkflowExpression(viewModel.ConfirmationEmailSubject); + model.ConfirmationEmailTemplate = new WorkflowExpression(viewModel.ConfirmationEmailTemplate); + + if (model.SendConfirmationEmail) { - model.SendConfirmationEmail = viewModel.SendConfirmationEmail; - model.RequireModeration = viewModel.RequireModeration; - model.ConfirmationEmailSubject = new WorkflowExpression(viewModel.ConfirmationEmailSubject); - model.ConfirmationEmailTemplate = new WorkflowExpression(viewModel.ConfirmationEmailTemplate); + if (string.IsNullOrWhiteSpace(viewModel.ConfirmationEmailSubject)) + { + updater.ModelState.AddModelError(Prefix, nameof(viewModel.ConfirmationEmailSubject), S["A value is required for {0}.", nameof(viewModel.ConfirmationEmailSubject)]); + } - if (model.SendConfirmationEmail) + if (string.IsNullOrWhiteSpace(viewModel.ConfirmationEmailTemplate)) { - if (string.IsNullOrWhiteSpace(viewModel.ConfirmationEmailSubject)) - { - updater.ModelState.AddModelError(Prefix, nameof(viewModel.ConfirmationEmailSubject), S["A value is required for {0}.", nameof(viewModel.ConfirmationEmailSubject)]); - } - - if (string.IsNullOrWhiteSpace(viewModel.ConfirmationEmailTemplate)) - { - updater.ModelState.AddModelError(Prefix, nameof(viewModel.ConfirmationEmailTemplate), S["A value is required for {0}.", nameof(viewModel.ConfirmationEmailTemplate)]); - } + updater.ModelState.AddModelError(Prefix, nameof(viewModel.ConfirmationEmailTemplate), S["A value is required for {0}.", nameof(viewModel.ConfirmationEmailTemplate)]); } } diff --git a/src/OrchardCore.Modules/OrchardCore.Widgets/Settings/WidgetsListPartSettingsDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Widgets/Settings/WidgetsListPartSettingsDisplayDriver.cs index 98e9c6539c6..9776afbd3e8 100644 --- a/src/OrchardCore.Modules/OrchardCore.Widgets/Settings/WidgetsListPartSettingsDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Widgets/Settings/WidgetsListPartSettingsDisplayDriver.cs @@ -27,10 +27,9 @@ public override async Task UpdateAsync(ContentTypePartDefinition { var model = new WidgetsListPartSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix, m => m.Zones)) - { - context.Builder.WithSettings(new WidgetsListPartSettings { Zones = (model.Zones ?? string.Empty).Split(_separator, StringSplitOptions.RemoveEmptyEntries) }); - } + await context.Updater.TryUpdateModelAsync(model, Prefix, m => m.Zones); + + context.Builder.WithSettings(new WidgetsListPartSettings { Zones = (model.Zones ?? string.Empty).Split(_separator, StringSplitOptions.RemoveEmptyEntries) }); return Edit(contentTypePartDefinition, context.Updater); } diff --git a/src/OrchardCore.Modules/OrchardCore.Workflows/Drivers/ActivityMetadataDisplayDriver.cs b/src/OrchardCore.Modules/OrchardCore.Workflows/Drivers/ActivityMetadataDisplayDriver.cs index 58efa92a426..68502a4a0f7 100644 --- a/src/OrchardCore.Modules/OrchardCore.Workflows/Drivers/ActivityMetadataDisplayDriver.cs +++ b/src/OrchardCore.Modules/OrchardCore.Workflows/Drivers/ActivityMetadataDisplayDriver.cs @@ -19,14 +19,13 @@ public override IDisplayResult Edit(ActivityMetadata section, BuildEditorContext }).Location("Content:before"); } - public override async Task UpdateAsync(ActivityMetadata section, IUpdateModel updater, BuildEditorContext context) + public override async Task UpdateAsync(ActivityMetadata section, IUpdateModel updater, UpdateEditorContext context) { var viewModel = new ActivityMetadataEditViewModel(); - if (await context.Updater.TryUpdateModelAsync(viewModel, Prefix)) - { - section.Title = viewModel.Title?.Trim(); - } + await context.Updater.TryUpdateModelAsync(viewModel, Prefix); + + section.Title = viewModel.Title?.Trim(); return await EditAsync(section, context); } diff --git a/src/OrchardCore/OrchardCore.DisplayManagement/Entities/SectionDisplayDriver.cs b/src/OrchardCore/OrchardCore.DisplayManagement/Entities/SectionDisplayDriver.cs index 95993f5f312..673fbdf40e0 100644 --- a/src/OrchardCore/OrchardCore.DisplayManagement/Entities/SectionDisplayDriver.cs +++ b/src/OrchardCore/OrchardCore.DisplayManagement/Entities/SectionDisplayDriver.cs @@ -101,17 +101,17 @@ public virtual IDisplayResult Edit(TSection section) return null; } - public virtual Task UpdateAsync(TModel model, TSection section, IUpdateModel updater, BuildEditorContext context) + public virtual Task UpdateAsync(TModel model, TSection section, IUpdateModel updater, UpdateEditorContext context) { return UpdateAsync(section, updater, context); } - public virtual Task UpdateAsync(TSection section, IUpdateModel updater, BuildEditorContext context) + public virtual Task UpdateAsync(TSection section, IUpdateModel updater, UpdateEditorContext context) { return UpdateAsync(section, context); } - public virtual Task UpdateAsync(TSection section, BuildEditorContext context) + public virtual Task UpdateAsync(TSection section, UpdateEditorContext context) { return UpdateAsync(section, context.Updater, context.GroupId); } diff --git a/src/OrchardCore/OrchardCore.Workflows.Abstractions/Display/ActivityDisplayDriver.cs b/src/OrchardCore/OrchardCore.Workflows.Abstractions/Display/ActivityDisplayDriver.cs index d3487a62d10..e90d806cd77 100644 --- a/src/OrchardCore/OrchardCore.Workflows.Abstractions/Display/ActivityDisplayDriver.cs +++ b/src/OrchardCore/OrchardCore.Workflows.Abstractions/Display/ActivityDisplayDriver.cs @@ -42,10 +42,8 @@ public override IDisplayResult Edit(TActivity model) public async override Task UpdateAsync(TActivity model, IUpdateModel updater) { var viewModel = new TEditViewModel(); - if (await updater.TryUpdateModelAsync(viewModel, Prefix)) - { - await UpdateActivityAsync(viewModel, model); - } + await updater.TryUpdateModelAsync(viewModel, Prefix); + await UpdateActivityAsync(viewModel, model); return Edit(model); } diff --git a/src/Templates/OrchardCore.ProjectTemplates/content/OrchardCore.Templates.Cms.Module/Settings/MyTestPartSettingsDisplayDriver.cs b/src/Templates/OrchardCore.ProjectTemplates/content/OrchardCore.Templates.Cms.Module/Settings/MyTestPartSettingsDisplayDriver.cs index bea241dbf06..e5aa4d2cd1f 100644 --- a/src/Templates/OrchardCore.ProjectTemplates/content/OrchardCore.Templates.Cms.Module/Settings/MyTestPartSettingsDisplayDriver.cs +++ b/src/Templates/OrchardCore.ProjectTemplates/content/OrchardCore.Templates.Cms.Module/Settings/MyTestPartSettingsDisplayDriver.cs @@ -35,10 +35,9 @@ public override async Task UpdateAsync(ContentTypePartDefinition var model = new MyTestPartSettingsViewModel(); - if (await context.Updater.TryUpdateModelAsync(model, Prefix, m => m.MySetting)) - { - context.Builder.WithSettings(new MyTestPartSettings { MySetting = model.MySetting }); - } + await context.Updater.TryUpdateModelAsync(model, Prefix, m => m.MySetting); + + context.Builder.WithSettings(new MyTestPartSettings { MySetting = model.MySetting }); return Edit(contentTypePartDefinition, context.Updater); }