diff --git a/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor b/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor
index 2d81476a..7c30c7a1 100644
--- a/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor
+++ b/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor
@@ -31,6 +31,12 @@
@context.DeletedOn |
+ @if (_pages.Any())
+ {
+
+ }
}
@@ -59,6 +65,13 @@
@context.DeletedOn |
+ @if (_modules.Any())
+ {
+
+ }
+
}
@@ -126,6 +139,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 +202,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);
+ }
+ }
}