From 600872d0b073e5cfec6c425c59c0cb6e9641e71d Mon Sep 17 00:00:00 2001 From: Shaun Walker Date: Fri, 14 Jun 2019 17:24:52 -0400 Subject: [PATCH] added ability to add site through admin UI, fixed Logo control to not render of site does not have a logo, updated launchsettings so that port number is consistent for both IIS Express and .NET Core web server --- Oqtane.Client/Modules/Admin/Pages/Add.razor | 1 - Oqtane.Client/Modules/Admin/Sites/Add.razor | 77 ++++++++++++++++++-- Oqtane.Client/Services/ITenantService.cs | 3 + Oqtane.Client/Services/TenantService.cs | 8 ++ Oqtane.Client/Shared/Container.razor | 4 +- Oqtane.Client/Shared/Pane.razor | 6 +- Oqtane.Client/Shared/SiteRouter.razor | 1 - Oqtane.Client/Themes/Controls/Logo.razor | 13 +++- Oqtane.Server/Controllers/AliasController.cs | 8 +- Oqtane.Server/Properties/launchSettings.json | 2 +- 10 files changed, 105 insertions(+), 18 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/Pages/Add.razor b/Oqtane.Client/Modules/Admin/Pages/Add.razor index bb6a93e3..7dbaac95 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Add.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Add.razor @@ -170,7 +170,6 @@ p.ViewPermissions = viewpermissions; p.EditPermissions = editpermissions; await PageService.AddPageAsync(p); - StateHasChanged(); UriHelper.NavigateTo(NavigateUrl(path, true)); } } diff --git a/Oqtane.Client/Modules/Admin/Sites/Add.razor b/Oqtane.Client/Modules/Admin/Sites/Add.razor index dbd821af..b3e9489e 100644 --- a/Oqtane.Client/Modules/Admin/Sites/Add.razor +++ b/Oqtane.Client/Modules/Admin/Sites/Add.razor @@ -2,12 +2,34 @@ @using Oqtane.Models @using Oqtane.Services @using Oqtane.Modules -@using Oqtane.Client.Modules.Controls @inherits ModuleBase @inject IUriHelper UriHelper +@inject ITenantService TenantService +@inject IAliasService AliasService @inject ISiteService SiteService +@inject IPageService PageService +@if (tenants == null) +{ +

Loading...

+} +else +{ + + + + + + + +
+ + + +
@@ -21,26 +43,69 @@ - + +
+ + +
Cancel +} @functions { public override SecurityAccessLevelEnum SecurityAccessLevel { get { return SecurityAccessLevelEnum.Host; } } + List tenants; + string tenantid; string name; - string alias; + string url; + string logo; + + protected override async Task OnInitAsync() + { + tenants = await TenantService.GetTenantsAsync(); + } private async Task SaveSite() { Site site = new Site(); site.Name = name; - site.Logo = ""; + site.Logo = (logo == null ? "" : logo); await SiteService.AddSiteAsync(site); - StateHasChanged(); - UriHelper.NavigateTo(NavigateUrl()); + List sites = await SiteService.GetSitesAsync(); + site = sites.Where(item => item.Name == name).FirstOrDefault(); + + Alias alias = new Alias(); + alias.Name = url; + alias.TenantId = int.Parse(tenantid); + alias.SiteId = site.SiteId; + await AliasService.AddAliasAsync(alias); + + // need to add a home page and admin pages + Page p = new Page(); + p.SiteId = site.SiteId; + p.ParentId = null; + p.Name = "Home"; + p.Path = ""; + p.Order = 1; + p.IsNavigation = true; + p.ThemeType = "Oqtane.Client.Themes.Theme1.Theme1, Oqtane.Client"; + p.LayoutType = ""; + p.Icon = ""; + Type type = Type.GetType(p.ThemeType); + System.Reflection.PropertyInfo property = type.GetProperty("Panes"); + p.Panes = (string)property.GetValue(Activator.CreateInstance(type), null); + p.ViewPermissions = "All Users"; + p.EditPermissions = "Administrators"; + await PageService.AddPageAsync(p); + + UriHelper.NavigateTo(url, true); } } diff --git a/Oqtane.Client/Services/ITenantService.cs b/Oqtane.Client/Services/ITenantService.cs index 1fb45966..bf6b5c08 100644 --- a/Oqtane.Client/Services/ITenantService.cs +++ b/Oqtane.Client/Services/ITenantService.cs @@ -1,10 +1,13 @@ using Oqtane.Models; +using System.Collections.Generic; using System.Threading.Tasks; namespace Oqtane.Services { public interface ITenantService { + Task> GetTenantsAsync(); + Task GetTenantAsync(); } } diff --git a/Oqtane.Client/Services/TenantService.cs b/Oqtane.Client/Services/TenantService.cs index 9904f6aa..27054504 100644 --- a/Oqtane.Client/Services/TenantService.cs +++ b/Oqtane.Client/Services/TenantService.cs @@ -3,6 +3,8 @@ using System.Net.Http; using System.Threading.Tasks; using Microsoft.AspNetCore.Components; using Oqtane.Shared; +using System.Collections.Generic; +using System.Linq; namespace Oqtane.Services { @@ -22,6 +24,12 @@ namespace Oqtane.Services get { return CreateApiUrl(sitestate.Alias, "Tenant"); } } + public async Task> GetTenantsAsync() + { + List tenants = await http.GetJsonAsync>(apiurl); + return tenants.OrderBy(item => item.Name).ToList(); + } + public async Task GetTenantAsync() { return await http.GetJsonAsync(apiurl); diff --git a/Oqtane.Client/Shared/Container.razor b/Oqtane.Client/Shared/Container.razor index 7faa800e..9adfd0df 100644 --- a/Oqtane.Client/Shared/Container.razor +++ b/Oqtane.Client/Shared/Container.razor @@ -10,8 +10,9 @@ protected PageState PageState { get; set; } [Parameter] - private Module ModuleState { get; set; } + private Module Module { get; set; } + Module ModuleState; string container; RenderFragment DynamicComponent { get; set; } @@ -35,6 +36,7 @@ protected override Task OnParametersSetAsync() { + ModuleState = Module; // passed in from Pane component container = ModuleState.ContainerType; if (PageState.ModuleId != -1 && PageState.Control != "") { diff --git a/Oqtane.Client/Shared/Pane.razor b/Oqtane.Client/Shared/Pane.razor index 549e353e..4a0c0c9a 100644 --- a/Oqtane.Client/Shared/Pane.razor +++ b/Oqtane.Client/Shared/Pane.razor @@ -84,7 +84,7 @@ } } builder.OpenComponent(0, Type.GetType(Constants.DefaultContainer)); - builder.AddAttribute(1, "ModuleState", module); + builder.AddAttribute(1, "Module", module); builder.CloseComponent(); } } @@ -106,7 +106,7 @@ if (UserService.IsAuthorized(PageState.User, module.ViewPermissions)) { builder.OpenComponent(0, Type.GetType(Constants.DefaultContainer)); - builder.AddAttribute(1, "ModuleState", module); + builder.AddAttribute(1, "Module", module); builder.CloseComponent(); } } @@ -119,7 +119,7 @@ if (UserService.IsAuthorized(PageState.User, module.ViewPermissions)) { builder.OpenComponent(0, Type.GetType(Constants.DefaultContainer)); - builder.AddAttribute(1, "ModuleState", module); + builder.AddAttribute(1, "Module", module); builder.CloseComponent(); } } diff --git a/Oqtane.Client/Shared/SiteRouter.razor b/Oqtane.Client/Shared/SiteRouter.razor index 89621362..f313026a 100644 --- a/Oqtane.Client/Shared/SiteRouter.razor +++ b/Oqtane.Client/Shared/SiteRouter.razor @@ -234,7 +234,6 @@ { // site does not exist } - StateHasChanged(); } private async void OnLocationChanged(object sender, string AbsoluteUri) diff --git a/Oqtane.Client/Themes/Controls/Logo.razor b/Oqtane.Client/Themes/Controls/Logo.razor index 2c42061f..5356a3c1 100644 --- a/Oqtane.Client/Themes/Controls/Logo.razor +++ b/Oqtane.Client/Themes/Controls/Logo.razor @@ -1,5 +1,16 @@ @using Oqtane.Themes @inherits ThemeObjectBase - +@((MarkupString)logo) +@functions { + string logo = ""; + + protected override void OnInit() + { + if (PageState.Site.Logo != "") + { + logo = "\"""; + } + } +} \ No newline at end of file diff --git a/Oqtane.Server/Controllers/AliasController.cs b/Oqtane.Server/Controllers/AliasController.cs index cd8296e3..772bb974 100644 --- a/Oqtane.Server/Controllers/AliasController.cs +++ b/Oqtane.Server/Controllers/AliasController.cs @@ -31,18 +31,18 @@ namespace Oqtane.Controllers // POST api/ [HttpPost] - public void Post([FromBody] Alias site) + public void Post([FromBody] Alias alias) { if (ModelState.IsValid) - aliases.AddAlias(site); + aliases.AddAlias(alias); } // PUT api//5 [HttpPut("{id}")] - public void Put(int id, [FromBody] Alias site) + public void Put(int id, [FromBody] Alias alias) { if (ModelState.IsValid) - aliases.UpdateAlias(site); + aliases.UpdateAlias(alias); } // DELETE api//5 diff --git a/Oqtane.Server/Properties/launchSettings.json b/Oqtane.Server/Properties/launchSettings.json index dc8b0c09..55612d8c 100644 --- a/Oqtane.Server/Properties/launchSettings.json +++ b/Oqtane.Server/Properties/launchSettings.json @@ -21,7 +21,7 @@ "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, - "applicationUrl": "http://localhost:14245/" + "applicationUrl": "http://localhost:44357/" } } } \ No newline at end of file