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)
{
-
+
}
@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 = "" }
}});