diff --git a/Oqtane.Client/Modules/Admin/Pages/Delete.razor b/Oqtane.Client/Modules/Admin/Pages/Delete.razor index 85af59df..82c0db0d 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Delete.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Delete.razor @@ -100,17 +100,6 @@ - - - - - - - - Cancel @@ -140,7 +129,6 @@ DateTime modifiedon; string deletedby; DateTime? deletedon; - string isdeleted; protected override void OnInitialized() { @@ -167,7 +155,6 @@ modifiedon = page.ModifiedOn; deletedby = page.DeletedBy; deletedon = page.DeletedOn; - isdeleted = page.IsDeleted.ToString(); } } catch (Exception ex) diff --git a/Oqtane.Client/Modules/Admin/Pages/Edit.razor b/Oqtane.Client/Modules/Admin/Pages/Edit.razor index fdf05187..0cfb461d 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Edit.razor @@ -145,17 +145,6 @@ - - - - - - - - Cancel @@ -190,7 +179,6 @@ DateTime modifiedon; string deletedby; DateTime? deletedon; - string isdeleted; PermissionGrid permissiongrid; @@ -235,7 +223,6 @@ modifiedon = page.ModifiedOn; deletedby = page.DeletedBy; deletedon = page.DeletedOn; - isdeleted = page.IsDeleted.ToString(); } } catch (Exception ex) @@ -357,7 +344,6 @@ page.LayoutType = (layouttype == null ? "" : layouttype); page.Icon = (icon == null ? "" : icon); page.Permissions = permissiongrid.GetPermissions(); - page.IsDeleted = (isdeleted == null ? true : Boolean.Parse(isdeleted)); if (page.ThemeType == PageState.Site.DefaultThemeType) { diff --git a/Oqtane.Client/Modules/Admin/Pages/Index.razor b/Oqtane.Client/Modules/Admin/Pages/Index.razor index 376b4795..d92b1b14 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Index.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Index.razor @@ -1,11 +1,13 @@ @namespace Oqtane.Modules.Admin.Pages @inherits ModuleBase +@inject NavigationManager NavigationManager +@inject IPageService PageService @if (PageState.Pages != null) { - +
Name   @@ -14,11 +16,25 @@ @(new string('-', context.Level * 2))@(context.Name) - + } @code { public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Admin; } } + + private async Task Delete(Page Page) + { + try + { + Page.IsDeleted = true; + await PageService.UpdatePageAsync(Page); + NavigationManager.NavigateTo(NavigateUrl("admin/pages", Reload.Site)); + } + catch (Exception ex) + { + AddModuleMessage(ex.Message, MessageType.Error); + } + } } diff --git a/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor b/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor new file mode 100644 index 00000000..a63a2895 --- /dev/null +++ b/Oqtane.Client/Modules/Admin/RecycleBin/Index.razor @@ -0,0 +1,67 @@ +@namespace Oqtane.Modules.Admin.RecycleBin +@inherits ModuleBase +@inject NavigationManager NavigationManager +@inject IPageModuleService PageModuleService +@inject IPageService PageService + +@*Add TabControl with Pages and Modules tabs*@ +

Pages

+@if (pageModules.Count == 0) +{ +

No deleted pages

+} +else +{ + +
+ Name + Deletion audit +   +   +
+ + @context.Name + @context.DeletedBy - @context.DeletedOn + + + +
+} + +@code { + public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Admin; } } + + List pageModules = new List(); + + protected override void OnParametersSet() + { + pageModules = PageState.Pages.Where(item => item.IsDeleted).ToList(); + } + + private async Task Restore(Page Page) + { + try + { + Page.IsDeleted = false; + await PageService.UpdatePageAsync(Page); + NavigationManager.NavigateTo(NavigateUrl("admin/recyclebin", Reload.Site)); + } + catch (Exception ex) + { + AddModuleMessage(ex.Message, MessageType.Error); + } + } + + private async Task Delete(int PageId) + { + try + { + await PageService.DeletePageAsync(PageId); + NavigationManager.NavigateTo(NavigateUrl("admin/recyclebin", Reload.Site)); + } + catch (Exception ex) + { + AddModuleMessage(ex.Message, MessageType.Error); + } + } +} diff --git a/Oqtane.Client/Themes/Controls/ControlPanel.razor b/Oqtane.Client/Themes/Controls/ControlPanel.razor index 568b0c70..8bef98e7 100644 --- a/Oqtane.Client/Themes/Controls/ControlPanel.razor +++ b/Oqtane.Client/Themes/Controls/ControlPanel.razor @@ -5,6 +5,7 @@ @inject IModuleDefinitionService ModuleDefinitionService @inject IThemeService ThemeService @inject IModuleService ModuleService +@inject IPageService PageService @inject IPageModuleService PageModuleService @if (UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions)) @@ -23,7 +24,7 @@ - +
@@ -191,7 +192,7 @@ } } moduledefinitions = PageState.ModuleDefinitions.Where(item => item.Categories == "").ToList(); - foreach(Page p in PageState.Pages) + foreach (Page p in PageState.Pages) { if (UserSecurity.IsAuthorized(PageState.User, "View", p.Permissions)) { @@ -225,7 +226,7 @@ pageid = (string)e.Value; if (pageid != "") { - foreach(Module module in PageState.Modules.Where(item => item.PageId == int.Parse(pageid) && !item.IsDeleted)) + foreach (Module module in PageState.Modules.Where(item => item.PageId == int.Parse(pageid) && !item.IsDeleted)) { if (UserSecurity.IsAuthorized(PageState.User, "View", module.Permissions)) { @@ -338,7 +339,6 @@ break; case "Add": case "Edit": - case "Delete": string url = ""; // get page management moduleid module = PageState.Modules.Where(item => item.ModuleDefinitionName == Constants.PageManagementModule).FirstOrDefault(); @@ -352,9 +352,6 @@ case "Edit": url = EditUrl(PageState.Page.Path, module.ModuleId, location, "id=" + PageState.Page.PageId.ToString()); break; - case "Delete": - url = EditUrl(PageState.Page.Path, module.ModuleId, location, "id=" + PageState.Page.PageId.ToString()); - break; } } if (url != "") @@ -364,4 +361,11 @@ break; } } + + private async Task Delete(Page Page) + { + Page.IsDeleted = true; + await PageService.UpdatePageAsync(Page); + NavigationManager.NavigateTo(NavigateUrl("", Reload.Site)); + } } diff --git a/Oqtane.Server/Repository/SiteRepository.cs b/Oqtane.Server/Repository/SiteRepository.cs index 6fcb02e2..6d9a43b5 100644 --- a/Oqtane.Server/Repository/SiteRepository.cs +++ b/Oqtane.Server/Repository/SiteRepository.cs @@ -80,6 +80,9 @@ namespace Oqtane.Repository SiteTemplate.Add(new PageTemplate { Name = "Upgrade Service", Parent = "Admin", Path = "admin/upgrade", Icon = "aperture", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List { new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Upgrade, Oqtane.Client", Title = "Upgrade Service", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" } }}); + SiteTemplate.Add(new PageTemplate { Name = "RecycleBin", Parent = "Admin", Path = "admin/recyclebin", Icon = "trash", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List { + new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.RecycleBin, Oqtane.Client", Title = "RecycleBin", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" } + }}); SiteTemplate.Add(new PageTemplate { Name = "Login", Parent = "", Path = "login", Icon = "lock-locked", IsNavigation = false, EditMode = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List { new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Login, Oqtane.Client", Title = "User Login", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" } }});