diff --git a/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor b/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor index 2d81476a..c26f852b 100644 --- a/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor +++ b/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor @@ -31,6 +31,9 @@ @context.DeletedOn +
+ +
} @@ -59,6 +62,10 @@ @context.DeletedOn +
+ +
+ }
@@ -69,6 +76,22 @@ public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; + protected string IsDeleteAllPagesVisible + { + get + { + return _pages.Count == 0 ? "hidden" : "visible"; + } + } + + protected string IsDeleteAllModulesVisible + { + get { + return _modules.Count == 0 ? "hidden" : "visible" ; + } + } + + protected override async Task OnInitializedAsync() { try @@ -126,6 +149,28 @@ } } + private async Task DeleteAllPages() + { + try + { + foreach (Page page in _pages) + { + await PageService.DeletePageAsync(page.PageId); + await logger.LogInformation("Page Permanently Deleted {Page}", page); + } + + await logger.LogInformation("Pages Permanently Deleted"); + await Load(); + StateHasChanged(); + NavigationManager.NavigateTo(NavigateUrl()); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Permanently Deleting Pages {Error}", ex.Message); + AddModuleMessage(ex.Message, MessageType.Error); + } + } + private async Task RestoreModule(Module module) { try @@ -167,4 +212,31 @@ AddModuleMessage(Localizer["Error Permanently Deleting Module"], MessageType.Error); } } + + private async Task DeleteAllModules() + { + try + { + foreach (Module module in _modules) + { + await PageModuleService.DeletePageModuleAsync(module.PageModuleId); + // check if there are any remaining module instances in the site + _modules = await ModuleService.GetModulesAsync(PageState.Site.SiteId); + + if (!_modules.Exists(item => item.ModuleId == module.ModuleId)) + { + await ModuleService.DeleteModuleAsync(module.ModuleId); + } + } + + await logger.LogInformation("Modules Permanently Deleted"); + await Load(); + StateHasChanged(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Permanently Deleting Modules {Error}", ex.Message); + AddModuleMessage(Localizer["Error Permanently Deleting Modules"], MessageType.Error); + } + } }