Merge pull request #103 from fileman/SoftDeletePages

IDeletable implementation for Page
This commit is contained in:
Shaun Walker 2019-09-30 09:13:10 -04:00 committed by GitHub
commit e4e7d7e52f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 64 additions and 8 deletions

View File

@ -51,7 +51,7 @@
<label for="Name" class="control-label">Default Mode? </label>
</td>
<td>
<select class="form-control" @bind="@mode">
<select class="form-control" @bind="@mode" readonly>
<option value="view">View Mode</option>
<option value="edit">Edit Mode</option>
</select>
@ -95,10 +95,13 @@
</tr>
<tr>
<td>
<label for="Name" class="control-label">Permissions: </label>
<label for="Name" class="control-label">Is Deleted? </label>
</td>
<td>
<PermissionGrid EntityName="Page" Permissions="@permissions" @ref="permissiongrid" />
<select class="form-control" @bind="@isdeleted" readonly>
<option value="True">Yes</option>
<option value="False">No</option>
</select>
</td>
</tr>
</table>
@ -106,7 +109,7 @@
<NavLink class="btn btn-secondary" href="@NavigateUrl()">Cancel</NavLink>
<br />
<br />
<AuditInfo CreatedBy="@createdby" CreatedOn="@createdon" ModifiedBy="@modifiedby" ModifiedOn="@modifiedon"></AuditInfo>
<AuditInfo CreatedBy="@createdby" CreatedOn="@createdon" ModifiedBy="@modifiedby" ModifiedOn="@modifiedon" DeletedBy="@deletedby" DeletedOn="@deletedon"></AuditInfo>
@code {
public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Admin; } }
@ -128,6 +131,9 @@
DateTime createdon;
string modifiedby;
DateTime modifiedon;
string deletedby;
DateTime? deletedon;
string isdeleted;
PermissionGrid permissiongrid;
@ -154,6 +160,9 @@
createdon = page.CreatedOn;
modifiedby = page.ModifiedBy;
modifiedon = page.ModifiedOn;
deletedby = page.DeletedBy;
deletedon = page.DeletedOn;
isdeleted = page.IsDeleted.ToString();
}
}
catch (Exception ex)

View File

@ -138,12 +138,23 @@
<PermissionGrid EntityName="Page" Permissions="@permissions" @ref="permissiongrid" />
</td>
</tr>
<tr>
<td>
<label for="Name" class="control-label">Is Deleted? </label>
</td>
<td>
<select class="form-control" @bind="@isdeleted">
<option value="True">Yes</option>
<option value="False">No</option>
</select>
</td>
</tr>
</table>
<button type="button" class="btn btn-success" @onclick="SavePage">Save</button>
<NavLink class="btn btn-secondary" href="@NavigateUrl()">Cancel</NavLink>
<br />
<br />
<AuditInfo CreatedBy="@createdby" CreatedOn="@createdon" ModifiedBy="@modifiedby" ModifiedOn="@modifiedon"></AuditInfo>
<AuditInfo CreatedBy="@createdby" CreatedOn="@createdon" ModifiedBy="@modifiedby" ModifiedOn="@modifiedon" DeletedBy="@deletedby" DeletedOn="@deletedon"></AuditInfo>
@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 == "")

View File

@ -19,6 +19,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 += "</p>";
}
if (!String.IsNullOrEmpty(DeletedBy) || DeletedOn.HasValue)
{
text += "<p style=\"" + Style + "\">Deleted ";
if (!String.IsNullOrEmpty(DeletedBy))
{
text += " by <b>" + DeletedBy + "</b>";
}
if (DeletedOn != null)
{
text += " on <b>" + DeletedOn.Value.ToString("MMM dd yyyy HH:mm:ss") + "</b>";
}
text += "</p>";
}
}
}

View File

@ -17,7 +17,7 @@
menu = "<ul class=\"nav flex-column\">\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)
{

View File

@ -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

View File

@ -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; }