diff --git a/Oqtane.Client/Modules/Admin/Themes/Edit.razor b/Oqtane.Client/Modules/Admin/Themes/Edit.razor index 03bb6cf1..00e22f29 100644 --- a/Oqtane.Client/Modules/Admin/Themes/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Themes/Edit.razor @@ -13,7 +13,7 @@
- +
@@ -89,32 +89,32 @@ private string _themeName = ""; private string _isenabled; private string _name; - private string _version; - private string _packagename; - private string _owner = ""; - private string _url = ""; - private string _contact = ""; - private string _license = ""; + private string _version; + private string _packagename; + private string _owner = ""; + private string _url = ""; + private string _contact = ""; + private string _license = ""; private string _createdby; private DateTime _createdon; private string _modifiedby; private DateTime _modifiedon; - public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host; + public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host; - protected override async Task OnInitializedAsync() - { - try - { + protected override async Task OnInitializedAsync() + { + try + { _themeId = Int32.Parse(PageState.QueryString["id"]); var theme = await ThemeService.GetThemeAsync(_themeId, ModuleState.SiteId); - if (theme != null) - { - _name = theme.Name; + if (theme != null) + { + _name = theme.Name; _isenabled =theme.IsEnabled.ToString(); _version = theme.Version; - _packagename = theme.PackageName; - _owner = theme.Owner; + _packagename = theme.PackageName; + _owner = theme.Owner; _url = theme.Url; _contact = theme.Contact; _license = theme.License; @@ -142,6 +142,7 @@ try { var theme = await ThemeService.GetThemeAsync(_themeId, ModuleState.SiteId); + theme.Name = _name; theme.IsEnabled = (_isenabled == null ? true : bool.Parse(_isenabled)); await ThemeService.UpdateThemeAsync(theme); await logger.LogInformation("Theme Saved {Theme}", theme); diff --git a/Oqtane.Server/Migrations/Master/04000002_AddThemeName.cs b/Oqtane.Server/Migrations/Master/04000002_AddThemeName.cs new file mode 100644 index 00000000..90d02cc6 --- /dev/null +++ b/Oqtane.Server/Migrations/Master/04000002_AddThemeName.cs @@ -0,0 +1,28 @@ +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Oqtane.Databases.Interfaces; +using Oqtane.Migrations.EntityBuilders; +using Oqtane.Repository; + +namespace Oqtane.Migrations.Master +{ + [DbContext(typeof(MasterDBContext))] + [Migration("Master.04.00.00.02")] + public class AddThemeName : MultiDatabaseMigration + { + public AddThemeName(IDatabase database) : base(database) + { + } + + protected override void Up(MigrationBuilder migrationBuilder) + { + var themeEntityBuilder = new ThemeEntityBuilder(migrationBuilder, ActiveDatabase); + themeEntityBuilder.AddStringColumn("Name", 200, true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + // not implemented + } + } +} diff --git a/Oqtane.Server/Repository/ThemeRepository.cs b/Oqtane.Server/Repository/ThemeRepository.cs index 3465bee0..cf1aa1bd 100644 --- a/Oqtane.Server/Repository/ThemeRepository.cs +++ b/Oqtane.Server/Repository/ThemeRepository.cs @@ -12,6 +12,7 @@ using Oqtane.Models; using Oqtane.Shared; using Oqtane.Themes; using System.Reflection.Metadata; +using Oqtane.Migrations.Master; namespace Oqtane.Repository { @@ -125,6 +126,12 @@ namespace Oqtane.Repository } else { + // override user customizable property values + Theme.Name = (!string.IsNullOrEmpty(theme.Name)) ? theme.Name : Theme.Name; + foreach (var themecontrol in Theme.Themes) + { + themecontrol.Name = Theme.Name + " - " + themecontrol.Name; + } // remove theme from list as it is already synced themes.Remove(theme); } @@ -286,7 +293,7 @@ namespace Oqtane.Repository new ThemeControl { TypeName = themeControlType.FullName + ", " + themeControlType.Assembly.GetName().Name, - Name = theme.Name + " - " + ((string.IsNullOrEmpty(themecontrolobject.Name)) ? Utilities.GetTypeNameLastSegment(themeControlType.FullName, 0) : themecontrolobject.Name), + Name = ((string.IsNullOrEmpty(themecontrolobject.Name)) ? Utilities.GetTypeNameLastSegment(themeControlType.FullName, 0) : themecontrolobject.Name), Thumbnail = themecontrolobject.Thumbnail, Panes = themecontrolobject.Panes } diff --git a/Oqtane.Shared/Models/ModuleDefinition.cs b/Oqtane.Shared/Models/ModuleDefinition.cs index b3c3339a..961855a8 100644 --- a/Oqtane.Shared/Models/ModuleDefinition.cs +++ b/Oqtane.Shared/Models/ModuleDefinition.cs @@ -48,7 +48,7 @@ namespace Oqtane.Models public string ModuleDefinitionName { get; set; } /// - /// Nice name to show in admin / edit dialogs. + /// Friendly name to show in UI /// public string Name { get; set; } diff --git a/Oqtane.Shared/Models/Theme.cs b/Oqtane.Shared/Models/Theme.cs index b795e45f..4ff9fe2f 100644 --- a/Oqtane.Shared/Models/Theme.cs +++ b/Oqtane.Shared/Models/Theme.cs @@ -35,10 +35,12 @@ namespace Oqtane.Models /// public string ThemeName { get; set; } - // additional ITheme properties - [NotMapped] + /// + /// Friendly name to show in UI + /// public string Name { get; set; } + // additional ITheme properties [NotMapped] public string Version { get; set; }