Merge pull request #5291 from sbwalker/dev
fix #5287 - allow deletion of folder which contains files
This commit is contained in:
@ -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
|
||||||
{
|
{
|
||||||
|
@ -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>
|
||||||
|
@ -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);
|
||||||
|
Reference in New Issue
Block a user