Improvements to add support for script type and data-* attributes. Also added Script and Stylesheet classes to simplify Resource declarations.
This commit is contained in:
@ -1,4 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Oqtane.Shared;
|
||||
|
||||
namespace Oqtane.Models
|
||||
@ -27,6 +29,11 @@ namespace Oqtane.Models
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// For Scripts this allows type to be specified - not applicable to Stylesheets
|
||||
/// </summary>
|
||||
public string Type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Integrity checks to increase the security of resources accessed. Especially common in CDN resources.
|
||||
/// </summary>
|
||||
@ -52,11 +59,6 @@ namespace Oqtane.Models
|
||||
/// </summary>
|
||||
public ResourceLocation Location { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// For Scripts this allows type="module" registrations - not applicable to Stylesheets
|
||||
/// </summary>
|
||||
public bool ES6Module { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Allows specification of inline script - not applicable to Stylesheets
|
||||
/// </summary>
|
||||
@ -72,6 +74,11 @@ namespace Oqtane.Models
|
||||
/// </summary>
|
||||
public bool Reload { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Cusotm data-* attributes for scripts - not applicable to Stylesheets
|
||||
/// </summary>
|
||||
public Dictionary<string, string> DataAttributes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The namespace of the component that declared the resource - only used in SiteRouter
|
||||
/// </summary>
|
||||
@ -82,14 +89,22 @@ namespace Oqtane.Models
|
||||
var resource = new Resource();
|
||||
resource.ResourceType = ResourceType;
|
||||
resource.Url = Url;
|
||||
resource.Type = Type;
|
||||
resource.Integrity = Integrity;
|
||||
resource.CrossOrigin = CrossOrigin;
|
||||
resource.Bundle = Bundle;
|
||||
resource.Location = Location;
|
||||
resource.ES6Module = ES6Module;
|
||||
resource.Content = Content;
|
||||
resource.RenderMode = RenderMode;
|
||||
resource.Reload = Reload;
|
||||
resource.DataAttributes = new Dictionary<string, string>();
|
||||
if (DataAttributes != null && DataAttributes.Count > 0)
|
||||
{
|
||||
foreach (var kvp in DataAttributes)
|
||||
{
|
||||
resource.DataAttributes.Add(kvp.Key, kvp.Value);
|
||||
}
|
||||
}
|
||||
resource.Level = level;
|
||||
resource.Namespace = name;
|
||||
return resource;
|
||||
@ -97,5 +112,18 @@ namespace Oqtane.Models
|
||||
|
||||
[Obsolete("ResourceDeclaration is deprecated", false)]
|
||||
public ResourceDeclaration Declaration { get; set; }
|
||||
|
||||
[Obsolete("ES6Module is deprecated. Use Type property instead for scripts.", false)]
|
||||
public bool ES6Module
|
||||
{
|
||||
get => (Type == "module");
|
||||
set
|
||||
{
|
||||
if (value)
|
||||
{
|
||||
Type = "module";
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
53
Oqtane.Shared/Models/Script.cs
Normal file
53
Oqtane.Shared/Models/Script.cs
Normal file
@ -0,0 +1,53 @@
|
||||
using System.Collections.Generic;
|
||||
using Oqtane.Shared;
|
||||
|
||||
namespace Oqtane.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// Script inherits from Resource and offers constructors with parameters specific to Scripts
|
||||
/// </summary>
|
||||
public class Script : Resource
|
||||
{
|
||||
private void SetDefaults()
|
||||
{
|
||||
this.ResourceType = ResourceType.Script;
|
||||
this.Location = ResourceLocation.Body;
|
||||
}
|
||||
|
||||
public Script(string Src)
|
||||
{
|
||||
SetDefaults();
|
||||
this.Url = Src;
|
||||
}
|
||||
|
||||
public Script(string Content, string Type)
|
||||
{
|
||||
SetDefaults();
|
||||
this.Content = Content;
|
||||
this.Type = Type;
|
||||
}
|
||||
|
||||
public Script(string Src, string Integrity, string CrossOrigin)
|
||||
{
|
||||
SetDefaults();
|
||||
this.Url = Src;
|
||||
this.Integrity = Integrity;
|
||||
this.CrossOrigin = CrossOrigin;
|
||||
}
|
||||
|
||||
public Script(string Src, string Integrity, string CrossOrigin, string Type, string Content, ResourceLocation Location, string Bundle, bool Reload, Dictionary<string, string> DataAttributes, string RenderMode)
|
||||
{
|
||||
SetDefaults();
|
||||
this.Url = Src;
|
||||
this.Integrity = Integrity;
|
||||
this.CrossOrigin = CrossOrigin;
|
||||
this.Type = Type;
|
||||
this.Content = Content;
|
||||
this.Location = Location;
|
||||
this.Bundle = Bundle;
|
||||
this.Reload = Reload;
|
||||
this.DataAttributes = DataAttributes;
|
||||
this.RenderMode = RenderMode;
|
||||
}
|
||||
}
|
||||
}
|
30
Oqtane.Shared/Models/Stylesheet.cs
Normal file
30
Oqtane.Shared/Models/Stylesheet.cs
Normal file
@ -0,0 +1,30 @@
|
||||
using Oqtane.Shared;
|
||||
|
||||
namespace Oqtane.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// Stylesheet inherits from Resource and offers constructors with parameters specific to Stylesheets
|
||||
/// </summary>
|
||||
public class Stylesheet : Resource
|
||||
{
|
||||
private void SetDefaults()
|
||||
{
|
||||
this.ResourceType = ResourceType.Stylesheet;
|
||||
this.Location = ResourceLocation.Head;
|
||||
}
|
||||
|
||||
public Stylesheet(string Href)
|
||||
{
|
||||
SetDefaults();
|
||||
this.Url = Href;
|
||||
}
|
||||
|
||||
public Stylesheet(string Href, string Integrity, string CrossOrigin)
|
||||
{
|
||||
SetDefaults();
|
||||
this.Url = Href;
|
||||
this.Integrity = Integrity;
|
||||
this.CrossOrigin = CrossOrigin;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user