diff --git a/Oqtane.Client/Themes/Controls/ControlPanel.razor b/Oqtane.Client/Themes/Controls/ControlPanel.razor
index 4b6947cf..59541741 100644
--- a/Oqtane.Client/Themes/Controls/ControlPanel.razor
+++ b/Oqtane.Client/Themes/Controls/ControlPanel.razor
@@ -4,6 +4,7 @@
@using Oqtane.Themes
@using Oqtane.Shared
@using Oqtane.Security
+@namespace Oqtane.Themes.Controls
@inherits ThemeObjectBase
@inject IUriHelper UriHelper
@inject IUserService UserService
@@ -133,9 +134,10 @@
}
pagemodule.Title = title;
pagemodule.Pane = pane;
- pagemodule.Order = 0;
+ pagemodule.Order = int.MaxValue;
pagemodule.ContainerType = containertype;
await PageModuleService.AddPageModuleAsync(pagemodule);
+ await PageModuleService.UpdatePageModuleOrderAsync(pagemodule.PageId, pagemodule.Pane);
PageState.Reload = Constants.ReloadPage;
UriHelper.NavigateTo(NavigateUrl());
diff --git a/Oqtane.Client/Themes/Controls/Login.razor b/Oqtane.Client/Themes/Controls/Login.razor
index faba904d..93c59bb1 100644
--- a/Oqtane.Client/Themes/Controls/Login.razor
+++ b/Oqtane.Client/Themes/Controls/Login.razor
@@ -3,6 +3,7 @@
@using Oqtane.Providers
@using Oqtane.Shared
@using Microsoft.JSInterop
+@namespace Oqtane.Themes.Controls
@inherits ThemeObjectBase
@inject IUriHelper UriHelper
@inject IUserService UserService
diff --git a/Oqtane.Client/Themes/Controls/Logo.razor b/Oqtane.Client/Themes/Controls/Logo.razor
index 83459a32..ef4bee38 100644
--- a/Oqtane.Client/Themes/Controls/Logo.razor
+++ b/Oqtane.Client/Themes/Controls/Logo.razor
@@ -1,4 +1,5 @@
@using Oqtane.Themes
+@namespace Oqtane.Themes.Controls
@inherits ThemeObjectBase
@((MarkupString)logo)
diff --git a/Oqtane.Client/Themes/Controls/Menu.razor b/Oqtane.Client/Themes/Controls/Menu.razor
index 21bdc6b6..d9528094 100644
--- a/Oqtane.Client/Themes/Controls/Menu.razor
+++ b/Oqtane.Client/Themes/Controls/Menu.razor
@@ -3,6 +3,7 @@
@using Oqtane.Services
@using Oqtane.Models;
@using Oqtane.Security
+@namespace Oqtane.Themes.Controls
@inherits ThemeObjectBase
@inject IPageService PageService
@inject IUserService UserService
@@ -23,7 +24,7 @@
{
string url = NavigateUrl(p.Path);
-
+
@p.Name
@@ -41,7 +42,7 @@
if (PageState.Pages.Where(item => item.ParentId == PageState.Page.PageId).FirstOrDefault() == null)
{
// display list of pages which have same parent as current page
- pages = PageState.Pages.Where(item => item.ParentId == PageState.Page.ParentId).ToList();
+ pages = PageState.Pages.Where(item => item.ParentId == PageState.Page.ParentId).OrderBy(item => item.Order).ToList();
// if current page has parent
if (PageState.Page.ParentId != null)
{
@@ -51,7 +52,7 @@
else
{
// display list of pages which are children of current page
- pages = PageState.Pages.Where(item => item.ParentId == PageState.Page.PageId).ToList();
+ pages = PageState.Pages.Where(item => item.ParentId == PageState.Page.PageId).OrderBy(item => item.Order).ToList();
// current page is parent
parent = PageState.Pages.Where(item => item.ParentId == PageState.Page.ParentId).FirstOrDefault();
}
diff --git a/Oqtane.Client/Themes/Controls/Menu2.razor b/Oqtane.Client/Themes/Controls/Menu2.razor
new file mode 100644
index 00000000..111bdd22
--- /dev/null
+++ b/Oqtane.Client/Themes/Controls/Menu2.razor
@@ -0,0 +1,68 @@
+@using Microsoft.AspNetCore.Components.Routing
+@using Oqtane.Themes
+@using Oqtane.Services
+@using Oqtane.Models;
+@using Oqtane.Security
+@namespace Oqtane.Themes.Controls
+@inherits ThemeObjectBase
+@inject IUserService UserService
+
+@if (menu != "")
+{
+ @((MarkupString)menu)
+}
+
+@code {
+ string menu = "";
+
+ protected override void OnInitialized()
+ {
+ int level = -1;
+ int securitylevel = int.MaxValue;
+
+ menu = "
\n";
+ foreach (Page p in PageState.Pages.Where(item => item.IsNavigation))
+ {
+ for (int l = p.Level; l < level; l++)
+ {
+ menu += "
\n";
+ menu += "
\n";
+ }
+ if (UserSecurity.IsAuthorized(PageState.User, "View", p.Permissions) && p.Level <= securitylevel)
+ {
+ securitylevel = int.MaxValue;
+ if (p.HasChildren)
+ {
+ menu += "