improve support for internal module/theme templates

This commit is contained in:
sbwalker
2025-10-14 13:37:39 -04:00
parent 83b56966f4
commit 7cf325f4f6
2 changed files with 66 additions and 48 deletions

View File

@@ -42,6 +42,8 @@
</select> </select>
</div> </div>
</div> </div>
@if (_type == "External")
{
<div class="row mb-1 align-items-center"> <div class="row mb-1 align-items-center">
<Label Class="col-sm-3" For="reference" HelpText="Select a framework reference version" ResourceKey="FrameworkReference">Framework Reference: </Label> <Label Class="col-sm-3" For="reference" HelpText="Select a framework reference version" ResourceKey="FrameworkReference">Framework Reference: </Label>
<div class="col-sm-9"> <div class="col-sm-9">
@@ -66,6 +68,7 @@
</div> </div>
</div> </div>
} }
}
</div> </div>
<button type="button" class="btn btn-success" @onclick="CreateModule">@Localizer["CreateModule"]</button> <button type="button" class="btn btn-success" @onclick="CreateModule">@Localizer["CreateModule"]</button>
<NavLink class="btn btn-secondary" href="@NavigateUrl()">@SharedLocalizer["Cancel"]</NavLink> <NavLink class="btn btn-secondary" href="@NavigateUrl()">@SharedLocalizer["Cancel"]</NavLink>
@@ -80,9 +83,10 @@
private string _description = string.Empty; private string _description = string.Empty;
private List<Template> _templates; private List<Template> _templates;
private string _template = "-"; private string _template = "-";
private string _minversion = "2.0.0";
private string _type = "External";
private string[] _versions; private string[] _versions;
private string _reference = "local"; private string _reference = "local";
private string _minversion = "2.0.0";
private string _location = string.Empty; private string _location = string.Empty;
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host;
@@ -153,7 +157,7 @@
private bool IsValid(string name) private bool IsValid(string name)
{ {
// must contain letters, underscores and digits and first character must be letter or underscore // must contain letters, underscores and digits and first character must be letter or underscore
return !string.IsNullOrEmpty(name) && name.ToLower() != "module" && !name.ToLower().Contains("oqtane") && Regex.IsMatch(name, "^[A-Za-z_][A-Za-z0-9_]*$"); return !string.IsNullOrEmpty(name) && name.ToLower() != "module" && !name.ToLower().Contains("oqtane") && Regex.IsMatch(name, "^[A-Za-z_][A-Za-z0-9_.]*$");
} }
private bool IsValidXML(string description) private bool IsValidXML(string description)
@@ -165,11 +169,16 @@
private void TemplateChanged(ChangeEventArgs e) private void TemplateChanged(ChangeEventArgs e)
{ {
_template = (string)e.Value; _template = (string)e.Value;
_minversion = "2.0.0";
if (_template != "-") if (_template != "-")
{ {
var template = _templates.FirstOrDefault(item => item.Name == _template); var template = _templates.FirstOrDefault(item => item.Name == _template);
_minversion = template.Version; _minversion = template.Version;
_type = template.Type;
}
else
{
_minversion = "2.0.0";
_type = "External";
} }
GetLocation(); GetLocation();
} }

View File

@@ -36,6 +36,8 @@
</select> </select>
</div> </div>
</div> </div>
@if (_type == "External")
{
<div class="row mb-1 align-items-center"> <div class="row mb-1 align-items-center">
<Label Class="col-sm-3" For="reference" HelpText="Select a framework reference version" ResourceKey="FrameworkReference">Framework Reference: </Label> <Label Class="col-sm-3" For="reference" HelpText="Select a framework reference version" ResourceKey="FrameworkReference">Framework Reference: </Label>
<div class="col-sm-9"> <div class="col-sm-9">
@@ -60,6 +62,7 @@
</div> </div>
</div> </div>
} }
}
</div> </div>
<br /> <br />
<button type="button" class="btn btn-success" @onclick="CreateTheme">@Localizer["Theme.Create"]</button> <button type="button" class="btn btn-success" @onclick="CreateTheme">@Localizer["Theme.Create"]</button>
@@ -71,9 +74,10 @@
private string _theme = string.Empty; private string _theme = string.Empty;
private List<Template> _templates; private List<Template> _templates;
private string _template = "-"; private string _template = "-";
private string _minversion = "2.0.0";
private string _type = "External";
private string[] _versions; private string[] _versions;
private string _reference = "local"; private string _reference = "local";
private string _minversion = "2.0.0";
private string _location = string.Empty; private string _location = string.Empty;
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host; public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host;
@@ -125,17 +129,22 @@
private bool IsValid(string name) private bool IsValid(string name)
{ {
// must contain letters, underscores and digits and first character must be letter or underscore // must contain letters, underscores and digits and first character must be letter or underscore
return !string.IsNullOrEmpty(name) && name.ToLower() != "theme" && !name.ToLower().Contains("oqtane") && Regex.IsMatch(name, "^[A-Za-z_][A-Za-z0-9_]*$"); return !string.IsNullOrEmpty(name) && name.ToLower() != "theme" && !name.ToLower().Contains("oqtane") && Regex.IsMatch(name, "^[A-Za-z_][A-Za-z0-9_.]*$");
} }
private void TemplateChanged(ChangeEventArgs e) private void TemplateChanged(ChangeEventArgs e)
{ {
_template = (string)e.Value; _template = (string)e.Value;
_minversion = "2.0.0";
if (_template != "-") if (_template != "-")
{ {
var template = _templates.FirstOrDefault(item => item.Name == _template); var template = _templates.FirstOrDefault(item => item.Name == _template);
_minversion = template.Version; _minversion = template.Version;
_type = template.Type;
}
else
{
_minversion = "2.0.0";
_type = "External";
} }
GetLocation(); GetLocation();
} }