Merge pull request #1522 from sbwalker/dev

Fix issue where module definition version was not being loaded correctly on startup. Also user customizable module definition properties were being overwritten on upgrade.
This commit is contained in:
Shaun Walker 2021-06-28 10:17:40 -04:00 committed by GitHub
commit 91eeeaf064
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 37 additions and 28 deletions

View File

@ -12,7 +12,7 @@
<Label For="name" HelpText="Name Of The Role" ResourceKey="Name">Name:</Label> <Label For="name" HelpText="Name Of The Role" ResourceKey="Name">Name:</Label>
</td> </td>
<td> <td>
<input id="name" class="form-control" @bind="@_name" required /> <input id="name" class="form-control" @bind="@_name" maxlength="256" required />
</td> </td>
</tr> </tr>
<tr> <tr>
@ -20,7 +20,7 @@
<Label For="description" HelpText="A Short Description Of The Role Which Describes Its Purpose" ResourceKey="Description">Description:</Label> <Label For="description" HelpText="A Short Description Of The Role Which Describes Its Purpose" ResourceKey="Description">Description:</Label>
</td> </td>
<td> <td>
<textarea id="description" class="form-control" @bind="@_description" rows="5" required></textarea> <textarea id="description" class="form-control" @bind="@_description" rows="5" maxlength="256" required></textarea>
</td> </td>
</tr> </tr>
<tr> <tr>

View File

@ -12,7 +12,7 @@
<Label For="name" HelpText="Name Of The Role" ResourceKey="Name">Name:</Label> <Label For="name" HelpText="Name Of The Role" ResourceKey="Name">Name:</Label>
</td> </td>
<td> <td>
<input id="name" class="form-control" @bind="@_name" required /> <input id="name" class="form-control" @bind="@_name" maxlength="256" required />
</td> </td>
</tr> </tr>
<tr> <tr>
@ -20,7 +20,7 @@
<Label For="description" HelpText="A Short Description Of The Role Which Describes Its Purpose" ResourceKey="Description">Description:</Label> <Label For="description" HelpText="A Short Description Of The Role Which Describes Its Purpose" ResourceKey="Description">Description:</Label>
</td> </td>
<td> <td>
<textarea id="description" class="form-control" @bind="@_description" rows="5" required></textarea> <textarea id="description" class="form-control" @bind="@_description" rows="5" maxlength="256" required></textarea>
</td> </td>
</tr> </tr>
<tr> <tr>

View File

@ -516,6 +516,12 @@ namespace Oqtane.Infrastructure
} }
if (string.IsNullOrEmpty(result.Message) && moduleDefinition.Version != versions[versions.Length - 1]) 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]; moduleDefinition.Version = versions[versions.Length - 1];
db.Entry(moduleDefinition).State = EntityState.Modified; db.Entry(moduleDefinition).State = EntityState.Modified;
db.SaveChanges(); db.SaveChanges();

View File

@ -6,8 +6,9 @@ namespace Oqtane.Repository
public interface IModuleDefinitionRepository public interface IModuleDefinitionRepository
{ {
IEnumerable<ModuleDefinition> GetModuleDefinitions(); IEnumerable<ModuleDefinition> GetModuleDefinitions();
IEnumerable<ModuleDefinition> GetModuleDefinitions(int sideId); IEnumerable<ModuleDefinition> GetModuleDefinitions(int siteId);
ModuleDefinition GetModuleDefinition(int moduleDefinitionId, int sideId); ModuleDefinition GetModuleDefinition(int moduleDefinitionId, int siteId);
ModuleDefinition GetModuleDefinition(int moduleDefinitionId, bool tracking);
void UpdateModuleDefinition(ModuleDefinition moduleDefinition); void UpdateModuleDefinition(ModuleDefinition moduleDefinition);
void DeleteModuleDefinition(int moduleDefinitionId); void DeleteModuleDefinition(int moduleDefinitionId);
} }

View File

@ -42,6 +42,24 @@ namespace Oqtane.Repository
return moduledefinitions.Find(item => item.ModuleDefinitionId == moduleDefinitionId); 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) public void UpdateModuleDefinition(ModuleDefinition moduleDefinition)
{ {
_db.Entry(moduleDefinition).State = EntityState.Modified; _db.Entry(moduleDefinition).State = EntityState.Modified;
@ -133,30 +151,15 @@ namespace Oqtane.Repository
moduledef = new ModuleDefinition { ModuleDefinitionName = moduledefinition.ModuleDefinitionName }; moduledef = new ModuleDefinition { ModuleDefinitionName = moduledefinition.ModuleDefinitionName };
_db.ModuleDefinition.Add(moduledef); _db.ModuleDefinition.Add(moduledef);
_db.SaveChanges(); _db.SaveChanges();
moduledefinition.Version = "";
} }
else else
{ {
// existing module definition // override user customizable property values
if (!string.IsNullOrEmpty(moduledef.Name)) moduledefinition.Name = (!string.IsNullOrEmpty(moduledef.Name)) ? moduledef.Name : moduledefinition.Name;
{ moduledefinition.Description = (!string.IsNullOrEmpty(moduledef.Description)) ? moduledef.Description : moduledefinition.Description;
moduledefinition.Name = moduledef.Name; moduledefinition.Categories = (!string.IsNullOrEmpty(moduledef.Categories)) ? moduledef.Categories : moduledefinition.Categories;
} moduledefinition.Version = (!string.IsNullOrEmpty(moduledef.Version)) ? moduledef.Version : moduledefinition.Version;
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;
}
// remove module definition from list as it is already synced // remove module definition from list as it is already synced
moduledefs.Remove(moduledef); moduledefs.Remove(moduledef);
} }
@ -236,7 +239,6 @@ namespace Oqtane.Repository
// set internal properties // set internal properties
moduledefinition.ModuleDefinitionName = qualifiedModuleType; moduledefinition.ModuleDefinitionName = qualifiedModuleType;
moduledefinition.Version = ""; // will be populated from database
moduledefinition.ControlTypeTemplate = modulecontroltype.Namespace + "." + Constants.ActionToken + ", " + modulecontroltype.Assembly.GetName().Name; moduledefinition.ControlTypeTemplate = modulecontroltype.Namespace + "." + Constants.ActionToken + ", " + modulecontroltype.Assembly.GetName().Name;
moduledefinition.AssemblyName = assembly.GetName().Name; moduledefinition.AssemblyName = assembly.GetName().Name;
if (string.IsNullOrEmpty(moduledefinition.PackageName)) if (string.IsNullOrEmpty(moduledefinition.PackageName))