From ac03afb146c881f1a00673cef7aedde2269857d9 Mon Sep 17 00:00:00 2001 From: Shaun Walker Date: Fri, 15 May 2020 09:50:48 -0400 Subject: [PATCH] added ability to set default container at the page level, expanded size of role description in upgrade script for 0.9.2 --- .../Modules/Admin/Modules/Settings.razor | 20 ++++++++- Oqtane.Client/Modules/Admin/Pages/Add.razor | 36 ++++++++++++---- Oqtane.Client/Modules/Admin/Pages/Edit.razor | 41 +++++++++++++++---- Oqtane.Client/UI/SiteRouter.razor | 2 +- Oqtane.Server/Controllers/PageController.cs | 1 + Oqtane.Server/Oqtane.Server.csproj | 2 + Oqtane.Server/Repository/SiteRepository.cs | 1 + Oqtane.Server/Scripts/Tenant.0.9.1.sql | 2 +- Oqtane.Server/Scripts/Tenant.0.9.2.sql | 18 ++++++++ Oqtane.Shared/Models/Page.cs | 1 + 10 files changed, 104 insertions(+), 20 deletions(-) create mode 100644 Oqtane.Server/Scripts/Tenant.0.9.2.sql diff --git a/Oqtane.Client/Modules/Admin/Modules/Settings.razor b/Oqtane.Client/Modules/Admin/Modules/Settings.razor index eec6c6e2..3d981593 100644 --- a/Oqtane.Client/Modules/Admin/Modules/Settings.razor +++ b/Oqtane.Client/Modules/Admin/Modules/Settings.razor @@ -24,7 +24,7 @@ - + @foreach (KeyValuePair item in _themes) { if (item.Key == _themetype) @@ -122,7 +122,7 @@ + + + + + + + + @@ -187,6 +201,7 @@ @code { private Dictionary _themes; private Dictionary _panelayouts; + private Dictionary _containers = new Dictionary(); private List _themeList; private List _pageList; private string _name; @@ -202,6 +217,7 @@ private string _mode = "view"; private string _themetype = "-"; private string _layouttype = "-"; + private string _containertype = "-"; private string _icon = string.Empty; private string _permissions = string.Empty; private PermissionGrid _permissionGrid; @@ -216,11 +232,9 @@ _pageList = PageState.Pages; _children = PageState.Pages.Where(item => item.ParentId == null).ToList(); - _themetype = PageState.Site.DefaultThemeType; - _layouttype = PageState.Site.DefaultLayoutType; - _themes = ThemeService.GetThemeTypes(_themeList); _panelayouts = ThemeService.GetPaneLayoutTypes(_themeList, _themetype); + _containers = ThemeService.GetContainerTypes(_themeList); _permissions = string.Empty; } @@ -351,16 +365,20 @@ page.Url = _url; page.EditMode = (_mode == "edit" ? true : false); page.ThemeType = (_themetype != "-") ? _themetype : string.Empty; - page.LayoutType = (_layouttype != "-") ? _layouttype : string.Empty; - if (page.ThemeType == PageState.Site.DefaultThemeType) + if (!string.IsNullOrEmpty(page.ThemeType) && page.ThemeType == PageState.Site.DefaultThemeType) { page.ThemeType = string.Empty; } - - if (page.LayoutType == PageState.Site.DefaultLayoutType) + page.LayoutType = (_layouttype != "-") ? _layouttype : string.Empty; + if (!string.IsNullOrEmpty(page.LayoutType) && page.LayoutType == PageState.Site.DefaultLayoutType) { page.LayoutType = string.Empty; } + page.DefaultContainerType = (_containertype != "-") ? _containertype : string.Empty; + if (!string.IsNullOrEmpty(page.DefaultContainerType) && page.DefaultContainerType == PageState.Site.DefaultContainerType) + { + page.DefaultContainerType = string.Empty; + } page.Icon = (_icon == null ? string.Empty : _icon); page.Permissions = _permissionGrid.GetPermissions(); page.IsPersonalizable = (_ispersonalizable == null ? false : Boolean.Parse(_ispersonalizable)); diff --git a/Oqtane.Client/Modules/Admin/Pages/Edit.razor b/Oqtane.Client/Modules/Admin/Pages/Edit.razor index 8132696d..b25f6b2e 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Edit.razor @@ -112,7 +112,7 @@ - + @foreach (KeyValuePair panelayout in _panelayouts) { if (panelayout.Key == _layouttype) @@ -148,6 +148,20 @@ + + + + + + + + @@ -200,6 +214,7 @@ @code { private Dictionary _themes; private Dictionary _panelayouts; + private Dictionary _containers = new Dictionary(); private List _themeList; private List _pageList; private int _pageId; @@ -217,6 +232,7 @@ private string _mode; private string _themetype = "-"; private string _layouttype = "-"; + private string _containertype = "-"; private string _icon; private string _permissions; private string _createdby; @@ -241,6 +257,7 @@ _children = PageState.Pages.Where(item => item.ParentId == null).ToList(); _themes = ThemeService.GetThemeTypes(_themeList); + _containers = ThemeService.GetContainerTypes(_themeList); _pageId = Int32.Parse(PageState.QueryString["id"]); var page = PageState.Pages.FirstOrDefault(item => item.PageId == _pageId); @@ -270,16 +287,21 @@ _ispersonalizable = page.IsPersonalizable.ToString(); _mode = (page.EditMode) ? "edit" : "view"; _themetype = page.ThemeType; - _panelayouts = ThemeService.GetPaneLayoutTypes(_themeList, _themetype); - _layouttype = page.LayoutType; if (_themetype == PageState.Site.DefaultThemeType) { _themetype = "-"; } + _panelayouts = ThemeService.GetPaneLayoutTypes(_themeList, _themetype); + _layouttype = page.LayoutType; if (_layouttype == PageState.Site.DefaultLayoutType) { _layouttype = "-"; } + _containertype = page.DefaultContainerType; + if (string.IsNullOrEmpty(_containertype)) + { + _containertype = "-"; + } _icon = page.Icon; _permissions = page.Permissions; _createdby = page.CreatedBy; @@ -426,15 +448,20 @@ page.Url = _url; page.EditMode = (_mode == "edit"); page.ThemeType = (_themetype != "-") ? _themetype : string.Empty; - page.LayoutType = (_layouttype != "-") ? _layouttype : string.Empty; - if (page.ThemeType == PageState.Site.DefaultThemeType) + if (!string.IsNullOrEmpty(page.ThemeType) && page.ThemeType == PageState.Site.DefaultThemeType) { page.ThemeType = string.Empty; } - if (page.LayoutType == PageState.Site.DefaultLayoutType) + page.LayoutType = (_layouttype != "-") ? _layouttype : string.Empty; + if (!string.IsNullOrEmpty(page.LayoutType) && page.LayoutType == PageState.Site.DefaultLayoutType) { page.LayoutType = string.Empty; } + page.DefaultContainerType = (_containertype != "-") ? _containertype : string.Empty; + if (!string.IsNullOrEmpty(page.DefaultContainerType) && page.DefaultContainerType == PageState.Site.DefaultContainerType) + { + page.DefaultContainerType = string.Empty; + } page.Icon = _icon ?? string.Empty; page.Permissions = _permissionGrid.GetPermissions(); page.IsPersonalizable = (_ispersonalizable != null && Boolean.Parse(_ispersonalizable)); diff --git a/Oqtane.Client/UI/SiteRouter.razor b/Oqtane.Client/UI/SiteRouter.razor index ac7b692e..488c43bf 100644 --- a/Oqtane.Client/UI/SiteRouter.razor +++ b/Oqtane.Client/UI/SiteRouter.razor @@ -260,7 +260,7 @@ if (PageState == null || reload >= Reload.Page) { modules = await ModuleService.GetModulesAsync(site.SiteId); - modules = ProcessModules(modules, page.PageId, _pagestate.ModuleId, _pagestate.Action, page.Panes, site.DefaultContainerType); + modules = ProcessModules(modules, page.PageId, _pagestate.ModuleId, _pagestate.Action, page.Panes, (!string.IsNullOrEmpty(page.DefaultContainerType)) ? page.DefaultContainerType : site.DefaultContainerType); } else { diff --git a/Oqtane.Server/Controllers/PageController.cs b/Oqtane.Server/Controllers/PageController.cs index 915fccdc..6797796a 100644 --- a/Oqtane.Server/Controllers/PageController.cs +++ b/Oqtane.Server/Controllers/PageController.cs @@ -166,6 +166,7 @@ namespace Oqtane.Controllers page.EditMode = false; page.ThemeType = parent.ThemeType; page.LayoutType = parent.LayoutType; + page.DefaultContainerType = parent.DefaultContainerType; page.Icon = parent.Icon; page.Permissions = new List { new Permission(PermissionNames.View, userid, true), diff --git a/Oqtane.Server/Oqtane.Server.csproj b/Oqtane.Server/Oqtane.Server.csproj index b298fc75..88064ed9 100644 --- a/Oqtane.Server/Oqtane.Server.csproj +++ b/Oqtane.Server/Oqtane.Server.csproj @@ -19,12 +19,14 @@ + + diff --git a/Oqtane.Server/Repository/SiteRepository.cs b/Oqtane.Server/Repository/SiteRepository.cs index d7c8a1e5..ae179abe 100644 --- a/Oqtane.Server/Repository/SiteRepository.cs +++ b/Oqtane.Server/Repository/SiteRepository.cs @@ -757,6 +757,7 @@ namespace Oqtane.Repository EditMode = pagetemplate.EditMode, ThemeType = "", LayoutType = "", + DefaultContainerType = "", Icon = pagetemplate.Icon, Permissions = pagetemplate.PagePermissions, IsPersonalizable = pagetemplate.IsPersonalizable, diff --git a/Oqtane.Server/Scripts/Tenant.0.9.1.sql b/Oqtane.Server/Scripts/Tenant.0.9.1.sql index 94728128..55825ada 100644 --- a/Oqtane.Server/Scripts/Tenant.0.9.1.sql +++ b/Oqtane.Server/Scripts/Tenant.0.9.1.sql @@ -1,6 +1,6 @@ /* -migration script +Version 0.9.1 migration script */ diff --git a/Oqtane.Server/Scripts/Tenant.0.9.2.sql b/Oqtane.Server/Scripts/Tenant.0.9.2.sql new file mode 100644 index 00000000..11330770 --- /dev/null +++ b/Oqtane.Server/Scripts/Tenant.0.9.2.sql @@ -0,0 +1,18 @@ +/* + +Version 0.9.2 migration script + +*/ + +ALTER TABLE [dbo].[Role] +ALTER COLUMN [Description] VARCHAR (256) NOT NULL +GO + +ALTER TABLE [dbo].[Page] ADD + [DefaultContainerType] [nvarchar](200) NULL +GO + +UPDATE [dbo].[Page] +SET [DefaultContainerType] = '' +GO + diff --git a/Oqtane.Shared/Models/Page.cs b/Oqtane.Shared/Models/Page.cs index f1268875..2d3f3624 100644 --- a/Oqtane.Shared/Models/Page.cs +++ b/Oqtane.Shared/Models/Page.cs @@ -15,6 +15,7 @@ namespace Oqtane.Models public string Url { get; set; } public string ThemeType { get; set; } public string LayoutType { get; set; } + public string DefaultContainerType { get; set; } public string Icon { get; set; } public bool IsNavigation { get; set; } public bool EditMode { get; set; }