fix #2426 - error in recycle bin

This commit is contained in:
Shaun Walker 2022-09-28 13:55:12 -04:00
parent b7a3713946
commit 26ec3fc7cf
3 changed files with 87 additions and 81 deletions

View File

@ -7,75 +7,77 @@
@inject IStringLocalizer<Index> Localizer @inject IStringLocalizer<Index> Localizer
@inject IStringLocalizer<SharedResources> SharedLocalizer @inject IStringLocalizer<SharedResources> SharedLocalizer
<TabStrip> @if (_pages == null || _modules == null)
<TabPanel Name="Pages" ResourceKey="Pages"> {
@if (_pages == null) <p><em>@SharedLocalizer["Loading"]</em></p>
{ }
<br /> else
<p>@Localizer["NoPage.Deleted"]</p> {
} <TabStrip>
else <TabPanel Name="Pages" ResourceKey="Pages">
{ @if (!_pages.Where(item => item.IsDeleted).Any())
<Pager Items="@_pages"> {
<Header> <br />
<th style="width: 1px;">&nbsp;</th> <p>@Localizer["NoPage.Deleted"]</p>
<th style="width: 1px;">&nbsp;</th> }
<th>@SharedLocalizer["Name"]</th> else
<th>@Localizer["DeletedBy"]</th> {
<th>@Localizer["DeletedOn"]</th> <Pager Items="@_pages.Where(item => item.IsDeleted)">
</Header> <Header>
<Row> <th style="width: 1px;">&nbsp;</th>
<td><button type="button" @onclick="@(() => RestorePage(context))" class="btn btn-success" title="Restore">Restore</button></td> <th style="width: 1px;">&nbsp;</th>
<td><ActionDialog Header="Delete Page" Message="@string.Format(Localizer["Confirm.Page.Delete"], context.Name)" Action="Delete" Security="SecurityAccessLevel.Admin" Class="btn btn-danger" OnClick="@(async () => await DeletePage(context))" ResourceKey="DeletePage" /></td> <th>@SharedLocalizer["Name"]</th>
<td>@context.Name</td> <th>@Localizer["DeletedBy"]</th>
<td>@context.DeletedBy</td> <th>@Localizer["DeletedOn"]</th>
<td>@context.DeletedOn</td> </Header>
</Row> <Row>
</Pager> <td><button type="button" @onclick="@(() => RestorePage(context))" class="btn btn-success" title="Restore">Restore</button></td>
@if (_pages.Any()) <td><ActionDialog Header="Delete Page" Message="@string.Format(Localizer["Confirm.Page.Delete"], context.Name)" Action="Delete" Security="SecurityAccessLevel.Admin" Class="btn btn-danger" OnClick="@(async () => await DeletePage(context))" ResourceKey="DeletePage" /></td>
{ <td>@context.Name</td>
<br /><ActionDialog Header="Delete All Pages" Message="Are You Sure You Wish To Permanently Delete All Pages?" Action="Delete All Pages" Security="SecurityAccessLevel.Admin" Class="btn btn-danger" OnClick="@(async () => await DeleteAllPages())" ResourceKey="DeleteAllPages" /> <td>@context.DeletedBy</td>
} <td>@context.DeletedOn</td>
} </Row>
</TabPanel> </Pager>
<TabPanel Name="Modules" ResourceKey="Modules"> <br />
@if (_modules == null) <ActionDialog Header="Remove All Deleted Pages" Message="Are You Sure You Wish To Permanently Remove All Deleted Pages?" Action="Remove All Deleted Pages" Security="SecurityAccessLevel.Admin" Class="btn btn-danger" OnClick="@(async () => await DeleteAllPages())" ResourceKey="DeleteAllPages" />
{ }
<br /> </TabPanel>
<p>@Localizer["NoModule.Deleted"]</p> <TabPanel Name="Modules" ResourceKey="Modules">
} @if (!_modules.Where(item => item.IsDeleted).Any())
else {
{ <br />
<Pager Items="@_modules"> <p>@Localizer["NoModule.Deleted"]</p>
<Header> }
<th style="width: 1px;">&nbsp;</th> else
<th style="width: 1px;">&nbsp;</th> {
<th>@Localizer["Page"]</th> <Pager Items="@_modules.Where(item => item.IsDeleted)">
<th>@Localizer["Module"]</th> <Header>
<th>@Localizer["DeletedBy"]</th> <th style="width: 1px;">&nbsp;</th>
<th>@Localizer["DeletedOn"]</th> <th style="width: 1px;">&nbsp;</th>
</Header> <th>@Localizer["Page"]</th>
<Row> <th>@Localizer["Module"]</th>
<td><button type="button" @onclick="@(() => RestoreModule(context))" class="btn btn-success" title="Restore">@Localizer["Restore"]</button></td> <th>@Localizer["DeletedBy"]</th>
<td><ActionDialog Header="Delete Module" Message="@string.Format(Localizer["Confirm.Module.Delete"], context.Title)" Action="Delete" Security="SecurityAccessLevel.Admin" Class="btn btn-danger" OnClick="@(async () => await DeleteModule(context))" ResourceKey="DeleteModule" /></td> <th>@Localizer["DeletedOn"]</th>
<td>@_pages.Find(item => item.PageId == context.PageId).Name</td> </Header>
<td>@context.Title</td> <Row>
<td>@context.DeletedBy</td> <td><button type="button" @onclick="@(() => RestoreModule(context))" class="btn btn-success" title="Restore">@Localizer["Restore"]</button></td>
<td>@context.DeletedOn</td> <td><ActionDialog Header="Delete Module" Message="@string.Format(Localizer["Confirm.Module.Delete"], context.Title)" Action="Delete" Security="SecurityAccessLevel.Admin" Class="btn btn-danger" OnClick="@(async () => await DeleteModule(context))" ResourceKey="DeleteModule" /></td>
</Row> <td>@_pages.Find(item => item.PageId == context.PageId).Name</td>
</Pager> <td>@context.Title</td>
@if (_modules.Any()) <td>@context.DeletedBy</td>
{ <td>@context.DeletedOn</td>
<br /><ActionDialog Header="Delete All Modules" Message="Are You Sure You Wish To Permanently Delete All Modules?" Action="Delete All Modules" Security="SecurityAccessLevel.Admin" Class="btn btn-danger" OnClick="@(async () => await DeleteAllModules())" ResourceKey="DeleteAllModules" /> </Row>
} </Pager>
<br />
} <ActionDialog Header="Remove All Deleted Modules" Message="Are You Sure You Wish To Permanently Remove All Deleted Modules?" Action="Remove All Deleted Modules" Security="SecurityAccessLevel.Admin" Class="btn btn-danger" OnClick="@(async () => await DeleteAllModules())" ResourceKey="DeleteAllModules" />
</TabPanel> }
</TabStrip> </TabPanel>
</TabStrip>
}
@code { @code {
private List<Page> _pages; private List<Page> _pages;
private List<Module> _modules; private List<Module> _modules;
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin;
@ -95,10 +97,7 @@
private async Task Load() private async Task Load()
{ {
_pages = await PageService.GetPagesAsync(PageState.Site.SiteId); _pages = await PageService.GetPagesAsync(PageState.Site.SiteId);
_pages = _pages.Where(item => item.IsDeleted).ToList();
_modules = await ModuleService.GetModulesAsync(PageState.Site.SiteId); _modules = await ModuleService.GetModulesAsync(PageState.Site.SiteId);
_modules = _modules.Where(item => item.IsDeleted).ToList();
} }
private async Task RestorePage(Page page) private async Task RestorePage(Page page)
@ -141,7 +140,7 @@
try try
{ {
ModuleInstance.ShowProgressIndicator(); ModuleInstance.ShowProgressIndicator();
foreach (Page page in _pages) foreach (Page page in _pages.Where(item => item.IsDeleted))
{ {
await PageService.DeletePageAsync(page.PageId); await PageService.DeletePageAsync(page.PageId);
await logger.LogInformation("Page Permanently Deleted {Page}", page); await logger.LogInformation("Page Permanently Deleted {Page}", page);
@ -184,9 +183,8 @@
try try
{ {
await PageModuleService.DeletePageModuleAsync(module.PageModuleId); await PageModuleService.DeletePageModuleAsync(module.PageModuleId);
// check if there are any remaining module instances in the site
_modules = await ModuleService.GetModulesAsync(PageState.Site.SiteId);
// check if there are any remaining module instances in the site
if (!_modules.Exists(item => item.ModuleId == module.ModuleId)) if (!_modules.Exists(item => item.ModuleId == module.ModuleId))
{ {
await ModuleService.DeleteModuleAsync(module.ModuleId); await ModuleService.DeleteModuleAsync(module.ModuleId);
@ -208,12 +206,11 @@
try try
{ {
ModuleInstance.ShowProgressIndicator(); ModuleInstance.ShowProgressIndicator();
foreach (Module module in _modules) foreach (Module module in _modules.Where(item => item.IsDeleted))
{ {
await PageModuleService.DeletePageModuleAsync(module.PageModuleId); await PageModuleService.DeletePageModuleAsync(module.PageModuleId);
// check if there are any remaining module instances in the site
_modules = await ModuleService.GetModulesAsync(PageState.Site.SiteId);
// check if there are any remaining module instances in the site
if (!_modules.Exists(item => item.ModuleId == module.ModuleId)) if (!_modules.Exists(item => item.ModuleId == module.ModuleId))
{ {
await ModuleService.DeleteModuleAsync(module.ModuleId); await ModuleService.DeleteModuleAsync(module.ModuleId);

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<root> <root>
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
@ -166,16 +166,22 @@
<value>Error Permanently Deleting Modules</value> <value>Error Permanently Deleting Modules</value>
</data> </data>
<data name="DeleteAllPages.Header" xml:space="preserve"> <data name="DeleteAllPages.Header" xml:space="preserve">
<value>Delete All Pages</value> <value>Remove All Deleted Pages</value>
</data> </data>
<data name="DeleteAllPages.Message" xml:space="preserve"> <data name="DeleteAllPages.Message" xml:space="preserve">
<value>Are You Sure You Wish To Permanently Delete All Pages?</value> <value>Are You Sure You Wish To Permanently Remove All Deleted Pages?</value>
</data>
<data name="DeleteAllPages.Text" xml:space="preserve">
<value>Remove All Deleted Pages</value>
</data> </data>
<data name="DeleteAllModules.Header" xml:space="preserve"> <data name="DeleteAllModules.Header" xml:space="preserve">
<value>Delete All Modules</value> <value>Remove All Deleted Modules</value>
</data> </data>
<data name="DeleteAllModules.Message" xml:space="preserve"> <data name="DeleteAllModules.Message" xml:space="preserve">
<value>Are You Sure You Wish To Permanently Delete All Modules?</value> <value>Are You Sure You Wish To Permanently Remove All Deleted Modules?</value>
</data>
<data name="DeleteAllModules.Text" xml:space="preserve">
<value>Remove All Deleted Modules</value>
</data> </data>
<data name="Pages.Heading" xml:space="preserve"> <data name="Pages.Heading" xml:space="preserve">
<value>Pages</value> <value>Pages</value>

View File

@ -49,6 +49,9 @@
@if (Model.Runtime == "Server") @if (Model.Runtime == "Server")
{ {
<script src="_framework/blazor.server.js"></script> <script src="_framework/blazor.server.js"></script>
}
@if (!string.IsNullOrEmpty(Model.ReconnectScript))
{
@Html.Raw(Model.ReconnectScript) @Html.Raw(Model.ReconnectScript)
} }
@if (!string.IsNullOrEmpty(Model.PWAScript)) @if (!string.IsNullOrEmpty(Model.PWAScript))