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; }