From ef90305bd7d6baa728433ada187aec2dee7eb4ef Mon Sep 17 00:00:00 2001 From: Grayson Walker Date: Mon, 9 Aug 2021 12:38:12 -0400 Subject: [PATCH] modules validation --- .../Modules/Admin/Modules/Export.razor | 36 ++- .../Modules/Admin/Modules/Import.razor | 26 +- .../Modules/Admin/Modules/Settings.razor | 227 +++++++++--------- 3 files changed, 156 insertions(+), 133 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/Modules/Export.razor b/Oqtane.Client/Modules/Admin/Modules/Export.razor index d02706ef..6e6523f5 100644 --- a/Oqtane.Client/Modules/Admin/Modules/Export.razor +++ b/Oqtane.Client/Modules/Admin/Modules/Export.razor @@ -5,28 +5,26 @@ @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer -
-
- -
- -
+
+
+ +
+
+
- - @SharedLocalizer["Cancel"] + +@SharedLocalizer["Cancel"] + +@code { + private string _content = string.Empty; + public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; + public override string Title => "Export Content"; - @code { - private string _content = string.Empty; - - public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; - public override string Title => "Export Content"; - - - private async Task ExportModule() - { - _content = await ModuleService.ExportModuleAsync(ModuleState.ModuleId); - } + private async Task ExportModule() + { + _content = await ModuleService.ExportModuleAsync(ModuleState.ModuleId); } +} diff --git a/Oqtane.Client/Modules/Admin/Modules/Import.razor b/Oqtane.Client/Modules/Admin/Modules/Import.razor index 33b7a8d4..2fe27a05 100644 --- a/Oqtane.Client/Modules/Admin/Modules/Import.razor +++ b/Oqtane.Client/Modules/Admin/Modules/Import.razor @@ -5,11 +5,12 @@ @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer +
- +
@@ -17,15 +18,21 @@ @SharedLocalizer["Cancel"] + +@code { + private string _content = string.Empty; + private ElementReference form; + private bool validated = false; - @code { - private string _content = string.Empty; + public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; + public override string Title => "Import Content"; - public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; - public override string Title => "Import Content"; - - private async Task ImportModule() + private async Task ImportModule() + { + validated = true; + var interop = new Interop(JSRuntime); + if (await interop.FormValid(form)) { if (_content != string.Empty) { @@ -52,4 +59,9 @@ AddModuleMessage(Localizer["Message.Required.ImportContent"], MessageType.Warning); } } + else + { + AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning); + } } +} diff --git a/Oqtane.Client/Modules/Admin/Modules/Settings.razor b/Oqtane.Client/Modules/Admin/Modules/Settings.razor index cbf32fef..c2c3f6ef 100644 --- a/Oqtane.Client/Modules/Admin/Modules/Settings.razor +++ b/Oqtane.Client/Modules/Admin/Modules/Settings.razor @@ -8,88 +8,92 @@ @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer - - - @if (_containers != null) - { -
-
- -
- +
+ + + @if (_containers != null) + { +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
-
-
- -
- + } + + + @if (_permissions != null) + { +
+
+ +
-
-
- -
- -
-
-
- -
- -
-
-
- } - - - @if (_permissions != null) - { -
-
- -
-
+ } +
+ @if (_moduleSettingsType != null) + { + + @ModuleSettingsComponent + } - - @if (_moduleSettingsType != null) - { - - @ModuleSettingsComponent - - } - @if (_containerSettingsType != null) - { - - @ContainerSettingsComponent - - } - - -@SharedLocalizer["Cancel"] -
-
- + @if (_containerSettingsType != null) + { + + @ContainerSettingsComponent + + } + + + @SharedLocalizer["Cancel"] +
+
+ + @code { public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Edit; public override string Title => "Module Settings"; + private ElementReference form; + private bool validated = false; private List _themes; private List _containers = new List(); private string _title; @@ -170,52 +174,61 @@ private async Task SaveModule() { - if (!string.IsNullOrEmpty(_title)) + validated = true; + var interop = new Interop(JSRuntime); + if (await interop.FormValid(form)) { - var pagemodule = await PageModuleService.GetPageModuleAsync(ModuleState.PageModuleId); - pagemodule.PageId = int.Parse(_pageId); - pagemodule.Title = _title; - pagemodule.ContainerType = (_containerType != "-") ? _containerType : string.Empty; - if (!string.IsNullOrEmpty(pagemodule.ContainerType) && pagemodule.ContainerType == PageState.Page.DefaultContainerType) + if (!string.IsNullOrEmpty(_title)) { - pagemodule.ContainerType = string.Empty; - } - if (!string.IsNullOrEmpty(pagemodule.ContainerType) && pagemodule.ContainerType == PageState.Site.DefaultContainerType) - { - pagemodule.ContainerType = string.Empty; - } - await PageModuleService.UpdatePageModuleAsync(pagemodule); - await PageModuleService.UpdatePageModuleOrderAsync(pagemodule.PageId, pagemodule.Pane); - - var module = ModuleState; - module.AllPages = bool.Parse(_allPages); - module.Permissions = _permissionGrid.GetPermissions(); - await ModuleService.UpdateModuleAsync(module); - - if (_moduleSettingsType != null) - { - if (_moduleSettings is ISettingsControl moduleSettingsControl) + var pagemodule = await PageModuleService.GetPageModuleAsync(ModuleState.PageModuleId); + pagemodule.PageId = int.Parse(_pageId); + pagemodule.Title = _title; + pagemodule.ContainerType = (_containerType != "-") ? _containerType : string.Empty; + if (!string.IsNullOrEmpty(pagemodule.ContainerType) && pagemodule.ContainerType == PageState.Page.DefaultContainerType) { - // module settings updated using explicit interface - await moduleSettingsControl.UpdateSettings(); + pagemodule.ContainerType = string.Empty; } - else + if (!string.IsNullOrEmpty(pagemodule.ContainerType) && pagemodule.ContainerType == PageState.Site.DefaultContainerType) { - // legacy support - module settings updated by convention ( ie. by calling a public method named "UpdateSettings" in settings component ) - _moduleSettings?.GetType().GetMethod("UpdateSettings")?.Invoke(_moduleSettings, null); + pagemodule.ContainerType = string.Empty; } - } + await PageModuleService.UpdatePageModuleAsync(pagemodule); + await PageModuleService.UpdatePageModuleOrderAsync(pagemodule.PageId, pagemodule.Pane); - if (_containerSettingsType != null && _containerSettings is ISettingsControl containerSettingsControl) + var module = ModuleState; + module.AllPages = bool.Parse(_allPages); + module.Permissions = _permissionGrid.GetPermissions(); + await ModuleService.UpdateModuleAsync(module); + + if (_moduleSettingsType != null) + { + if (_moduleSettings is ISettingsControl moduleSettingsControl) + { + // module settings updated using explicit interface + await moduleSettingsControl.UpdateSettings(); + } + else + { + // legacy support - module settings updated by convention ( ie. by calling a public method named "UpdateSettings" in settings component ) + _moduleSettings?.GetType().GetMethod("UpdateSettings")?.Invoke(_moduleSettings, null); + } + } + + if (_containerSettingsType != null && _containerSettings is ISettingsControl containerSettingsControl) + { + await containerSettingsControl.UpdateSettings(); + } + + NavigationManager.NavigateTo(NavigateUrl()); + } + else { - await containerSettingsControl.UpdateSettings(); + AddModuleMessage(Localizer["Message.Required.Title"], MessageType.Warning); } - - NavigationManager.NavigateTo(NavigateUrl()); } else { - AddModuleMessage(Localizer["Message.Required.Title"], MessageType.Warning); + AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning); } }