From 7035f4cc1f846882d5c64b461d2069e585ca15c8 Mon Sep 17 00:00:00 2001 From: Leigh Pointer Date: Fri, 1 Dec 2023 21:09:33 +0100 Subject: [PATCH 1/3] File Extension management - site wide. I have added to the site settings file extension management. The Constants remain for backward compatibility. If the extensions are not updated then the Constant will be used. --- Oqtane.Client/Modules/Admin/Files/Add.razor | 7 +- Oqtane.Client/Modules/Admin/Site/Index.razor | 29 +++++++- .../Modules/Admin/UserProfile/Index.razor | 6 +- .../Modules/Controls/FileManager.razor | 6 +- .../Modules/Controls/RichTextEditor.razor | 74 ++++++++++--------- .../Resources/Modules/Admin/Site/Index.resx | 15 ++++ Oqtane.Server/Controllers/FileController.cs | 28 +++++-- 7 files changed, 121 insertions(+), 44 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/Files/Add.razor b/Oqtane.Client/Modules/Admin/Files/Add.razor index d8655e1a..54c8ccbf 100644 --- a/Oqtane.Client/Modules/Admin/Files/Add.razor +++ b/Oqtane.Client/Modules/Admin/Files/Add.razor @@ -4,6 +4,7 @@ @inject NavigationManager NavigationManager @inject IFileService FileService @inject IFolderService FolderService +@inject ISettingService SettingService @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer @@ -63,12 +64,16 @@ private List _folders; private int _folderId = -1; private string _name = ""; + private string _UploadableFiles = string.Empty; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; protected override async Task OnInitializedAsync() { _folders = await FolderService.GetFoldersAsync(ModuleState.SiteId); + var settings = await SettingService.GetSiteSettingsAsync(SiteState.Alias.SiteId); + var _ImageFiles = SettingService.GetSetting(settings, "ImageFiles", Constants.ImageFiles); + _UploadableFiles = _ImageFiles + "," + SettingService.GetSetting(settings, "UploadableFiles", Constants.UploadableFiles); if (PageState.QueryString.ContainsKey("id")) { @@ -93,7 +98,7 @@ _name = _url.Substring(_url.LastIndexOf("/", StringComparison.Ordinal) + 1); } - if (!Constants.UploadableFiles.Split(',').Contains(Path.GetExtension(_name).ToLower().Replace(".", ""))) + if (!_UploadableFiles.Split(',').Contains(Path.GetExtension(_name).ToLower().Replace(".", ""))) { AddModuleMessage(Localizer["Message.Download.InvalidExtension"], MessageType.Warning); return; diff --git a/Oqtane.Client/Modules/Admin/Site/Index.razor b/Oqtane.Client/Modules/Admin/Site/Index.razor index b6a9284a..5da7e315 100644 --- a/Oqtane.Client/Modules/Admin/Site/Index.razor +++ b/Oqtane.Client/Modules/Admin/Site/Index.razor @@ -74,7 +74,7 @@
- +
@@ -119,6 +119,22 @@
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
@@ -377,6 +393,8 @@ private string _smtpsender = string.Empty; private string _smtprelay = "False"; private string _smtpenabled = "True"; + private string _ImageFiles = string.Empty; + private string _UploadableFiles = string.Empty; private int _retention = 30; private string _pwaisenabled; private int _pwaappiconfileid = -1; @@ -462,6 +480,10 @@ _smtpenabled = SettingService.GetSetting(settings, "SMTPEnabled", "True"); _retention = int.Parse(SettingService.GetSetting(settings, "NotificationRetention", "30")); + //File Extensions + _ImageFiles = SettingService.GetSetting(settings, "ImageFiles", Constants.ImageFiles); + _UploadableFiles = SettingService.GetSetting(settings, "UploadableFiles", Constants.UploadableFiles); + // aliases await GetAliases(); @@ -622,6 +644,11 @@ settings = SettingService.SetSetting(settings, "SMTPEnabled", _smtpenabled, true); settings = SettingService.SetSetting(settings, "SiteGuid", _siteguid, true); settings = SettingService.SetSetting(settings, "NotificationRetention", _retention.ToString(), true); + + //File Extensions + settings = SettingService.SetSetting(settings, "ImageFiles", _ImageFiles, true); + settings = SettingService.SetSetting(settings, "UploadableFiles", _UploadableFiles, true); + await SettingService.UpdateSiteSettingsAsync(settings, site.SiteId); await logger.LogInformation("Site Settings Saved {Site}", site); diff --git a/Oqtane.Client/Modules/Admin/UserProfile/Index.razor b/Oqtane.Client/Modules/Admin/UserProfile/Index.razor index feb8471f..514379cf 100644 --- a/Oqtane.Client/Modules/Admin/UserProfile/Index.razor +++ b/Oqtane.Client/Modules/Admin/UserProfile/Index.razor @@ -77,7 +77,7 @@
- +
@@ -311,7 +311,7 @@ private int folderid = -1; private int photofileid = -1; private File photo = null; - + private string _ImageFiles = string.Empty; private List profiles; private Dictionary settings; private string category = string.Empty; @@ -360,6 +360,8 @@ photofileid = -1; photo = null; } + var sitesettings = await SettingService.GetSiteSettingsAsync(SiteState.Alias.SiteId); + _ImageFiles = SettingService.GetSetting(settings, "ImageFiles", Constants.ImageFiles); settings = await SettingService.GetUserSettingsAsync(PageState.User.UserId); diff --git a/Oqtane.Client/Modules/Controls/FileManager.razor b/Oqtane.Client/Modules/Controls/FileManager.razor index 5162c1f0..a402d32d 100644 --- a/Oqtane.Client/Modules/Controls/FileManager.razor +++ b/Oqtane.Client/Modules/Controls/FileManager.razor @@ -3,6 +3,7 @@ @inherits ModuleControlBase @inject IFolderService FolderService @inject IFileService FileService +@inject ISettingService SettingService @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer @@ -343,6 +344,9 @@ _message = string.Empty; var interop = new Interop(JSRuntime); var uploads = await interop.GetFiles(_fileinputid); + var settings = await SettingService.GetSiteSettingsAsync(SiteState.Alias.SiteId); + var _ImageFiles = SettingService.GetSetting(settings, "ImageFiles", Constants.ImageFiles); + var _UploadableFiles = _ImageFiles + "," + SettingService.GetSetting(settings, "UploadableFiles", Constants.UploadableFiles); if (uploads.Length > 0) { string restricted = ""; @@ -350,7 +354,7 @@ { var filename = upload.Split(':')[0]; var extension = (filename.LastIndexOf(".") != -1) ? filename.Substring(filename.LastIndexOf(".") + 1) : ""; - if (!Constants.UploadableFiles.Split(',').Contains(extension.ToLower())) + if (!_UploadableFiles.Split(',').Contains(extension.ToLower())) { restricted += (restricted == "" ? "" : ",") + extension; } diff --git a/Oqtane.Client/Modules/Controls/RichTextEditor.razor b/Oqtane.Client/Modules/Controls/RichTextEditor.razor index ca490d52..b2741aab 100644 --- a/Oqtane.Client/Modules/Controls/RichTextEditor.razor +++ b/Oqtane.Client/Modules/Controls/RichTextEditor.razor @@ -1,5 +1,6 @@ @namespace Oqtane.Modules.Controls @inherits ModuleControlBase +@inject ISettingService SettingService @inject IStringLocalizer Localizer
@@ -8,7 +9,7 @@ @if (_richfilemanager) { - +
} @@ -73,7 +74,7 @@ @if (_rawfilemanager) { - +
} @@ -104,51 +105,58 @@
@code { - private ElementReference _editorElement; - private ElementReference _toolBar; - private bool _richfilemanager = false; - private FileManager _fileManager; - private string _richhtml = string.Empty; - private string _originalrichhtml = string.Empty; - private bool _rawfilemanager = false; - private string _rawhtml = string.Empty; - private string _originalrawhtml = string.Empty; - private string _message = string.Empty; + private ElementReference _editorElement; + private ElementReference _toolBar; + private bool _richfilemanager = false; + private FileManager _fileManager; + private string _richhtml = string.Empty; + private string _originalrichhtml = string.Empty; + private bool _rawfilemanager = false; + private string _rawhtml = string.Empty; + private string _originalrawhtml = string.Empty; + private string _message = string.Empty; + private string _ImageFiles = string.Empty; - [Parameter] - public string Content { get; set; } + [Parameter] + public string Content { get; set; } - [Parameter] - public bool ReadOnly { get; set; } = false; + [Parameter] + public bool ReadOnly { get; set; } = false; - [Parameter] - public string Placeholder { get; set; } = "Enter Your Content..."; + [Parameter] + public string Placeholder { get; set; } = "Enter Your Content..."; - [Parameter] - public bool AllowFileManagement { get; set; } = true; + [Parameter] + public bool AllowFileManagement { get; set; } = true; - [Parameter] - public bool AllowRawHtml { get; set; } = true; - - // parameters only applicable to rich text editor - [Parameter] - public RenderFragment ToolbarContent { get; set; } + [Parameter] + public bool AllowRawHtml { get; set; } = true; - [Parameter] - public string Theme { get; set; } = "snow"; + // parameters only applicable to rich text editor + [Parameter] + public RenderFragment ToolbarContent { get; set; } - [Parameter] - public string DebugLevel { get; set; } = "info"; + [Parameter] + public string Theme { get; set; } = "snow"; - public override List Resources => new List() + [Parameter] + public string DebugLevel { get; set; } = "info"; + + public override List Resources => new List() { new Resource { ResourceType = ResourceType.Script, Bundle = "Quill", Url = "js/quill.min.js" }, new Resource { ResourceType = ResourceType.Script, Bundle = "Quill", Url = "js/quill-blot-formatter.min.js" }, new Resource { ResourceType = ResourceType.Script, Bundle = "Quill", Url = "js/quill-interop.js" } }; - protected override void OnParametersSet() - { + protected override async Task OnInitializedAsync() + { + var settings = await SettingService.GetSiteSettingsAsync(SiteState.Alias.SiteId); + _ImageFiles = SettingService.GetSetting(settings, "ImageFiles", Constants.ImageFiles); + } + + protected override void OnParametersSet() + { _richhtml = Content; _rawhtml = Content; _originalrawhtml = _rawhtml; // preserve for comparison later diff --git a/Oqtane.Client/Resources/Modules/Admin/Site/Index.resx b/Oqtane.Client/Resources/Modules/Admin/Site/Index.resx index 0d9b6c65..3234f943 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Site/Index.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Site/Index.resx @@ -402,4 +402,19 @@ Retention (Days): + + File Extensions + + + Enter a comma separated list of image file extensions + + + Image Extensions: + + + Enter a comma separated list of uploadable file extensions + + + Uploadable File Extensions: + \ No newline at end of file diff --git a/Oqtane.Server/Controllers/FileController.cs b/Oqtane.Server/Controllers/FileController.cs index 7c41cf90..96173a0b 100644 --- a/Oqtane.Server/Controllers/FileController.cs +++ b/Oqtane.Server/Controllers/FileController.cs @@ -35,8 +35,8 @@ namespace Oqtane.Controllers private readonly ISyncManager _syncManager; private readonly ILogManager _logger; private readonly Alias _alias; - - public FileController(IWebHostEnvironment environment, IFileRepository files, IFolderRepository folders, IUserPermissions userPermissions, ISyncManager syncManager, ILogManager logger, ITenantManager tenantManager) + private readonly ISettingRepository _settingRepository; + public FileController(IWebHostEnvironment environment, IFileRepository files, IFolderRepository folders, IUserPermissions userPermissions, ISettingRepository settingRepository, ISyncManager syncManager, ILogManager logger, ITenantManager tenantManager) { _environment = environment; _files = files; @@ -45,6 +45,7 @@ namespace Oqtane.Controllers _syncManager = syncManager; _logger = logger; _alias = tenantManager.GetAlias(); + _settingRepository = settingRepository; } // GET: api/?folder=x @@ -287,6 +288,9 @@ namespace Oqtane.Controllers folder = _folders.GetFolder(FolderId); } + var _ImageFiles = _settingRepository.GetSetting(EntityNames.Site, _alias.SiteId, "ImageFiles").SettingValue; + var _UploadableFiles = _ImageFiles + "," + _settingRepository.GetSetting(EntityNames.Site, _alias.SiteId, "UploadableFiles").SettingValue; + if (folder != null && folder.SiteId == _alias.SiteId && _userPermissions.IsAuthorized(User, PermissionNames.Edit, folder.PermissionList)) { string folderPath = _folders.GetFolderPath(folder); @@ -297,7 +301,7 @@ namespace Oqtane.Controllers name = url.Substring(url.LastIndexOf("/", StringComparison.Ordinal) + 1); } // check for allowable file extensions - if (!Constants.UploadableFiles.Split(',').Contains(Path.GetExtension(name).ToLower().Replace(".", ""))) + if (!_UploadableFiles.Split(',').Contains(Path.GetExtension(name).ToLower().Replace(".", ""))) { _logger.Log(LogLevel.Error, this, LogFunction.Create, "File Could Not Be Downloaded From Url Due To Its File Extension {Url}", url); HttpContext.Response.StatusCode = (int)HttpStatusCode.Conflict; @@ -362,6 +366,15 @@ namespace Oqtane.Controllers return; } + // Get the UploadableFiles extensions + string imagefilesSetting = _settingRepository.GetSetting(EntityNames.Site, _alias.SiteId, "ImageFiles")?.SettingValue; + string imagefiles = imagefilesSetting ?? Constants.ImageFiles; + + string uploadfilesSetting = _settingRepository.GetSetting(EntityNames.Site, _alias.SiteId, "UploadableFiles")?.SettingValue; + string uploadfiles = uploadfilesSetting ?? Constants.UploadableFiles; + + string _UploadableFiles = $"{imagefiles},{uploadfiles}"; + // ensure filename is valid string token = ".part_"; if (!formfile.FileName.IsPathOrFileValid() || !formfile.FileName.Contains(token)) @@ -371,7 +384,7 @@ namespace Oqtane.Controllers // check for allowable file extensions (ignore token) var extension = Path.GetExtension(formfile.FileName.Substring(0, formfile.FileName.IndexOf(token))).Replace(".", ""); - if (!Constants.UploadableFiles.Split(',').Contains(extension.ToLower())) + if (!_UploadableFiles.Split(',').Contains(extension.ToLower())) { return; } @@ -604,9 +617,11 @@ namespace Oqtane.Controllers public IActionResult GetImage(int id, int width, int height, string mode, string position, string background, string rotate, string recreate) { var file = _files.GetFile(id); + + var _ImageFiles = _settingRepository.GetSetting(EntityNames.Site, _alias.SiteId, "ImageFiles").SettingValue; if (file != null && file.Folder.SiteId == _alias.SiteId && _userPermissions.IsAuthorized(User, PermissionNames.View, file.Folder.PermissionList)) { - if (Constants.ImageFiles.Split(',').Contains(file.Extension.ToLower())) + if (_ImageFiles.Split(',').Contains(file.Extension.ToLower())) { var filepath = _files.GetFilePath(file); if (System.IO.File.Exists(filepath)) @@ -770,6 +785,7 @@ namespace Oqtane.Controllers private Models.File CreateFile(string filename, int folderid, string filepath) { var file = _files.GetFile(folderid, filename); + var _ImageFiles = _settingRepository.GetSetting(EntityNames.Site, _alias.SiteId, "ImageFiles").SettingValue; int size = 0; var folder = _folders.GetFolder(folderid, false); @@ -796,7 +812,7 @@ namespace Oqtane.Controllers file.ImageHeight = 0; file.ImageWidth = 0; - if (Constants.ImageFiles.Split(',').Contains(file.Extension.ToLower())) + if (_ImageFiles.Split(',').Contains(file.Extension.ToLower())) { try { From 6e36312be834b53ac3e471fb0253f4952c6ed835 Mon Sep 17 00:00:00 2001 From: Leigh Pointer Date: Mon, 4 Dec 2023 09:07:11 +0100 Subject: [PATCH 2/3] Update Site with ImageFiles and UploadableFiles --- Oqtane.Client/Modules/Admin/Files/Add.razor | 6 +----- Oqtane.Client/Modules/Admin/UserProfile/Index.razor | 2 +- Oqtane.Client/Modules/Controls/FileManager.razor | 6 ++---- Oqtane.Client/Modules/Controls/RichTextEditor.razor | 11 ++--------- Oqtane.Server/Controllers/SiteController.cs | 10 ++++++++++ Oqtane.Shared/Models/Site.cs | 12 ++++++++++++ 6 files changed, 28 insertions(+), 19 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/Files/Add.razor b/Oqtane.Client/Modules/Admin/Files/Add.razor index 54c8ccbf..09bd63b1 100644 --- a/Oqtane.Client/Modules/Admin/Files/Add.razor +++ b/Oqtane.Client/Modules/Admin/Files/Add.razor @@ -64,16 +64,12 @@ private List _folders; private int _folderId = -1; private string _name = ""; - private string _UploadableFiles = string.Empty; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; protected override async Task OnInitializedAsync() { _folders = await FolderService.GetFoldersAsync(ModuleState.SiteId); - var settings = await SettingService.GetSiteSettingsAsync(SiteState.Alias.SiteId); - var _ImageFiles = SettingService.GetSetting(settings, "ImageFiles", Constants.ImageFiles); - _UploadableFiles = _ImageFiles + "," + SettingService.GetSetting(settings, "UploadableFiles", Constants.UploadableFiles); if (PageState.QueryString.ContainsKey("id")) { @@ -98,7 +94,7 @@ _name = _url.Substring(_url.LastIndexOf("/", StringComparison.Ordinal) + 1); } - if (!_UploadableFiles.Split(',').Contains(Path.GetExtension(_name).ToLower().Replace(".", ""))) + if (!PageState.Site.UploadableFiles.Split(',').Contains(Path.GetExtension(_name).ToLower().Replace(".", ""))) { AddModuleMessage(Localizer["Message.Download.InvalidExtension"], MessageType.Warning); return; diff --git a/Oqtane.Client/Modules/Admin/UserProfile/Index.razor b/Oqtane.Client/Modules/Admin/UserProfile/Index.razor index 514379cf..be4c362f 100644 --- a/Oqtane.Client/Modules/Admin/UserProfile/Index.razor +++ b/Oqtane.Client/Modules/Admin/UserProfile/Index.razor @@ -77,7 +77,7 @@
- +
diff --git a/Oqtane.Client/Modules/Controls/FileManager.razor b/Oqtane.Client/Modules/Controls/FileManager.razor index a402d32d..2b44c06a 100644 --- a/Oqtane.Client/Modules/Controls/FileManager.razor +++ b/Oqtane.Client/Modules/Controls/FileManager.razor @@ -344,9 +344,7 @@ _message = string.Empty; var interop = new Interop(JSRuntime); var uploads = await interop.GetFiles(_fileinputid); - var settings = await SettingService.GetSiteSettingsAsync(SiteState.Alias.SiteId); - var _ImageFiles = SettingService.GetSetting(settings, "ImageFiles", Constants.ImageFiles); - var _UploadableFiles = _ImageFiles + "," + SettingService.GetSetting(settings, "UploadableFiles", Constants.UploadableFiles); + if (uploads.Length > 0) { string restricted = ""; @@ -354,7 +352,7 @@ { var filename = upload.Split(':')[0]; var extension = (filename.LastIndexOf(".") != -1) ? filename.Substring(filename.LastIndexOf(".") + 1) : ""; - if (!_UploadableFiles.Split(',').Contains(extension.ToLower())) + if (!PageState.Site.UploadableFiles.Split(',').Contains(extension.ToLower())) { restricted += (restricted == "" ? "" : ",") + extension; } diff --git a/Oqtane.Client/Modules/Controls/RichTextEditor.razor b/Oqtane.Client/Modules/Controls/RichTextEditor.razor index b2741aab..9ba943eb 100644 --- a/Oqtane.Client/Modules/Controls/RichTextEditor.razor +++ b/Oqtane.Client/Modules/Controls/RichTextEditor.razor @@ -9,7 +9,7 @@ @if (_richfilemanager) { - +
} @@ -74,7 +74,7 @@ @if (_rawfilemanager) { - +
} @@ -115,7 +115,6 @@ private string _rawhtml = string.Empty; private string _originalrawhtml = string.Empty; private string _message = string.Empty; - private string _ImageFiles = string.Empty; [Parameter] public string Content { get; set; } @@ -149,12 +148,6 @@ new Resource { ResourceType = ResourceType.Script, Bundle = "Quill", Url = "js/quill-interop.js" } }; - protected override async Task OnInitializedAsync() - { - var settings = await SettingService.GetSiteSettingsAsync(SiteState.Alias.SiteId); - _ImageFiles = SettingService.GetSetting(settings, "ImageFiles", Constants.ImageFiles); - } - protected override void OnParametersSet() { _richhtml = Content; diff --git a/Oqtane.Server/Controllers/SiteController.cs b/Oqtane.Server/Controllers/SiteController.cs index f7738a06..3505fef5 100644 --- a/Oqtane.Server/Controllers/SiteController.cs +++ b/Oqtane.Server/Controllers/SiteController.cs @@ -86,6 +86,16 @@ namespace Oqtane.Controllers .Where(item => !item.IsPrivate || User.IsInRole(RoleNames.Admin)) .ToDictionary(setting => setting.SettingName, setting => setting.SettingValue); + // Populate ImageFile extentions with setting or constant value + site.ImageFiles = site.Settings.ContainsKey("ImageFiles") + ? site.Settings["ImageFiles"]?.ToString() ?? Constants.ImageFiles + : Constants.ImageFiles; + + // Populate UploadableFile extensions with setting or constant value + site.UploadableFiles = site.Settings.ContainsKey("UploadableFiles") + ? site.Settings["UploadableFiles"]?.ToString() ?? Constants.UploadableFiles + : Constants.UploadableFiles; + // pages List settings = _settings.GetSettings(EntityNames.Page).ToList(); site.Pages = new List(); diff --git a/Oqtane.Shared/Models/Site.cs b/Oqtane.Shared/Models/Site.cs index 66d171c9..373215d1 100644 --- a/Oqtane.Shared/Models/Site.cs +++ b/Oqtane.Shared/Models/Site.cs @@ -98,6 +98,18 @@ namespace Oqtane.Models /// public string BodyContent { get; set; } + /// + /// The ImageFile extensions + /// + [NotMapped] + public string ImageFiles { get; set; } + + /// + /// The UploadableFile extensions + /// + [NotMapped] + public string UploadableFiles { get; set; } + [NotMapped] public Dictionary Settings { get; set; } From daeb76df117621e616216676cf86d3259da342c2 Mon Sep 17 00:00:00 2001 From: Leigh Pointer Date: Mon, 4 Dec 2023 17:26:37 +0100 Subject: [PATCH 3/3] Corrected the IsPrivate --- Oqtane.Client/Modules/Admin/Files/Add.razor | 1 + Oqtane.Client/Modules/Admin/Site/Index.razor | 4 ++-- Oqtane.Client/Modules/Controls/FileManager.razor | 2 +- Oqtane.Server/Controllers/FileController.cs | 16 +++++----------- 4 files changed, 9 insertions(+), 14 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/Files/Add.razor b/Oqtane.Client/Modules/Admin/Files/Add.razor index 09bd63b1..b5abe13c 100644 --- a/Oqtane.Client/Modules/Admin/Files/Add.razor +++ b/Oqtane.Client/Modules/Admin/Files/Add.razor @@ -81,6 +81,7 @@ { validated = true; var interop = new Interop(JSRuntime); + if (await interop.FormValid(form)) { if (_url == string.Empty || _folderId == -1) diff --git a/Oqtane.Client/Modules/Admin/Site/Index.razor b/Oqtane.Client/Modules/Admin/Site/Index.razor index 5da7e315..db2cf232 100644 --- a/Oqtane.Client/Modules/Admin/Site/Index.razor +++ b/Oqtane.Client/Modules/Admin/Site/Index.razor @@ -646,8 +646,8 @@ settings = SettingService.SetSetting(settings, "NotificationRetention", _retention.ToString(), true); //File Extensions - settings = SettingService.SetSetting(settings, "ImageFiles", _ImageFiles, true); - settings = SettingService.SetSetting(settings, "UploadableFiles", _UploadableFiles, true); + settings = SettingService.SetSetting(settings, "ImageFiles", _ImageFiles, false); + settings = SettingService.SetSetting(settings, "UploadableFiles", _UploadableFiles, false); await SettingService.UpdateSiteSettingsAsync(settings, site.SiteId); diff --git a/Oqtane.Client/Modules/Controls/FileManager.razor b/Oqtane.Client/Modules/Controls/FileManager.razor index 2b44c06a..d779531e 100644 --- a/Oqtane.Client/Modules/Controls/FileManager.razor +++ b/Oqtane.Client/Modules/Controls/FileManager.razor @@ -344,7 +344,7 @@ _message = string.Empty; var interop = new Interop(JSRuntime); var uploads = await interop.GetFiles(_fileinputid); - + if (uploads.Length > 0) { string restricted = ""; diff --git a/Oqtane.Server/Controllers/FileController.cs b/Oqtane.Server/Controllers/FileController.cs index 96173a0b..65cd3fec 100644 --- a/Oqtane.Server/Controllers/FileController.cs +++ b/Oqtane.Server/Controllers/FileController.cs @@ -288,8 +288,7 @@ namespace Oqtane.Controllers folder = _folders.GetFolder(FolderId); } - var _ImageFiles = _settingRepository.GetSetting(EntityNames.Site, _alias.SiteId, "ImageFiles").SettingValue; - var _UploadableFiles = _ImageFiles + "," + _settingRepository.GetSetting(EntityNames.Site, _alias.SiteId, "UploadableFiles").SettingValue; + var _UploadableFiles = (_settingRepository.GetSetting(EntityNames.Site, _alias.SiteId, "UploadableFiles")?.SettingValue ?? Constants.UploadableFiles) ?? Constants.UploadableFiles; if (folder != null && folder.SiteId == _alias.SiteId && _userPermissions.IsAuthorized(User, PermissionNames.Edit, folder.PermissionList)) { @@ -367,13 +366,8 @@ namespace Oqtane.Controllers } // Get the UploadableFiles extensions - string imagefilesSetting = _settingRepository.GetSetting(EntityNames.Site, _alias.SiteId, "ImageFiles")?.SettingValue; - string imagefiles = imagefilesSetting ?? Constants.ImageFiles; - string uploadfilesSetting = _settingRepository.GetSetting(EntityNames.Site, _alias.SiteId, "UploadableFiles")?.SettingValue; - string uploadfiles = uploadfilesSetting ?? Constants.UploadableFiles; - - string _UploadableFiles = $"{imagefiles},{uploadfiles}"; + string _UploadableFiles = uploadfilesSetting ?? Constants.UploadableFiles; // ensure filename is valid string token = ".part_"; @@ -617,8 +611,8 @@ namespace Oqtane.Controllers public IActionResult GetImage(int id, int width, int height, string mode, string position, string background, string rotate, string recreate) { var file = _files.GetFile(id); - - var _ImageFiles = _settingRepository.GetSetting(EntityNames.Site, _alias.SiteId, "ImageFiles").SettingValue; + + var _ImageFiles = (_settingRepository.GetSetting(EntityNames.Site, _alias.SiteId, "ImageFiles")?.SettingValue ?? Constants.ImageFiles) ?? Constants.ImageFiles; if (file != null && file.Folder.SiteId == _alias.SiteId && _userPermissions.IsAuthorized(User, PermissionNames.View, file.Folder.PermissionList)) { if (_ImageFiles.Split(',').Contains(file.Extension.ToLower())) @@ -785,7 +779,7 @@ namespace Oqtane.Controllers private Models.File CreateFile(string filename, int folderid, string filepath) { var file = _files.GetFile(folderid, filename); - var _ImageFiles = _settingRepository.GetSetting(EntityNames.Site, _alias.SiteId, "ImageFiles").SettingValue; + var _ImageFiles = (_settingRepository.GetSetting(EntityNames.Site, _alias.SiteId, "ImageFiles")?.SettingValue ?? Constants.ImageFiles) ?? Constants.ImageFiles; int size = 0; var folder = _folders.GetFolder(folderid, false);