Merge pull request #5291 from sbwalker/dev

fix #5287 - allow deletion of folder which contains files
This commit is contained in:
Shaun Walker
2025-05-12 08:42:12 -04:00
committed by GitHub
3 changed files with 14 additions and 15 deletions

View File

@ -265,17 +265,9 @@
} }
if (!isparent) if (!isparent)
{ {
var files = await FileService.GetFilesAsync(_folderId); await FolderService.DeleteFolderAsync(_folderId);
if (files.Count == 0) await logger.LogInformation("Folder Deleted {Folder}", _folderId);
{ NavigationManager.NavigateTo(NavigateUrl());
await FolderService.DeleteFolderAsync(_folderId);
await logger.LogInformation("Folder Deleted {Folder}", _folderId);
NavigationManager.NavigateTo(NavigateUrl());
}
else
{
AddModuleMessage(Localizer["Message.Folder.Files.InvalidDelete"], MessageType.Warning);
}
} }
else else
{ {

View File

@ -135,9 +135,6 @@
<data name="Error.Folder.Save" xml:space="preserve"> <data name="Error.Folder.Save" xml:space="preserve">
<value>Error Saving Folder</value> <value>Error Saving Folder</value>
</data> </data>
<data name="Message.Folder.Files.InvalidDelete" xml:space="preserve">
<value>Folder Has Files And Cannot Be Deleted</value>
</data>
<data name="Message.Folder.Subfolders.InvalidDelete" xml:space="preserve"> <data name="Message.Folder.Subfolders.InvalidDelete" xml:space="preserve">
<value>Folder Has Subfolders And Cannot Be Deleted</value> <value>Folder Has Subfolders And Cannot Be Deleted</value>
</data> </data>

View File

@ -20,14 +20,16 @@ namespace Oqtane.Controllers
{ {
private readonly IFolderRepository _folders; private readonly IFolderRepository _folders;
private readonly IUserPermissions _userPermissions; private readonly IUserPermissions _userPermissions;
private readonly IFileRepository _files;
private readonly ISyncManager _syncManager; private readonly ISyncManager _syncManager;
private readonly ILogManager _logger; private readonly ILogManager _logger;
private readonly Alias _alias; private readonly Alias _alias;
public FolderController(IFolderRepository folders, IUserPermissions userPermissions, ISyncManager syncManager, ILogManager logger, ITenantManager tenantManager) public FolderController(IFolderRepository folders, IUserPermissions userPermissions, IFileRepository files, ISyncManager syncManager, ILogManager logger, ITenantManager tenantManager)
{ {
_folders = folders; _folders = folders;
_userPermissions = userPermissions; _userPermissions = userPermissions;
_files = files;
_syncManager = syncManager; _syncManager = syncManager;
_logger = logger; _logger = logger;
_alias = tenantManager.GetAlias(); _alias = tenantManager.GetAlias();
@ -283,12 +285,20 @@ namespace Oqtane.Controllers
var folderPath = _folders.GetFolderPath(folder); var folderPath = _folders.GetFolderPath(folder);
if (Directory.Exists(folderPath)) if (Directory.Exists(folderPath))
{ {
// remove all files from disk (including thumbnails, etc...)
foreach (var filePath in Directory.GetFiles(folderPath)) foreach (var filePath in Directory.GetFiles(folderPath))
{ {
System.IO.File.Delete(filePath); System.IO.File.Delete(filePath);
} }
Directory.Delete(folderPath); Directory.Delete(folderPath);
} }
// remove files from database
foreach (var file in _files.GetFiles(id))
{
_files.DeleteFile(file.FileId);
}
_folders.DeleteFolder(id); _folders.DeleteFolder(id);
_syncManager.AddSyncEvent(_alias, EntityNames.Folder, folder.FolderId, SyncEventActions.Delete); _syncManager.AddSyncEvent(_alias, EntityNames.Folder, folder.FolderId, SyncEventActions.Delete);
_logger.Log(LogLevel.Information, this, LogFunction.Delete, "Folder Deleted {FolderId}", id); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Folder Deleted {FolderId}", id);