Basic Pages RecycleBin

This commit is contained in:
Emanuele Filardo 2019-10-19 01:23:46 +02:00
parent 75528d86cf
commit 5fefda60a3
6 changed files with 99 additions and 36 deletions

View File

@ -100,17 +100,6 @@
<input class="form-control" @bind="@icon" disabled />
</td>
</tr>
<tr>
<td>
<label for="Name" class="control-label">Is Deleted? </label>
</td>
<td>
<select class="form-control" @bind="@isdeleted" disabled>
<option value="True">Yes</option>
<option value="False">No</option>
</select>
</td>
</tr>
</table>
<button type="button" class="btn btn-danger" @onclick="DeletePage">Delete</button>
<NavLink class="btn btn-secondary" href="@NavigateUrl()">Cancel</NavLink>
@ -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)

View File

@ -145,17 +145,6 @@
<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>
@ -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)
{

View File

@ -1,11 +1,13 @@
@namespace Oqtane.Modules.Admin.Pages
@inherits ModuleBase
@inject NavigationManager NavigationManager
@inject IPageService PageService
@if (PageState.Pages != null)
{
<ActionLink Action="Add" Text="Add Page" Style="float: right; margin: 10px;" />
<Pager Items="@PageState.Pages">
<Pager Items="@PageState.Pages.Where(item => !item.IsDeleted)">
<Header>
<th>Name</th>
<th>&nbsp;</th>
@ -14,11 +16,25 @@
<Row>
<td>@(new string('-', context.Level * 2))@(context.Name)</td>
<td><ActionLink Action="Edit" Parameters="@($"id=" + context.PageId.ToString())" /></td>
<td><ActionLink Action="Delete" Parameters="@($"id=" + context.PageId.ToString())" Class="btn btn-danger" /></td>
<td><button @onclick="@(() => Delete(context))" class="btn btn-danger">Delete</button></td>
</Row>
</Pager>
}
@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);
}
}
}

View File

@ -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*@
<h3>Pages</h3>
@if (pageModules.Count == 0)
{
<p>No deleted pages</p>
}
else
{
<Pager Items="@pageModules">
<Header>
<th>Name</th>
<th>Deletion audit</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
</Header>
<Row>
<td>@context.Name</td>
<td>@context.DeletedBy - @context.DeletedOn</td>
<td><button @onclick="@(() => Restore(context))" class="btn btn-info" title="Restore">Restore</button></td>
<td><button @onclick="@(() => Delete(context.PageId))" class="btn btn-danger">Delete</button></td>
</Row>
</Pager>
}
@code {
public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Admin; } }
List<Page> pageModules = new List<Page>();
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);
}
}
}

View File

@ -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 @@
<li class="nav-item px-3">&nbsp;</li>
<li class="nav-item px-3"><button type="button" class="btn btn-primary btn-block mx-auto" @onclick=@(async () => Navigate("Add"))>Add Page</button></li>
<li class="nav-item px-3"><button type="button" class="btn btn-primary btn-block mx-auto" @onclick=@(async () => Navigate("Edit"))>Edit Page</button></li>
<li class="nav-item px-3"><button type="button" class="btn btn-primary btn-block mx-auto" @onclick=@(async () => Navigate("Delete"))>Delete Page</button></li>
<li class="nav-item px-3"><button type="button" class="btn btn-primary btn-block mx-auto" @onclick=@(async () => await Delete(PageState.Page))>Delete Page</button></li>
</ul>
<hr class="app-rule" />
<table class="table table-borderless">
@ -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));
}
}

View File

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