1313}
1414else
1515{
16- <TabStrip >
17- <TabPanel Name =" Pages" ResourceKey =" Pages" Heading =" Pages" >
18- @if (! _pages .Where (item => item .IsDeleted ).Any ())
19- {
20- <br />
21- <p >@Localizer ["NoPage .Deleted "]</p >
22- }
23- else
24- {
25- <Pager Items =" @_pages.Where(item => item.IsDeleted).OrderByDescending(item => item.DeletedOn)" CurrentPage =" @_pagePage.ToString()" OnPageChange =" OnPageChangePage" >
26- <Header >
27- <th style =" width : 1px ;" >  ; </th >
28- <th style =" width : 1px ;" >  ; </th >
29- <th >@SharedLocalizer ["Name "]</th >
30- <th >@Localizer ["DeletedBy "]</th >
31- <th >@Localizer ["DeletedOn "]</th >
32- </Header >
33- <Row >
16+ <TabStrip >
17+ <TabPanel Name =" Pages" ResourceKey =" Pages" Heading =" Pages" >
18+ @if (! _pages .Where (item => item .IsDeleted ).Any ())
19+ {
20+ <br />
21+ <p >@Localizer ["NoPage .Deleted "]</p >
22+ }
23+ else
24+ {
25+ <Pager Items =" @_pages.Where(item => item.IsDeleted).OrderByDescending(item => item.DeletedOn)" CurrentPage =" @_pagePage.ToString()" OnPageChange =" OnPageChangePage" >
26+ <Header >
27+ <th style =" width : 1px ;" >  ; </th >
28+ <th style =" width : 1px ;" >  ; </th >
29+ <th >@SharedLocalizer ["Path "]</th >
30+ <th >@Localizer ["DeletedBy "]</th >
31+ <th >@Localizer ["DeletedOn "]</th >
32+ </Header >
33+ <Row >
3434 <td ><button type =" button" @onclick =" @(() => RestorePage(context))" class =" btn btn-success" title =" Restore" >@Localizer ["Restore "]</button ></td >
35- <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 >
36- <td >@context.Name </td >
37- <td >@context.DeletedBy </td >
38- <td >@context.DeletedOn </td >
39- </Row >
40- </Pager >
41- <br />
42- <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" />
43- }
44- </TabPanel >
45- <TabPanel Name =" Modules" ResourceKey =" Modules" Heading =" Modules" >
46- @if (! _modules .Where (item => item .IsDeleted ).Any ())
47- {
48- <br />
49- <p >@Localizer ["NoModule .Deleted "]</p >
50- }
51- else
52- {
53- <Pager Items =" @_modules.Where(item => item.IsDeleted).OrderByDescending(item => item.DeletedOn)" CurrentPage =" @_pageModule.ToString()" OnPageChange =" OnPageChangeModule" >
54- <Header >
55- <th style =" width : 1px ;" >  ; </th >
56- <th style =" width : 1px ;" >  ; </th >
57- <th >@Localizer ["Page "]</th >
58- <th >@Localizer ["Module "]</th >
59- <th >@Localizer ["DeletedBy "]</th >
60- <th >@Localizer ["DeletedOn "]</th >
61- </Header >
62- <Row >
63- <td ><button type =" button" @onclick =" @(() => RestoreModule(context))" class =" btn btn-success" title =" Restore" >@Localizer ["Restore "]</button ></td >
64- <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 >
65- <td >@_pages.Find(item => item .PageId == context .PageId ).Name </td >
66- <td >@context.Title </td >
67- <td >@context.DeletedBy </td >
68- <td >@context.DeletedOn </td >
69- </Row >
70- </Pager >
71- <br />
72- <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" />
73- }
74- </TabPanel >
75- </TabStrip >
35+ <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 >
36+ <td >@context.Path </td >
37+ <td >@context.DeletedBy </td >
38+ <td >@context.DeletedOn </td >
39+ </Row >
40+ </Pager >
41+ <br />
42+ <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" />
43+ }
44+ </TabPanel >
45+ <TabPanel Name =" Modules" ResourceKey =" Modules" Heading =" Modules" >
46+ @if (! _modules .Where (item => item .IsDeleted ).Any ())
47+ {
48+ <br />
49+ <p >@Localizer ["NoModule .Deleted "]</p >
50+ }
51+ else
52+ {
53+ <Pager Items =" @_modules.Where(item => item.IsDeleted).OrderByDescending(item => item.DeletedOn)" CurrentPage =" @_pageModule.ToString()" OnPageChange =" OnPageChangeModule" >
54+ <Header >
55+ <th style =" width : 1px ;" >  ; </th >
56+ <th style =" width : 1px ;" >  ; </th >
57+ <th >@Localizer ["Page "]</th >
58+ <th >@Localizer ["Module "]</th >
59+ <th >@Localizer ["DeletedBy "]</th >
60+ <th >@Localizer ["DeletedOn "]</th >
61+ </Header >
62+ <Row >
63+ <td ><button type =" button" @onclick =" @(() => RestoreModule(context))" class =" btn btn-success" title =" Restore" >@Localizer ["Restore "]</button ></td >
64+ <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 >
65+ <td >@_pages.Find(item => item .PageId == context .PageId ).Name </td >
66+ <td >@context.Title </td >
67+ <td >@context.DeletedBy </td >
68+ <td >@context.DeletedOn </td >
69+ </Row >
70+ </Pager >
71+ <br />
72+ <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" />
73+ }
74+ </TabPanel >
75+ </TabStrip >
7676}
7777
7878@code {
79- private List <Page > _pages ;
80- private List <Module > _modules ;
79+ private List <Page > _pages ;
80+ private List <Module > _modules ;
8181 private int _pagePage = 1 ;
8282 private int _pageModule = 1 ;
8383 public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel .Admin ;
@@ -105,12 +105,25 @@ else
105105 {
106106 try
107107 {
108- page .IsDeleted = false ;
109- await PageService .UpdatePageAsync (page );
110- await logger .LogInformation (" Page Restored {Page}" , page );
111- await Load ();
112- StateHasChanged ();
113- NavigationManager .NavigateTo (NavigateUrl ());
108+ var validated = true ;
109+ if (page .ParentId != null )
110+ {
111+ var parent = _pages .Find (item => item .PageId == page .ParentId );
112+ validated = ! parent .IsDeleted ;
113+ }
114+ if (validated )
115+ {
116+ page .IsDeleted = false ;
117+ await PageService .UpdatePageAsync (page );
118+ await logger .LogInformation (" Page Restored {Page}" , page );
119+ AddModuleMessage (Localizer [" Success.Page.Restore" ], MessageType .Success );
120+ await Load ();
121+ StateHasChanged ();
122+ }
123+ else
124+ {
125+ AddModuleMessage (Localizer [" Message.Page.Restore" ], MessageType .Warning );
126+ }
114127 }
115128 catch (Exception ex )
116129 {
125138 {
126139 await PageService .DeletePageAsync (page .PageId );
127140 await logger .LogInformation (" Page Permanently Deleted {Page}" , page );
141+ AddModuleMessage (Localizer [" Success.Page.Delete" ], MessageType .Success );
128142 await Load ();
129143 StateHasChanged ();
130- NavigationManager .NavigateTo (NavigateUrl ());
131144 }
132145 catch (Exception ex )
133146 {
@@ -148,10 +161,10 @@ else
148161 }
149162
150163 await logger .LogInformation (" Pages Permanently Deleted" );
164+ AddModuleMessage (Localizer [" Success.Pages.Delete" ], MessageType .Success );
151165 await Load ();
152166 HideProgressIndicator ();
153167 StateHasChanged ();
154- NavigationManager .NavigateTo (NavigateUrl ());
155168 }
156169 catch (Exception ex )
157170 {
169182 pagemodule .IsDeleted = false ;
170183 await PageModuleService .UpdatePageModuleAsync (pagemodule );
171184 await logger .LogInformation (" Module Restored {Module}" , module );
185+ AddModuleMessage (Localizer [" Success.Module.Restore" ], MessageType .Success );
172186 await Load ();
173187 StateHasChanged ();
174188 }
185199 {
186200 await PageModuleService .DeletePageModuleAsync (module .PageModuleId );
187201 await logger .LogInformation (" Module Permanently Deleted {Module}" , module );
202+ AddModuleMessage (Localizer [" Success.Module.Delete" ], MessageType .Success );
188203 await Load ();
189204 StateHasChanged ();
190205 }
205220 await PageModuleService .DeletePageModuleAsync (module .PageModuleId );
206221 }
207222 await logger .LogInformation (" Modules Permanently Deleted" );
223+ AddModuleMessage (Localizer [" Success.Modules.Delete" ], MessageType .Success );
208224 await Load ();
209225 HideProgressIndicator ();
210226 StateHasChanged ();
0 commit comments