diff --git a/Oqtane.Client/Modules/Admin/Pages/Delete.razor b/Oqtane.Client/Modules/Admin/Pages/Delete.razor
index 6b01b72c..aaeb5e63 100644
--- a/Oqtane.Client/Modules/Admin/Pages/Delete.razor
+++ b/Oqtane.Client/Modules/Admin/Pages/Delete.razor
@@ -51,7 +51,7 @@
- |
+
+
+
+ |
+
+
+
+
+
+ |
+
Cancel
-
+
@code {
public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Admin; } }
@@ -170,6 +181,9 @@
DateTime createdon;
string modifiedby;
DateTime modifiedon;
+ string deletedby;
+ DateTime? deletedon;
+ string isdeleted;
PermissionGrid permissiongrid;
@@ -212,6 +226,9 @@
createdon = page.CreatedOn;
modifiedby = page.ModifiedBy;
modifiedon = page.ModifiedOn;
+ deletedby = page.DeletedBy;
+ deletedon = page.DeletedOn;
+ isdeleted = page.IsDeleted.ToString();
}
}
catch (Exception ex)
@@ -321,6 +338,8 @@
System.Reflection.PropertyInfo property = type.GetProperty("Panes");
page.Panes = (string)property.GetValue(Activator.CreateInstance(type), null);
page.Permissions = permissiongrid.GetPermissions();
+ page.IsDeleted = (isdeleted == null ? true : Boolean.Parse(isdeleted));
+
await PageService.UpdatePageAsync(page);
await PageService.UpdatePageOrderAsync(page.SiteId, page.ParentId);
if (currentparentid == "")
diff --git a/Oqtane.Client/Modules/Controls/AuditInfo.razor b/Oqtane.Client/Modules/Controls/AuditInfo.razor
index 4840dc54..40938da3 100644
--- a/Oqtane.Client/Modules/Controls/AuditInfo.razor
+++ b/Oqtane.Client/Modules/Controls/AuditInfo.razor
@@ -18,6 +18,15 @@
[Parameter]
public DateTime ModifiedOn { get; set; }
+
+ [Parameter]
+ public string DeletedBy { get; set; }
+
+ [Parameter]
+ public DateTime? DeletedOn { get; set; }
+
+ [Parameter]
+ public bool IsDeleted { get; set; }
[Parameter]
public string Style { get; set; }
@@ -54,5 +63,19 @@
}
text += "";
}
+
+ if (!String.IsNullOrEmpty(DeletedBy) || DeletedOn.HasValue)
+ {
+ text += "Deleted ";
+ if (!String.IsNullOrEmpty(DeletedBy))
+ {
+ text += " by " + DeletedBy + "";
+ }
+ if (DeletedOn != null)
+ {
+ text += " on " + DeletedOn.Value.ToString("MMM dd yyyy HH:mm:ss") + "";
+ }
+ text += "
";
+ }
}
}
diff --git a/Oqtane.Client/Themes/Controls/Menu.razor b/Oqtane.Client/Themes/Controls/Menu.razor
index fe380160..271ab3e1 100644
--- a/Oqtane.Client/Themes/Controls/Menu.razor
+++ b/Oqtane.Client/Themes/Controls/Menu.razor
@@ -17,7 +17,7 @@
menu = "\n";
- foreach (Page p in PageState.Pages.Where(item => item.IsNavigation))
+ foreach (Page p in PageState.Pages.Where(item => item.IsNavigation && !item.IsDeleted))
{
if (UserSecurity.IsAuthorized(PageState.User, "View", p.Permissions) && p.Level <= securitylevel)
{
diff --git a/Oqtane.Server/Scripts/00.00.00.sql b/Oqtane.Server/Scripts/00.00.00.sql
index e4bac809..fd1a0233 100644
--- a/Oqtane.Server/Scripts/00.00.00.sql
+++ b/Oqtane.Server/Scripts/00.00.00.sql
@@ -38,6 +38,9 @@ CREATE TABLE [dbo].[Page](
[CreatedOn] [datetime] NOT NULL,
[ModifiedBy] [nvarchar](256) NOT NULL,
[ModifiedOn] [datetime] NOT NULL,
+ [DeletedBy] [nvarchar](256) NULL,
+ [DeletedOn] [datetime] NULL,
+ [IsDeleted][bit] NOT NULL
CONSTRAINT [PK_Page] PRIMARY KEY CLUSTERED
(
[PageId] ASC
diff --git a/Oqtane.Shared/Models/Page.cs b/Oqtane.Shared/Models/Page.cs
index 49d22ba6..dbcf2f89 100644
--- a/Oqtane.Shared/Models/Page.cs
+++ b/Oqtane.Shared/Models/Page.cs
@@ -3,7 +3,7 @@ using System.ComponentModel.DataAnnotations.Schema;
namespace Oqtane.Models
{
- public class Page : IAuditable
+ public class Page : IAuditable, IDeletable
{
public int PageId { get; set; }
public int SiteId { get; set; }
@@ -22,7 +22,9 @@ namespace Oqtane.Models
public DateTime CreatedOn { get; set; }
public string ModifiedBy { get; set; }
public DateTime ModifiedOn { get; set; }
-
+ public string DeletedBy { get; set; }
+ public DateTime? DeletedOn { get; set; }
+ public bool IsDeleted { get; set; }
[NotMapped]
public string Permissions { get; set; }