Performance improvements, refactoring of multi-tenant support, split Alias and Tenant entities for cleaner separation of concerns, create an additional site during installation for demonstratng multitenancy

This commit is contained in:
Shaun Walker
2019-05-24 13:33:19 -04:00
parent 0067521cd5
commit 8deb119f36
57 changed files with 880 additions and 309 deletions

View File

@ -74,7 +74,7 @@
string display = "display: none";
List<ModuleDefinition> moduledefinitions;
Dictionary<string, string> containers = new Dictionary<string, string>();
int pagemanagementmoduleid;
int pagemanagementmoduleid = -1;
string moduledefinitionname;
string pane;
string title = "";
@ -82,11 +82,13 @@
protected override async Task OnInitAsync()
{
//TODO: Move this to shared component. This is used in this control Add, Edit, and Delete controls as well
moduledefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync();
containers = ThemeService.GetContainerTypes(await ThemeService.GetThemesAsync());
moduledefinitions = PageState.ModuleDefinitions;
containers = ThemeService.GetContainerTypes(PageState.Themes);
List<Module> modules = await ModuleService.GetModulesAsync(PageState.Site.SiteId, Constants.PageManagementModule);
pagemanagementmoduleid = modules.FirstOrDefault().ModuleId;
if (modules.Count > 0)
{
pagemanagementmoduleid = modules.FirstOrDefault().ModuleId;
}
if (UserService.IsAuthorized(PageState.User, PageState.Page.EditPermissions))
{
display = "display: inline";
@ -117,23 +119,26 @@
pagemodule.Order = 0;
pagemodule.ContainerType = containertype;
await PageModuleService.AddPageModuleAsync(pagemodule);
UriHelper.NavigateTo(PageState.Alias + PageState.Page.Path + "?reload=true");
UriHelper.NavigateTo(NavigateUrl(true));
}
private string PageUrl(string action)
{
string url = "";
switch (action)
if (pagemanagementmoduleid != -1)
{
case "Add":
url = "admin/pages?mid=" + pagemanagementmoduleid.ToString() + "&ctl=" + action;
break;
case "Edit":
url = "admin/pages?mid=" + pagemanagementmoduleid.ToString() + "&ctl=" + action + "&id=" + PageState.Page.PageId.ToString();
break;
case "Delete":
url = "admin/pages?mid=" + pagemanagementmoduleid.ToString() + "&ctl=" + action + "&id=" + PageState.Page.PageId.ToString();
break;
switch (action)
{
case "Add":
url = "admin/pages?mid=" + pagemanagementmoduleid.ToString() + "&ctl=" + action;
break;
case "Edit":
url = "admin/pages?mid=" + pagemanagementmoduleid.ToString() + "&ctl=" + action + "&id=" + PageState.Page.PageId.ToString();
break;
case "Delete":
url = "admin/pages?mid=" + pagemanagementmoduleid.ToString() + "&ctl=" + action + "&id=" + PageState.Page.PageId.ToString();
break;
}
}
return url;
}

View File

@ -29,13 +29,13 @@
{
if (name == "Login")
{
UriHelper.NavigateTo(PageState.Alias + "login");
UriHelper.NavigateTo(NavigateUrl("login"));
}
else
{
var interop = new Interop(jsRuntime);
await interop.SetCookie("user", "", 7);
UriHelper.NavigateTo(PageState.Alias, true);
UriHelper.NavigateTo(NavigateUrl(""), true);
}
}
}

View File

@ -1,5 +1,5 @@
@using Oqtane.Themes
@inherits ThemeObjectBase
<a href="@PageState.Uri.Scheme://@PageState.Uri.Authority"><img src="/Sites/@PageState.Site.SiteId/@PageState.Site.Logo" /></a>
<a href="@PageState.Alias.Url"><img src="/Sites/@PageState.Site.SiteId/@PageState.Site.Logo" /></a>

View File

@ -9,7 +9,7 @@
<ul class="nav flex-column">
@if (parent != null)
{
string url = PageState.Alias + parent.Path;
string url = NavigateUrl();
<li class="nav-item px-3">
<NavLink class="nav-link" href="@parent.Path" Match="NavLinkMatch.All">
<span class="oi oi-media-skip-backward" aria-hidden="true"></span> Back
@ -20,7 +20,7 @@
{
if (p.IsNavigation && UserService.IsAuthorized(PageState.User, p.ViewPermissions))
{
string url = PageState.Alias + p.Path;
string url = NavigateUrl(p.Path);
<li class="nav-item px-3">
<NavLink class="nav-link" href="@url" Match="NavLinkMatch.All">
<span class="oi @p.Icon" aria-hidden="true"></span> @p.Name

View File

@ -1,44 +0,0 @@
@using Oqtane.Themes
@using Oqtane.Shared;
@using Microsoft.JSInterop
@inject IJSRuntime jsRuntime
@inherits ThemeObjectBase
<button type="button" class="btn btn-primary" onclick="@SetMode">
@displayMode
</button>
@functions {
string displayMode = "";
protected override async Task OnInitAsync()
{
var interop = new Interop(jsRuntime);
string value = await interop.GetCookie("blazor");
if (value == "client")
{
displayMode = "Server Mode";
}
else
{
displayMode = "Client Mode";
}
}
public async void SetMode()
{
var interop = new Interop(jsRuntime);
string mode = await interop.GetCookie("blazor");
if (mode == "client")
{
mode = "server";
}
else
{
mode = "client";
}
await interop.SetCookie("blazor", mode, 7);
}
}

View File

@ -81,7 +81,7 @@
await PageModuleService.UpdatePageModuleAsync(pagemodule);
break;
}
UriHelper.NavigateTo(PageState.Alias + path);
UriHelper.NavigateTo(NavigateUrl(path));
}
public class ActionViewModel