mirror of
https://github.com/Sped0n/bridget.git
synced 2026-04-14 10:09:31 -07:00
feat(plugin): add script.html partial template to handle rendering of script tags with various attributes and options
The `script.html` partial template has been added to handle the rendering of script tags with various attributes and options. It supports the following features: - If the `Content` variable is provided, it will be rendered as the content of the script tag. - If the `Source` variable starts with "<script", it will be rendered as safe HTML. - If the `Source` variable is provided and is a local resource, it will be processed as a template and minified if specified. - If the `Fingerprint` variable is provided, the resource will be fingerprinted and the integrity attribute will be set accordingly. - The `Link` variable can be used to specify an external script URL. - The `Esm` variable can be set to true to render the script tag as a module. - The `Crossorigin` variable can be set to true to add the crossorigin attribute. - The `Async` variable can be set to true to add the async attribute. - The `Defer` variable can be set to true to add the defer attribute. - The `Attr` variable can be used to add additional attributes to the script tag. This new partial template provides flexibility and customization options for rendering script tags in the application.
This commit is contained in:
42
layouts/partials/plugin/script.html
Normal file
42
layouts/partials/plugin/script.html
Normal file
@@ -0,0 +1,42 @@
|
||||
{{- if .Content -}}
|
||||
<script type="text/javascript">
|
||||
{{- .Content | safeJS -}}
|
||||
</script>
|
||||
{{- else if strings.HasPrefix .Source "<script" -}}
|
||||
{{- safeHTML .Source -}}
|
||||
{{- else -}}
|
||||
{{- $src := .Source -}}
|
||||
{{- $integrity := .Integrity -}}
|
||||
{{- if $src -}}
|
||||
{{- if (urls.Parse $src).Host | not -}}
|
||||
{{- $resource := resources.Get $src -}}
|
||||
{{- with .Template -}}
|
||||
{{- $resource = $resource | resources.ExecuteAsTemplate . $.Context -}}
|
||||
{{- end -}}
|
||||
{{- if .Minify -}}
|
||||
{{- $resource = $resource | minify -}}
|
||||
{{- end -}}
|
||||
{{- with .Fingerprint -}}
|
||||
{{- $resource = $resource | fingerprint . -}}
|
||||
{{- $integrity = $resource.Data.Integrity -}}
|
||||
{{- end -}}
|
||||
{{- $src = $resource.RelPermalink -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- with .Link -}}
|
||||
{{- $src = . -}}
|
||||
{{- end -}}
|
||||
<script
|
||||
type="{{- if .Esm -}}
|
||||
module
|
||||
{{- else -}}
|
||||
text/javascript
|
||||
{{- end -}}"
|
||||
src="{{ $src }}"
|
||||
{{ if .Crossorigin }}crossorigin="anonymous"{{ end }}{{ with $integrity }}
|
||||
integrity="{{ . }}"
|
||||
{{ end }}{{ if .Async }}async{{ end }}{{ if .Defer }}defer{{ end }}{{ with .Attr }}
|
||||
{{ . | safeHTMLAttr }}
|
||||
{{ end }}
|
||||
></script>
|
||||
{{- end -}}
|
||||
Reference in New Issue
Block a user