diff --git a/Oqtane.Client/Modules/Admin/Roles/Add.razor b/Oqtane.Client/Modules/Admin/Roles/Add.razor index 2ade1692..80552c4c 100644 --- a/Oqtane.Client/Modules/Admin/Roles/Add.razor +++ b/Oqtane.Client/Modules/Admin/Roles/Add.razor @@ -12,7 +12,7 @@ - + @@ -20,7 +20,7 @@ - + diff --git a/Oqtane.Client/Modules/Admin/Roles/Edit.razor b/Oqtane.Client/Modules/Admin/Roles/Edit.razor index cde5ef5b..9126fd57 100644 --- a/Oqtane.Client/Modules/Admin/Roles/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Roles/Edit.razor @@ -12,7 +12,7 @@ - + @@ -20,7 +20,7 @@ - + diff --git a/Oqtane.Server/Infrastructure/DatabaseManager.cs b/Oqtane.Server/Infrastructure/DatabaseManager.cs index 0729761d..44fdbcb1 100644 --- a/Oqtane.Server/Infrastructure/DatabaseManager.cs +++ b/Oqtane.Server/Infrastructure/DatabaseManager.cs @@ -516,6 +516,12 @@ namespace Oqtane.Infrastructure } if (string.IsNullOrEmpty(result.Message) && moduleDefinition.Version != versions[versions.Length - 1]) { + // get module definition from database to retain user customizable property values + var moduledef = db.ModuleDefinition.AsNoTracking().FirstOrDefault(item => item.ModuleDefinitionId == moduleDefinition.ModuleDefinitionId); + moduleDefinition.Name = moduledef.Name; + moduleDefinition.Description = moduledef.Description; + moduleDefinition.Categories = moduledef.Categories; + // update version moduleDefinition.Version = versions[versions.Length - 1]; db.Entry(moduleDefinition).State = EntityState.Modified; db.SaveChanges(); diff --git a/Oqtane.Server/Repository/Interfaces/IModuleDefinitionRepository.cs b/Oqtane.Server/Repository/Interfaces/IModuleDefinitionRepository.cs index 48de4c8a..81b31b50 100644 --- a/Oqtane.Server/Repository/Interfaces/IModuleDefinitionRepository.cs +++ b/Oqtane.Server/Repository/Interfaces/IModuleDefinitionRepository.cs @@ -6,8 +6,9 @@ namespace Oqtane.Repository public interface IModuleDefinitionRepository { IEnumerable GetModuleDefinitions(); - IEnumerable GetModuleDefinitions(int sideId); - ModuleDefinition GetModuleDefinition(int moduleDefinitionId, int sideId); + IEnumerable GetModuleDefinitions(int siteId); + ModuleDefinition GetModuleDefinition(int moduleDefinitionId, int siteId); + ModuleDefinition GetModuleDefinition(int moduleDefinitionId, bool tracking); void UpdateModuleDefinition(ModuleDefinition moduleDefinition); void DeleteModuleDefinition(int moduleDefinitionId); } diff --git a/Oqtane.Server/Repository/ModuleDefinitionRepository.cs b/Oqtane.Server/Repository/ModuleDefinitionRepository.cs index 33ae7cd5..5ec1fbb4 100644 --- a/Oqtane.Server/Repository/ModuleDefinitionRepository.cs +++ b/Oqtane.Server/Repository/ModuleDefinitionRepository.cs @@ -42,6 +42,24 @@ namespace Oqtane.Repository return moduledefinitions.Find(item => item.ModuleDefinitionId == moduleDefinitionId); } + public ModuleDefinition GetModuleDefinition(int moduleDefinitionId, bool tracking) + { + ModuleDefinition moduledefinition; + if (tracking) + { + moduledefinition = _db.ModuleDefinition.Find(moduleDefinitionId); + } + else + { + moduledefinition = _db.ModuleDefinition.AsNoTracking().FirstOrDefault(item => item.ModuleDefinitionId == moduleDefinitionId); + } + if (moduledefinition != null) + { + moduledefinition.Permissions = _permissions.GetPermissionString(EntityNames.ModuleDefinition, moduledefinition.ModuleDefinitionId); + } + return moduledefinition; + } + public void UpdateModuleDefinition(ModuleDefinition moduleDefinition) { _db.Entry(moduleDefinition).State = EntityState.Modified; @@ -133,30 +151,15 @@ namespace Oqtane.Repository moduledef = new ModuleDefinition { ModuleDefinitionName = moduledefinition.ModuleDefinitionName }; _db.ModuleDefinition.Add(moduledef); _db.SaveChanges(); + moduledefinition.Version = ""; } else { - // existing module definition - if (!string.IsNullOrEmpty(moduledef.Name)) - { - moduledefinition.Name = moduledef.Name; - } - - if (!string.IsNullOrEmpty(moduledef.Description)) - { - moduledefinition.Description = moduledef.Description; - } - - if (!string.IsNullOrEmpty(moduledef.Categories)) - { - moduledefinition.Categories = moduledef.Categories; - } - - if (!string.IsNullOrEmpty(moduledef.Version)) - { - moduledefinition.Version = moduledef.Version; - } - + // override user customizable property values + moduledefinition.Name = (!string.IsNullOrEmpty(moduledef.Name)) ? moduledef.Name : moduledefinition.Name; + moduledefinition.Description = (!string.IsNullOrEmpty(moduledef.Description)) ? moduledef.Description : moduledefinition.Description; + moduledefinition.Categories = (!string.IsNullOrEmpty(moduledef.Categories)) ? moduledef.Categories : moduledefinition.Categories; + moduledefinition.Version = (!string.IsNullOrEmpty(moduledef.Version)) ? moduledef.Version : moduledefinition.Version; // remove module definition from list as it is already synced moduledefs.Remove(moduledef); } @@ -236,7 +239,6 @@ namespace Oqtane.Repository // set internal properties moduledefinition.ModuleDefinitionName = qualifiedModuleType; - moduledefinition.Version = ""; // will be populated from database moduledefinition.ControlTypeTemplate = modulecontroltype.Namespace + "." + Constants.ActionToken + ", " + modulecontroltype.Assembly.GetName().Name; moduledefinition.AssemblyName = assembly.GetName().Name; if (string.IsNullOrEmpty(moduledefinition.PackageName))