Merge pull request #103 from fileman/SoftDeletePages
IDeletable implementation for Page
This commit is contained in:
commit
e4e7d7e52f
|
@ -51,7 +51,7 @@
|
||||||
<label for="Name" class="control-label">Default Mode? </label>
|
<label for="Name" class="control-label">Default Mode? </label>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<select class="form-control" @bind="@mode">
|
<select class="form-control" @bind="@mode" readonly>
|
||||||
<option value="view">View Mode</option>
|
<option value="view">View Mode</option>
|
||||||
<option value="edit">Edit Mode</option>
|
<option value="edit">Edit Mode</option>
|
||||||
</select>
|
</select>
|
||||||
|
@ -95,10 +95,13 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<label for="Name" class="control-label">Permissions: </label>
|
<label for="Name" class="control-label">Is Deleted? </label>
|
||||||
</td>
|
</td>
|
||||||
<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>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
@ -106,7 +109,7 @@
|
||||||
<NavLink class="btn btn-secondary" href="@NavigateUrl()">Cancel</NavLink>
|
<NavLink class="btn btn-secondary" href="@NavigateUrl()">Cancel</NavLink>
|
||||||
<br />
|
<br />
|
||||||
<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 {
|
@code {
|
||||||
public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Admin; } }
|
public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Admin; } }
|
||||||
|
@ -128,6 +131,9 @@
|
||||||
DateTime createdon;
|
DateTime createdon;
|
||||||
string modifiedby;
|
string modifiedby;
|
||||||
DateTime modifiedon;
|
DateTime modifiedon;
|
||||||
|
string deletedby;
|
||||||
|
DateTime? deletedon;
|
||||||
|
string isdeleted;
|
||||||
|
|
||||||
PermissionGrid permissiongrid;
|
PermissionGrid permissiongrid;
|
||||||
|
|
||||||
|
@ -154,6 +160,9 @@
|
||||||
createdon = page.CreatedOn;
|
createdon = page.CreatedOn;
|
||||||
modifiedby = page.ModifiedBy;
|
modifiedby = page.ModifiedBy;
|
||||||
modifiedon = page.ModifiedOn;
|
modifiedon = page.ModifiedOn;
|
||||||
|
deletedby = page.DeletedBy;
|
||||||
|
deletedon = page.DeletedOn;
|
||||||
|
isdeleted = page.IsDeleted.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
|
@ -138,12 +138,23 @@
|
||||||
<PermissionGrid EntityName="Page" Permissions="@permissions" @ref="permissiongrid" />
|
<PermissionGrid EntityName="Page" Permissions="@permissions" @ref="permissiongrid" />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</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>
|
</table>
|
||||||
<button type="button" class="btn btn-success" @onclick="SavePage">Save</button>
|
<button type="button" class="btn btn-success" @onclick="SavePage">Save</button>
|
||||||
<NavLink class="btn btn-secondary" href="@NavigateUrl()">Cancel</NavLink>
|
<NavLink class="btn btn-secondary" href="@NavigateUrl()">Cancel</NavLink>
|
||||||
<br />
|
<br />
|
||||||
<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 {
|
@code {
|
||||||
public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Admin; } }
|
public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Admin; } }
|
||||||
|
@ -170,6 +181,9 @@
|
||||||
DateTime createdon;
|
DateTime createdon;
|
||||||
string modifiedby;
|
string modifiedby;
|
||||||
DateTime modifiedon;
|
DateTime modifiedon;
|
||||||
|
string deletedby;
|
||||||
|
DateTime? deletedon;
|
||||||
|
string isdeleted;
|
||||||
|
|
||||||
PermissionGrid permissiongrid;
|
PermissionGrid permissiongrid;
|
||||||
|
|
||||||
|
@ -212,6 +226,9 @@
|
||||||
createdon = page.CreatedOn;
|
createdon = page.CreatedOn;
|
||||||
modifiedby = page.ModifiedBy;
|
modifiedby = page.ModifiedBy;
|
||||||
modifiedon = page.ModifiedOn;
|
modifiedon = page.ModifiedOn;
|
||||||
|
deletedby = page.DeletedBy;
|
||||||
|
deletedon = page.DeletedOn;
|
||||||
|
isdeleted = page.IsDeleted.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -321,6 +338,8 @@
|
||||||
System.Reflection.PropertyInfo property = type.GetProperty("Panes");
|
System.Reflection.PropertyInfo property = type.GetProperty("Panes");
|
||||||
page.Panes = (string)property.GetValue(Activator.CreateInstance(type), null);
|
page.Panes = (string)property.GetValue(Activator.CreateInstance(type), null);
|
||||||
page.Permissions = permissiongrid.GetPermissions();
|
page.Permissions = permissiongrid.GetPermissions();
|
||||||
|
page.IsDeleted = (isdeleted == null ? true : Boolean.Parse(isdeleted));
|
||||||
|
|
||||||
await PageService.UpdatePageAsync(page);
|
await PageService.UpdatePageAsync(page);
|
||||||
await PageService.UpdatePageOrderAsync(page.SiteId, page.ParentId);
|
await PageService.UpdatePageOrderAsync(page.SiteId, page.ParentId);
|
||||||
if (currentparentid == "")
|
if (currentparentid == "")
|
||||||
|
|
|
@ -19,6 +19,15 @@
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public DateTime ModifiedOn { get; set; }
|
public DateTime ModifiedOn { get; set; }
|
||||||
|
|
||||||
|
[Parameter]
|
||||||
|
public string DeletedBy { get; set; }
|
||||||
|
|
||||||
|
[Parameter]
|
||||||
|
public DateTime? DeletedOn { get; set; }
|
||||||
|
|
||||||
|
[Parameter]
|
||||||
|
public bool IsDeleted { get; set; }
|
||||||
|
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public string Style { get; set; }
|
public string Style { get; set; }
|
||||||
|
|
||||||
|
@ -54,5 +63,19 @@
|
||||||
}
|
}
|
||||||
text += "</p>";
|
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>";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
menu = "<ul class=\"nav flex-column\">\n";
|
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)
|
if (UserSecurity.IsAuthorized(PageState.User, "View", p.Permissions) && p.Level <= securitylevel)
|
||||||
{
|
{
|
||||||
|
|
|
@ -38,6 +38,9 @@ CREATE TABLE [dbo].[Page](
|
||||||
[CreatedOn] [datetime] NOT NULL,
|
[CreatedOn] [datetime] NOT NULL,
|
||||||
[ModifiedBy] [nvarchar](256) NOT NULL,
|
[ModifiedBy] [nvarchar](256) NOT NULL,
|
||||||
[ModifiedOn] [datetime] NOT NULL,
|
[ModifiedOn] [datetime] NOT NULL,
|
||||||
|
[DeletedBy] [nvarchar](256) NULL,
|
||||||
|
[DeletedOn] [datetime] NULL,
|
||||||
|
[IsDeleted][bit] NOT NULL
|
||||||
CONSTRAINT [PK_Page] PRIMARY KEY CLUSTERED
|
CONSTRAINT [PK_Page] PRIMARY KEY CLUSTERED
|
||||||
(
|
(
|
||||||
[PageId] ASC
|
[PageId] ASC
|
||||||
|
|
|
@ -3,7 +3,7 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
namespace Oqtane.Models
|
namespace Oqtane.Models
|
||||||
{
|
{
|
||||||
public class Page : IAuditable
|
public class Page : IAuditable, IDeletable
|
||||||
{
|
{
|
||||||
public int PageId { get; set; }
|
public int PageId { get; set; }
|
||||||
public int SiteId { get; set; }
|
public int SiteId { get; set; }
|
||||||
|
@ -22,7 +22,9 @@ namespace Oqtane.Models
|
||||||
public DateTime CreatedOn { get; set; }
|
public DateTime CreatedOn { get; set; }
|
||||||
public string ModifiedBy { get; set; }
|
public string ModifiedBy { get; set; }
|
||||||
public DateTime ModifiedOn { get; set; }
|
public DateTime ModifiedOn { get; set; }
|
||||||
|
public string DeletedBy { get; set; }
|
||||||
|
public DateTime? DeletedOn { get; set; }
|
||||||
|
public bool IsDeleted { get; set; }
|
||||||
|
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
public string Permissions { get; set; }
|
public string Permissions { get; set; }
|
||||||
|
|
Loading…
Reference in New Issue
Block a user