From 64b8291487b5022e168c52ccc306b6483d89f229 Mon Sep 17 00:00:00 2001 From: sbwalker Date: Tue, 2 May 2023 14:22:34 -0400 Subject: [PATCH] improve module/theme/translation upload user experience to be consistent with download --- .../Modules/Admin/Languages/Add.razor | 20 +- .../Modules/Admin/ModuleDefinitions/Add.razor | 248 +++++---- Oqtane.Client/Modules/Admin/Themes/Add.razor | 12 +- .../Modules/Controls/FileManager.razor | 519 +++++++++--------- .../Modules/Admin/Languages/Add.resx | 6 +- .../Modules/Admin/Languages/Index.resx | 2 +- .../Modules/Admin/ModuleDefinitions/Add.resx | 4 +- .../Modules/Admin/ModuleDefinitions/Edit.resx | 2 +- .../Resources/Modules/Admin/Themes/Add.resx | 4 +- Oqtane.Client/Resources/SharedResources.resx | 2 +- 10 files changed, 413 insertions(+), 406 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/Languages/Add.razor b/Oqtane.Client/Modules/Admin/Languages/Add.razor index 5a667f16..00c1e0cc 100644 --- a/Oqtane.Client/Modules/Admin/Languages/Add.razor +++ b/Oqtane.Client/Modules/Admin/Languages/Add.razor @@ -50,11 +50,10 @@ else
- +
- @SharedLocalizer["Cancel"] @@ -125,18 +124,6 @@ else } } - private async Task InstallTranslations() - { - try - { - 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 SetCultureAsync(string culture) { if (culture != CultureInfo.CurrentUICulture.Name) @@ -148,4 +135,9 @@ else NavigationManager.NavigateTo(NavigationManager.Uri, true); } } + + private void OnUpload() + { + AddModuleMessage(string.Format(Localizer["Success.Language.Download"], NavigateUrl("admin/system")), MessageType.Success); + } } diff --git a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Add.razor b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Add.razor index 0ac63c11..548a45f5 100644 --- a/Oqtane.Client/Modules/Admin/ModuleDefinitions/Add.razor +++ b/Oqtane.Client/Modules/Admin/ModuleDefinitions/Add.razor @@ -65,13 +65,15 @@ } } +
+
- +
@@ -112,137 +114,139 @@ } @SharedLocalizer["Cancel"] -
-
- @code { - private List _packages; - private string _price = "free"; - private string _search = ""; - private string _productname = ""; - private string _packageid = ""; - private string _packagelicense = ""; - private string _packageversion = ""; + private List _packages; + private string _price = "free"; + private string _search = ""; + private string _productname = ""; + private string _packageid = ""; + private string _packagelicense = ""; + private string _packageversion = ""; - public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host; + public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host; - protected override async Task OnInitializedAsync() - { - try - { - await LoadModuleDefinitions(); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Loading Packages {Error}", ex.Message); - AddModuleMessage(Localizer["Error.Package.Load"], MessageType.Error); - } - } + protected override async Task OnInitializedAsync() + { + try + { + await LoadModuleDefinitions(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Loading Packages {Error}", ex.Message); + AddModuleMessage(Localizer["Error.Package.Load"], MessageType.Error); + } + } - private async Task LoadModuleDefinitions() - { - var moduledefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync(PageState.Site.SiteId); - _packages = await PackageService.GetPackagesAsync("module", _search, _price, ""); + private async Task LoadModuleDefinitions() + { + var moduledefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync(PageState.Site.SiteId); + _packages = await PackageService.GetPackagesAsync("module", _search, _price, ""); - if (_packages != null) - { - foreach (Package package in _packages.ToArray()) - { - if (moduledefinitions.Exists(item => item.PackageName == package.PackageId)) - { - _packages.Remove(package); - } - } - } - } + if (_packages != null) + { + foreach (Package package in _packages.ToArray()) + { + if (moduledefinitions.Exists(item => item.PackageName == package.PackageId)) + { + _packages.Remove(package); + } + } + } + } - private async void PriceChanged(ChangeEventArgs e) - { - try - { - _price = (string)e.Value; - _search = ""; - await LoadModuleDefinitions(); - StateHasChanged(); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error On PriceChanged"); - } - } + private async void PriceChanged(ChangeEventArgs e) + { + try + { + _price = (string)e.Value; + _search = ""; + await LoadModuleDefinitions(); + StateHasChanged(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error On PriceChanged"); + } + } - private async Task Search() - { - try - { - await LoadModuleDefinitions(); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error On Search"); - } - } + private async Task Search() + { + try + { + await LoadModuleDefinitions(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error On Search"); + } + } - private async Task Reset() - { - try - { - _search = ""; - await LoadModuleDefinitions(); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error On Reset"); - } - } + private async Task Reset() + { + try + { + _search = ""; + await LoadModuleDefinitions(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error On Reset"); + } + } - private void HideModal() - { - _productname = ""; - _packagelicense = ""; - StateHasChanged(); - } + private void HideModal() + { + _productname = ""; + _packagelicense = ""; + StateHasChanged(); + } - private async Task GetPackage(string packageid, string version) - { - try - { - var package = await PackageService.GetPackageAsync(packageid, version); - if (package != null) - { - _productname = package.Name; - _packageid = package.PackageId; - if (!string.IsNullOrEmpty(package.License)) - { - _packagelicense = package.License.Replace("\n", "
"); - } - _packageversion = package.Version; - } - StateHasChanged(); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Getting Package {PackageId} {Version}", packageid, version); - AddModuleMessage(Localizer["Error.Module.Download"], MessageType.Error); - } - } + private async Task GetPackage(string packageid, string version) + { + try + { + var package = await PackageService.GetPackageAsync(packageid, version); + if (package != null) + { + _productname = package.Name; + _packageid = package.PackageId; + if (!string.IsNullOrEmpty(package.License)) + { + _packagelicense = package.License.Replace("\n", "
"); + } + _packageversion = package.Version; + } + StateHasChanged(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Getting Package {PackageId} {Version}", packageid, version); + AddModuleMessage(Localizer["Error.Module.Download"], MessageType.Error); + } + } - private async Task DownloadPackage() - { - try - { - await PackageService.DownloadPackageAsync(_packageid, _packageversion, Constants.PackagesFolder); - await logger.LogInformation("Package {PackageId} {Version} Downloaded Successfully", _packageid, _packageversion); - AddModuleMessage(string.Format(Localizer["Success.Module.Download"], NavigateUrl("admin/system")), MessageType.Success); - _productname = ""; - _packagelicense = ""; - StateHasChanged(); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Downloading Package {PackageId} {Version}", _packageid, _packageversion); - AddModuleMessage(Localizer["Error.Module.Download"], MessageType.Error); - } - } + private async Task DownloadPackage() + { + try + { + await PackageService.DownloadPackageAsync(_packageid, _packageversion, Constants.PackagesFolder); + await logger.LogInformation("Package {PackageId} {Version} Downloaded Successfully", _packageid, _packageversion); + AddModuleMessage(string.Format(Localizer["Success.Module.Download"], NavigateUrl("admin/system")), MessageType.Success); + _productname = ""; + _packagelicense = ""; + StateHasChanged(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Downloading Package {PackageId} {Version}", _packageid, _packageversion); + AddModuleMessage(Localizer["Error.Module.Download"], MessageType.Error); + } + } + + private void OnUpload() + { + AddModuleMessage(string.Format(Localizer["Success.Module.Download"], NavigateUrl("admin/system")), MessageType.Success); + } } diff --git a/Oqtane.Client/Modules/Admin/Themes/Add.razor b/Oqtane.Client/Modules/Admin/Themes/Add.razor index dca90274..76c95d83 100644 --- a/Oqtane.Client/Modules/Admin/Themes/Add.razor +++ b/Oqtane.Client/Modules/Admin/Themes/Add.razor @@ -65,13 +65,15 @@ } } +
+
- +
@@ -112,9 +114,6 @@ } @SharedLocalizer["Cancel"] -
-
- @code { private List _packages; @@ -245,4 +244,9 @@ AddModuleMessage(Localizer["Error.Theme.Download"], MessageType.Error); } } + + private void OnUpload() + { + AddModuleMessage(string.Format(Localizer["Success.Theme.Download"], NavigateUrl("admin/system")), MessageType.Success); + } } diff --git a/Oqtane.Client/Modules/Controls/FileManager.razor b/Oqtane.Client/Modules/Controls/FileManager.razor index fe0fa6cc..cd5ad6e3 100644 --- a/Oqtane.Client/Modules/Controls/FileManager.razor +++ b/Oqtane.Client/Modules/Controls/FileManager.razor @@ -87,299 +87,306 @@ } @code { - private bool _initialized = false; - private List _folders; - private List _files = new List(); - private string _fileinputid = string.Empty; - private string _progressinfoid = string.Empty; - private string _progressbarid = string.Empty; - private string _filter = "*"; - private bool _haseditpermission = false; - private string _image = string.Empty; - private File _file = null; - private string _guid; - private string _message = string.Empty; - private MessageType _messagetype; + private bool _initialized = false; + private List _folders; + private List _files = new List(); + private string _fileinputid = string.Empty; + private string _progressinfoid = string.Empty; + private string _progressbarid = string.Empty; + private string _filter = "*"; + private bool _haseditpermission = false; + private string _image = string.Empty; + private File _file = null; + private string _guid; + private string _message = string.Empty; + private MessageType _messagetype; - [Parameter] - public string Id { get; set; } // optional - for setting the id of the FileManager component for accessibility + [Parameter] + public string Id { get; set; } // optional - for setting the id of the FileManager component for accessibility - [Parameter] - public int FolderId { get; set; } = -1; // optional - for setting a specific default folder by folderid + [Parameter] + public int FolderId { get; set; } = -1; // optional - for setting a specific default folder by folderid - [Parameter] - public string Folder { get; set; } = ""; // optional - for setting a specific default folder by folder path + [Parameter] + public string Folder { get; set; } = ""; // optional - for setting a specific default folder by folder path - [Parameter] - public int FileId { get; set; } = -1; // optional - for selecting a specific file by default + [Parameter] + public int FileId { get; set; } = -1; // optional - for selecting a specific file by default - [Parameter] - public string Filter { get; set; } // optional - comma delimited list of file types that can be selected or uploaded ie. "jpg,gif" + [Parameter] + public string Filter { get; set; } // optional - comma delimited list of file types that can be selected or uploaded ie. "jpg,gif" - [Parameter] - public bool ShowFiles { get; set; } = true; // optional - for indicating whether a list of files should be displayed - default is true + [Parameter] + public bool ShowFiles { get; set; } = true; // optional - for indicating whether a list of files should be displayed - default is true - [Parameter] - public bool ShowUpload { get; set; } = true; // optional - for indicating whether a Upload controls should be displayed - default is true + [Parameter] + public bool ShowUpload { get; set; } = true; // optional - for indicating whether a Upload controls should be displayed - default is true - [Parameter] - public bool ShowFolders { get; set; } = true; // optional - for indicating whether a list of folders should be displayed - default is true + [Parameter] + public bool ShowFolders { get; set; } = true; // optional - for indicating whether a list of folders should be displayed - default is true - [Parameter] - public bool ShowImage { get; set; } = true; // optional - for indicating whether an image thumbnail should be displayed - default is true + [Parameter] + public bool ShowImage { get; set; } = true; // optional - for indicating whether an image thumbnail should be displayed - default is true - [Parameter] - public bool ShowSuccess { get; set; } = false; // optional - for indicating whether a success message should be displayed upon successful upload - default is false + [Parameter] + public bool ShowSuccess { get; set; } = false; // optional - for indicating whether a success message should be displayed upon successful upload - default is false - [Parameter] - public bool UploadMultiple { get; set; } = false; // optional - enable multiple file uploads - default false + [Parameter] + public bool UploadMultiple { get; set; } = false; // optional - enable multiple file uploads - default false - [Parameter] - public EventCallback OnUpload { get; set; } // optional - executes a method in the calling component when a file is uploaded + [Parameter] + public EventCallback OnUpload { get; set; } // optional - executes a method in the calling component when a file is uploaded - [Parameter] - public EventCallback OnSelect { get; set; } // optional - executes a method in the calling component when a file is selected + [Parameter] + public EventCallback OnSelect { get; set; } // optional - executes a method in the calling component when a file is selected - [Parameter] - public EventCallback OnDelete { get; set; } // optional - executes a method in the calling component when a file is deleted + [Parameter] + public EventCallback OnDelete { get; set; } // optional - executes a method in the calling component when a file is deleted - protected override async Task OnInitializedAsync() - { - // packages folder is a framework folder for uploading installable nuget packages - if (Folder == Constants.PackagesFolder) - { - ShowFiles = false; - ShowFolders = false; - Filter = "nupkg"; - ShowSuccess = true; - } + protected override async Task OnInitializedAsync() + { + // packages folder is a framework folder for uploading installable nuget packages + if (Folder == Constants.PackagesFolder) + { + ShowFiles = false; + ShowFolders = false; + Filter = "nupkg"; + ShowSuccess = true; + } - if (!ShowFiles) - { - ShowImage = false; - } + if (!ShowFiles) + { + ShowImage = false; + } - _folders = await FolderService.GetFoldersAsync(ModuleState.SiteId); + _folders = await FolderService.GetFoldersAsync(ModuleState.SiteId); - if (!string.IsNullOrEmpty(Folder) && Folder != Constants.PackagesFolder) - { - Folder folder = await FolderService.GetFolderAsync(ModuleState.SiteId, Folder); - if (folder != null) - { - FolderId = folder.FolderId; - } - else - { - FolderId = -1; - _message = "Folder Path " + Folder + "Does Not Exist"; - _messagetype = MessageType.Error; - } - } + if (!string.IsNullOrEmpty(Folder) && Folder != Constants.PackagesFolder) + { + Folder folder = await FolderService.GetFolderAsync(ModuleState.SiteId, Folder); + if (folder != null) + { + FolderId = folder.FolderId; + } + else + { + FolderId = -1; + _message = "Folder Path " + Folder + "Does Not Exist"; + _messagetype = MessageType.Error; + } + } - if (FileId != -1) - { - File file = await FileService.GetFileAsync(FileId); - if (file != null) - { - FolderId = file.FolderId; - await OnSelect.InvokeAsync(FileId); - } - else - { - FileId = -1; // file does not exist - _message = "FileId " + FileId.ToString() + "Does Not Exist"; - _messagetype = MessageType.Error; - } - } + if (FileId != -1) + { + File file = await FileService.GetFileAsync(FileId); + if (file != null) + { + FolderId = file.FolderId; + await OnSelect.InvokeAsync(FileId); + } + else + { + FileId = -1; // file does not exist + _message = "FileId " + FileId.ToString() + "Does Not Exist"; + _messagetype = MessageType.Error; + } + } - await SetImage(); + await SetImage(); - if (!string.IsNullOrEmpty(Filter)) - { - _filter = "." + Filter.Replace(",", ",."); - } + if (!string.IsNullOrEmpty(Filter)) + { + _filter = "." + Filter.Replace(",", ",."); + } - await GetFiles(); + await GetFiles(); - // create unique id for component - _guid = Guid.NewGuid().ToString("N"); - _fileinputid = "FileInput_" + _guid; - _progressinfoid = "ProgressInfo_" + _guid; - _progressbarid = "ProgressBar_" + _guid; + // create unique id for component + _guid = Guid.NewGuid().ToString("N"); + _fileinputid = "FileInput_" + _guid; + _progressinfoid = "ProgressInfo_" + _guid; + _progressbarid = "ProgressBar_" + _guid; - _initialized = true; - } + _initialized = true; + } - private async Task GetFiles() - { - _haseditpermission = false; - if (Folder == Constants.PackagesFolder) - { - _haseditpermission = UserSecurity.IsAuthorized(PageState.User, RoleNames.Host); - _files = new List(); - } - else - { - Folder folder = _folders.FirstOrDefault(item => item.FolderId == FolderId); - if (folder != null) - { - _haseditpermission = UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, folder.PermissionList); - _files = await FileService.GetFilesAsync(FolderId); - } - else - { - _haseditpermission = false; - _files = new List(); - } - } - if (_filter != "*") - { - List filtered = new List(); - foreach (File file in _files) - { - if (_filter.ToUpper().IndexOf("." + file.Extension.ToUpper()) != -1) - { - filtered.Add(file); - } - } - _files = filtered; - } - } + private async Task GetFiles() + { + _haseditpermission = false; + if (Folder == Constants.PackagesFolder) + { + _haseditpermission = UserSecurity.IsAuthorized(PageState.User, RoleNames.Host); + _files = new List(); + } + else + { + Folder folder = _folders.FirstOrDefault(item => item.FolderId == FolderId); + if (folder != null) + { + _haseditpermission = UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, folder.PermissionList); + _files = await FileService.GetFilesAsync(FolderId); + } + else + { + _haseditpermission = false; + _files = new List(); + } + if (_filter != "*") + { + List filtered = new List(); + foreach (File file in _files) + { + if (_filter.ToUpper().IndexOf("." + file.Extension.ToUpper()) != -1) + { + filtered.Add(file); + } + } + _files = filtered; + } + } + } - private async Task FolderChanged(ChangeEventArgs e) - { - _message = string.Empty; - try - { - FolderId = int.Parse((string)e.Value); - await GetFiles(); - FileId = -1; - _file = null; - _image = string.Empty; - StateHasChanged(); - } - catch (Exception ex) - { - await logger.LogError(ex, "Error Loading Files {Error}", ex.Message); - _message = Localizer["Error.File.Load"]; - _messagetype = MessageType.Error; - } - } + private async Task FolderChanged(ChangeEventArgs e) + { + _message = string.Empty; + try + { + FolderId = int.Parse((string)e.Value); + await GetFiles(); + FileId = -1; + _file = null; + _image = string.Empty; + StateHasChanged(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Loading Files {Error}", ex.Message); + _message = Localizer["Error.File.Load"]; + _messagetype = MessageType.Error; + } + } - private async Task FileChanged(ChangeEventArgs e) - { - _message = string.Empty; - FileId = int.Parse((string)e.Value); - if (FileId != -1) - { - await OnSelect.InvokeAsync(FileId); - } + private async Task FileChanged(ChangeEventArgs e) + { + _message = string.Empty; + FileId = int.Parse((string)e.Value); + if (FileId != -1) + { + await OnSelect.InvokeAsync(FileId); + } - await SetImage(); - StateHasChanged(); - } + await SetImage(); + StateHasChanged(); + } - private async Task SetImage() - { - _image = string.Empty; - _file = null; - if (FileId != -1) - { - _file = await FileService.GetFileAsync(FileId); - if (_file != null && ShowImage && _file.ImageHeight != 0 && _file.ImageWidth != 0) - { - var maxwidth = 200; - var maxheight = 200; + private async Task SetImage() + { + _image = string.Empty; + _file = null; + if (FileId != -1) + { + _file = await FileService.GetFileAsync(FileId); + if (_file != null && ShowImage && _file.ImageHeight != 0 && _file.ImageWidth != 0) + { + var maxwidth = 200; + var maxheight = 200; - var ratioX = (double)maxwidth / (double)_file.ImageWidth; - var ratioY = (double)maxheight / (double)_file.ImageHeight; - var ratio = ratioX < ratioY ? ratioX : ratioY; + var ratioX = (double)maxwidth / (double)_file.ImageWidth; + var ratioY = (double)maxheight / (double)_file.ImageHeight; + var ratio = ratioX < ratioY ? ratioX : ratioY; - _image = "\"""; - } - } - } + _image = "\"""; + } + } + } - private async Task UploadFiles() - { - _message = string.Empty; - var interop = new Interop(JSRuntime); - var uploads = await interop.GetFiles(_fileinputid); - if (uploads.Length > 0) - { - string restricted = ""; - foreach (var upload in uploads) - { - var extension = (upload.LastIndexOf(".") != -1) ? upload.Substring(upload.LastIndexOf(".") + 1) : ""; - if (!Constants.UploadableFiles.Split(',').Contains(extension.ToLower())) - { - restricted += (restricted == "" ? "" : ",") + extension; - } - } - if (restricted == "") - { - try - { - // upload the files - var posturl = Utilities.TenantUrl(PageState.Alias, "/api/file/upload"); - var folder = (Folder == Constants.PackagesFolder) ? Folder : FolderId.ToString(); - await interop.UploadFiles(posturl, folder, _guid, SiteState.AntiForgeryToken); + private async Task UploadFiles() + { + _message = string.Empty; + var interop = new Interop(JSRuntime); + var uploads = await interop.GetFiles(_fileinputid); + if (uploads.Length > 0) + { + string restricted = ""; + foreach (var upload in uploads) + { + var extension = (upload.LastIndexOf(".") != -1) ? upload.Substring(upload.LastIndexOf(".") + 1) : ""; + if (!Constants.UploadableFiles.Split(',').Contains(extension.ToLower())) + { + restricted += (restricted == "" ? "" : ",") + extension; + } + } + if (restricted == "") + { + try + { + // upload the files + var posturl = Utilities.TenantUrl(PageState.Alias, "/api/file/upload"); + var folder = (Folder == Constants.PackagesFolder) ? Folder : FolderId.ToString(); + await interop.UploadFiles(posturl, folder, _guid, SiteState.AntiForgeryToken); - // uploading is asynchronous so we need to wait for the uploads to complete - // note that this will only wait a maximum of 15 seconds which may not be long enough for very large file uploads - bool success = false; - int attempts = 0; - while (attempts < 5 && !success) - { - attempts += 1; - Thread.Sleep(1000 * attempts); // progressive retry + // uploading is asynchronous so we need to wait for the uploads to complete + // note that this will only wait a maximum of 15 seconds which may not be long enough for very large file uploads + bool success = false; + int attempts = 0; + while (attempts < 5 && !success) + { + attempts += 1; + Thread.Sleep(1000 * attempts); // progressive retry - success = true; - List files = await FileService.GetFilesAsync(folder); - if (files.Count > 0) - { - foreach (string upload in uploads) - { - if (!files.Exists(item => item.Name == upload)) - { - success = false; - } - } - } - } + success = true; + List files = await FileService.GetFilesAsync(folder); + if (files.Count > 0) + { + foreach (string upload in uploads) + { + if (!files.Exists(item => item.Name == upload)) + { + success = false; + } + } + } + } - // reset progress indicators - await interop.SetElementAttribute(_guid + "ProgressInfo", "style", "display: none;"); - await interop.SetElementAttribute(_guid + "ProgressBar", "style", "display: none;"); + // reset progress indicators + await interop.SetElementAttribute(_guid + "ProgressInfo", "style", "display: none;"); + await interop.SetElementAttribute(_guid + "ProgressBar", "style", "display: none;"); - if (success) - { - await logger.LogInformation("File Upload Succeeded {Files}", uploads); - if (ShowSuccess) - { - _message = Localizer["Success.File.Upload"]; - _messagetype = MessageType.Success; - } - } - else - { - await logger.LogInformation("File Upload Failed Or Is Still In Progress {Files}", uploads); - _message = Localizer["Error.File.Upload"]; - _messagetype = MessageType.Error; - } + if (success) + { + await logger.LogInformation("File Upload Succeeded {Files}", uploads); + if (ShowSuccess) + { + _message = Localizer["Success.File.Upload"]; + _messagetype = MessageType.Success; + } + } + else + { + await logger.LogInformation("File Upload Failed Or Is Still In Progress {Files}", uploads); + _message = Localizer["Error.File.Upload"]; + _messagetype = MessageType.Error; + } - // set FileId to first file in upload collection - await GetFiles(); - var file = _files.Where(item => item.Name == uploads[0]).FirstOrDefault(); - if (file != null) - { - FileId = file.FileId; - await SetImage(); - await OnUpload.InvokeAsync(FileId); - } - StateHasChanged(); + if (Folder == Constants.PackagesFolder) + { + await OnUpload.InvokeAsync(-1); + } + else + { + // set FileId to first file in upload collection + await GetFiles(); + var file = _files.Where(item => item.Name == uploads[0]).FirstOrDefault(); + if (file != null) + { + FileId = file.FileId; + await SetImage(); + await OnUpload.InvokeAsync(FileId); + } + StateHasChanged(); + } } catch (Exception ex) { diff --git a/Oqtane.Client/Resources/Modules/Admin/Languages/Add.resx b/Oqtane.Client/Resources/Modules/Admin/Languages/Add.resx index a200a84d..8132ccc7 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Languages/Add.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Languages/Add.resx @@ -132,11 +132,11 @@ Default? - - You Must <a href={0}>Restart</a> To Complete The Installation. + + Translation Package Saved Successfully. You Must <a href={0}>Restart</a> To Complete The Installation. - Upload one or more translation packages. Once they are uploaded click Install. + Upload one or more translation packages. Translation diff --git a/Oqtane.Client/Resources/Modules/Admin/Languages/Index.resx b/Oqtane.Client/Resources/Modules/Admin/Languages/Index.resx index 9b031c07..c755205f 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Languages/Index.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Languages/Index.resx @@ -133,7 +133,7 @@ Delete Language - Translation Downloaded Successfully. You Must <a href={0}>Restart</a> Your Application To Complete The Installation. + Translation Package Saved Successfully. You Must <a href={0}>Restart</a> Your Application To Complete The Installation. Error Downloading Translation diff --git a/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Add.resx b/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Add.resx index 7527202c..9db1c83a 100644 --- a/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Add.resx +++ b/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Add.resx @@ -124,13 +124,13 @@ Error Loading Packages - Module Downloaded Successfully. You Must <a href={0}>Restart</a> Your Application To Complete The Installation. + Module Package Saved Successfully. You Must <a href={0}>Restart</a> Your Application To Complete The Installation. Error Downloading Module - Upload one or more module packages. Once they are uploaded click Install to complete the installation. + Upload one or more module packages. No Modules Match The Criteria Provided Or Package Service Is Disabled diff --git a/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Edit.resx b/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Edit.resx index 83a55354..2afd0baa 100644 --- a/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Edit.resx +++ b/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Edit.resx @@ -211,7 +211,7 @@ No Translations Exist For This Module Or Package Service Is Disabled - Translation Downloaded Successfully. You Must <a href={0}>Restart</a> Your Application To Complete The Installation. + Translation Package Saved Successfully. You Must <a href={0}>Restart</a> Your Application To Complete The Installation. Translations diff --git a/Oqtane.Client/Resources/Modules/Admin/Themes/Add.resx b/Oqtane.Client/Resources/Modules/Admin/Themes/Add.resx index 2a2c0d5a..b7a18332 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Themes/Add.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Themes/Add.resx @@ -124,13 +124,13 @@ Theme: - Theme Downloaded Successfully. You Must <a href={0}>Restart</a> Your Application To Complete The Installation. + Theme Package Saved Successfully. You Must <a href={0}>Restart</a> Your Application To Complete The Installation. Error Downloading Theme - Upload one or more theme packages. Once they are uploaded click Install to complete the installation. + Upload one or more theme packages. No Themes Match The Criteria Provided Or Package Service Is Disabled diff --git a/Oqtane.Client/Resources/SharedResources.resx b/Oqtane.Client/Resources/SharedResources.resx index 4ec3d693..e03b4454 100644 --- a/Oqtane.Client/Resources/SharedResources.resx +++ b/Oqtane.Client/Resources/SharedResources.resx @@ -340,6 +340,6 @@ Visitor Management - Please note that the third party extensions displayed above have been registered in the <a href="https://www.oqtane.net" target="_new">Oqtane Marketplace</a> which enables them to be seamlessly downloaded and installed into the framework. + Please note that third party extensions are registered in the <a href="https://www.oqtane.net" target="_new">Oqtane Marketplace</a> which enables them to be seamlessly downloaded and installed into the framework. \ No newline at end of file