scalability improvements
This commit is contained in:
@ -46,6 +46,14 @@ namespace Oqtane.Services
|
||||
/// <returns></returns>
|
||||
Task DeleteSiteAsync(int siteId);
|
||||
|
||||
/// <summary>
|
||||
/// Returns a list of modules
|
||||
/// </summary>
|
||||
/// <param name="siteId"></param>
|
||||
/// <param name="pageId"></param>
|
||||
/// <returns></returns>
|
||||
Task<List<Module>> GetModulesAsync(int siteId, int pageId);
|
||||
|
||||
[PrivateApi]
|
||||
[Obsolete("This method is deprecated.", false)]
|
||||
void SetAlias(Alias alias);
|
||||
|
@ -41,6 +41,11 @@ namespace Oqtane.Services
|
||||
await DeleteAsync($"{Apiurl}/{siteId}");
|
||||
}
|
||||
|
||||
public async Task<List<Module>> GetModulesAsync(int siteId, int pageId)
|
||||
{
|
||||
return await GetJsonAsync<List<Module>>($"{Apiurl}/modules/{siteId}/{pageId}");
|
||||
}
|
||||
|
||||
[Obsolete("This method is deprecated.", false)]
|
||||
public void SetAlias(Alias alias)
|
||||
{
|
||||
|
@ -482,27 +482,19 @@
|
||||
|
||||
private void Navigate(string location)
|
||||
{
|
||||
Module module;
|
||||
int moduleId;
|
||||
switch (location)
|
||||
{
|
||||
case "Admin":
|
||||
// get admin dashboard moduleid
|
||||
module = PageState.Modules.FirstOrDefault(item => item.ModuleDefinitionName == Constants.AdminDashboardModule);
|
||||
if (module != null)
|
||||
{
|
||||
NavigationManager.NavigateTo(Utilities.EditUrl(PageState.Alias.Path, "admin", module.ModuleId, "Index", "returnurl=" + WebUtility.UrlEncode(PageState.Route.PathAndQuery)));
|
||||
}
|
||||
moduleId = int.Parse(PageState.Site.Settings[Constants.AdminDashboardModule]);
|
||||
NavigationManager.NavigateTo(Utilities.EditUrl(PageState.Alias.Path, "admin", moduleId, "Index", "returnurl=" + WebUtility.UrlEncode(PageState.Route.PathAndQuery)));
|
||||
break;
|
||||
case "Add":
|
||||
case "Edit":
|
||||
string url = "";
|
||||
// get page management moduleid
|
||||
module = PageState.Modules.FirstOrDefault(item => item.ModuleDefinitionName == Constants.PageManagementModule);
|
||||
if (module != null)
|
||||
{
|
||||
url = Utilities.EditUrl(PageState.Alias.Path, "admin/pages", module.ModuleId, location, $"id={PageState.Page.PageId}&returnurl={WebUtility.UrlEncode(PageState.Route.PathAndQuery)}");
|
||||
NavigationManager.NavigateTo(url);
|
||||
}
|
||||
moduleId = int.Parse(PageState.Site.Settings[Constants.PageManagementModule]);
|
||||
NavigationManager.NavigateTo(Utilities.EditUrl(PageState.Alias.Path, "admin/pages", moduleId, location, $"id={PageState.Page.PageId}&returnurl={WebUtility.UrlEncode(PageState.Route.PathAndQuery)}"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ namespace Oqtane.UI
|
||||
public Alias Alias { get; set; }
|
||||
public Site Site { get; set; }
|
||||
public Page Page { get; set; }
|
||||
public List<Module> Modules { get; set; }
|
||||
public User User { get; set; }
|
||||
public Uri Uri { get; set; }
|
||||
public Route Route { get; set; }
|
||||
@ -31,10 +32,6 @@ namespace Oqtane.UI
|
||||
{
|
||||
get { return Site.Pages; }
|
||||
}
|
||||
public List<Module> Modules
|
||||
{
|
||||
get { return Site.Modules; }
|
||||
}
|
||||
public List<Language> Languages
|
||||
{
|
||||
get { return Site.Languages; }
|
||||
|
@ -96,6 +96,7 @@
|
||||
{
|
||||
Site site = null;
|
||||
Page page = null;
|
||||
List<Module> modules = null;
|
||||
User user = null;
|
||||
var editmode = false;
|
||||
var refresh = false;
|
||||
@ -273,11 +274,21 @@
|
||||
}
|
||||
}
|
||||
|
||||
// get modules for current page
|
||||
if (PageState.Modules == null || PageState.Modules.First().PageId != page.PageId)
|
||||
{
|
||||
modules = await SiteService.GetModulesAsync(site.SiteId, page.PageId);
|
||||
}
|
||||
else
|
||||
{
|
||||
modules = PageState.Modules;
|
||||
}
|
||||
|
||||
// load additional metadata for current page
|
||||
page = ProcessPage(page, site, user, SiteState.Alias);
|
||||
|
||||
// load additional metadata for modules
|
||||
(page, site.Modules) = ProcessModules(page, site.Modules, moduleid, action, (!string.IsNullOrEmpty(page.DefaultContainerType)) ? page.DefaultContainerType : site.DefaultContainerType, SiteState.Alias);
|
||||
(page, modules) = ProcessModules(page, modules, moduleid, action, (!string.IsNullOrEmpty(page.DefaultContainerType)) ? page.DefaultContainerType : site.DefaultContainerType, SiteState.Alias);
|
||||
|
||||
// populate page state (which acts as a client-side cache for subsequent requests)
|
||||
_pagestate = new PageState
|
||||
@ -285,6 +296,7 @@
|
||||
Alias = SiteState.Alias,
|
||||
Site = site,
|
||||
Page = page,
|
||||
Modules = modules,
|
||||
User = user,
|
||||
Uri = new Uri(_absoluteUri, UriKind.Absolute),
|
||||
Route = route,
|
||||
|
Reference in New Issue
Block a user