Support for user personalizable pages
This commit is contained in:
parent
ab564f7244
commit
ffba735aac
|
@ -4,130 +4,141 @@
|
||||||
@inject IPageService PageService
|
@inject IPageService PageService
|
||||||
@inject IThemeService ThemeService
|
@inject IThemeService ThemeService
|
||||||
|
|
||||||
<table class="table table-borderless">
|
<table class="table table-borderless">
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<label for="Name" class="control-label">Name: </label>
|
<label for="Name" class="control-label">Name: </label>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<input class="form-control" @bind="@name" />
|
<input class="form-control" @bind="@name" />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<label for="Name" class="control-label">Path: </label>
|
<label for="Name" class="control-label">Path: </label>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<input class="form-control" @bind="@path" />
|
<input class="form-control" @bind="@path" />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<label for="Name" class="control-label">Parent: </label>
|
<label for="Name" class="control-label">Parent: </label>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<select class="form-control" @onchange="(e => ParentChanged(e))">
|
<select class="form-control" @onchange="(e => ParentChanged(e))">
|
||||||
<option value="-1"><Site Root></option>
|
<option value="-1"><Site Root></option>
|
||||||
@foreach (Page page in pages)
|
@foreach (Page page in pages)
|
||||||
{
|
|
||||||
<option value="@(page.PageId)">@(new string('-', page.Level * 2))@(page.Name)</option>
|
|
||||||
}
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="Name" class="control-label">Insert: </label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<select class="form-control" @bind="@insert">
|
|
||||||
<option value="<<">At Beginning</option>
|
|
||||||
@if (children != null && children.Count > 0)
|
|
||||||
{
|
|
||||||
<option value="<">Before</option>
|
|
||||||
<option value=">">After</option>
|
|
||||||
}
|
|
||||||
<option value=">>">At End</option>
|
|
||||||
</select>
|
|
||||||
@if (children != null && children.Count > 0 && (insert == "<" || insert == ">"))
|
|
||||||
{
|
|
||||||
<select class="form-control" @bind="@childid">
|
|
||||||
<option value="-1"><Select Page></option>
|
|
||||||
@foreach (Page page in children)
|
|
||||||
{
|
{
|
||||||
<option value="@(page.PageId)">@(page.Name)</option>
|
<option value="@(page.PageId)">@(new string('-', page.Level * 2))@(page.Name)</option>
|
||||||
}
|
}
|
||||||
</select>
|
</select>
|
||||||
}
|
</td>
|
||||||
</td>
|
</tr>
|
||||||
</tr>
|
<tr>
|
||||||
<tr>
|
<td>
|
||||||
<td>
|
<label for="Name" class="control-label">Insert: </label>
|
||||||
<label for="Name" class="control-label">Navigation? </label>
|
</td>
|
||||||
</td>
|
<td>
|
||||||
<td>
|
<select class="form-control" @bind="@insert">
|
||||||
<select class="form-control" @bind="@isnavigation">
|
<option value="<<">At Beginning</option>
|
||||||
<option value="True">Yes</option>
|
@if (children != null && children.Count > 0)
|
||||||
<option value="False">No</option>
|
{
|
||||||
</select>
|
<option value="<">Before</option>
|
||||||
</td>
|
<option value=">">After</option>
|
||||||
</tr>
|
}
|
||||||
<tr>
|
<option value=">>">At End</option>
|
||||||
<td>
|
</select>
|
||||||
<label for="Name" class="control-label">Default Mode? </label>
|
@if (children != null && children.Count > 0 && (insert == "<" || insert == ">"))
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<select class="form-control" @bind="@mode">
|
|
||||||
<option value="view">View Mode</option>
|
|
||||||
<option value="edit">Edit Mode</option>
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="Name" class="control-label">Theme: </label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<select class="form-control" @onchange="(e => ThemeChanged(e))">
|
|
||||||
<option value=""><Select Theme></option>
|
|
||||||
@foreach (KeyValuePair<string, string> item in themes)
|
|
||||||
{
|
{
|
||||||
<option value="@item.Key">@item.Value</option>
|
<select class="form-control" @bind="@childid">
|
||||||
|
<option value="-1"><Select Page></option>
|
||||||
|
@foreach (Page page in children)
|
||||||
|
{
|
||||||
|
<option value="@(page.PageId)">@(page.Name)</option>
|
||||||
|
}
|
||||||
|
</select>
|
||||||
}
|
}
|
||||||
</select>
|
</td>
|
||||||
</td>
|
</tr>
|
||||||
</tr>
|
<tr>
|
||||||
<tr>
|
<td>
|
||||||
<td>
|
<label for="Name" class="control-label">Navigation? </label>
|
||||||
<label for="Name" class="control-label">Layout: </label>
|
</td>
|
||||||
</td>
|
<td>
|
||||||
<td>
|
<select class="form-control" @bind="@isnavigation">
|
||||||
<select class="form-control" @bind="@layouttype">
|
<option value="True">Yes</option>
|
||||||
<option value=""><Select Layout></option>
|
<option value="False">No</option>
|
||||||
@foreach (KeyValuePair<string, string> panelayout in panelayouts)
|
</select>
|
||||||
{
|
</td>
|
||||||
<option value="@panelayout.Key">@panelayout.Value</option>
|
</tr>
|
||||||
}
|
<tr>
|
||||||
</select>
|
<td>
|
||||||
</td>
|
<label for="Name" class="control-label">Personalizable? </label>
|
||||||
</tr>
|
</td>
|
||||||
<tr>
|
<td>
|
||||||
<td>
|
<select class="form-control" @bind="@ispersonalizable">
|
||||||
<label for="Name" class="control-label">Icon: </label>
|
<option value="True">Yes</option>
|
||||||
</td>
|
<option value="False">No</option>
|
||||||
<td>
|
</select>
|
||||||
<input class="form-control" @bind="@icon" />
|
</td>
|
||||||
</td>
|
</tr>
|
||||||
</tr>
|
<tr>
|
||||||
<tr>
|
<td>
|
||||||
<td>
|
<label for="Name" class="control-label">Default Mode? </label>
|
||||||
<label for="Name" class="control-label">Permissions: </label>
|
</td>
|
||||||
</td>
|
<td>
|
||||||
<td>
|
<select class="form-control" @bind="@mode">
|
||||||
<PermissionGrid EntityName="Page" Permissions="@permissions" @ref="permissiongrid" />
|
<option value="view">View Mode</option>
|
||||||
</td>
|
<option value="edit">Edit Mode</option>
|
||||||
</tr>
|
</select>
|
||||||
</table>
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="Name" class="control-label">Theme: </label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select class="form-control" @onchange="(e => ThemeChanged(e))">
|
||||||
|
<option value=""><Select Theme></option>
|
||||||
|
@foreach (KeyValuePair<string, string> item in themes)
|
||||||
|
{
|
||||||
|
<option value="@item.Key">@item.Value</option>
|
||||||
|
}
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="Name" class="control-label">Layout: </label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select class="form-control" @bind="@layouttype">
|
||||||
|
<option value=""><Select Layout></option>
|
||||||
|
@foreach (KeyValuePair<string, string> panelayout in panelayouts)
|
||||||
|
{
|
||||||
|
<option value="@panelayout.Key">@panelayout.Value</option>
|
||||||
|
}
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="Name" class="control-label">Icon: </label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input class="form-control" @bind="@icon" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="Name" class="control-label">Permissions: </label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<PermissionGrid EntityName="Page" Permissions="@permissions" @ref="permissiongrid" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</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>
|
||||||
|
|
||||||
|
@ -145,6 +156,7 @@
|
||||||
List<Page> children;
|
List<Page> children;
|
||||||
int childid = -1;
|
int childid = -1;
|
||||||
string isnavigation = "True";
|
string isnavigation = "True";
|
||||||
|
string ispersonalizable = "False";
|
||||||
string mode = "view";
|
string mode = "view";
|
||||||
string themetype = "";
|
string themetype = "";
|
||||||
string layouttype = "";
|
string layouttype = "";
|
||||||
|
@ -291,9 +303,11 @@
|
||||||
{
|
{
|
||||||
page.LayoutType = "";
|
page.LayoutType = "";
|
||||||
}
|
}
|
||||||
|
page.IsPersonalizable = (ispersonalizable == null ? false : Boolean.Parse(ispersonalizable));
|
||||||
|
page.UserId = null;
|
||||||
|
|
||||||
await PageService.AddPageAsync(page);
|
await PageService.AddPageAsync(page);
|
||||||
await PageService.UpdatePageOrderAsync(page.SiteId, page.ParentId);
|
await PageService.UpdatePageOrderAsync(page.SiteId, page.PageId, page.ParentId);
|
||||||
|
|
||||||
await logger.LogInformation("Page Added {Page}", page);
|
await logger.LogInformation("Page Added {Page}", page);
|
||||||
NavigationManager.NavigateTo(NavigateUrl(page.Path, Reload.Site));
|
NavigationManager.NavigateTo(NavigateUrl(page.Path, Reload.Site));
|
||||||
|
|
|
@ -4,148 +4,159 @@
|
||||||
@inject IPageService PageService
|
@inject IPageService PageService
|
||||||
@inject IThemeService ThemeService
|
@inject IThemeService ThemeService
|
||||||
|
|
||||||
<table class="table table-borderless">
|
<table class="table table-borderless">
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<label for="Name" class="control-label">Name: </label>
|
<label for="Name" class="control-label">Name: </label>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<input class="form-control" @bind="@name" />
|
<input class="form-control" @bind="@name" />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<label for="Name" class="control-label">Path: </label>
|
<label for="Name" class="control-label">Path: </label>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<input class="form-control" @bind="@path" />
|
<input class="form-control" @bind="@path" />
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<label for="Name" class="control-label">Parent: </label>
|
<label for="Name" class="control-label">Parent: </label>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<select class="form-control" @onchange="(e => ParentChanged(e))">
|
<select class="form-control" @onchange="(e => ParentChanged(e))">
|
||||||
<option value="-1"><Site Root></option>
|
<option value="-1"><Site Root></option>
|
||||||
@foreach (Page page in pages)
|
@foreach (Page page in pages)
|
||||||
{
|
|
||||||
if (page.PageId.ToString() == parentid)
|
|
||||||
{
|
|
||||||
<option value="@(page.PageId)" selected>@(new string('-', page.Level * 2))@(page.Name)</option>
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
<option value="@(page.PageId)">@(new string('-', page.Level * 2))@(page.Name)</option>
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</select>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<label for="Name" class="control-label">Move : </label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<select class="form-control" @bind="@insert">
|
|
||||||
@if (parentid == currentparentid)
|
|
||||||
{
|
|
||||||
<option value="="><Maintain Current Location></option>
|
|
||||||
}
|
|
||||||
<option value="<<">To Beginning</option>
|
|
||||||
@if (children != null && children.Count > 0)
|
|
||||||
{
|
|
||||||
<option value="<">Before</option>
|
|
||||||
<option value=">">After</option>
|
|
||||||
}
|
|
||||||
<option value=">>">To End</option>
|
|
||||||
</select>
|
|
||||||
@if (children != null && children.Count > 0 && (insert == "<" || insert == ">"))
|
|
||||||
{
|
{
|
||||||
<select class="form-control" @bind="@childid">
|
if (page.PageId.ToString() == parentid)
|
||||||
<option value="-1"><Select Page></option>
|
{
|
||||||
@foreach (Page page in children)
|
<option value="@(page.PageId)" selected>@(new string('-', page.Level * 2))@(page.Name)</option>
|
||||||
{
|
}
|
||||||
<option value="@(page.PageId)">@(page.Name)</option>
|
else
|
||||||
}
|
{
|
||||||
</select>
|
<option value="@(page.PageId)">@(new string('-', page.Level * 2))@(page.Name)</option>
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</td>
|
</select>
|
||||||
</tr>
|
</td>
|
||||||
<tr>
|
</tr>
|
||||||
<td>
|
<tr>
|
||||||
<label for="Name" class="control-label">Navigation? </label>
|
<td>
|
||||||
</td>
|
<label for="Name" class="control-label">Move : </label>
|
||||||
<td>
|
</td>
|
||||||
<select class="form-control" @bind="@isnavigation">
|
<td>
|
||||||
<option value="True">Yes</option>
|
<select class="form-control" @bind="@insert">
|
||||||
<option value="False">No</option>
|
@if (parentid == currentparentid)
|
||||||
</select>
|
{
|
||||||
</td>
|
<option value="="><Maintain Current Location></option>
|
||||||
</tr>
|
}
|
||||||
<tr>
|
<option value="<<">To Beginning</option>
|
||||||
<td>
|
@if (children != null && children.Count > 0)
|
||||||
<label for="Name" class="control-label">Default Mode? </label>
|
{
|
||||||
</td>
|
<option value="<">Before</option>
|
||||||
<td>
|
<option value=">">After</option>
|
||||||
<select class="form-control" @bind="@mode">
|
}
|
||||||
<option value="view">View Mode</option>
|
<option value=">>">To End</option>
|
||||||
<option value="edit">Edit Mode</option>
|
</select>
|
||||||
</select>
|
@if (children != null && children.Count > 0 && (insert == "<" || insert == ">"))
|
||||||
</td>
|
{
|
||||||
</tr>
|
<select class="form-control" @bind="@childid">
|
||||||
<tr>
|
<option value="-1"><Select Page></option>
|
||||||
<td>
|
@foreach (Page page in children)
|
||||||
<label for="Name" class="control-label">Theme: </label>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<select class="form-control" @onchange="(e => ThemeChanged(e))">
|
|
||||||
<option value=""><Select Theme></option>
|
|
||||||
@foreach (KeyValuePair<string, string> item in themes)
|
|
||||||
{
|
{
|
||||||
if (item.Key == themetype)
|
<option value="@(page.PageId)">@(page.Name)</option>
|
||||||
{
|
|
||||||
<option value="@item.Key" selected>@item.Value</option>
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
<option value="@item.Key">@item.Value</option>
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</select>
|
</select>
|
||||||
</td>
|
}
|
||||||
</tr>
|
</td>
|
||||||
<tr>
|
</tr>
|
||||||
<td>
|
<tr>
|
||||||
<label for="Name" class="control-label">Layout: </label>
|
<td>
|
||||||
</td>
|
<label for="Name" class="control-label">Navigation? </label>
|
||||||
<td>
|
</td>
|
||||||
<select class="form-control" @bind="@layouttype">
|
<td>
|
||||||
<option value=""><Select Layout></option>
|
<select class="form-control" @bind="@isnavigation">
|
||||||
@foreach (KeyValuePair<string, string> panelayout in panelayouts)
|
<option value="True">Yes</option>
|
||||||
|
<option value="False">No</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="Name" class="control-label">Personalizable? </label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select class="form-control" @bind="@ispersonalizable">
|
||||||
|
<option value="True">Yes</option>
|
||||||
|
<option value="False">No</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="Name" class="control-label">Default Mode? </label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select class="form-control" @bind="@mode">
|
||||||
|
<option value="view">View Mode</option>
|
||||||
|
<option value="edit">Edit Mode</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="Name" class="control-label">Theme: </label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select class="form-control" @onchange="(e => ThemeChanged(e))">
|
||||||
|
<option value=""><Select Theme></option>
|
||||||
|
@foreach (KeyValuePair<string, string> item in themes)
|
||||||
|
{
|
||||||
|
if (item.Key == themetype)
|
||||||
{
|
{
|
||||||
<option value="@panelayout.Key">@panelayout.Value</option>
|
<option value="@item.Key" selected>@item.Value</option>
|
||||||
}
|
}
|
||||||
</select>
|
else
|
||||||
</td>
|
{
|
||||||
</tr>
|
<option value="@item.Key">@item.Value</option>
|
||||||
<tr>
|
}
|
||||||
<td>
|
}
|
||||||
<label for="Name" class="control-label">Icon: </label>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
</tr>
|
||||||
<input class="form-control" @bind="@icon" />
|
<tr>
|
||||||
</td>
|
<td>
|
||||||
</tr>
|
<label for="Name" class="control-label">Layout: </label>
|
||||||
<tr>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<label for="Name" class="control-label">Permissions: </label>
|
<select class="form-control" @bind="@layouttype">
|
||||||
</td>
|
<option value=""><Select Layout></option>
|
||||||
<td>
|
@foreach (KeyValuePair<string, string> panelayout in panelayouts)
|
||||||
<PermissionGrid EntityName="Page" Permissions="@permissions" @ref="permissiongrid" />
|
{
|
||||||
</td>
|
<option value="@panelayout.Key">@panelayout.Value</option>
|
||||||
</tr>
|
}
|
||||||
</table>
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="Name" class="control-label">Icon: </label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input class="form-control" @bind="@icon" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="Name" class="control-label">Permissions: </label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<PermissionGrid EntityName="Page" Permissions="@permissions" @ref="permissiongrid" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</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 />
|
||||||
|
@ -168,6 +179,7 @@
|
||||||
List<Page> children;
|
List<Page> children;
|
||||||
int childid = -1;
|
int childid = -1;
|
||||||
string isnavigation;
|
string isnavigation;
|
||||||
|
string ispersonalizable;
|
||||||
string mode;
|
string mode;
|
||||||
string themetype;
|
string themetype;
|
||||||
string layouttype;
|
string layouttype;
|
||||||
|
@ -211,6 +223,7 @@
|
||||||
}
|
}
|
||||||
currentparentid = parentid;
|
currentparentid = parentid;
|
||||||
isnavigation = page.IsNavigation.ToString();
|
isnavigation = page.IsNavigation.ToString();
|
||||||
|
ispersonalizable = page.IsPersonalizable.ToString();
|
||||||
mode = (page.EditMode) ? "edit" : "view";
|
mode = (page.EditMode) ? "edit" : "view";
|
||||||
themetype = page.ThemeType;
|
themetype = page.ThemeType;
|
||||||
panelayouts = ThemeService.GetPaneLayoutTypes(PageState.Themes, themetype);
|
panelayouts = ThemeService.GetPaneLayoutTypes(PageState.Themes, themetype);
|
||||||
|
@ -357,16 +370,18 @@
|
||||||
{
|
{
|
||||||
page.LayoutType = "";
|
page.LayoutType = "";
|
||||||
}
|
}
|
||||||
|
page.IsPersonalizable = (ispersonalizable == null ? false : Boolean.Parse(ispersonalizable));
|
||||||
|
page.UserId = null;
|
||||||
|
|
||||||
await PageService.UpdatePageAsync(page);
|
await PageService.UpdatePageAsync(page);
|
||||||
await PageService.UpdatePageOrderAsync(page.SiteId, page.ParentId);
|
await PageService.UpdatePageOrderAsync(page.SiteId, page.PageId, page.ParentId);
|
||||||
if (currentparentid == "")
|
if (currentparentid == "")
|
||||||
{
|
{
|
||||||
await PageService.UpdatePageOrderAsync(page.SiteId, null);
|
await PageService.UpdatePageOrderAsync(page.SiteId, page.PageId, null);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await PageService.UpdatePageOrderAsync(page.SiteId, int.Parse(currentparentid));
|
await PageService.UpdatePageOrderAsync(page.SiteId, page.PageId, int.Parse(currentparentid));
|
||||||
}
|
}
|
||||||
|
|
||||||
// update child paths
|
// update child paths
|
||||||
|
|
|
@ -8,9 +8,10 @@ namespace Oqtane.Services
|
||||||
{
|
{
|
||||||
Task<List<Page>> GetPagesAsync(int SiteId);
|
Task<List<Page>> GetPagesAsync(int SiteId);
|
||||||
Task<Page> GetPageAsync(int PageId);
|
Task<Page> GetPageAsync(int PageId);
|
||||||
|
Task<Page> GetPageAsync(int PageId, int UserId);
|
||||||
Task<Page> AddPageAsync(Page Page);
|
Task<Page> AddPageAsync(Page Page);
|
||||||
Task<Page> UpdatePageAsync(Page Page);
|
Task<Page> UpdatePageAsync(Page Page);
|
||||||
Task UpdatePageOrderAsync(int SiteId, int? ParentId);
|
Task UpdatePageOrderAsync(int SiteId, int PageId, int? ParentId);
|
||||||
Task DeletePageAsync(int PageId);
|
Task DeletePageAsync(int PageId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,11 @@ namespace Oqtane.Services
|
||||||
return await http.GetJsonAsync<Page>(apiurl + "/" + PageId.ToString());
|
return await http.GetJsonAsync<Page>(apiurl + "/" + PageId.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<Page> GetPageAsync(int PageId, int UserId)
|
||||||
|
{
|
||||||
|
return await http.GetJsonAsync<Page>(apiurl + "/" + PageId.ToString() + "?userid=" + UserId.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<Page> AddPageAsync(Page Page)
|
public async Task<Page> AddPageAsync(Page Page)
|
||||||
{
|
{
|
||||||
return await http.PostJsonAsync<Page>(apiurl, Page);
|
return await http.PostJsonAsync<Page>(apiurl, Page);
|
||||||
|
@ -49,9 +54,9 @@ namespace Oqtane.Services
|
||||||
return await http.PutJsonAsync<Page>(apiurl + "/" + Page.PageId.ToString(), Page);
|
return await http.PutJsonAsync<Page>(apiurl + "/" + Page.PageId.ToString(), Page);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task UpdatePageOrderAsync(int SiteId, int? ParentId)
|
public async Task UpdatePageOrderAsync(int SiteId, int PageId, int? ParentId)
|
||||||
{
|
{
|
||||||
await http.PutJsonAsync(apiurl + "/?siteid=" + SiteId.ToString() + "&parentid=" + ((ParentId == null) ? "" : ParentId.ToString()), null);
|
await http.PutJsonAsync(apiurl + "/?siteid=" + SiteId.ToString() + "&pageid=" + PageId.ToString() + "&parentid=" + ((ParentId == null) ? "" : ParentId.ToString()), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task DeletePageAsync(int PageId)
|
public async Task DeletePageAsync(int PageId)
|
||||||
|
|
|
@ -218,11 +218,11 @@
|
||||||
|
|
||||||
if (page != null)
|
if (page != null)
|
||||||
{
|
{
|
||||||
page = ProcessPage(page, site);
|
|
||||||
|
|
||||||
// check if user is authorized to view page
|
// check if user is authorized to view page
|
||||||
if (UserSecurity.IsAuthorized(user, "View", page.Permissions))
|
if (UserSecurity.IsAuthorized(user, "View", page.Permissions))
|
||||||
{
|
{
|
||||||
|
page = await ProcessPage(page, site, user);
|
||||||
|
|
||||||
pagestate = new PageState();
|
pagestate = new PageState();
|
||||||
pagestate.ModuleDefinitions = moduledefinitions;
|
pagestate.ModuleDefinitions = moduledefinitions;
|
||||||
pagestate.Themes = themes;
|
pagestate.Themes = themes;
|
||||||
|
@ -260,11 +260,16 @@
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// user is not authorized to view page
|
// user is not authorized to view page
|
||||||
|
if (path != "")
|
||||||
|
{
|
||||||
|
NavigationManager.NavigateTo("");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// page does not exist
|
// page does not exist
|
||||||
|
NavigationManager.NavigateTo("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -313,10 +318,16 @@
|
||||||
return querystring;
|
return querystring;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Page ProcessPage(Page page, Site site)
|
private async Task<Page> ProcessPage(Page page, Site site, User user)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
if (page.IsPersonalizable && user != null)
|
||||||
|
{
|
||||||
|
// load the personalized page
|
||||||
|
page = await PageService.GetPageAsync(page.PageId, user.UserId);
|
||||||
|
}
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(page.ThemeType))
|
if (string.IsNullOrEmpty(page.ThemeType))
|
||||||
{
|
{
|
||||||
page.ThemeType = site.DefaultThemeType;
|
page.ThemeType = site.DefaultThemeType;
|
||||||
|
|
|
@ -21,10 +21,13 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="@BodyClass">
|
<div class="@BodyClass">
|
||||||
<ul class="nav flex-column">
|
<ul class="nav flex-column">
|
||||||
<li class="nav-item px-3"><button type="button" class="btn btn-primary btn-block mx-auto" @onclick=@(async () => Navigate("Admin"))>Admin Dashboard</button></li>
|
@if (UserSecurity.IsAuthorized(PageState.User, Constants.AdminRole))
|
||||||
<li class="nav-item px-3"> </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("Admin"))>Admin Dashboard</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"> </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">
|
<li class="nav-item px-3">
|
||||||
<button class="btn btn-primary btn-block mx-auto" @onclick="ConfirmDelete">Delete Page</button>
|
<button class="btn btn-primary btn-block mx-auto" @onclick="ConfirmDelete">Delete Page</button>
|
||||||
@if (deleteconfirmation)
|
@if (deleteconfirmation)
|
||||||
|
@ -146,19 +149,26 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
@if (UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions) || (PageState.Page.IsPersonalizable && PageState.User != null))
|
||||||
|
{
|
||||||
@if (PageState.EditMode)
|
@if (PageState.EditMode)
|
||||||
{
|
{
|
||||||
<button type="button" class="btn @ButtonClass active" data-toggle="button" aria-pressed="true" autocomplete="off" @onclick="(async () => ToggleEditMode(PageState.EditMode))">
|
<button type="button" class="btn @ButtonClass active" data-toggle="button" aria-pressed="true" autocomplete="off" @onclick="(async () => await ToggleEditMode(PageState.EditMode))">
|
||||||
<span class="oi oi-pencil"></span>
|
<span class="oi oi-pencil"></span>
|
||||||
</button>
|
</button>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<button type="button" class="btn @ButtonClass" data-toggle="button" aria-pressed="false" autocomplete="off" @onclick="(async () => ToggleEditMode(PageState.EditMode))">
|
<button type="button" class="btn @ButtonClass" data-toggle="button" aria-pressed="false" autocomplete="off" @onclick="(async () => await ToggleEditMode(PageState.EditMode))">
|
||||||
<span class="oi oi-pencil"></span>
|
<span class="oi oi-pencil"></span>
|
||||||
</button>
|
</button>
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@if (UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions))
|
||||||
|
{
|
||||||
<button type="button" class="btn @ButtonClass" @onclick="ShowControlPanel">
|
<button type="button" class="btn @ButtonClass" @onclick="ShowControlPanel">
|
||||||
<span class="oi oi-menu"></span>
|
<span class="oi oi-menu"></span>
|
||||||
</button>
|
</button>
|
||||||
|
@ -292,7 +302,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
PageModule pagemodule = new PageModule();
|
PageModule pagemodule = new PageModule();
|
||||||
pagemodule.PageId = string.IsNullOrWhiteSpace(pageid) ? PageState.Page.PageId : int.Parse(pageid);
|
pagemodule.PageId = string.IsNullOrEmpty(pageid) ? PageState.Page.PageId : int.Parse(pageid);
|
||||||
pagemodule.ModuleId = int.Parse(moduleid);
|
pagemodule.ModuleId = int.Parse(moduleid);
|
||||||
pagemodule.Title = title;
|
pagemodule.Title = title;
|
||||||
if (pagemodule.Title == "")
|
if (pagemodule.Title == "")
|
||||||
|
@ -330,7 +340,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ToggleEditMode(bool EditMode)
|
private async Task ToggleEditMode(bool EditMode)
|
||||||
{
|
{
|
||||||
if (UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions))
|
if (UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions))
|
||||||
{
|
{
|
||||||
|
@ -346,6 +356,16 @@
|
||||||
}
|
}
|
||||||
NavigationManager.NavigateTo(NavigateUrl(PageState.Page.Path, "edit=" + ((PageState.EditMode) ? "1" : "0"), Reload.Page));
|
NavigationManager.NavigateTo(NavigateUrl(PageState.Page.Path, "edit=" + ((PageState.EditMode) ? "1" : "0"), Reload.Page));
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (PageState.Page.IsPersonalizable && PageState.User != null)
|
||||||
|
{
|
||||||
|
await CreatePersonalizedPage();
|
||||||
|
PageState.EditMode = true;
|
||||||
|
PageState.DesignMode = true;
|
||||||
|
NavigationManager.NavigateTo(NavigateUrl(PageState.Page.Path, "edit=" + ((PageState.EditMode) ? "1" : "0"), Reload.Page));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ShowControlPanel()
|
private void ShowControlPanel()
|
||||||
|
@ -413,14 +433,86 @@
|
||||||
Page page = PageState.Page;
|
Page page = PageState.Page;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
page.IsDeleted = true;
|
if (page.UserId == null)
|
||||||
await PageService.UpdatePageAsync(page);
|
{
|
||||||
await logger.Log(page.PageId, null, PageState.User.UserId, this.GetType().AssemblyQualifiedName, "ControlPanel", LogFunction.Delete, LogLevel.Information, null, "Page Deleted {Page}", page);
|
page.IsDeleted = true;
|
||||||
NavigationManager.NavigateTo(NavigateUrl("", Reload.Site));
|
await PageService.UpdatePageAsync(page);
|
||||||
|
await logger.Log(page.PageId, null, PageState.User.UserId, this.GetType().AssemblyQualifiedName, "ControlPanel", LogFunction.Delete, LogLevel.Information, null, "Page Deleted {Page}", page);
|
||||||
|
NavigationManager.NavigateTo(NavigateUrl("", Reload.Site));
|
||||||
|
}
|
||||||
|
else // personalized page
|
||||||
|
{
|
||||||
|
await PageService.DeletePageAsync(page.PageId);
|
||||||
|
await logger.Log(page.PageId, null, PageState.User.UserId, this.GetType().AssemblyQualifiedName, "ControlPanel", LogFunction.Delete, LogLevel.Information, null, "Page Deleted {Page}", page);
|
||||||
|
NavigationManager.NavigateTo(NavigateUrl(Reload.Page));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
await logger.Log(page.PageId, null, PageState.User.UserId, this.GetType().AssemblyQualifiedName, "ControlPanel", LogFunction.Delete, LogLevel.Information, ex, "Page Deleted {Page} {Error}", page, ex.Message);
|
await logger.Log(page.PageId, null, PageState.User.UserId, this.GetType().AssemblyQualifiedName, "ControlPanel", LogFunction.Delete, LogLevel.Information, ex, "Page Deleted {Page} {Error}", page, ex.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task CreatePersonalizedPage()
|
||||||
|
{
|
||||||
|
Page page = new Page();
|
||||||
|
page.SiteId = PageState.Page.SiteId;
|
||||||
|
page.Name = PageState.Page.Name;
|
||||||
|
page.Path = PageState.Page.Path;
|
||||||
|
page.ParentId = PageState.Page.ParentId;
|
||||||
|
page.Order = 0;
|
||||||
|
page.IsNavigation = false;
|
||||||
|
page.EditMode = false;
|
||||||
|
page.ThemeType = PageState.Page.ThemeType;
|
||||||
|
if (page.ThemeType == PageState.Site.DefaultThemeType)
|
||||||
|
{
|
||||||
|
page.ThemeType = "";
|
||||||
|
}
|
||||||
|
page.LayoutType = PageState.Page.LayoutType;
|
||||||
|
if (page.LayoutType == PageState.Site.DefaultLayoutType)
|
||||||
|
{
|
||||||
|
page.LayoutType = "";
|
||||||
|
}
|
||||||
|
page.Icon = PageState.Page.Icon;
|
||||||
|
List<PermissionString> permissions = new List<PermissionString>();
|
||||||
|
permissions.Add(new PermissionString { PermissionName = "View", Permissions = "[" + PageState.User.UserId.ToString() + "]" });
|
||||||
|
permissions.Add(new PermissionString { PermissionName = "Edit", Permissions = "[" + PageState.User.UserId.ToString() + "]" });
|
||||||
|
page.Permissions = UserSecurity.SetPermissionStrings(permissions);
|
||||||
|
page.IsPersonalizable = false;
|
||||||
|
page.UserId = PageState.User.UserId;
|
||||||
|
page = await PageService.AddPageAsync(page);
|
||||||
|
|
||||||
|
// copy modules
|
||||||
|
foreach (Module m in PageState.Modules.Where(item => item.PageId == PageState.Page.PageId && !item.IsDeleted))
|
||||||
|
{
|
||||||
|
Module module = new Module();
|
||||||
|
module.SiteId = m.SiteId;
|
||||||
|
module.ModuleDefinitionName = m.ModuleDefinitionName;
|
||||||
|
permissions = new List<PermissionString>();
|
||||||
|
permissions.Add(new PermissionString { PermissionName = "View", Permissions = "[" + PageState.User.UserId.ToString() + "]" });
|
||||||
|
permissions.Add(new PermissionString { PermissionName = "Edit", Permissions = "[" + PageState.User.UserId.ToString() + "]" });
|
||||||
|
module.Permissions = UserSecurity.SetPermissionStrings(permissions);
|
||||||
|
module = await ModuleService.AddModuleAsync(module);
|
||||||
|
|
||||||
|
string content = await ModuleService.ExportModuleAsync(m.ModuleId);
|
||||||
|
if (content != "")
|
||||||
|
{
|
||||||
|
await ModuleService.ImportModuleAsync(module.ModuleId, content);
|
||||||
|
}
|
||||||
|
|
||||||
|
PageModule pagemodule = new PageModule();
|
||||||
|
pagemodule.PageId = page.PageId;
|
||||||
|
pagemodule.ModuleId = module.ModuleId;
|
||||||
|
pagemodule.Title = m.Title;
|
||||||
|
pagemodule.Pane = m.Pane;
|
||||||
|
pagemodule.Order = m.Order;
|
||||||
|
pagemodule.ContainerType = m.ContainerType;
|
||||||
|
if (pagemodule.ContainerType == PageState.Site.DefaultContainerType)
|
||||||
|
{
|
||||||
|
pagemodule.ContainerType = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
await PageModuleService.AddPageModuleAsync(pagemodule);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ using Oqtane.Modules;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using Oqtane.Infrastructure;
|
using Oqtane.Infrastructure;
|
||||||
|
using Oqtane.Security;
|
||||||
|
|
||||||
namespace Oqtane.Controllers
|
namespace Oqtane.Controllers
|
||||||
{
|
{
|
||||||
|
@ -21,14 +22,16 @@ namespace Oqtane.Controllers
|
||||||
private readonly IPageModuleRepository PageModules;
|
private readonly IPageModuleRepository PageModules;
|
||||||
private readonly IModuleDefinitionRepository ModuleDefinitions;
|
private readonly IModuleDefinitionRepository ModuleDefinitions;
|
||||||
private readonly IServiceProvider ServiceProvider;
|
private readonly IServiceProvider ServiceProvider;
|
||||||
|
private readonly IUserPermissions UserPermissions;
|
||||||
private readonly ILogManager logger;
|
private readonly ILogManager logger;
|
||||||
|
|
||||||
public ModuleController(IModuleRepository Modules, IPageModuleRepository PageModules, IModuleDefinitionRepository ModuleDefinitions, IServiceProvider ServiceProvider, ILogManager logger)
|
public ModuleController(IModuleRepository Modules, IPageModuleRepository PageModules, IModuleDefinitionRepository ModuleDefinitions, IServiceProvider ServiceProvider, IUserPermissions UserPermissions, ILogManager logger)
|
||||||
{
|
{
|
||||||
this.Modules = Modules;
|
this.Modules = Modules;
|
||||||
this.PageModules = PageModules;
|
this.PageModules = PageModules;
|
||||||
this.ModuleDefinitions = ModuleDefinitions;
|
this.ModuleDefinitions = ModuleDefinitions;
|
||||||
this.ServiceProvider = ServiceProvider;
|
this.ServiceProvider = ServiceProvider;
|
||||||
|
this.UserPermissions = UserPermissions;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,10 +73,10 @@ namespace Oqtane.Controllers
|
||||||
|
|
||||||
// POST api/<controller>
|
// POST api/<controller>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[Authorize(Roles = Constants.AdminRole)]
|
[Authorize(Roles = Constants.RegisteredRole)]
|
||||||
public Models.Module Post([FromBody] Models.Module Module)
|
public Models.Module Post([FromBody] Models.Module Module)
|
||||||
{
|
{
|
||||||
if (ModelState.IsValid)
|
if (ModelState.IsValid && UserPermissions.IsAuthorized(User, "Edit", Module.Permissions))
|
||||||
{
|
{
|
||||||
Module = Modules.AddModule(Module);
|
Module = Modules.AddModule(Module);
|
||||||
logger.Log(LogLevel.Information, this, LogFunction.Create, "Module Added {Module}", Module);
|
logger.Log(LogLevel.Information, this, LogFunction.Create, "Module Added {Module}", Module);
|
||||||
|
@ -83,10 +86,10 @@ namespace Oqtane.Controllers
|
||||||
|
|
||||||
// PUT api/<controller>/5
|
// PUT api/<controller>/5
|
||||||
[HttpPut("{id}")]
|
[HttpPut("{id}")]
|
||||||
[Authorize(Roles = Constants.AdminRole)]
|
[Authorize(Roles = Constants.RegisteredRole)]
|
||||||
public Models.Module Put(int id, [FromBody] Models.Module Module)
|
public Models.Module Put(int id, [FromBody] Models.Module Module)
|
||||||
{
|
{
|
||||||
if (ModelState.IsValid)
|
if (ModelState.IsValid && UserPermissions.IsAuthorized(User, "Module", Module.ModuleId, "Edit"))
|
||||||
{
|
{
|
||||||
Module = Modules.UpdateModule(Module);
|
Module = Modules.UpdateModule(Module);
|
||||||
logger.Log(LogLevel.Information, this, LogFunction.Update, "Module Updated {Module}", Module);
|
logger.Log(LogLevel.Information, this, LogFunction.Update, "Module Updated {Module}", Module);
|
||||||
|
@ -96,69 +99,75 @@ namespace Oqtane.Controllers
|
||||||
|
|
||||||
// DELETE api/<controller>/5
|
// DELETE api/<controller>/5
|
||||||
[HttpDelete("{id}")]
|
[HttpDelete("{id}")]
|
||||||
[Authorize(Roles = Constants.AdminRole)]
|
[Authorize(Roles = Constants.RegisteredRole)]
|
||||||
public void Delete(int id)
|
public void Delete(int id)
|
||||||
{
|
{
|
||||||
Modules.DeleteModule(id);
|
if (UserPermissions.IsAuthorized(User, "Module", id, "Edit"))
|
||||||
logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Deleted {ModuleId}", id);
|
{
|
||||||
|
Modules.DeleteModule(id);
|
||||||
|
logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Deleted {ModuleId}", id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GET api/<controller>/export?moduleid=x
|
// GET api/<controller>/export?moduleid=x
|
||||||
[HttpGet("export")]
|
[HttpGet("export")]
|
||||||
[Authorize(Roles = Constants.AdminRole)]
|
[Authorize(Roles = Constants.RegisteredRole)]
|
||||||
public string Export(int moduleid)
|
public string Export(int moduleid)
|
||||||
{
|
{
|
||||||
string content = "";
|
string content = "";
|
||||||
try
|
if (UserPermissions.IsAuthorized(User, "Module", moduleid, "View"))
|
||||||
{
|
{
|
||||||
Models.Module module = Modules.GetModule(moduleid);
|
try
|
||||||
if (module != null)
|
|
||||||
{
|
{
|
||||||
List<ModuleDefinition> moduledefinitions = ModuleDefinitions.GetModuleDefinitions(module.SiteId).ToList();
|
Models.Module module = Modules.GetModule(moduleid);
|
||||||
ModuleDefinition moduledefinition = moduledefinitions.Where(item => item.ModuleDefinitionName == module.ModuleDefinitionName).FirstOrDefault();
|
if (module != null)
|
||||||
if (moduledefinition != null)
|
|
||||||
{
|
{
|
||||||
ModuleContent modulecontent = new ModuleContent();
|
List<ModuleDefinition> moduledefinitions = ModuleDefinitions.GetModuleDefinitions(module.SiteId).ToList();
|
||||||
modulecontent.ModuleDefinitionName = moduledefinition.ModuleDefinitionName;
|
ModuleDefinition moduledefinition = moduledefinitions.Where(item => item.ModuleDefinitionName == module.ModuleDefinitionName).FirstOrDefault();
|
||||||
modulecontent.Version = moduledefinition.Version;
|
if (moduledefinition != null)
|
||||||
modulecontent.Content = "";
|
|
||||||
|
|
||||||
if (moduledefinition.ServerAssemblyName != "")
|
|
||||||
{
|
{
|
||||||
Assembly assembly = AppDomain.CurrentDomain.GetAssemblies()
|
ModuleContent modulecontent = new ModuleContent();
|
||||||
.Where(item => item.FullName.StartsWith(moduledefinition.ServerAssemblyName)).FirstOrDefault();
|
modulecontent.ModuleDefinitionName = moduledefinition.ModuleDefinitionName;
|
||||||
if (assembly != null)
|
modulecontent.Version = moduledefinition.Version;
|
||||||
|
modulecontent.Content = "";
|
||||||
|
|
||||||
|
if (moduledefinition.ServerAssemblyName != "")
|
||||||
{
|
{
|
||||||
Type moduletype = assembly.GetTypes()
|
Assembly assembly = AppDomain.CurrentDomain.GetAssemblies()
|
||||||
.Where(item => item.Namespace != null)
|
.Where(item => item.FullName.StartsWith(moduledefinition.ServerAssemblyName)).FirstOrDefault();
|
||||||
.Where(item => item.Namespace.StartsWith(moduledefinition.ModuleDefinitionName.Substring(0, moduledefinition.ModuleDefinitionName.IndexOf(","))))
|
if (assembly != null)
|
||||||
.Where(item => item.GetInterfaces().Contains(typeof(IPortable))).FirstOrDefault();
|
|
||||||
if (moduletype != null)
|
|
||||||
{
|
{
|
||||||
var moduleobject = ActivatorUtilities.CreateInstance(ServiceProvider, moduletype);
|
Type moduletype = assembly.GetTypes()
|
||||||
modulecontent.Content = ((IPortable)moduleobject).ExportModule(module);
|
.Where(item => item.Namespace != null)
|
||||||
|
.Where(item => item.Namespace.StartsWith(moduledefinition.ModuleDefinitionName.Substring(0, moduledefinition.ModuleDefinitionName.IndexOf(","))))
|
||||||
|
.Where(item => item.GetInterfaces().Contains(typeof(IPortable))).FirstOrDefault();
|
||||||
|
if (moduletype != null)
|
||||||
|
{
|
||||||
|
var moduleobject = ActivatorUtilities.CreateInstance(ServiceProvider, moduletype);
|
||||||
|
modulecontent.Content = ((IPortable)moduleobject).ExportModule(module);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
content = JsonSerializer.Serialize(modulecontent);
|
||||||
|
logger.Log(LogLevel.Information, this, LogFunction.Read, "Module Content Exported {ModuleId}", moduleid);
|
||||||
}
|
}
|
||||||
content = JsonSerializer.Serialize(modulecontent);
|
|
||||||
logger.Log(LogLevel.Information, this, LogFunction.Read, "Module Content Exported {ModuleId}", moduleid);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
catch
|
||||||
catch
|
{
|
||||||
{
|
// error occurred during export
|
||||||
// error occurred during export
|
}
|
||||||
}
|
}
|
||||||
return content;
|
return content;
|
||||||
}
|
}
|
||||||
|
|
||||||
// POST api/<controller>/import?moduleid=x
|
// POST api/<controller>/import?moduleid=x
|
||||||
[HttpPost("import")]
|
[HttpPost("import")]
|
||||||
[Authorize(Roles = Constants.AdminRole)]
|
[Authorize(Roles = Constants.RegisteredRole)]
|
||||||
public bool Import(int moduleid, [FromBody] string Content)
|
public bool Import(int moduleid, [FromBody] string Content)
|
||||||
{
|
{
|
||||||
bool success = false;
|
bool success = false;
|
||||||
if (ModelState.IsValid)
|
if (ModelState.IsValid && UserPermissions.IsAuthorized(User, "Module", moduleid, "Edit"))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
|
@ -6,6 +6,7 @@ using Oqtane.Models;
|
||||||
using Oqtane.Shared;
|
using Oqtane.Shared;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Oqtane.Infrastructure;
|
using Oqtane.Infrastructure;
|
||||||
|
using Oqtane.Security;
|
||||||
|
|
||||||
namespace Oqtane.Controllers
|
namespace Oqtane.Controllers
|
||||||
{
|
{
|
||||||
|
@ -13,11 +14,13 @@ namespace Oqtane.Controllers
|
||||||
public class PageController : Controller
|
public class PageController : Controller
|
||||||
{
|
{
|
||||||
private readonly IPageRepository Pages;
|
private readonly IPageRepository Pages;
|
||||||
|
private readonly IUserPermissions UserPermissions;
|
||||||
private readonly ILogManager logger;
|
private readonly ILogManager logger;
|
||||||
|
|
||||||
public PageController(IPageRepository Pages, ILogManager logger)
|
public PageController(IPageRepository Pages, IUserPermissions UserPermissions, ILogManager logger)
|
||||||
{
|
{
|
||||||
this.Pages = Pages;
|
this.Pages = Pages;
|
||||||
|
this.UserPermissions = UserPermissions;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,19 +38,26 @@ namespace Oqtane.Controllers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GET api/<controller>/5
|
// GET api/<controller>/5?userid=x
|
||||||
[HttpGet("{id}")]
|
[HttpGet("{id}")]
|
||||||
public Page Get(int id)
|
public Page Get(int id, string userid)
|
||||||
{
|
{
|
||||||
return Pages.GetPage(id);
|
if (userid == "")
|
||||||
|
{
|
||||||
|
return Pages.GetPage(id);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Pages.GetPage(id, int.Parse(userid));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// POST api/<controller>
|
// POST api/<controller>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[Authorize(Roles = Constants.AdminRole)]
|
[Authorize(Roles = Constants.RegisteredRole)]
|
||||||
public Page Post([FromBody] Page Page)
|
public Page Post([FromBody] Page Page)
|
||||||
{
|
{
|
||||||
if (ModelState.IsValid)
|
if (ModelState.IsValid && UserPermissions.IsAuthorized(User, "Edit", Page.Permissions))
|
||||||
{
|
{
|
||||||
Page = Pages.AddPage(Page);
|
Page = Pages.AddPage(Page);
|
||||||
logger.Log(LogLevel.Information, this, LogFunction.Create, "Page Added {Page}", Page);
|
logger.Log(LogLevel.Information, this, LogFunction.Create, "Page Added {Page}", Page);
|
||||||
|
@ -57,10 +67,10 @@ namespace Oqtane.Controllers
|
||||||
|
|
||||||
// PUT api/<controller>/5
|
// PUT api/<controller>/5
|
||||||
[HttpPut("{id}")]
|
[HttpPut("{id}")]
|
||||||
[Authorize(Roles = Constants.AdminRole)]
|
[Authorize(Roles = Constants.RegisteredRole)]
|
||||||
public Page Put(int id, [FromBody] Page Page)
|
public Page Put(int id, [FromBody] Page Page)
|
||||||
{
|
{
|
||||||
if (ModelState.IsValid)
|
if (ModelState.IsValid && UserPermissions.IsAuthorized(User, "Page", Page.PageId, "Edit"))
|
||||||
{
|
{
|
||||||
Page = Pages.UpdatePage(Page);
|
Page = Pages.UpdatePage(Page);
|
||||||
logger.Log(LogLevel.Information, this, LogFunction.Update, "Page Updated {Page}", Page);
|
logger.Log(LogLevel.Information, this, LogFunction.Update, "Page Updated {Page}", Page);
|
||||||
|
@ -68,32 +78,38 @@ namespace Oqtane.Controllers
|
||||||
return Page;
|
return Page;
|
||||||
}
|
}
|
||||||
|
|
||||||
// PUT api/<controller>/?siteid=x&parentid=y
|
// PUT api/<controller>/?siteid=x&pageid=y&parentid=z
|
||||||
[HttpPut]
|
[HttpPut]
|
||||||
[Authorize(Roles = Constants.AdminRole)]
|
[Authorize(Roles = Constants.RegisteredRole)]
|
||||||
public void Put(int siteid, int? parentid)
|
public void Put(int siteid, int pageid, int? parentid)
|
||||||
{
|
{
|
||||||
int order = 1;
|
if (UserPermissions.IsAuthorized(User, "Page", pageid, "Edit"))
|
||||||
List<Page> pages = Pages.GetPages(siteid).ToList();
|
|
||||||
foreach (Page page in pages.Where(item => item.ParentId == parentid).OrderBy(item => item.Order))
|
|
||||||
{
|
{
|
||||||
if (page.Order != order)
|
int order = 1;
|
||||||
|
List<Page> pages = Pages.GetPages(siteid).ToList();
|
||||||
|
foreach (Page page in pages.Where(item => item.ParentId == parentid).OrderBy(item => item.Order))
|
||||||
{
|
{
|
||||||
page.Order = order;
|
if (page.Order != order)
|
||||||
Pages.UpdatePage(page);
|
{
|
||||||
|
page.Order = order;
|
||||||
|
Pages.UpdatePage(page);
|
||||||
|
}
|
||||||
|
order += 2;
|
||||||
}
|
}
|
||||||
order += 2;
|
logger.Log(LogLevel.Information, this, LogFunction.Update, "Page Order Updated {SiteId} {PageId} {ParentId}", siteid, pageid, parentid);
|
||||||
}
|
}
|
||||||
logger.Log(LogLevel.Information, this, LogFunction.Update, "Page Order Updated {SiteId} {ParentId}", siteid, parentid);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DELETE api/<controller>/5
|
// DELETE api/<controller>/5
|
||||||
[HttpDelete("{id}")]
|
[HttpDelete("{id}")]
|
||||||
[Authorize(Roles = Constants.AdminRole)]
|
[Authorize(Roles = Constants.RegisteredRole)]
|
||||||
public void Delete(int id)
|
public void Delete(int id)
|
||||||
{
|
{
|
||||||
Pages.DeletePage(id);
|
if (UserPermissions.IsAuthorized(User, "Page", id, "Edit"))
|
||||||
logger.Log(LogLevel.Information, this, LogFunction.Delete, "Page Deleted {PageId}", id);
|
{
|
||||||
|
Pages.DeletePage(id);
|
||||||
|
logger.Log(LogLevel.Information, this, LogFunction.Delete, "Page Deleted {PageId}", id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ using Oqtane.Models;
|
||||||
using Oqtane.Shared;
|
using Oqtane.Shared;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Oqtane.Infrastructure;
|
using Oqtane.Infrastructure;
|
||||||
|
using Oqtane.Security;
|
||||||
|
|
||||||
namespace Oqtane.Controllers
|
namespace Oqtane.Controllers
|
||||||
{
|
{
|
||||||
|
@ -13,13 +14,13 @@ namespace Oqtane.Controllers
|
||||||
public class PageModuleController : Controller
|
public class PageModuleController : Controller
|
||||||
{
|
{
|
||||||
private readonly IPageModuleRepository PageModules;
|
private readonly IPageModuleRepository PageModules;
|
||||||
private readonly IModuleRepository Modules;
|
private readonly IUserPermissions UserPermissions;
|
||||||
private readonly ILogManager logger;
|
private readonly ILogManager logger;
|
||||||
|
|
||||||
public PageModuleController(IPageModuleRepository PageModules, IModuleRepository Modules, ILogManager logger)
|
public PageModuleController(IPageModuleRepository PageModules, IUserPermissions UserPermissions, ILogManager logger)
|
||||||
{
|
{
|
||||||
this.PageModules = PageModules;
|
this.PageModules = PageModules;
|
||||||
this.Modules = Modules;
|
this.UserPermissions = UserPermissions;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,10 +47,10 @@ namespace Oqtane.Controllers
|
||||||
|
|
||||||
// POST api/<controller>
|
// POST api/<controller>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[Authorize(Roles = Constants.AdminRole)]
|
[Authorize(Roles = Constants.RegisteredRole)]
|
||||||
public PageModule Post([FromBody] PageModule PageModule)
|
public PageModule Post([FromBody] PageModule PageModule)
|
||||||
{
|
{
|
||||||
if (ModelState.IsValid)
|
if (ModelState.IsValid && UserPermissions.IsAuthorized(User, "Page", PageModule.PageId, "Edit"))
|
||||||
{
|
{
|
||||||
PageModule = PageModules.AddPageModule(PageModule);
|
PageModule = PageModules.AddPageModule(PageModule);
|
||||||
logger.Log(LogLevel.Information, this, LogFunction.Create, "Page Module Added {PageModule}", PageModule);
|
logger.Log(LogLevel.Information, this, LogFunction.Create, "Page Module Added {PageModule}", PageModule);
|
||||||
|
@ -59,10 +60,10 @@ namespace Oqtane.Controllers
|
||||||
|
|
||||||
// PUT api/<controller>/5
|
// PUT api/<controller>/5
|
||||||
[HttpPut("{id}")]
|
[HttpPut("{id}")]
|
||||||
[Authorize(Roles = Constants.AdminRole)]
|
[Authorize(Roles = Constants.RegisteredRole)]
|
||||||
public PageModule Put(int id, [FromBody] PageModule PageModule)
|
public PageModule Put(int id, [FromBody] PageModule PageModule)
|
||||||
{
|
{
|
||||||
if (ModelState.IsValid)
|
if (ModelState.IsValid && UserPermissions.IsAuthorized(User, "Page", PageModule.PageId, "Edit"))
|
||||||
{
|
{
|
||||||
PageModule = PageModules.UpdatePageModule(PageModule);
|
PageModule = PageModules.UpdatePageModule(PageModule);
|
||||||
logger.Log(LogLevel.Information, this, LogFunction.Update, "Page Module Updated {PageModule}", PageModule);
|
logger.Log(LogLevel.Information, this, LogFunction.Update, "Page Module Updated {PageModule}", PageModule);
|
||||||
|
@ -72,30 +73,37 @@ namespace Oqtane.Controllers
|
||||||
|
|
||||||
// PUT api/<controller>/?pageid=x&pane=y
|
// PUT api/<controller>/?pageid=x&pane=y
|
||||||
[HttpPut]
|
[HttpPut]
|
||||||
[Authorize(Roles = Constants.AdminRole)]
|
[Authorize(Roles = Constants.RegisteredRole)]
|
||||||
public void Put(int pageid, string pane)
|
public void Put(int pageid, string pane)
|
||||||
{
|
{
|
||||||
int order = 1;
|
if (UserPermissions.IsAuthorized(User, "Page", pageid, "Edit"))
|
||||||
List<PageModule> pagemodules = PageModules.GetPageModules(pageid).ToList();
|
|
||||||
foreach (PageModule pagemodule in pagemodules.Where(item => item.Pane == pane).OrderBy(item => item.Order))
|
|
||||||
{
|
{
|
||||||
if (pagemodule.Order != order)
|
int order = 1;
|
||||||
|
List<PageModule> pagemodules = PageModules.GetPageModules(pageid).ToList();
|
||||||
|
foreach (PageModule pagemodule in pagemodules.Where(item => item.Pane == pane).OrderBy(item => item.Order))
|
||||||
{
|
{
|
||||||
pagemodule.Order = order;
|
if (pagemodule.Order != order)
|
||||||
PageModules.UpdatePageModule(pagemodule);
|
{
|
||||||
|
pagemodule.Order = order;
|
||||||
|
PageModules.UpdatePageModule(pagemodule);
|
||||||
|
}
|
||||||
|
order += 2;
|
||||||
}
|
}
|
||||||
order += 2;
|
logger.Log(LogLevel.Information, this, LogFunction.Update, "Page Module Order Updated {PageId} {Pane}", pageid, pane);
|
||||||
}
|
}
|
||||||
logger.Log(LogLevel.Information, this, LogFunction.Update, "Page Module Order Updated {PageId} {Pane}", pageid, pane);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DELETE api/<controller>/5
|
// DELETE api/<controller>/5
|
||||||
[HttpDelete("{id}")]
|
[HttpDelete("{id}")]
|
||||||
[Authorize(Roles = Constants.AdminRole)]
|
[Authorize(Roles = Constants.RegisteredRole)]
|
||||||
public void Delete(int id)
|
public void Delete(int id)
|
||||||
{
|
{
|
||||||
PageModules.DeletePageModule(id);
|
PageModule pagemodule = PageModules.GetPageModule(id);
|
||||||
logger.Log(LogLevel.Information, this, LogFunction.Delete, "Page Module Deleted {PageModuleId}", id);
|
if (UserPermissions.IsAuthorized(User, "Page", pagemodule.PageId, "Edit"))
|
||||||
|
{
|
||||||
|
PageModules.DeletePageModule(id);
|
||||||
|
logger.Log(LogLevel.Information, this, LogFunction.Delete, "Page Module Deleted {PageModuleId}", id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ namespace Oqtane.Repository
|
||||||
Page AddPage(Page Page);
|
Page AddPage(Page Page);
|
||||||
Page UpdatePage(Page Page);
|
Page UpdatePage(Page Page);
|
||||||
Page GetPage(int PageId);
|
Page GetPage(int PageId);
|
||||||
|
Page GetPage(int PageId, int UserId);
|
||||||
void DeletePage(int PageId);
|
void DeletePage(int PageId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ namespace Oqtane.Repository
|
||||||
public IEnumerable<Page> GetPages(int SiteId)
|
public IEnumerable<Page> GetPages(int SiteId)
|
||||||
{
|
{
|
||||||
IEnumerable<Permission> permissions = Permissions.GetPermissions(SiteId, "Page").ToList();
|
IEnumerable<Permission> permissions = Permissions.GetPermissions(SiteId, "Page").ToList();
|
||||||
IEnumerable<Page> pages = db.Page.Where(item => item.SiteId == SiteId);
|
IEnumerable<Page> pages = db.Page.Where(item => item.SiteId == SiteId && item.UserId == null);
|
||||||
foreach(Page page in pages)
|
foreach(Page page in pages)
|
||||||
{
|
{
|
||||||
page.Permissions = Permissions.EncodePermissions(page.PageId, permissions);
|
page.Permissions = Permissions.EncodePermissions(page.PageId, permissions);
|
||||||
|
@ -61,6 +61,25 @@ namespace Oqtane.Repository
|
||||||
return page;
|
return page;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Page GetPage(int PageId, int UserId)
|
||||||
|
{
|
||||||
|
Page page = db.Page.Find(PageId);
|
||||||
|
if (page != null)
|
||||||
|
{
|
||||||
|
Page personalized = db.Page.Where(item => item.SiteId == page.SiteId && item.Path == page.Path && item.UserId == UserId).FirstOrDefault();
|
||||||
|
if (personalized != null)
|
||||||
|
{
|
||||||
|
page = personalized;
|
||||||
|
}
|
||||||
|
if (page != null)
|
||||||
|
{
|
||||||
|
IEnumerable<Permission> permissions = Permissions.GetPermissions("Page", page.PageId);
|
||||||
|
page.Permissions = Permissions.EncodePermissions(page.PageId, permissions);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return page;
|
||||||
|
}
|
||||||
|
|
||||||
public void DeletePage(int PageId)
|
public void DeletePage(int PageId)
|
||||||
{
|
{
|
||||||
Page Page = db.Page.Find(PageId);
|
Page Page = db.Page.Find(PageId);
|
||||||
|
|
|
@ -35,7 +35,7 @@ namespace Oqtane.Repository
|
||||||
|
|
||||||
// define the default site template
|
// define the default site template
|
||||||
SiteTemplate = new List<PageTemplate>();
|
SiteTemplate = new List<PageTemplate>();
|
||||||
SiteTemplate.Add(new PageTemplate { Name = "Home", Parent = "", Path = "", Icon = "home", IsNavigation = true, EditMode = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
SiteTemplate.Add(new PageTemplate { Name = "Home", Parent = "", Path = "", Icon = "home", IsNavigation = true, IsPersonalizable = false, EditMode = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
||||||
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.HtmlText, Oqtane.Client", Title = "Welcome To Oqtane...", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]",
|
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.HtmlText, Oqtane.Client", Title = "Welcome To Oqtane...", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]",
|
||||||
Content = "<p><a href=\"https://www.oqtane.org\" target=\"_new\">Oqtane</a> is an open source <b>modular application framework</b> built from the ground up using modern .NET Core technology. It leverages the revolutionary new Blazor component model to create a <b>fully dynamic</b> web development experience which can be executed on a client or server. Whether you are looking for a platform to <b>accelerate your web development</b> efforts, or simply interested in exploring the anatomy of a large-scale Blazor application, Oqtane provides a solid foundation based on proven enterprise architectural principles.</p>" +
|
Content = "<p><a href=\"https://www.oqtane.org\" target=\"_new\">Oqtane</a> is an open source <b>modular application framework</b> built from the ground up using modern .NET Core technology. It leverages the revolutionary new Blazor component model to create a <b>fully dynamic</b> web development experience which can be executed on a client or server. Whether you are looking for a platform to <b>accelerate your web development</b> efforts, or simply interested in exploring the anatomy of a large-scale Blazor application, Oqtane provides a solid foundation based on proven enterprise architectural principles.</p>" +
|
||||||
"<p align=\"center\"><a href=\"https://www.oqtane.org\" target=\"_new\"><img src=\"oqtane.png\"></a><br /><br /><a class=\"btn btn-primary\" href=\"https://www.oqtane.org/Community\" target=\"_new\">Join Our Community</a> <a class=\"btn btn-primary\" href=\"https://github.com/oqtane/oqtane.framework\" target=\"_new\">Clone Our Repo</a><br /><br /></p>" +
|
"<p align=\"center\"><a href=\"https://www.oqtane.org\" target=\"_new\"><img src=\"oqtane.png\"></a><br /><br /><a class=\"btn btn-primary\" href=\"https://www.oqtane.org/Community\" target=\"_new\">Join Our Community</a> <a class=\"btn btn-primary\" href=\"https://github.com/oqtane/oqtane.framework\" target=\"_new\">Clone Our Repo</a><br /><br /></p>" +
|
||||||
|
@ -50,52 +50,58 @@ namespace Oqtane.Repository
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
SiteTemplate.Add(new PageTemplate { Name = "Admin", Parent = "", Path = "admin", Icon = "", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
SiteTemplate.Add(new PageTemplate { Name = "My Page", Parent = "", Path = "portal", Icon = "target", IsNavigation = true, IsPersonalizable = true, EditMode = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
||||||
|
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.HtmlText, Oqtane.Client", Title = "My Page", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]",
|
||||||
|
Content = "<p>Oqtane offers native support for user personalized pages. If a page is identified as personalizable by the site administrator in the page settings, when an authenticated user visits the page they will see an edit button at the top right corner of the page next to their username. When they click this button the sytem will create a new version of the page and allow them to edit the page content.</p>"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
SiteTemplate.Add(new PageTemplate { Name = "Admin", Parent = "", Path = "admin", Icon = "", IsNavigation = false, IsPersonalizable = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
||||||
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Dashboard, Oqtane.Client", Title = "Admin Dashboard", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Dashboard, Oqtane.Client", Title = "Admin Dashboard", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
||||||
}});
|
}});
|
||||||
SiteTemplate.Add(new PageTemplate { Name = "Site Management", Parent = "Admin", Path = "admin/sites", Icon = "globe", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
SiteTemplate.Add(new PageTemplate { Name = "Site Management", Parent = "Admin", Path = "admin/sites", Icon = "globe", IsNavigation = false, IsPersonalizable = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
||||||
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Sites, Oqtane.Client", Title = "Site Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Sites, Oqtane.Client", Title = "Site Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
||||||
}});
|
}});
|
||||||
SiteTemplate.Add(new PageTemplate { Name = "Page Management", Parent = "Admin", Path = "admin/pages", Icon = "layers", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
SiteTemplate.Add(new PageTemplate { Name = "Page Management", Parent = "Admin", Path = "admin/pages", Icon = "layers", IsNavigation = false, IsPersonalizable = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
||||||
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Pages, Oqtane.Client", Title = "Page Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Pages, Oqtane.Client", Title = "Page Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
||||||
}});
|
}});
|
||||||
SiteTemplate.Add(new PageTemplate { Name = "User Management", Parent = "Admin", Path = "admin/users", Icon = "people", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
SiteTemplate.Add(new PageTemplate { Name = "User Management", Parent = "Admin", Path = "admin/users", Icon = "people", IsNavigation = false, IsPersonalizable = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
||||||
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Users, Oqtane.Client", Title = "User Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Users, Oqtane.Client", Title = "User Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
||||||
}});
|
}});
|
||||||
SiteTemplate.Add(new PageTemplate { Name = "Profile Management", Parent = "Admin", Path = "admin/profiles", Icon = "person", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
SiteTemplate.Add(new PageTemplate { Name = "Profile Management", Parent = "Admin", Path = "admin/profiles", Icon = "person", IsNavigation = false, IsPersonalizable = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
||||||
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Profiles, Oqtane.Client", Title = "Profile Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Profiles, Oqtane.Client", Title = "Profile Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
||||||
}});
|
}});
|
||||||
SiteTemplate.Add(new PageTemplate { Name = "Role Management", Parent = "Admin", Path = "admin/roles", Icon = "lock-locked", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
SiteTemplate.Add(new PageTemplate { Name = "Role Management", Parent = "Admin", Path = "admin/roles", Icon = "lock-locked", IsNavigation = false, IsPersonalizable = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
||||||
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Roles, Oqtane.Client", Title = "Role Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Roles, Oqtane.Client", Title = "Role Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
||||||
}});
|
}});
|
||||||
SiteTemplate.Add(new PageTemplate { Name = "Event Log", Parent = "Admin", Path = "admin/log", Icon = "magnifying-glass", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
SiteTemplate.Add(new PageTemplate { Name = "Event Log", Parent = "Admin", Path = "admin/log", Icon = "magnifying-glass", IsNavigation = false, IsPersonalizable = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
||||||
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Logs, Oqtane.Client", Title = "Event Log", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Logs, Oqtane.Client", Title = "Event Log", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
||||||
}});
|
}});
|
||||||
SiteTemplate.Add(new PageTemplate { Name = "File Management", Parent = "Admin", Path = "admin/files", Icon = "file", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
SiteTemplate.Add(new PageTemplate { Name = "File Management", Parent = "Admin", Path = "admin/files", Icon = "file", IsNavigation = false, IsPersonalizable = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
||||||
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Files, Oqtane.Client", Title = "File Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Files, Oqtane.Client", Title = "File Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
||||||
}});
|
}});
|
||||||
SiteTemplate.Add(new PageTemplate { Name = "Recycle Bin", Parent = "Admin", Path = "admin/recyclebin", Icon = "trash", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
SiteTemplate.Add(new PageTemplate { Name = "Recycle Bin", Parent = "Admin", Path = "admin/recyclebin", Icon = "trash", IsNavigation = false, IsPersonalizable = 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 = "Recycle Bin", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.RecycleBin, Oqtane.Client", Title = "Recycle Bin", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
||||||
}});
|
}});
|
||||||
SiteTemplate.Add(new PageTemplate { Name = "Tenant Management", Parent = "Admin", Path = "admin/tenants", Icon = "list", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
SiteTemplate.Add(new PageTemplate { Name = "Tenant Management", Parent = "Admin", Path = "admin/tenants", Icon = "list", IsNavigation = false, IsPersonalizable = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
||||||
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Tenants, Oqtane.Client", Title = "Tenant Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Tenants, Oqtane.Client", Title = "Tenant Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
||||||
}});
|
}});
|
||||||
SiteTemplate.Add(new PageTemplate { Name = "Module Management", Parent = "Admin", Path = "admin/modules", Icon = "browser", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
SiteTemplate.Add(new PageTemplate { Name = "Module Management", Parent = "Admin", Path = "admin/modules", Icon = "browser", IsNavigation = false, IsPersonalizable = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
||||||
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.ModuleDefinitions, Oqtane.Client", Title = "Module Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.ModuleDefinitions, Oqtane.Client", Title = "Module Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
||||||
}});
|
}});
|
||||||
SiteTemplate.Add(new PageTemplate { Name = "Theme Management", Parent = "Admin", Path = "admin/themes", Icon = "brush", IsNavigation = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
SiteTemplate.Add(new PageTemplate { Name = "Theme Management", Parent = "Admin", Path = "admin/themes", Icon = "brush", IsNavigation = false, IsPersonalizable = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
||||||
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Themes, Oqtane.Client", Title = "Theme Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Themes, Oqtane.Client", Title = "Theme Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
||||||
}});
|
}});
|
||||||
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> {
|
SiteTemplate.Add(new PageTemplate { Name = "Upgrade Service", Parent = "Admin", Path = "admin/upgrade", Icon = "aperture", IsNavigation = false, IsPersonalizable = 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 = "" }
|
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 = "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> {
|
SiteTemplate.Add(new PageTemplate { Name = "Login", Parent = "", Path = "login", Icon = "lock-locked", IsNavigation = false, IsPersonalizable = 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 = "" }
|
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 = "" }
|
||||||
}});
|
}});
|
||||||
SiteTemplate.Add(new PageTemplate { Name = "Register", Parent = "", Path = "register", Icon = "person", IsNavigation = false, EditMode = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
SiteTemplate.Add(new PageTemplate { Name = "Register", Parent = "", Path = "register", Icon = "person", IsNavigation = false, IsPersonalizable = false, EditMode = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
||||||
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Register, Oqtane.Client", Title = "User Registration", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Register, Oqtane.Client", Title = "User Registration", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
||||||
}});
|
}});
|
||||||
SiteTemplate.Add(new PageTemplate { Name = "Profile", Parent = "", Path = "profile", Icon = "person", IsNavigation = false, EditMode = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
SiteTemplate.Add(new PageTemplate { Name = "Profile", Parent = "", Path = "profile", Icon = "person", IsNavigation = false, IsPersonalizable = false, EditMode = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
|
||||||
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.UserProfile, Oqtane.Client", Title = "User Profile", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.UserProfile, Oqtane.Client", Title = "User Profile", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
|
||||||
}});
|
}});
|
||||||
}
|
}
|
||||||
|
@ -179,7 +185,9 @@ namespace Oqtane.Repository
|
||||||
ThemeType = "",
|
ThemeType = "",
|
||||||
LayoutType = "",
|
LayoutType = "",
|
||||||
Icon = pagetemplate.Icon,
|
Icon = pagetemplate.Icon,
|
||||||
Permissions = pagetemplate.PagePermissions
|
Permissions = pagetemplate.PagePermissions,
|
||||||
|
IsPersonalizable = pagetemplate.IsPersonalizable,
|
||||||
|
UserId = null
|
||||||
};
|
};
|
||||||
page = PageRepository.AddPage(page);
|
page = PageRepository.AddPage(page);
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,8 @@ CREATE TABLE [dbo].[Page](
|
||||||
[IsNavigation] [bit] NOT NULL,
|
[IsNavigation] [bit] NOT NULL,
|
||||||
[LayoutType] [nvarchar](200) NOT NULL,
|
[LayoutType] [nvarchar](200) NOT NULL,
|
||||||
[EditMode] [bit] NOT NULL,
|
[EditMode] [bit] NOT NULL,
|
||||||
|
[UserId] [int] NULL,
|
||||||
|
[IsPersonalizable] [bit] NOT NULL,
|
||||||
[CreatedBy] [nvarchar](256) NOT NULL,
|
[CreatedBy] [nvarchar](256) NOT NULL,
|
||||||
[CreatedOn] [datetime] NOT NULL,
|
[CreatedOn] [datetime] NOT NULL,
|
||||||
[ModifiedBy] [nvarchar](256) NOT NULL,
|
[ModifiedBy] [nvarchar](256) NOT NULL,
|
||||||
|
@ -346,7 +348,8 @@ GO
|
||||||
CREATE UNIQUE NONCLUSTERED INDEX IX_Page ON dbo.Page
|
CREATE UNIQUE NONCLUSTERED INDEX IX_Page ON dbo.Page
|
||||||
(
|
(
|
||||||
SiteId,
|
SiteId,
|
||||||
[Path]
|
[Path],
|
||||||
|
UserId
|
||||||
) ON [PRIMARY]
|
) ON [PRIMARY]
|
||||||
GO
|
GO
|
||||||
|
|
||||||
|
|
|
@ -5,5 +5,6 @@ namespace Oqtane.Security
|
||||||
public interface IUserPermissions
|
public interface IUserPermissions
|
||||||
{
|
{
|
||||||
bool IsAuthorized(ClaimsPrincipal User, string EntityName, int EntityId, string PermissionName);
|
bool IsAuthorized(ClaimsPrincipal User, string EntityName, int EntityId, string PermissionName);
|
||||||
|
bool IsAuthorized(ClaimsPrincipal User, string PermissionName, string Permissions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,8 +16,11 @@ namespace Oqtane.Security
|
||||||
|
|
||||||
public bool IsAuthorized(ClaimsPrincipal User, string EntityName, int EntityId, string PermissionName)
|
public bool IsAuthorized(ClaimsPrincipal User, string EntityName, int EntityId, string PermissionName)
|
||||||
{
|
{
|
||||||
string permissionstrings = Permissions.EncodePermissions(EntityId, Permissions.GetPermissions(EntityName, EntityId, PermissionName).ToList());
|
return IsAuthorized(User, PermissionName, Permissions.EncodePermissions(EntityId, Permissions.GetPermissions(EntityName, EntityId, PermissionName).ToList()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsAuthorized(ClaimsPrincipal User, string PermissionName, string Permissions)
|
||||||
|
{
|
||||||
User user = new User();
|
User user = new User();
|
||||||
user.UserId = -1;
|
user.UserId = -1;
|
||||||
user.Roles = "";
|
user.Roles = "";
|
||||||
|
@ -36,7 +39,7 @@ namespace Oqtane.Security
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return UserSecurity.IsAuthorized(user, PermissionName, permissionstrings);
|
return UserSecurity.IsAuthorized(user, PermissionName, Permissions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,8 @@ namespace Oqtane.Models
|
||||||
public string Icon { get; set; }
|
public string Icon { get; set; }
|
||||||
public bool IsNavigation { get; set; }
|
public bool IsNavigation { get; set; }
|
||||||
public bool EditMode { get; set; }
|
public bool EditMode { get; set; }
|
||||||
|
public int? UserId { get; set; }
|
||||||
|
public bool IsPersonalizable { get; set; }
|
||||||
|
|
||||||
public string CreatedBy { get; set; }
|
public string CreatedBy { get; set; }
|
||||||
public DateTime CreatedOn { get; set; }
|
public DateTime CreatedOn { get; set; }
|
||||||
|
|
|
@ -9,6 +9,7 @@ namespace Oqtane.Models
|
||||||
public string Path { get; set; }
|
public string Path { get; set; }
|
||||||
public string Icon { get; set; }
|
public string Icon { get; set; }
|
||||||
public bool IsNavigation { get; set; }
|
public bool IsNavigation { get; set; }
|
||||||
|
public bool IsPersonalizable { get; set; }
|
||||||
public bool EditMode { get; set; }
|
public bool EditMode { get; set; }
|
||||||
public string PagePermissions { get; set; }
|
public string PagePermissions { get; set; }
|
||||||
public List<PageTemplateModule> PageTemplateModules { get; set; }
|
public List<PageTemplateModule> PageTemplateModules { get; set; }
|
||||||
|
|
Loading…
Reference in New Issue
Block a user