CSS separation, multi-tenancy fixes
This commit is contained in:
		| @ -1,8 +1,8 @@ | ||||
| @namespace Oqtane.Themes | ||||
| @inherits ContainerBase | ||||
| <div id="modal" class="modal" style="display: block"> | ||||
|     <div class="modal-content"> | ||||
|         <a href="@closeurl" class="close">x</a> | ||||
| <div id="modal" class="app-admin-modal" style="display: block"> | ||||
|     <div class="app-admin-modal-content"> | ||||
|         <a href="@closeurl" class="app-admin-modal-close">x</a> | ||||
|         <div class="container"> | ||||
|             <div class="row px-4"> | ||||
|                 <h2><ModuleTitle /></h2> | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| @namespace Oqtane.Themes.Theme2 | ||||
| @namespace Oqtane.Themes.BlazorTheme | ||||
| @inherits ThemeBase | ||||
| 
 | ||||
| <div class="sidebar"> | ||||
| @ -8,7 +8,7 @@ | ||||
| 
 | ||||
| <div class="main"> | ||||
|     <div class="top-row px-4"> | ||||
|         <h1>@PageState.Page.Name - Theme #2</h1> <div class="ml-md-auto"><UserProfile /> <Login /> <ControlPanel /></div> | ||||
|         <h1>@PageState.Page.Name</h1> <div class="ml-md-auto"><UserProfile /> <Login /> <ControlPanel /></div> | ||||
|     </div> | ||||
|     <div class="container"> | ||||
|         <div class="row px-4"> | ||||
| @ -24,6 +24,11 @@ | ||||
| </div> | ||||
| 
 | ||||
| @code { | ||||
|     public override string Name { get { return "Theme2"; } } | ||||
|     public override string Panes { get { return "Top;Bottom"; } } | ||||
| 
 | ||||
|     protected override async Task OnParametersSetAsync() | ||||
|     { | ||||
|         await IncludeCSS("Theme.css"); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -1,6 +1,6 @@ | ||||
| using System.Collections.Generic; | ||||
| 
 | ||||
| namespace Oqtane.Themes.Theme2 | ||||
| namespace Oqtane.Themes.BlazorTheme | ||||
| { | ||||
|     public class Theme : ITheme | ||||
|     { | ||||
| @ -10,7 +10,7 @@ namespace Oqtane.Themes.Theme2 | ||||
|             { | ||||
|                 Dictionary<string, string> properties = new Dictionary<string, string> | ||||
|                 { | ||||
|                     { "Name", "Theme2" }, | ||||
|                     { "Name", "Blazor Theme" }, | ||||
|                     { "Version", "1.0.0" } | ||||
|                 }; | ||||
|                 return properties; | ||||
| @ -33,16 +33,6 @@ namespace Oqtane.Themes | ||||
|             return "Themes/" + this.GetType().Namespace + "/"; | ||||
|         } | ||||
|  | ||||
|         public async Task AddCSS(string Url) | ||||
|         { | ||||
|             if (!Url.StartsWith("http")) | ||||
|             { | ||||
|                 Url = ThemePath() + Url; | ||||
|             } | ||||
|             var interop = new Interop(JSRuntime); | ||||
|             await interop.AddCSS("Theme:" + Utilities.CreateIdFromUrl(Url), Url); | ||||
|         } | ||||
|  | ||||
|         public string NavigateUrl() | ||||
|         { | ||||
|             return NavigateUrl(PageState.Page.Path); | ||||
|  | ||||
| @ -9,9 +9,9 @@ | ||||
|  | ||||
| @if (UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions)) | ||||
| { | ||||
|     <div id="actions" class="overlay"> | ||||
|         <a href="javascript:void(0)" class="closebtn" onclick="closeActions()">x</a> | ||||
|         <div class="overlay-content"> | ||||
|     <div id="actions" class="app-controlpanel"> | ||||
|         <a href="javascript:void(0)" class="app-controlpanel-close" onclick="closeActions()">x</a> | ||||
|         <div class="app-controlpanel-content"> | ||||
|             <ul class="nav flex-column"> | ||||
|                 <li class="nav-item px-3"> | ||||
|                     <NavLink class="btn btn-primary mx-auto" href="@NavigateUrl("admin")">Admin Dashboard</NavLink> | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| @namespace Oqtane.Themes.Controls | ||||
| @inherits ThemeControlBase | ||||
| @inject NavigationManager NavigationManager | ||||
|  | ||||
| @((MarkupString)logo) | ||||
|  | ||||
| @ -10,7 +11,8 @@ | ||||
|     { | ||||
|         if (PageState.Site.Logo != "") | ||||
|         { | ||||
|             logo = "<a href=\"" + PageState.Alias.Url + "\"><img src=\"" + PageState.Alias.BaseUrl + "/" + PageState.Site.SiteRootPath + PageState.Site.Logo + "\" alt=\"" + PageState.Site.Name + "\"/></a>"; | ||||
|             Uri uri = new Uri(NavigationManager.Uri); | ||||
|             logo = "<a href=\"" + uri.Scheme + "://" + uri.Authority + "\"><img src=\"" + uri.Scheme + "://" + uri.Authority + "/" + PageState.Site.SiteRootPath + PageState.Site.Logo + "\" alt=\"" + PageState.Site.Name + "\"/></a>"; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -7,7 +7,7 @@ | ||||
| @if (PageState.DesignMode && UserSecurity.IsAuthorized(PageState.User, "Edit", ModuleState.Permissions)) | ||||
| { | ||||
|     <div class="dropdown"> | ||||
|         <button type="button" class="btn dropdown-toggle" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"></button> | ||||
|         <button type="button" class="btn app-actions-toggle" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"></button> | ||||
|         <div class="dropdown-menu" aria-labelledby="dropdownMenuButton"> | ||||
|             @foreach (var action in actions) | ||||
|             { | ||||
|  | ||||
							
								
								
									
										7
									
								
								Oqtane.Client/Themes/ILayoutControl.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Oqtane.Client/Themes/ILayoutControl.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | ||||
| namespace Oqtane.Themes | ||||
| { | ||||
|     public interface ILayoutControl | ||||
|     { | ||||
|  | ||||
|     } | ||||
| } | ||||
| @ -2,7 +2,6 @@ | ||||
| { | ||||
|     public interface IThemeControl | ||||
|     { | ||||
|         string Name { get; } | ||||
|         string Panes { get; } // if a theme has different panes, delimit them with ";" | ||||
|         string Panes { get; } // identifies all panes in a theme ( delimited by ";" ) - assumed to be a layout if no panes specified | ||||
|     } | ||||
| } | ||||
|  | ||||
							
								
								
									
										18
									
								
								Oqtane.Client/Themes/LayoutBase.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								Oqtane.Client/Themes/LayoutBase.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | ||||
| using Microsoft.AspNetCore.Components; | ||||
| using Oqtane.Shared; | ||||
|  | ||||
| namespace Oqtane.Themes | ||||
| { | ||||
|     public class LayoutBase : ComponentBase, ILayoutControl | ||||
|     { | ||||
|         [CascadingParameter] | ||||
|         protected PageState PageState { get; set; } | ||||
|         public virtual string Panes { get; set; } | ||||
|  | ||||
|         public string LayoutPath() | ||||
|         { | ||||
|             return "Themes/" + this.GetType().Namespace + "/"; | ||||
|         } | ||||
|  | ||||
|     } | ||||
| } | ||||
| @ -1,4 +1,4 @@ | ||||
| @namespace Oqtane.Themes.Theme2 | ||||
| @namespace Oqtane.Themes.OqtaneTheme | ||||
| @inherits ContainerBase | ||||
| <div class="container"> | ||||
|     <div class="row px-4"> | ||||
| @ -1,4 +1,4 @@ | ||||
| @namespace Oqtane.Themes.Theme1 | ||||
| @namespace Oqtane.Themes.OqtaneTheme | ||||
| @inherits ThemeBase | ||||
| 
 | ||||
| <div class="sidebar"> | ||||
| @ -8,16 +8,14 @@ | ||||
| 
 | ||||
| <div class="main"> | ||||
|     <div class="top-row px-4"> | ||||
|         <h1>@PageState.Page.Name - Theme #1</h1> <div class="ml-md-auto"><UserProfile /> <Login /> <ControlPanel /></div> | ||||
|         <h1>@PageState.Page.Name</h1> <div class="ml-md-auto"><UserProfile /> <Login /> <ControlPanel /></div> | ||||
|     </div> | ||||
|     <div class="container"> | ||||
|         <div class="row px-4"> | ||||
|             <div class="col-sm"> | ||||
|                 <Pane Name="Left" /> | ||||
|             </div> | ||||
|             <div class="col-sm"> | ||||
|                 <Pane Name="Right" /> | ||||
|             </div> | ||||
|             <Pane Name="Top" /> | ||||
|         </div> | ||||
|         <div class="row px-4"> | ||||
|             <Pane Name="Bottom" /> | ||||
|         </div> | ||||
|         <div class="row px-4"> | ||||
|             <Pane Name="Admin" /> | ||||
| @ -26,6 +24,10 @@ | ||||
| </div> | ||||
| 
 | ||||
| @code { | ||||
|     public override string Name { get { return "Theme1"; } } | ||||
|     public override string Panes { get { return "Left;Right"; } } | ||||
| 
 | ||||
|     protected override async Task OnParametersSetAsync() | ||||
|     { | ||||
|         await IncludeCSS("Theme.css"); | ||||
|     } | ||||
| } | ||||
| @ -1,5 +1,5 @@ | ||||
| @namespace Oqtane.Themes.Theme3 | ||||
| @inherits ThemeBase | ||||
| @namespace Oqtane.Themes.OqtaneTheme | ||||
| @inherits LayoutBase | ||||
| 
 | ||||
| <div class="row px-4"> | ||||
|     <div class="col-sm"> | ||||
| @ -11,6 +11,5 @@ | ||||
| </div> | ||||
| 
 | ||||
| @code { | ||||
|     public override string Name { get { return "Horizontal Layout"; } } | ||||
|     public override string Panes { get { return "Left;Right"; } } | ||||
| } | ||||
| @ -1,4 +1,4 @@ | ||||
| @namespace Oqtane.Themes.Theme3 | ||||
| @namespace Oqtane.Themes.OqtaneTheme | ||||
| @inherits ThemeBase | ||||
| 
 | ||||
| <div class="sidebar"> | ||||
| @ -8,7 +8,7 @@ | ||||
| 
 | ||||
| <div class="main"> | ||||
|     <div class="top-row px-4"> | ||||
|         <h1>@PageState.Page.Name - Theme #3</h1> <div class="ml-md-auto"><UserProfile /> <Login /> <ControlPanel /></div> | ||||
|         <h1>@PageState.Page.Name</h1> <div class="ml-md-auto"><UserProfile /> <Login /> <ControlPanel /></div> | ||||
|     </div> | ||||
|     <div class="container"> | ||||
|         <PaneLayout /> | ||||
| @ -19,6 +19,8 @@ | ||||
| </div> | ||||
| 
 | ||||
| @code { | ||||
|     public override string Name { get { return "Theme3"; } } | ||||
|     public override string Panes { get { return ""; } } | ||||
|     protected override async Task OnParametersSetAsync() | ||||
|     { | ||||
|         await IncludeCSS("Theme.css"); | ||||
|     } | ||||
| } | ||||
| @ -1,6 +1,6 @@ | ||||
| using System.Collections.Generic; | ||||
| 
 | ||||
| namespace Oqtane.Themes.Theme1 | ||||
| namespace Oqtane.Themes.OqtaneTheme | ||||
| { | ||||
|     public class Theme : ITheme | ||||
|     { | ||||
| @ -10,7 +10,7 @@ namespace Oqtane.Themes.Theme1 | ||||
|             { | ||||
|                 Dictionary<string, string> properties = new Dictionary<string, string> | ||||
|                 { | ||||
|                     { "Name", "Theme1" }, | ||||
|                     { "Name", "Oqtane Theme" }, | ||||
|                     { "Version", "1.0.0" } | ||||
|                 }; | ||||
|                 return properties; | ||||
| @ -1,5 +1,5 @@ | ||||
| @namespace Oqtane.Themes.Theme3 | ||||
| @inherits ThemeBase | ||||
| @namespace Oqtane.Themes.OqtaneTheme | ||||
| @inherits LayoutBase | ||||
| 
 | ||||
| <div class="row px-4"> | ||||
|     <Pane Name="Top" /> | ||||
| @ -9,6 +9,5 @@ | ||||
| </div> | ||||
| 
 | ||||
| @code { | ||||
|     public override string Name { get { return "Vertical Layout"; } } | ||||
|     public override string Panes { get { return "Top;Bottom"; } } | ||||
| } | ||||
| @ -1,13 +0,0 @@ | ||||
| @namespace Oqtane.Themes.Theme1 | ||||
| @inherits ContainerBase | ||||
| <div class="container"> | ||||
|     <div class="row px-4"> | ||||
|         <ModuleActions /><h2><ModuleTitle /></h2> | ||||
|         <hr style="width: 100%; color: gray; height: 1px; background-color:gray;" /> | ||||
|     </div> | ||||
|     <div class="row px-4"> | ||||
|         <div class="container"> | ||||
|             <ModuleInstance /> | ||||
|         </div> | ||||
|     </div> | ||||
| </div> | ||||
| @ -1,20 +0,0 @@ | ||||
| using System.Collections.Generic; | ||||
|  | ||||
| namespace Oqtane.Themes.Theme3 | ||||
| { | ||||
|     public class Theme : ITheme | ||||
|     { | ||||
|         public Dictionary<string, string> Properties | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 Dictionary<string, string> properties = new Dictionary<string, string> | ||||
|                 { | ||||
|                     { "Name", "Theme3" }, | ||||
|                     { "Version", "1.0.0" } | ||||
|                 }; | ||||
|                 return properties; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -12,7 +12,6 @@ namespace Oqtane.Themes | ||||
|  | ||||
|         [CascadingParameter] | ||||
|         protected PageState PageState { get; set; } | ||||
|         public virtual string Name { get; set; } | ||||
|         public virtual string Panes { get; set; } | ||||
|  | ||||
|         public string ThemePath() | ||||
| @ -20,14 +19,14 @@ namespace Oqtane.Themes | ||||
|             return "Themes/" + this.GetType().Namespace + "/"; | ||||
|         } | ||||
|  | ||||
|         public async Task AddCSS(string Url) | ||||
|         public async Task IncludeCSS(string Url) | ||||
|         { | ||||
|             if (!Url.StartsWith("http")) | ||||
|             { | ||||
|                 Url = ThemePath() + Url; | ||||
|             } | ||||
|             var interop = new Interop(JSRuntime); | ||||
|             await interop.AddCSS("Theme:" + Utilities.CreateIdFromUrl(Url), Url); | ||||
|             await interop.IncludeCSS("Theme", Url); | ||||
|         } | ||||
|  | ||||
|         public string NavigateUrl() | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Shaun Walker
					Shaun Walker