From 33a76c61ca918f89bb7b55a650cf76be3642632a Mon Sep 17 00:00:00 2001 From: Grayson Walker Date: Tue, 27 Jul 2021 16:24:01 -0400 Subject: [PATCH] updated modules for input requirements --- Oqtane.Client/Modules/Admin/Files/Add.razor | 173 ++-- .../Modules/Admin/Files/Details.razor | 200 ++-- Oqtane.Client/Modules/Admin/Files/Edit.razor | 375 +++---- Oqtane.Client/Modules/Admin/Files/Index.razor | 114 +- Oqtane.Client/Modules/Admin/Jobs/Edit.razor | 325 +++--- Oqtane.Client/Modules/Admin/Jobs/Index.razor | 236 ++--- .../Modules/Admin/Languages/Add.razor | 416 ++++---- .../Modules/Admin/Languages/Index.razor | 178 ++-- Oqtane.Client/Modules/Admin/Login/Index.razor | 1 + Oqtane.Client/Modules/Admin/Logs/Index.razor | 292 +++--- .../Modules/Admin/ModuleCreator/Index.razor | 324 +++--- .../Modules/Admin/ModuleDefinitions/Add.razor | 255 ++--- .../Admin/ModuleDefinitions/Create.razor | 263 ++--- .../Admin/ModuleDefinitions/Edit.razor | 155 +-- .../Admin/ModuleDefinitions/Index.razor | 184 ++-- .../Modules/Admin/Modules/Export.razor | 19 +- .../Modules/Admin/Modules/Import.razor | 36 +- .../Modules/Admin/Modules/Settings.razor | 393 +++---- Oqtane.Client/Modules/Admin/Pages/Add.razor | 414 ++++---- Oqtane.Client/Modules/Admin/Pages/Edit.razor | 855 +++++++-------- Oqtane.Client/Modules/Admin/Pages/Index.razor | 63 +- .../Modules/Admin/Profiles/Edit.razor | 335 +++--- .../Modules/Admin/Profiles/Index.razor | 84 +- .../Modules/Admin/RecycleBin/Index.razor | 380 +++---- .../Modules/Admin/Register/Index.razor | 199 ++-- Oqtane.Client/Modules/Admin/Reset/Index.razor | 137 +-- Oqtane.Client/Modules/Admin/Roles/Add.razor | 4 +- Oqtane.Client/Modules/Admin/Roles/Edit.razor | 4 +- Oqtane.Client/Modules/Admin/Roles/Index.razor | 73 +- Oqtane.Client/Modules/Admin/Roles/Users.razor | 316 +++--- Oqtane.Client/Modules/Admin/Site/Index.razor | 979 +++++++++--------- Oqtane.Client/Modules/Admin/Sites/Add.razor | 589 +++++------ Oqtane.Client/Modules/Admin/Sites/Index.razor | 80 +- Oqtane.Client/Modules/Admin/Sql/Index.razor | 283 +++-- .../Modules/Admin/SystemInfo/Index.razor | 397 +++---- Oqtane.Client/Modules/Admin/Themes/Add.razor | 260 ++--- .../Modules/Admin/Themes/Create.razor | 250 ++--- .../Modules/Admin/Themes/Index.razor | 186 ++-- Oqtane.Client/Modules/Admin/Themes/View.razor | 146 +-- .../Modules/Admin/Upgrade/Index.razor | 152 +-- .../Modules/Admin/UserProfile/Add.razor | 97 +- .../Modules/Admin/UserProfile/Index.razor | 665 ++++++------ .../Modules/Admin/UserProfile/View.razor | 318 +++--- Oqtane.Client/Modules/Admin/Users/Add.razor | 320 +++--- Oqtane.Client/Modules/Admin/Users/Edit.razor | 437 ++++---- Oqtane.Client/Modules/Admin/Users/Index.razor | 196 ++-- Oqtane.Client/Modules/Admin/Users/Roles.razor | 349 ++++--- Oqtane.Client/Resources/SharedResources.resx | 5 +- Oqtane.Server/appsettings.json | 24 +- .../Oqtane.Theme.Bootswatch/Cerulean.css | 1 + .../Themes/Oqtane.Theme.Bootswatch/Cosmo.css | 1 + .../Themes/Oqtane.Theme.Bootswatch/Darkly.css | 4 + .../Oqtane.Theme.Bootswatch/Default.css | 1 + .../Themes/Oqtane.Theme.Bootswatch/Flatly.css | 1 + .../Oqtane.Theme.Bootswatch/Journal.css | 1 + .../Themes/Oqtane.Theme.Bootswatch/Litera.css | 1 + .../Themes/Oqtane.Theme.Bootswatch/Lumen.css | 1 + .../Themes/Oqtane.Theme.Bootswatch/Lux.css | 17 + .../Oqtane.Theme.Bootswatch/Materia.css | 13 + .../Themes/Oqtane.Theme.Bootswatch/Minty.css | 1 + .../Themes/Oqtane.Theme.Bootswatch/Morph.css | 4 + .../Themes/Oqtane.Theme.Bootswatch/Pulse.css | 4 + .../Themes/Oqtane.Theme.Bootswatch/Quartz.css | 16 + .../Oqtane.Theme.Bootswatch/Sandstone.css | 1 + .../Oqtane.Theme.Bootswatch/Simplex.css | 1 + .../Oqtane.Theme.Bootswatch/Sketchy.css | 1 + .../Themes/Oqtane.Theme.Bootswatch/Slate.css | 1 + .../Themes/Oqtane.Theme.Bootswatch/Solar.css | 8 + .../Oqtane.Theme.Bootswatch/Spacelab.css | 1 + .../Oqtane.Theme.Bootswatch/Superhero.css | 1 + .../Themes/Oqtane.Theme.Bootswatch/Theme.css | 108 ++ .../Themes/Oqtane.Theme.Bootswatch/United.css | 1 + .../Themes/Oqtane.Theme.Bootswatch/Vapor.css | 16 + .../Themes/Oqtane.Theme.Bootswatch/Yeti.css | 1 + .../Themes/Oqtane.Theme.Bootswatch/Zephyr.css | 1 + 75 files changed, 6655 insertions(+), 6088 deletions(-) create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Cerulean.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Cosmo.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Darkly.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Default.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Flatly.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Journal.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Litera.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Lumen.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Lux.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Materia.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Minty.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Morph.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Pulse.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Quartz.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Sandstone.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Simplex.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Sketchy.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Slate.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Solar.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Spacelab.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Superhero.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Theme.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/United.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Vapor.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Yeti.css create mode 100644 Oqtane.Server/wwwroot/Themes/Oqtane.Theme.Bootswatch/Zephyr.css diff --git a/Oqtane.Client/Modules/Admin/Files/Add.razor b/Oqtane.Client/Modules/Admin/Files/Add.razor index 4021a033..13c1d7d6 100644 --- a/Oqtane.Client/Modules/Admin/Files/Add.razor +++ b/Oqtane.Client/Modules/Admin/Files/Add.razor @@ -7,97 +7,110 @@ @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer - - -
-
- -
- +
+ + +
+
+ +
+ +
-
- @SharedLocalizer["Cancel"] - - - @if (_folders != null) - { -
-
- -
- -
-
-
- -
- -
-
-
- @SharedLocalizer["Cancel"] - } -
- + + + @if (_folders != null) + { +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + @SharedLocalizer["Cancel"] + } +
+ + -@code { - private string url = string.Empty; - private List _folders; - private int _folderId = -1; + @code { + private ElementReference form; + private bool validated = false; + private string url = string.Empty; + private List _folders; + private int _folderId = -1; - public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; + public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; - protected override async Task OnInitializedAsync() - { - _folders = await FolderService.GetFoldersAsync(ModuleState.SiteId); - - if (PageState.QueryString.ContainsKey("id")) + protected override async Task OnInitializedAsync() { - _folderId = int.Parse(PageState.QueryString["id"]); - } - } + _folders = await FolderService.GetFoldersAsync(ModuleState.SiteId); - private async Task Download() - { - if (url == string.Empty || _folderId == -1) - { - AddModuleMessage(Localizer["Message.Required.UrlFolder"], MessageType.Warning); - return; + if (PageState.QueryString.ContainsKey("id")) + { + _folderId = int.Parse(PageState.QueryString["id"]); + } } - var filename = url.Substring(url.LastIndexOf("/", StringComparison.Ordinal) + 1); + private async Task Download() + { + validated = true; + var interop = new Interop(JSRuntime); + if (await interop.FormValid(form)) + { + if (url == string.Empty || _folderId == -1) + { + AddModuleMessage(Localizer["Message.Required.UrlFolder"], MessageType.Warning); + return; + } - if (!Constants.UploadableFiles.Split(',') - .Contains(Path.GetExtension(filename).ToLower().Replace(".", ""))) - { - AddModuleMessage(Localizer["Message.Download.InvalidExtension"], MessageType.Warning); - return; - } + var filename = url.Substring(url.LastIndexOf("/", StringComparison.Ordinal) + 1); - if (!filename.IsPathOrFileValid()) - { - AddModuleMessage(Localizer["Message.Required.UrlName"], MessageType.Warning); - return; - } + if (!Constants.UploadableFiles.Split(',') + .Contains(Path.GetExtension(filename).ToLower().Replace(".", ""))) + { + AddModuleMessage(Localizer["Message.Download.InvalidExtension"], MessageType.Warning); + return; + } - try - { - await FileService.UploadFileAsync(url, _folderId); - await logger.LogInformation("File Downloaded Successfully From Url {Url}", url); - AddModuleMessage(Localizer["Success.Download.File"], MessageType.Success); + if (!filename.IsPathOrFileValid()) + { + AddModuleMessage(Localizer["Message.Required.UrlName"], MessageType.Warning); + return; + } + + try + { + await FileService.UploadFileAsync(url, _folderId); + await logger.LogInformation("File Downloaded Successfully From Url {Url}", url); + AddModuleMessage(Localizer["Success.Download.File"], MessageType.Success); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Downloading File From Url {Url} {Error}", url, ex.Message); + AddModuleMessage(Localizer["Error.Download.InvalidUrl"], MessageType.Error); + } + } + else + { + AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning); + } } - catch (Exception ex) - { - await logger.LogError(ex, "Error Downloading File From Url {Url} {Error}", url, ex.Message); - AddModuleMessage(Localizer["Error.Download.InvalidUrl"], MessageType.Error); - } - } -} +} \ No newline at end of file diff --git a/Oqtane.Client/Modules/Admin/Files/Details.razor b/Oqtane.Client/Modules/Admin/Files/Details.razor index 14610ca6..0347a5cb 100644 --- a/Oqtane.Client/Modules/Admin/Files/Details.razor +++ b/Oqtane.Client/Modules/Admin/Files/Details.razor @@ -8,100 +8,114 @@ @if (_folders != null) { -
-
- -
- +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
-
-
- -
- -
-
-
- -
- -
-
-
- - @SharedLocalizer["Cancel"] -
-
- -} - -@code { - private int _fileId = -1; - private string _name; - private List _folders; - private int _folderId = -1; - private int _size; - private string _createdBy; - private DateTime _createdOn; - private string _modifiedBy; - private DateTime _modifiedOn; - - public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; - - public override string Title => "File Management"; - - protected override async Task OnInitializedAsync() - { - try - { - _folders = await FolderService.GetFoldersAsync(PageState.Site.SiteId); - _fileId = Int32.Parse(PageState.QueryString["id"]); - File file = await FileService.GetFileAsync(_fileId); - if (file != null) - { - _name = file.Name; - _folderId = file.FolderId; - _size = file.Size; - _createdBy = file.CreatedBy; - _createdOn = file.CreatedOn; - _modifiedBy = file.ModifiedBy; - _modifiedOn = file.ModifiedOn; - } - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Loading File {FileId} {Error}", _fileId, ex.Message); - AddModuleMessage(Localizer["Error.File.Load"], MessageType.Error); - } - } - - private async Task SaveFile() - { - try - { - if (_name.IsPathOrFileValid()) - { - File file = await FileService.GetFileAsync(_fileId); - file.Name = _name; - file.FolderId = _folderId; - file = await FileService.UpdateFileAsync(file); - await logger.LogInformation("File Saved {File}", file); - NavigationManager.NavigateTo(NavigateUrl()); - } - else - { - AddModuleMessage(Localizer["Message.File.InvalidName"], MessageType.Warning); - } - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Saving File {FileId} {Error}", _fileId, ex.Message); - AddModuleMessage(Localizer["Error.File.Save"], MessageType.Error); - } - } + catch (Exception ex) + { + await logger.LogError(ex, "Error Loading File {FileId} {Error}", _fileId, ex.Message); + AddModuleMessage(Localizer["Error.File.Load"], MessageType.Error); + } + } + + private async Task SaveFile() + { + validated = true; + var interop = new Interop(JSRuntime); + if (await interop.FormValid(form)) + { + try + { + if (_name.IsPathOrFileValid()) + { + File file = await FileService.GetFileAsync(_fileId); + file.Name = _name; + file.FolderId = _folderId; + file = await FileService.UpdateFileAsync(file); + await logger.LogInformation("File Saved {File}", file); + NavigationManager.NavigateTo(NavigateUrl()); + } + else + { + AddModuleMessage(Localizer["Message.File.InvalidName"], MessageType.Warning); + } + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Saving File {FileId} {Error}", _fileId, ex.Message); + AddModuleMessage(Localizer["Error.File.Save"], MessageType.Error); + } + } + else + { + AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning); + } + } + } } diff --git a/Oqtane.Client/Modules/Admin/Files/Edit.razor b/Oqtane.Client/Modules/Admin/Files/Edit.razor index 611b593f..c7295f4a 100644 --- a/Oqtane.Client/Modules/Admin/Files/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Files/Edit.razor @@ -8,52 +8,53 @@ @if (_folders != null) { -
-
- -
- + @if (PageState.QueryString.ContainsKey("id")) + { + + } + @foreach (Folder folder in _folders) + { + + } + +
+
+
+ +
+ +
+
+
+ +
@if (PageState.QueryString.ContainsKey("id")) { - + } - @foreach (Folder folder in _folders) + else { - + } - +
-
-
- -
- -
-
-
- -
- @if (PageState.QueryString.ContainsKey("id")) - { - - } - else - { - - } -
-
-
-
- - +
+
+ + +
-
@if (!_isSystem) { @@ -72,170 +73,182 @@ { } + } -@code { - private List _folders; - private int _folderId = -1; - private int _parentId = -1; - private string _name; - private string _type = FolderTypes.Private; - private bool _isSystem; - private string _permissions = string.Empty; - private string _createdBy; - private DateTime _createdOn; - private string _modifiedBy; - private DateTime _modifiedOn; + @code { + private ElementReference form; + private bool validated = false; + private List _folders; + private int _folderId = -1; + private int _parentId = -1; + private string _name; + private string _type = FolderTypes.Private; + private bool _isSystem; + private string _permissions = string.Empty; + private string _createdBy; + private DateTime _createdOn; + private string _modifiedBy; + private DateTime _modifiedOn; #pragma warning disable 649 - private PermissionGrid _permissionGrid; + private PermissionGrid _permissionGrid; #pragma warning restore 649 - public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; + public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; - public override string Title => "Folder Management"; + public override string Title => "Folder Management"; - protected override async Task OnInitializedAsync() - { - try + protected override async Task OnInitializedAsync() { - _folders = await FolderService.GetFoldersAsync(PageState.Site.SiteId); - - if (PageState.QueryString.ContainsKey("id")) + try { - _folderId = Int32.Parse(PageState.QueryString["id"]); - Folder folder = await FolderService.GetFolderAsync(_folderId); - if (folder != null) + _folders = await FolderService.GetFoldersAsync(PageState.Site.SiteId); + + if (PageState.QueryString.ContainsKey("id")) { - _parentId = folder.ParentId ?? -1; - _name = folder.Name; - _type = folder.Type; - _isSystem = folder.IsSystem; - _permissions = folder.Permissions; - _createdBy = folder.CreatedBy; - _createdOn = folder.CreatedOn; - _modifiedBy = folder.ModifiedBy; - _modifiedOn = folder.ModifiedOn; - } - } - else - { - _parentId = _folders[0].FolderId; - _permissions = string.Empty; - } - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Loading Folder {FolderId} {Error}", _folderId, ex.Message); - AddModuleMessage(Localizer["Error.Folder.Load"], MessageType.Error); - } - } - - private async Task SaveFolder() - { - if (_name == string.Empty || _parentId == -1) - { - AddModuleMessage(Localizer["Message.Required.FolderParent"], MessageType.Warning); - return; - } - - if (!_name.IsPathOrFileValid()) - { - AddModuleMessage(Localizer["Message.Folder.InvalidName"], MessageType.Warning); - return; - } - - try - { - Folder folder; - if (_folderId != -1) - { - folder = await FolderService.GetFolderAsync(_folderId); - } - else - { - folder = new Folder(); - } - - folder.SiteId = PageState.Site.SiteId; - - if (_parentId == -1) - { - folder.ParentId = null; - } - else - { - folder.ParentId = _parentId; - } - - folder.Name = _name; - folder.Type = _type; - folder.IsSystem = _isSystem; - folder.Permissions = _permissionGrid.GetPermissions(); - - if (_folderId != -1) - { - folder = await FolderService.UpdateFolderAsync(folder); - } - else - { - folder = await FolderService.AddFolderAsync(folder); - } - - if (folder != null) - { - await FolderService.UpdateFolderOrderAsync(folder.SiteId, folder.FolderId, folder.ParentId); - await logger.LogInformation("Folder Saved {Folder}", folder); - NavigationManager.NavigateTo(NavigateUrl()); - } - else - { - AddModuleMessage(Localizer["Error.Folder.Save"], MessageType.Error); - } - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Saving Folder {FolderId} {Error}", _folderId, ex.Message); - AddModuleMessage(Localizer["Error.Folder.Save"], MessageType.Error); - } - } - - private async Task DeleteFolder() - { - try - { - bool isparent = false; - foreach (Folder folder in _folders) - { - if (folder.ParentId == _folderId) - { - isparent = true; - break; - } - } - if (!isparent) - { - var files = await FileService.GetFilesAsync(_folderId); - if (files.Count == 0) - { - await FolderService.DeleteFolderAsync(_folderId); - await logger.LogInformation("Folder Deleted {Folder}", _folderId); - NavigationManager.NavigateTo(NavigateUrl()); + _folderId = Int32.Parse(PageState.QueryString["id"]); + Folder folder = await FolderService.GetFolderAsync(_folderId); + if (folder != null) + { + _parentId = folder.ParentId ?? -1; + _name = folder.Name; + _type = folder.Type; + _isSystem = folder.IsSystem; + _permissions = folder.Permissions; + _createdBy = folder.CreatedBy; + _createdOn = folder.CreatedOn; + _modifiedBy = folder.ModifiedBy; + _modifiedOn = folder.ModifiedOn; + } } else { - AddModuleMessage(Localizer["Message.Folder.Files.InvalidDelete"], MessageType.Warning); + _parentId = _folders[0].FolderId; + _permissions = string.Empty; + } + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Loading Folder {FolderId} {Error}", _folderId, ex.Message); + AddModuleMessage(Localizer["Error.Folder.Load"], MessageType.Error); + } + } + + private async Task SaveFolder() + { + validated = true; + var interop = new Interop(JSRuntime); + if (await interop.FormValid(form)) + { + if (_name == string.Empty || _parentId == -1) + { + AddModuleMessage(Localizer["Message.Required.FolderParent"], MessageType.Warning); + return; + } + + if (!_name.IsPathOrFileValid()) + { + AddModuleMessage(Localizer["Message.Folder.InvalidName"], MessageType.Warning); + return; + } + + try + { + Folder folder; + if (_folderId != -1) + { + folder = await FolderService.GetFolderAsync(_folderId); + } + else + { + folder = new Folder(); + } + + folder.SiteId = PageState.Site.SiteId; + + if (_parentId == -1) + { + folder.ParentId = null; + } + else + { + folder.ParentId = _parentId; + } + + folder.Name = _name; + folder.Type = _type; + folder.IsSystem = _isSystem; + folder.Permissions = _permissionGrid.GetPermissions(); + + if (_folderId != -1) + { + folder = await FolderService.UpdateFolderAsync(folder); + } + else + { + folder = await FolderService.AddFolderAsync(folder); + } + + if (folder != null) + { + await FolderService.UpdateFolderOrderAsync(folder.SiteId, folder.FolderId, folder.ParentId); + await logger.LogInformation("Folder Saved {Folder}", folder); + NavigationManager.NavigateTo(NavigateUrl()); + } + else + { + AddModuleMessage(Localizer["Error.Folder.Save"], MessageType.Error); + } + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Saving Folder {FolderId} {Error}", _folderId, ex.Message); + AddModuleMessage(Localizer["Error.Folder.Save"], MessageType.Error); } } else { - AddModuleMessage(Localizer["Message.Folder.Subfolders.InvalidDelete"], MessageType.Warning); + AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning); } } - catch (Exception ex) + + private async Task DeleteFolder() { - await logger.LogError(ex, "Error Deleting Folder {Folder} {Error}", _folderId, ex.Message); - AddModuleMessage(Localizer["Error.Folder.Delete"], MessageType.Error); + try + { + bool isparent = false; + foreach (Folder folder in _folders) + { + if (folder.ParentId == _folderId) + { + isparent = true; + break; + } + } + if (!isparent) + { + var files = await FileService.GetFilesAsync(_folderId); + if (files.Count == 0) + { + await FolderService.DeleteFolderAsync(_folderId); + await logger.LogInformation("Folder Deleted {Folder}", _folderId); + NavigationManager.NavigateTo(NavigateUrl()); + } + else + { + AddModuleMessage(Localizer["Message.Folder.Files.InvalidDelete"], MessageType.Warning); + } + } + else + { + AddModuleMessage(Localizer["Message.Folder.Subfolders.InvalidDelete"], MessageType.Warning); + } + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Deleting Folder {Folder} {Error}", _folderId, ex.Message); + AddModuleMessage(Localizer["Error.Folder.Delete"], MessageType.Error); + } } } -} diff --git a/Oqtane.Client/Modules/Admin/Files/Index.razor b/Oqtane.Client/Modules/Admin/Files/Index.razor index 11684f3f..935bde40 100644 --- a/Oqtane.Client/Modules/Admin/Files/Index.razor +++ b/Oqtane.Client/Modules/Admin/Files/Index.razor @@ -12,7 +12,7 @@
-
+
-
+
    @@ -30,12 +30,12 @@
-   -   - @SharedLocalizer["Name"] - @Localizer["Modified"] - @Localizer["Type"] - @Localizer["Size"] +   +   + @SharedLocalizer["Name"] + @Localizer["Modified"] + @Localizer["Type"] + @Localizer["Size"]
@@ -52,66 +52,66 @@ } } -@code { - private List _folders; - private int _folderId = -1; - private List _files; + @code { + private List _folders; + private int _folderId = -1; + private List _files; - public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; + public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; - protected override async Task OnParametersSetAsync() - { - try + protected override async Task OnParametersSetAsync() { - _folders = await FolderService.GetFoldersAsync(PageState.Site.SiteId); - - if (_folderId == -1 && _folders.Count > 0) + try { - _folderId = _folders[0].FolderId; - await GetFiles(); + _folders = await FolderService.GetFoldersAsync(PageState.Site.SiteId); + + if (_folderId == -1 && _folders.Count > 0) + { + _folderId = _folders[0].FolderId; + await GetFiles(); + } + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Loading Files {Error}", ex.Message); + AddModuleMessage(Localizer["Error.File.Load"], MessageType.Error); } } - catch (Exception ex) - { - await logger.LogError(ex, "Error Loading Files {Error}", ex.Message); - AddModuleMessage(Localizer["Error.File.Load"], MessageType.Error); - } - } - private async Task GetFiles() - { - _files = await FileService.GetFilesAsync(_folderId); - } + private async Task GetFiles() + { + _files = await FileService.GetFilesAsync(_folderId); + } - private async void FolderChanged(ChangeEventArgs e) - { - try + private async void FolderChanged(ChangeEventArgs e) { - _folderId = int.Parse((string)e.Value); - await GetFiles(); - StateHasChanged(); + try + { + _folderId = int.Parse((string)e.Value); + await GetFiles(); + StateHasChanged(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Loading Files {Error}", ex.Message); + AddModuleMessage(Localizer["Error.File.Load"], MessageType.Error); + } } - catch (Exception ex) - { - await logger.LogError(ex, "Error Loading Files {Error}", ex.Message); - AddModuleMessage(Localizer["Error.File.Load"], MessageType.Error); - } - } - private async Task DeleteFile(File file) - { - try + private async Task DeleteFile(File file) { - await FileService.DeleteFileAsync(file.FileId); - await logger.LogInformation("File Deleted {File}", file.Name); - AddModuleMessage(string.Format(Localizer["Success.File.Delete"], file.Name), MessageType.Success); - await GetFiles(); - StateHasChanged(); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Deleting File {File} {Error}", file.Name, ex.Message); - AddModuleMessage(string.Format(Localizer["Error.File.Delete"], file.Name), MessageType.Error); + try + { + await FileService.DeleteFileAsync(file.FileId); + await logger.LogInformation("File Deleted {File}", file.Name); + AddModuleMessage(string.Format(Localizer["Success.File.Delete"], file.Name), MessageType.Success); + await GetFiles(); + StateHasChanged(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Deleting File {File} {Error}", file.Name, ex.Message); + AddModuleMessage(string.Format(Localizer["Error.File.Delete"], file.Name), MessageType.Error); + } } } -} diff --git a/Oqtane.Client/Modules/Admin/Jobs/Edit.razor b/Oqtane.Client/Modules/Admin/Jobs/Edit.razor index f5f04239..c1d2b127 100644 --- a/Oqtane.Client/Modules/Admin/Jobs/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Jobs/Edit.razor @@ -5,176 +5,183 @@ @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer -
-
- -
- +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ + +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
-
- -
- -
-
-
- -
- -
-
-
- -
- - -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
- -@SharedLocalizer["Cancel"] -
-
- +
+ + @SharedLocalizer["Cancel"] +
+
+ + -@code { - private int _jobId; - private string _name = string.Empty; - private string _jobType = string.Empty; - private string _isEnabled = "True"; - private string _interval = string.Empty; - private string _frequency = string.Empty; - private string _startDate = string.Empty; - private string _endDate = string.Empty; - private string _retentionHistory = string.Empty; - private string _nextExecution = string.Empty; - private string createdby; - private DateTime createdon; - private string modifiedby; - private DateTime modifiedon; + @code { + private ElementReference form; + private bool validated = false; - public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host; + private int _jobId; + private string _name = string.Empty; + private string _jobType = string.Empty; + private string _isEnabled = "True"; + private string _interval = string.Empty; + private string _frequency = string.Empty; + private string _startDate = string.Empty; + private string _endDate = string.Empty; + private string _retentionHistory = string.Empty; + private string _nextExecution = string.Empty; + private string createdby; + private DateTime createdon; + private string modifiedby; + private DateTime modifiedon; - protected override async Task OnInitializedAsync() - { - try + public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host; + + protected override async Task OnInitializedAsync() { - _jobId = Int32.Parse(PageState.QueryString["id"]); - Job job = await JobService.GetJobAsync(_jobId); - if (job != null) - { - _name = job.Name; - _jobType = job.JobType; - _isEnabled = job.IsEnabled.ToString(); - _interval = job.Interval.ToString(); - _frequency = job.Frequency; - _startDate = (job.StartDate != null) ? job.StartDate.ToString() : string.Empty; - _endDate = (job.EndDate != null) ? job.EndDate.ToString() : string.Empty; - _retentionHistory = job.RetentionHistory.ToString(); - _nextExecution = job.NextExecution.ToString(); - createdby = job.CreatedBy; - createdon = job.CreatedOn; - modifiedby = job.ModifiedBy; - modifiedon = job.ModifiedOn; - } - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Loading Job {JobId} {Error}", _jobId, ex.Message); - AddModuleMessage(Localizer["Error.Job.Load"], MessageType.Error); - } - } - - private async Task SaveJob() - { - if (_name != string.Empty && !string.IsNullOrEmpty(_jobType) && _frequency != string.Empty && _interval != string.Empty && _retentionHistory != string.Empty) - { - var job = await JobService.GetJobAsync(_jobId); - job.Name = _name; - job.JobType = _jobType; - job.IsEnabled = Boolean.Parse(_isEnabled); - job.Frequency = _frequency; - job.Interval = int.Parse(_interval); - - if (_startDate == string.Empty) - { - job.StartDate = null; - } - else - { - job.StartDate = DateTime.Parse(_startDate); - } - - if (_endDate == string.Empty) - { - job.EndDate = null; - } - else - { - job.EndDate = DateTime.Parse(_endDate); - } - - if (_nextExecution == string.Empty) - { - job.NextExecution = null; - } - else - { - job.NextExecution = DateTime.Parse(_nextExecution); - } - - job.RetentionHistory = int.Parse(_retentionHistory); - try { - job = await JobService.UpdateJobAsync(job); - await logger.LogInformation("Job Updated {Job}", job); - NavigationManager.NavigateTo(NavigateUrl()); + _jobId = Int32.Parse(PageState.QueryString["id"]); + Job job = await JobService.GetJobAsync(_jobId); + if (job != null) + { + _name = job.Name; + _jobType = job.JobType; + _isEnabled = job.IsEnabled.ToString(); + _interval = job.Interval.ToString(); + _frequency = job.Frequency; + _startDate = (job.StartDate != null) ? job.StartDate.ToString() : string.Empty; + _endDate = (job.EndDate != null) ? job.EndDate.ToString() : string.Empty; + _retentionHistory = job.RetentionHistory.ToString(); + _nextExecution = job.NextExecution.ToString(); + createdby = job.CreatedBy; + createdon = job.CreatedOn; + modifiedby = job.ModifiedBy; + modifiedon = job.ModifiedOn; + } } catch (Exception ex) { - await logger.LogError(ex, "Error Udate Job {Job} {Error}", job, ex.Message); - AddModuleMessage(Localizer["Error.Job.Update"], MessageType.Error); + await logger.LogError(ex, "Error Loading Job {JobId} {Error}", _jobId, ex.Message); + AddModuleMessage(Localizer["Error.Job.Load"], MessageType.Error); } } - else - { - AddModuleMessage(Localizer["Message.Required.JobInfo"], MessageType.Warning); - } - } -} + private async Task SaveJob() + { + validated = true; + var interop = new Interop(JSRuntime); + if (await interop.FormValid(form)) + { + var job = await JobService.GetJobAsync(_jobId); + job.Name = _name; + job.JobType = _jobType; + job.IsEnabled = Boolean.Parse(_isEnabled); + job.Frequency = _frequency; + job.Interval = int.Parse(_interval); + + if (_startDate == string.Empty) + { + job.StartDate = null; + } + else + { + job.StartDate = DateTime.Parse(_startDate); + } + + if (_endDate == string.Empty) + { + job.EndDate = null; + } + else + { + job.EndDate = DateTime.Parse(_endDate); + } + + if (_nextExecution == string.Empty) + { + job.NextExecution = null; + } + else + { + job.NextExecution = DateTime.Parse(_nextExecution); + } + + job.RetentionHistory = int.Parse(_retentionHistory); + + try + { + job = await JobService.UpdateJobAsync(job); + await logger.LogInformation("Job Updated {Job}", job); + NavigationManager.NavigateTo(NavigateUrl()); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Udate Job {Job} {Error}", job, ex.Message); + AddModuleMessage(Localizer["Error.Job.Update"], MessageType.Error); + } + } + else + { + AddModuleMessage(Localizer["Message.Required.JobInfo"], MessageType.Warning); + } + } + + } diff --git a/Oqtane.Client/Modules/Admin/Jobs/Index.razor b/Oqtane.Client/Modules/Admin/Jobs/Index.razor index 1996d62b..3582f75e 100644 --- a/Oqtane.Client/Modules/Admin/Jobs/Index.razor +++ b/Oqtane.Client/Modules/Admin/Jobs/Index.razor @@ -10,132 +10,132 @@ } else { - - -
-
+ + +
+
- -
-   -   -   - @SharedLocalizer["Name"] - @SharedLocalizer["Status"] - @Localizer["Frequency"] - @Localizer["NextExecution"] -   -
- - - - - @context.Name - @DisplayStatus(context.IsEnabled, context.IsExecuting) - @DisplayFrequency(context.Interval, context.Frequency) - @context.NextExecution - - @if (context.IsStarted) + +
+   +   +   + @SharedLocalizer["Name"] + @SharedLocalizer["Status"] + @Localizer["Frequency"] + @Localizer["NextExecution"] +   +
+ + + + + @context.Name + @DisplayStatus(context.IsEnabled, context.IsExecuting) + @DisplayFrequency(context.Interval, context.Frequency) + @context.NextExecution + + @if (context.IsStarted) + { + + } + else + { + + } + + +
+ } + + @code { + private List _jobs; + + public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Host; } } + + protected override async Task OnParametersSetAsync() + { + _jobs = await JobService.GetJobsAsync(); + } + + private string DisplayStatus(bool isEnabled, bool isExecuting) + { + var status = string.Empty; + if (!isEnabled) + { + status = Localizer["Disabled"]; + } + else + { + if (isExecuting) { - + status = Localizer["Executing"]; } else { - + status = Localizer["Idle"]; } - -
-
-} + } -@code { - private List _jobs; - - public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Host; } } - - protected override async Task OnParametersSetAsync() - { - _jobs = await JobService.GetJobsAsync(); - } - - private string DisplayStatus(bool isEnabled, bool isExecuting) - { - var status = string.Empty; - if (!isEnabled) - { - status = Localizer["Disabled"]; - } - else - { - if (isExecuting) - { - status = Localizer["Executing"]; + return status; } - else + + + private string DisplayFrequency(int interval, string frequency) { - status = Localizer["Idle"]; + var result = $"{Localizer["Every"]} {interval.ToString()} "; + switch (frequency) + { + case "m": + result += Localizer["Minute"]; + break; + case "H": + result += Localizer["Hour"]; + break; + case "d": + result += Localizer["Day"]; + break; + case "M": + result += Localizer["Month"]; + break; + } + + if (interval > 1) + { + result += Localizer["s"]; + } + + return result; + } + + private async Task DeleteJob(Job job) + { + try + { + await JobService.DeleteJobAsync(job.JobId); + await logger.LogInformation("Job Deleted {Job}", job); + StateHasChanged(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Deleting Job {Job} {Error}", job, ex.Message); + AddModuleMessage(Localizer["Error.Job.Delete"], MessageType.Error); + } + } + + private async Task StartJob(int jobId) + { + await JobService.StartJobAsync(jobId); + } + + private async Task StopJob(int jobId) + { + await JobService.StopJobAsync(jobId); + } + + private async Task Refresh() + { + _jobs = await JobService.GetJobsAsync(); + StateHasChanged(); } } - - return status; - } - - - private string DisplayFrequency(int interval, string frequency) - { - var result = $"{Localizer["Every"]} {interval.ToString()} "; - switch (frequency) - { - case "m": - result += Localizer["Minute"]; - break; - case "H": - result += Localizer["Hour"]; - break; - case "d": - result += Localizer["Day"]; - break; - case "M": - result += Localizer["Month"]; - break; - } - - if (interval > 1) - { - result += Localizer["s"]; - } - - return result; - } - - private async Task DeleteJob(Job job) - { - try - { - await JobService.DeleteJobAsync(job.JobId); - await logger.LogInformation("Job Deleted {Job}", job); - StateHasChanged(); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Deleting Job {Job} {Error}", job, ex.Message); - AddModuleMessage(Localizer["Error.Job.Delete"], MessageType.Error); - } - } - - private async Task StartJob(int jobId) - { - await JobService.StartJobAsync(jobId); - } - - private async Task StopJob(int jobId) - { - await JobService.StopJobAsync(jobId); - } - - private async Task Refresh() - { - _jobs = await JobService.GetJobsAsync(); - StateHasChanged(); - } -} diff --git a/Oqtane.Client/Modules/Admin/Languages/Add.razor b/Oqtane.Client/Modules/Admin/Languages/Add.razor index 4657fe52..dc397b95 100644 --- a/Oqtane.Client/Modules/Admin/Languages/Add.razor +++ b/Oqtane.Client/Modules/Admin/Languages/Add.razor @@ -15,226 +15,240 @@ } else { - - - @if (_availableCultures.Count() == 0) - { - - } - else - { -
-
- -
- -
-
-
- -
- -
-
-
- - } - @SharedLocalizer["Cancel"] -
- - -
-
-
- -
-
-   - -
-
-
- - @if (_packages != null) - { - @if (_packages.Count > 0) + + + @if (_availableCultures.Count() == 0) { - - - -

@context.Name

  by:  @context.Owner
- @(context.Description.Length > 400 ? (context.Description.Substring(0, 400) + "...") : context.Description)
- @(String.Format("{0:n0}", context.Downloads)) @SharedLocalizer["Search.Downloads"]  |   @SharedLocalizer["Search.Released"]: @context.ReleaseDate.ToString("MMM dd, yyyy")  |  @SharedLocalizer["Search.Version"]: @context.Version  |  @SharedLocalizer["Search.Source"]: @context.PackageUrl - - - - -
-
+ } else { -
-
- @Localizer["Search.NoResults"] -
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
} - @SharedLocalizer["Cancel"] - } -
- -
-
- -
- + + + +
+
+
+ +
+
+   + +
-
- - @SharedLocalizer["Cancel"] - - + + @if (_packages != null) + { + @if (_packages.Count > 0) + { + + + +

@context.Name

  by:  @context.Owner
+ @(context.Description.Length > 400 ? (context.Description.Substring(0, 400) + "...") : context.Description)
+ @(String.Format("{0:n0}", context.Downloads)) @SharedLocalizer["Search.Downloads"]  |   @SharedLocalizer["Search.Released"]: @context.ReleaseDate.ToString("MMM dd, yyyy")  |  @SharedLocalizer["Search.Version"]: @context.Version  |  @SharedLocalizer["Search.Source"]: @context.PackageUrl + + + + +
+
+ } + else + { +
+
+ @Localizer["Search.NoResults"] +
+ } + + @SharedLocalizer["Cancel"] + } + + +
+
+ +
+ +
+
+
+ + @SharedLocalizer["Cancel"] +
+ } -@code { - private string _code = string.Empty; - private string _isDefault = "False"; - private string _message; - private IEnumerable _supportedCultures; - private IEnumerable _availableCultures; - private List _packages; - private string _search = ""; + @code { + private ElementReference form; + private bool validated = false; - public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; + private string _code = string.Empty; + private string _isDefault = "False"; + private string _message; + private IEnumerable _supportedCultures; + private IEnumerable _availableCultures; + private List _packages; + private string _search = ""; - protected override async Task OnParametersSetAsync() - { - var languages = await LanguageService.GetLanguagesAsync(PageState.Site.SiteId); - var languagesCodes = languages.Select(l => l.Code).ToList(); + public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; - _supportedCultures = await LocalizationService.GetCulturesAsync(); - _availableCultures = _supportedCultures - .Where(c => !c.Name.Equals(Constants.DefaultCulture) && !languagesCodes.Contains(c.Name)); - await LoadTranslations(); - - if (_supportedCultures.Count() == 1) - { - _message = Localizer["OnlyEnglish"]; - } - else if (_availableCultures.Count() == 0) - { - _message = Localizer["AllLanguages"]; - } - } - - private async Task LoadTranslations() - { - _packages = await PackageService.GetPackagesAsync("translation", _search); - } - - private async Task Search() - { - try - { - await LoadTranslations(); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error On Search"); - } - } - - private async Task Reset() - { - try - { - _search = ""; - await LoadTranslations(); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error On Reset"); - } - } - - private async Task SaveLanguage() - { - var language = new Language - { - SiteId = PageState.Page.SiteId, - Name = CultureInfo.GetCultureInfo(_code).DisplayName, - Code = _code, - IsDefault = (_isDefault == null ? false : Boolean.Parse(_isDefault)) - }; - - try - { - language = await LanguageService.AddLanguageAsync(language); - - if (language.IsDefault) + protected override async Task OnParametersSetAsync() { - await SetCultureAsync(language.Code); + var languages = await LanguageService.GetLanguagesAsync(PageState.Site.SiteId); + var languagesCodes = languages.Select(l => l.Code).ToList(); + + _supportedCultures = await LocalizationService.GetCulturesAsync(); + _availableCultures = _supportedCultures + .Where(c => !c.Name.Equals(Constants.DefaultCulture) && !languagesCodes.Contains(c.Name)); + await LoadTranslations(); + + if (_supportedCultures.Count() == 1) + { + _message = Localizer["OnlyEnglish"]; + } + else if (_availableCultures.Count() == 0) + { + _message = Localizer["AllLanguages"]; + } } - await logger.LogInformation("Language Added {Language}", language); + private async Task LoadTranslations() + { + _packages = await PackageService.GetPackagesAsync("translation", _search); + } - NavigationManager.NavigateTo(NavigateUrl()); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Adding Language {Language} {Error}", language, ex.Message); - AddModuleMessage(Localizer["Error.Language.Add"], MessageType.Error); - } - } + private async Task Search() + { + try + { + await LoadTranslations(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error On Search"); + } + } - private async Task InstallLanguages() - { - try - { - await PackageService.InstallPackagesAsync(); - AddModuleMessage(string.Format(Localizer["Success.Language.Install"], NavigateUrl("admin/system")), MessageType.Success); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Installing Translations"); - } - } + private async Task Reset() + { + try + { + _search = ""; + await LoadTranslations(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error On Reset"); + } + } - private async Task DownloadLanguage(string packageid, string version) - { - try - { - await PackageService.DownloadPackageAsync(packageid, version, "Packages"); - await logger.LogInformation("Language Paclage {Name} {Version} Downloaded Successfully", packageid, version); - AddModuleMessage(Localizer["Success.Language.Download"], MessageType.Success); - StateHasChanged(); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Downloading Translation {Name} {Version}", packageid, version); - AddModuleMessage(Localizer["Error.Language.Download"], MessageType.Error); - } - } + private async Task SaveLanguage() + { + validated = true; + var interop = new Interop(JSRuntime); + if (await interop.FormValid(form)) + { + var language = new Language + { + SiteId = PageState.Page.SiteId, + Name = CultureInfo.GetCultureInfo(_code).DisplayName, + Code = _code, + IsDefault = (_isDefault == null ? false : Boolean.Parse(_isDefault)) + }; - private async Task SetCultureAsync(string culture) - { - if (culture != CultureInfo.CurrentUICulture.Name) - { - var interop = new Interop(JSRuntime); - var localizationCookieValue = CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)); - await interop.SetCookie(CookieRequestCultureProvider.DefaultCookieName, localizationCookieValue, 360); + try + { + language = await LanguageService.AddLanguageAsync(language); - NavigationManager.NavigateTo(NavigationManager.Uri, forceLoad: true); + if (language.IsDefault) + { + await SetCultureAsync(language.Code); + } + + await logger.LogInformation("Language Added {Language}", language); + + NavigationManager.NavigateTo(NavigateUrl()); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Adding Language {Language} {Error}", language, ex.Message); + AddModuleMessage(Localizer["Error.Language.Add"], MessageType.Error); + } + } + else + { + AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning); + } + } + + private async Task InstallLanguages() + { + try + { + await PackageService.InstallPackagesAsync(); + AddModuleMessage(string.Format(Localizer["Success.Language.Install"], NavigateUrl("admin/system")), MessageType.Success); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Installing Translations"); + } + } + + private async Task DownloadLanguage(string packageid, string version) + { + try + { + await PackageService.DownloadPackageAsync(packageid, version, "Packages"); + await logger.LogInformation("Language Paclage {Name} {Version} Downloaded Successfully", packageid, version); + AddModuleMessage(Localizer["Success.Language.Download"], MessageType.Success); + StateHasChanged(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Downloading Translation {Name} {Version}", packageid, version); + AddModuleMessage(Localizer["Error.Language.Download"], MessageType.Error); + } + } + + private async Task SetCultureAsync(string culture) + { + if (culture != CultureInfo.CurrentUICulture.Name) + { + var interop = new Interop(JSRuntime); + var localizationCookieValue = CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)); + await interop.SetCookie(CookieRequestCultureProvider.DefaultCookieName, localizationCookieValue, 360); + + NavigationManager.NavigateTo(NavigationManager.Uri, forceLoad: true); + } + } } - } -} diff --git a/Oqtane.Client/Modules/Admin/Languages/Index.razor b/Oqtane.Client/Modules/Admin/Languages/Index.razor index b8a3d21d..3861c425 100644 --- a/Oqtane.Client/Modules/Admin/Languages/Index.razor +++ b/Oqtane.Client/Modules/Admin/Languages/Index.razor @@ -12,101 +12,101 @@ } else { - + - -
-   - @SharedLocalizer["Name"] - @Localizer["Code"] - @Localizer["Default"] -   -
- - - @context.Name - @context.Code - - - @if (UpgradeAvailable(context.Code)) + +
+   + @SharedLocalizer["Name"] + @Localizer["Code"] + @Localizer["Default"] +   +
+ + + @context.Name + @context.Code + + + @if (UpgradeAvailable(context.Code)) + { + + } + + +
+ } + + @code { + private List _languages; + private List _packages; + + public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; + + protected override async Task OnParametersSetAsync() + { + _languages = await LanguageService.GetLanguagesAsync(PageState.Site.SiteId); + + var cultures = await LocalizationService.GetCulturesAsync(); + var culture = cultures.First(c => c.Name.Equals(Constants.DefaultCulture)); + + // Adds English as default language + _languages.Insert(0, new Language { Name = culture.DisplayName, Code = culture.Name, IsDefault = !_languages.Any(l => l.IsDefault) }); + + if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) + { + _packages = await PackageService.GetPackagesAsync("translation"); + } + } + + private async Task DeleteLanguage(Language language) + { + try { - + await LanguageService.DeleteLanguageAsync(language.LanguageId); + await logger.LogInformation("Language Deleted {Language}", language); + + StateHasChanged(); } - -
-
-} + catch (Exception ex) + { + await logger.LogError(ex, "Error Deleting Language {Language} {Error}", language, ex.Message); -@code { - private List _languages; - private List _packages; - - public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; - - protected override async Task OnParametersSetAsync() - { - _languages = await LanguageService.GetLanguagesAsync(PageState.Site.SiteId); - - var cultures = await LocalizationService.GetCulturesAsync(); - var culture = cultures.First(c => c.Name.Equals(Constants.DefaultCulture)); - - // Adds English as default language - _languages.Insert(0, new Language { Name = culture.DisplayName, Code = culture.Name, IsDefault = !_languages.Any(l => l.IsDefault) }); - - if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) - { - _packages = await PackageService.GetPackagesAsync("translation"); - } - } - - private async Task DeleteLanguage(Language language) - { - try - { - await LanguageService.DeleteLanguageAsync(language.LanguageId); - await logger.LogInformation("Language Deleted {Language}", language); - - StateHasChanged(); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Deleting Language {Language} {Error}", language, ex.Message); - - AddModuleMessage(Localizer["Error.Language.Delete"], MessageType.Error); - } - } - - private bool UpgradeAvailable(string code) - { - var upgradeavailable = false; - if (_packages != null) - { - var package = _packages.Where(item => item.PackageId == (Constants.PackageId + ".Client." + code)).FirstOrDefault(); - if (package != null) - { - upgradeavailable = (Version.Parse(package.Version).CompareTo(Version.Parse(Constants.Version)) > 0); + AddModuleMessage(Localizer["Error.Language.Delete"], MessageType.Error); + } } - } - return upgradeavailable; - } - - private async Task DownloadLanguage(string code) - { - try - { - if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) + private bool UpgradeAvailable(string code) { - await PackageService.DownloadPackageAsync(Constants.PackageId + ".Client." + code, Constants.Version, "Packages"); - await logger.LogInformation("Translation Downloaded {Code} {Version}", code, Constants.Version); - await PackageService.InstallPackagesAsync(); - AddModuleMessage(string.Format(Localizer["Success.Language.Install"], NavigateUrl("admin/system")), MessageType.Success); + var upgradeavailable = false; + if (_packages != null) + { + var package = _packages.Where(item => item.PackageId == (Constants.PackageId + ".Client." + code)).FirstOrDefault(); + if (package != null) + { + upgradeavailable = (Version.Parse(package.Version).CompareTo(Version.Parse(Constants.Version)) > 0); + } + + } + return upgradeavailable; + } + + private async Task DownloadLanguage(string code) + { + try + { + if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) + { + await PackageService.DownloadPackageAsync(Constants.PackageId + ".Client." + code, Constants.Version, "Packages"); + await logger.LogInformation("Translation Downloaded {Code} {Version}", code, Constants.Version); + await PackageService.InstallPackagesAsync(); + AddModuleMessage(string.Format(Localizer["Success.Language.Install"], NavigateUrl("admin/system")), MessageType.Success); + } + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Downloading Translation {Code} {Version} {Error}", code, Constants.Version, ex.Message); + AddModuleMessage(Localizer["Error.Language.Download"], MessageType.Error); + } } } - catch (Exception ex) - { - await logger.LogError(ex, "Error Downloading Translation {Code} {Version} {Error}", code, Constants.Version, ex.Message); - AddModuleMessage(Localizer["Error.Language.Download"], MessageType.Error); - } - } -} diff --git a/Oqtane.Client/Modules/Admin/Login/Index.razor b/Oqtane.Client/Modules/Admin/Login/Index.razor index 868031fd..0172225b 100644 --- a/Oqtane.Client/Modules/Admin/Login/Index.razor +++ b/Oqtane.Client/Modules/Admin/Login/Index.razor @@ -45,6 +45,7 @@ @code { + private ElementReference form; private string _returnUrl = string.Empty; private string _message = string.Empty; private MessageType _type = MessageType.Info; diff --git a/Oqtane.Client/Modules/Admin/Logs/Index.razor b/Oqtane.Client/Modules/Admin/Logs/Index.razor index 920ec709..b32d57c7 100644 --- a/Oqtane.Client/Modules/Admin/Logs/Index.razor +++ b/Oqtane.Client/Modules/Admin/Logs/Index.razor @@ -10,164 +10,164 @@ } else { -
-
-
-

- -
-
-

- -
-
-

- +
+
+
+

+ +
+
+

+ +
+
+

+ +
-
- @if (_logs.Any()) - { - -
-   - @Localizer["Date"] - @Localizer["Level"] - @Localizer["Feature"] - @Localizer["Function"] -
- - - @context.LogDate - @context.Level - @context.Feature - @context.Function - -
- } - else - { -

@Localizer["NoLogs"]

- } -} - -@code { - private string _level = "-"; - private string _function = "-"; - private string _rows = "10"; - private List _logs; - - public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host; - - protected override async Task OnInitializedAsync() - { - try + @if (_logs.Any()) { - await GetLogs(); + +
+   + @Localizer["Date"] + @Localizer["Level"] + @Localizer["Feature"] + @Localizer["Function"] +
+ + + @context.LogDate + @context.Level + @context.Feature + @context.Function + +
} - catch (Exception ex) + else { - await logger.LogError(ex, "Error Loading Logs {Error}", ex.Message); - AddModuleMessage(Localizer["Error.Log.Load"], MessageType.Error); +

@Localizer["NoLogs"]

} } - private async void LevelChanged(ChangeEventArgs e) - { - try - { - _level = (string)e.Value; - await GetLogs(); - StateHasChanged(); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Loading Logs {Error}", ex.Message); - AddModuleMessage(Localizer["Error.Log.Load"], MessageType.Error); - } - } + @code { + private string _level = "-"; + private string _function = "-"; + private string _rows = "10"; + private List _logs; - private async void FunctionChanged(ChangeEventArgs e) - { - try - { - _function = (string)e.Value; - await GetLogs(); - StateHasChanged(); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Loading Logs {Error}", ex.Message); - AddModuleMessage(Localizer["Error.Log.Load"], MessageType.Error); - } - } + public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host; + + protected override async Task OnInitializedAsync() + { + try + { + await GetLogs(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Loading Logs {Error}", ex.Message); + AddModuleMessage(Localizer["Error.Log.Load"], MessageType.Error); + } + } + + private async void LevelChanged(ChangeEventArgs e) + { + try + { + _level = (string)e.Value; + await GetLogs(); + StateHasChanged(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Loading Logs {Error}", ex.Message); + AddModuleMessage(Localizer["Error.Log.Load"], MessageType.Error); + } + } + + private async void FunctionChanged(ChangeEventArgs e) + { + try + { + _function = (string)e.Value; + await GetLogs(); + StateHasChanged(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Loading Logs {Error}", ex.Message); + AddModuleMessage(Localizer["Error.Log.Load"], MessageType.Error); + } + } - private async void RowsChanged(ChangeEventArgs e) - { - try - { - _rows = (string)e.Value; - await GetLogs(); - StateHasChanged(); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Loading Logs {Error}", ex.Message); - AddModuleMessage(Localizer["Error.Log.Load"], MessageType.Error); - } - } + private async void RowsChanged(ChangeEventArgs e) + { + try + { + _rows = (string)e.Value; + await GetLogs(); + StateHasChanged(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Loading Logs {Error}", ex.Message); + AddModuleMessage(Localizer["Error.Log.Load"], MessageType.Error); + } + } - private async Task GetLogs() - { - _logs = await LogService.GetLogsAsync(PageState.Site.SiteId, ((_level == "-") ? string.Empty : _level), ((_function == "-") ? string.Empty : _function), int.Parse(_rows)); - } + private async Task GetLogs() + { + _logs = await LogService.GetLogsAsync(PageState.Site.SiteId, ((_level == "-") ? string.Empty : _level), ((_function == "-") ? string.Empty : _function), int.Parse(_rows)); + } - private string GetClass(string function) - { - string classname = string.Empty; - switch (function) - { - case "Create": - classname = "table-success"; - break; - case "Read": - classname = "table-primary"; - break; - case "Update": - classname = "table-warning"; - break; - case "Delete": - classname = "table-danger"; - break; - case "Security": - classname = "table-secondary"; - break; - default: - classname = string.Empty; - break; + private string GetClass(string function) + { + string classname = string.Empty; + switch (function) + { + case "Create": + classname = "table-success"; + break; + case "Read": + classname = "table-primary"; + break; + case "Update": + classname = "table-warning"; + break; + case "Delete": + classname = "table-danger"; + break; + case "Security": + classname = "table-secondary"; + break; + default: + classname = string.Empty; + break; + } + return classname; + } } - return classname; - } -} diff --git a/Oqtane.Client/Modules/Admin/ModuleCreator/Index.razor b/Oqtane.Client/Modules/Admin/ModuleCreator/Index.razor index 06149841..d458170c 100644 --- a/Oqtane.Client/Modules/Admin/ModuleCreator/Index.razor +++ b/Oqtane.Client/Modules/Admin/ModuleCreator/Index.razor @@ -10,180 +10,186 @@ @if (string.IsNullOrEmpty(_moduledefinitionname) && _templates != null) { -
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
- @if (!string.IsNullOrEmpty(_location)) - { +
+
- +
- +
- } -
- - -} -else -{ - -} - -@code { - private string _moduledefinitionname = string.Empty; - private string _owner = string.Empty; - private string _module = string.Empty; - private string _description = string.Empty; - private List