CSS separation, multi-tenancy fixes

This commit is contained in:
Shaun Walker
2019-10-12 16:32:47 -04:00
parent 7f69f76263
commit c029e70783
82 changed files with 957 additions and 811 deletions

View File

@ -114,7 +114,7 @@
<button type="button" class="btn btn-success" @onclick="Install">Install Now</button><br /><br />
@((MarkupString)@Message)
</div>
<div class="loading" style="@LoadingDisplay"></div>
<div class="app-progress-indicator" style="@LoadingDisplay"></div>
</div>
</div>
@ -177,7 +177,7 @@
site.TenantId = tenants.FirstOrDefault().TenantId;
site.Name = "Default Site";
site.Logo = "oqtane.png";
site.DefaultThemeType = "Oqtane.Themes.Theme2.Theme2, Oqtane.Client";
site.DefaultThemeType = Constants.DefaultTheme;
site.DefaultLayoutType = "";
site = await SiteService.AddSiteAsync(site);

View File

@ -41,12 +41,12 @@ namespace Oqtane.Shared
}
}
public Task AddCSS(string id, string url)
public Task IncludeCSS(string id, string url)
{
try
{
jsRuntime.InvokeAsync<string>(
"interop.addCSS",
"interop.includeCSS",
id, url);
return Task.CompletedTask;
}
@ -56,21 +56,6 @@ namespace Oqtane.Shared
}
}
public Task RemoveCSS(string pattern)
{
try
{
jsRuntime.InvokeAsync<string>(
"interop.removeCSS",
pattern);
return Task.CompletedTask;
}
catch
{
return Task.CompletedTask;
}
}
public ValueTask<string> GetElementByName(string name)
{
try

View File

@ -1,9 +1,14 @@
@namespace Oqtane.Shared
<ModuleMessage Message="@message" Type="MessageType.Error" />
<CascadingValue Value="this">
<ModuleMessage @ref="modulemessage" />
@DynamicComponent
</CascadingValue>
@if (progressindicator)
{
<div class="app-progress-indicator"></div>
}
@code {
[CascadingParameter]
@ -13,16 +18,19 @@
private Module ModuleState { get; set; }
private ModuleMessage modulemessage { get; set; }
string message;
RenderFragment DynamicComponent { get; set; }
bool progressindicator = false;
protected override void OnParametersSet()
{
DynamicComponent = builder =>
{
string typename = ModuleState.ModuleType;
// check for core module actions component
if (Constants.DefaultModuleActions.Contains(PageState.Control))
if (Constants.DefaultModuleActions.Contains(PageState.Control))
{
typename = Constants.DefaultModuleActionsTemplate.Replace("{Control}", PageState.Control);
}
@ -40,13 +48,26 @@
else
{
// module does not exist with typename specified
modulemessage.SetModuleMessage("Error Loading Component For Module " + ModuleState.ModuleDefinitionName, MessageType.Error);
message = "Module Does Not Have A Component Named " + Utilities.GetTypeNameClass(typename) + ".razor";
}
};
}
public void AddModuleMessage(string message, MessageType type)
{
progressindicator = false;
modulemessage.SetModuleMessage(message, type);
}
public void ShowProgressIndicator()
{
progressindicator = true;
StateHasChanged();
}
public void HideProgressIndicator()
{
progressindicator = true;
StateHasChanged();
}
}

View File

@ -27,8 +27,8 @@
{
if (PageState.DesignMode && UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions) && Name != Constants.AdminPane)
{
paneadminborder = "pane-admin-border";
panetitle = "<div class=\"pane-admin-title\">" + Name + " Pane</div>";
paneadminborder = "app-pane-admin-border";
panetitle = "<div class=\"app-pane-admin-title\">" + Name + " Pane</div>";
}
else
{
@ -87,7 +87,7 @@
{
module.Title = module.ControlTitle;
}
builder.OpenComponent(0, Type.GetType(Constants.DefaultContainer));
builder.OpenComponent(0, Type.GetType(Constants.ContainerComponent));
builder.AddAttribute(1, "Module", module);
builder.CloseComponent();
}
@ -109,7 +109,7 @@
// check if user is authorized to view module
if (UserSecurity.IsAuthorized(PageState.User, "View", module.Permissions))
{
builder.OpenComponent(0, Type.GetType(Constants.DefaultContainer));
builder.OpenComponent(0, Type.GetType(Constants.ContainerComponent));
builder.AddAttribute(1, "Module", module);
builder.CloseComponent();
}
@ -122,7 +122,7 @@
// check if user is authorized to view module
if (UserSecurity.IsAuthorized(PageState.User, "View", module.Permissions))
{
builder.OpenComponent(0, Type.GetType(Constants.DefaultContainer));
builder.OpenComponent(0, Type.GetType(Constants.ContainerComponent));
builder.AddAttribute(1, "Module", module);
builder.SetKey(module.PageModuleId);
builder.CloseComponent();

View File

@ -20,8 +20,8 @@
}
else
{
// layout does not exist with type specified
}
// layout does not exist with type specified
}
};
}
}

View File

@ -38,7 +38,7 @@
{
if (PageState != null)
{
builder.OpenComponent(0, Type.GetType(Constants.DefaultPage));
builder.OpenComponent(0, Type.GetType(Constants.PageComponent));
builder.CloseComponent();
}
};
@ -343,7 +343,7 @@
// get IModuleControl properties
typename = module.ModuleType;
// check for core module actions component
if (Constants.DefaultModuleActions.Contains(control))
if (Constants.DefaultModuleActions.Contains(control))
{
typename = Constants.DefaultModuleActionsTemplate.Replace("{Control}", control);
}
@ -407,7 +407,6 @@
// use first alias if Uri does not exist
alias = aliases.FirstOrDefault();
}
alias.Scheme = uri.Scheme;
return alias;
}

View File

@ -20,19 +20,11 @@
}
else
{
// theme does not exist with type specified
builder.OpenComponent(0, Type.GetType(Constants.ModuleMessageControl));
// theme does not exist with type specified
builder.OpenComponent(0, Type.GetType(Constants.ModuleMessageControl));
builder.AddAttribute(1, "Message", "Error Loading Page Theme " + PageState.Page.ThemeType);
builder.CloseComponent();
}
};
}
protected override async Task OnParametersSetAsync()
{
// remove any custom CSS
var interop = new Interop(jsRuntime);
await interop.RemoveCSS("Theme:");
await interop.RemoveCSS("Module:");
}
}

View File

@ -203,10 +203,5 @@ namespace Oqtane.Shared
return "";
}
}
public static string CreateIdFromUrl(string value)
{
return value.Replace("/", "_").Replace("\\", "_").Replace(".", "_");
}
}
}