diff --git a/Oqtane.Client/Modules/Admin/Profile/Index.razor b/Oqtane.Client/Modules/Admin/Profile/Index.razor index 32cebad4..cf68fdf6 100644 --- a/Oqtane.Client/Modules/Admin/Profile/Index.razor +++ b/Oqtane.Client/Modules/Admin/Profile/Index.razor @@ -11,7 +11,7 @@ -@if (profiles != null) +@if (PageState.User != null && profiles != null) { @@ -55,6 +55,7 @@
+

} @code { @@ -71,10 +72,17 @@ { try { - displayname = PageState.User.DisplayName; - email = PageState.User.Email; - profiles = await ProfileService.GetProfilesAsync(ModuleState.SiteId); - settings = await SettingService.GetUserSettingsAsync(PageState.User.UserId); + if (PageState.User != null) + { + displayname = PageState.User.DisplayName; + email = PageState.User.Email; + profiles = await ProfileService.GetProfilesAsync(ModuleState.SiteId); + settings = await SettingService.GetUserSettingsAsync(PageState.User.UserId); + } + else + { + message = "Current User Is Not Logged In"; + } } catch (Exception ex) { @@ -89,23 +97,30 @@ private async Task SaveUser() { - User user = PageState.User; - user.DisplayName = displayname; - user.Email = email; - await UserService.UpdateUserAsync(user); - - foreach (Profile profile in profiles) + try { - string value = SettingService.GetSetting(settings, profile.Name, ""); - await SettingService.UpdateUserSettingsAsync(settings, PageState.User.UserId, profile.Name, value); - } + User user = PageState.User; + user.DisplayName = displayname; + user.Email = email; + await UserService.UpdateUserAsync(user); - UriHelper.NavigateTo(""); + foreach (Profile profile in profiles) + { + string value = SettingService.GetSetting(settings, profile.Name, ""); + await SettingService.UpdateUserSettingsAsync(settings, PageState.User.UserId, profile.Name, value); + } + + UriHelper.NavigateTo(""); + } + catch (Exception ex) + { + message = ex.Message; + } } private void Cancel() { - UriHelper.NavigateTo(NavigateUrl("")); // navigate to home + UriHelper.NavigateTo(NavigateUrl("")); } private void ProfileChanged(UIChangeEventArgs e, string SettingName) diff --git a/Oqtane.Client/Modules/Controls/ActionLink.razor b/Oqtane.Client/Modules/Controls/ActionLink.razor index d894894b..264a02bd 100644 --- a/Oqtane.Client/Modules/Controls/ActionLink.razor +++ b/Oqtane.Client/Modules/Controls/ActionLink.razor @@ -34,7 +34,7 @@ string style = ""; bool authorized = false; - protected override void OnInitialized() + protected override void OnParametersSet() { text = Action; if (!String.IsNullOrEmpty(Text)) @@ -49,39 +49,42 @@ if (!string.IsNullOrEmpty(Class)) { - classname = Class; + classname = Class; } if (!string.IsNullOrEmpty(Style)) { - style = Style; + style = Style; } url = EditUrl(Action, parameters); - string typename = ModuleState.ModuleType.Replace(Utilities.GetTypeNameClass(ModuleState.ModuleType) + ",", Action + ","); - Type moduleType = Type.GetType(typename); - if (moduleType != null) + if (PageState.EditMode) { - var moduleobject = Activator.CreateInstance(moduleType); - SecurityAccessLevel SecurityAccessLevel = (SecurityAccessLevel)moduleType.GetProperty("SecurityAccessLevel").GetValue(moduleobject, null); - switch (SecurityAccessLevel) + string typename = ModuleState.ModuleType.Replace(Utilities.GetTypeNameClass(ModuleState.ModuleType) + ",", Action + ","); + Type moduleType = Type.GetType(typename); + if (moduleType != null) { - case SecurityAccessLevel.Anonymous: - authorized = true; - break; - case SecurityAccessLevel.View: - authorized = UserSecurity.IsAuthorized(PageState.User, "View", ModuleState.Permissions); - break; - case SecurityAccessLevel.Edit: - authorized = UserSecurity.IsAuthorized(PageState.User, "Edit", ModuleState.Permissions); - break; - case SecurityAccessLevel.Admin: - authorized = UserSecurity.IsAuthorized(PageState.User, Constants.AdminRole); - break; - case SecurityAccessLevel.Host: - authorized = UserSecurity.IsAuthorized(PageState.User, Constants.HostRole); - break; + var moduleobject = Activator.CreateInstance(moduleType); + SecurityAccessLevel SecurityAccessLevel = (SecurityAccessLevel)moduleType.GetProperty("SecurityAccessLevel").GetValue(moduleobject, null); + switch (SecurityAccessLevel) + { + case SecurityAccessLevel.Anonymous: + authorized = true; + break; + case SecurityAccessLevel.View: + authorized = UserSecurity.IsAuthorized(PageState.User, "View", ModuleState.Permissions); + break; + case SecurityAccessLevel.Edit: + authorized = UserSecurity.IsAuthorized(PageState.User, "Edit", ModuleState.Permissions); + break; + case SecurityAccessLevel.Admin: + authorized = UserSecurity.IsAuthorized(PageState.User, Constants.AdminRole); + break; + case SecurityAccessLevel.Host: + authorized = UserSecurity.IsAuthorized(PageState.User, Constants.HostRole); + break; + } } } } diff --git a/Oqtane.Client/Shared/Container.razor b/Oqtane.Client/Shared/Container.razor index 92aa6e62..6a1233bb 100644 --- a/Oqtane.Client/Shared/Container.razor +++ b/Oqtane.Client/Shared/Container.razor @@ -18,7 +18,7 @@ RenderFragment DynamicComponent { get; set; } - protected override void OnInitialized() + protected override void OnParametersSet() { DynamicComponent = builder => { diff --git a/Oqtane.Client/Shared/ModuleInstance.razor b/Oqtane.Client/Shared/ModuleInstance.razor index 8eb83f48..d1f8ef2e 100644 --- a/Oqtane.Client/Shared/ModuleInstance.razor +++ b/Oqtane.Client/Shared/ModuleInstance.razor @@ -13,7 +13,7 @@ RenderFragment DynamicComponent { get; set; } - protected override void OnInitialized() + protected override void OnParametersSet() { DynamicComponent = builder => { diff --git a/Oqtane.Client/Shared/PageState.cs b/Oqtane.Client/Shared/PageState.cs index 1de78738..8e70bd82 100644 --- a/Oqtane.Client/Shared/PageState.cs +++ b/Oqtane.Client/Shared/PageState.cs @@ -19,6 +19,7 @@ namespace Oqtane.Shared public Dictionary QueryString { get; set; } public int ModuleId { get; set; } public string Control { get; set; } + public bool EditMode { get; set; } public int Reload { get; set; } } } diff --git a/Oqtane.Client/Shared/Pane.razor b/Oqtane.Client/Shared/Pane.razor index 93b27c41..bf40cd24 100644 --- a/Oqtane.Client/Shared/Pane.razor +++ b/Oqtane.Client/Shared/Pane.razor @@ -26,9 +26,9 @@ string paneadminborder = ""; string panetitle = ""; - protected override void OnInitialized() + protected override void OnParametersSet() { - if (UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions) && Name != Constants.AdminPane) + if (PageState.EditMode && UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions) && Name != Constants.AdminPane) { paneadminborder = "pane-admin-border"; panetitle = "
" + Name + " Pane
"; diff --git a/Oqtane.Client/Shared/PaneLayout.razor b/Oqtane.Client/Shared/PaneLayout.razor index 9fe4f572..268d9ecc 100644 --- a/Oqtane.Client/Shared/PaneLayout.razor +++ b/Oqtane.Client/Shared/PaneLayout.razor @@ -9,7 +9,7 @@ RenderFragment DynamicComponent { get; set; } - protected override void OnInitialized() + protected override void OnParametersSet() { DynamicComponent = builder => { diff --git a/Oqtane.Client/Shared/SiteRouter.razor b/Oqtane.Client/Shared/SiteRouter.razor index b57a545e..fad531c3 100644 --- a/Oqtane.Client/Shared/SiteRouter.razor +++ b/Oqtane.Client/Shared/SiteRouter.razor @@ -86,11 +86,13 @@ List modules; int moduleid = -1; string control = ""; + bool editmode = false; int reload = 0; if (PageState != null) { reload = PageState.Reload; + editmode = PageState.EditMode; } if (PageState == null || reload == Constants.ReloadApplication) @@ -188,6 +190,7 @@ { page = pages.Where(item => item.Path == path).FirstOrDefault(); reload = Constants.ReloadPage; + editmode = false; } user = null; @@ -238,6 +241,7 @@ modules = PageState.Modules; } pagestate.Modules = modules; + pagestate.EditMode = editmode; pagestate.Reload = 0; OnStateChange?.Invoke(pagestate); diff --git a/Oqtane.Client/Shared/Theme.razor b/Oqtane.Client/Shared/Theme.razor index ad9abdc9..fd29a0df 100644 --- a/Oqtane.Client/Shared/Theme.razor +++ b/Oqtane.Client/Shared/Theme.razor @@ -8,7 +8,7 @@ RenderFragment DynamicComponent { get; set; } - protected override void OnInitialized() + protected override void OnParametersSet() { DynamicComponent = builder => { diff --git a/Oqtane.Client/Themes/Controls/ControlPanel.razor b/Oqtane.Client/Themes/Controls/ControlPanel.razor index 9eb030bf..3372fb8f 100644 --- a/Oqtane.Client/Themes/Controls/ControlPanel.razor +++ b/Oqtane.Client/Themes/Controls/ControlPanel.razor @@ -12,67 +12,83 @@ @inject IModuleService ModuleService @inject IPageModuleService PageModuleService -
- x -
- -
-
-
- - @if (moduledefinitions != null) - { - + + @foreach (var moduledefinition in moduledefinitions) + { + + } + + } +
+
+ + - } +
+
+ + +
+
+ + +
+
-
- - -
-
- - -
-
- - -
-
- - + + @if (PageState.EditMode) + { + + + } + else + { + + } + +} @code { - string display = "display: none"; List moduledefinitions; Dictionary containers = new Dictionary(); int pagemanagementmoduleid = -1; @@ -83,45 +99,47 @@ protected override async Task OnInitializedAsync() { - moduledefinitions = PageState.ModuleDefinitions; - containers = ThemeService.GetContainerTypes(PageState.Themes); - List modules = await ModuleService.GetModulesAsync(PageState.Site.SiteId, Constants.PageManagementModule); - if (modules.Count > 0) - { - pagemanagementmoduleid = modules.FirstOrDefault().ModuleId; - } if (UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions)) { - display = "display: inline"; + moduledefinitions = PageState.ModuleDefinitions; + containers = ThemeService.GetContainerTypes(PageState.Themes); + List modules = await ModuleService.GetModulesAsync(PageState.Site.SiteId, Constants.PageManagementModule); + if (modules.Count > 0) + { + pagemanagementmoduleid = modules.FirstOrDefault().ModuleId; + } } } private async Task AddModule() { - Module module = new Module(); - module.SiteId = PageState.Site.SiteId; - module.ModuleDefinitionName = moduledefinitionname; - module.Permissions = PageState.Page.Permissions; - await ModuleService.AddModuleAsync(module); - - List modules = await ModuleService.GetModulesAsync(PageState.Site.SiteId, moduledefinitionname); - int ModuleId = modules.LastOrDefault().ModuleId; - - PageModule pagemodule = new PageModule(); - pagemodule.PageId = PageState.Page.PageId; - pagemodule.ModuleId = ModuleId; - if (title == "") + if (UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions)) { - title = moduledefinitions.Where(item => item.ModuleDefinitionName == moduledefinitionname).FirstOrDefault().Name; - } - pagemodule.Title = title; - pagemodule.Pane = pane; - pagemodule.Order = 0; - pagemodule.ContainerType = containertype; - await PageModuleService.AddPageModuleAsync(pagemodule); + Module module = new Module(); + module.SiteId = PageState.Site.SiteId; + module.ModuleDefinitionName = moduledefinitionname; + module.Permissions = PageState.Page.Permissions; + await ModuleService.AddModuleAsync(module); - PageState.Reload = Constants.ReloadPage; - UriHelper.NavigateTo(NavigateUrl()); + List modules = await ModuleService.GetModulesAsync(PageState.Site.SiteId, moduledefinitionname); + int ModuleId = modules.LastOrDefault().ModuleId; + + PageModule pagemodule = new PageModule(); + pagemodule.PageId = PageState.Page.PageId; + pagemodule.ModuleId = ModuleId; + if (title == "") + { + title = moduledefinitions.Where(item => item.ModuleDefinitionName == moduledefinitionname).FirstOrDefault().Name; + } + pagemodule.Title = title; + pagemodule.Pane = pane; + pagemodule.Order = 0; + pagemodule.ContainerType = containertype; + await PageModuleService.AddPageModuleAsync(pagemodule); + + PageState.Reload = Constants.ReloadPage; + UriHelper.NavigateTo(NavigateUrl()); + } } private string PageUrl(string action) @@ -144,4 +162,21 @@ } return url; } + + private void EditMode() + { + if (UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions)) + { + if (PageState.EditMode) + { + PageState.EditMode = false; + } + else + { + PageState.EditMode = true; + } + PageState.Reload = Constants.ReloadPage; + UriHelper.NavigateTo(NavigateUrl(PageState.Page.Path, "edit=" + PageState.EditMode.ToString().ToLower())); + } + } } \ No newline at end of file diff --git a/Oqtane.Client/Themes/Controls/ModuleActions.razor b/Oqtane.Client/Themes/Controls/ModuleActions.razor index a37dec34..f1d62b4b 100644 --- a/Oqtane.Client/Themes/Controls/ModuleActions.razor +++ b/Oqtane.Client/Themes/Controls/ModuleActions.razor @@ -8,75 +8,78 @@ @inject IUserService UserService @inject IPageModuleService PageModuleService -