Documentation

AssetResolver extends AssetTree
in package

Template asset management class.

Tags
see
TemplateBase
author

Aberdeener

version
2.0.0-pr13
license

MIT

Table of Contents

Constants

BOOTSTRAP  = 'BOOTSTRAP'
BOOTSTRAP_COLORPICKER  = 'BOOTSTRAP_COLORPICKER'
CHART_JS  = 'CHART_JS'
CODEMIRROR  = 'CODEMIRROR'
DATATABLES  = 'DATATABLES'
DROPZONE  = 'DROPZONE'
FOMANTIC_UI  = 'FOMANTIC_UI'
FONT_AWESOME  = 'FONT_AWESOME'
IMAGE_PICKER  = 'IMAGE_PICKER'
JQUERY  = 'JQUERY'
JQUERY_COOKIE  = 'JQUERY_COOKIE'
JQUERY_UI  = 'JQUERY_UI'
MOMENT  = 'MOMENT'
PRISM_DARK  = 'PRISM_DARK'
PRISM_LIGHT  = 'PRISM_LIGHT'
SELECT2  = 'SELECT2'
TINYMCE  = 'TINYMCE'
TINYMCE_SPOILER  = 'TINYMCE_SPOILER'
ASSET_TREE  = [self::FONT_AWESOME => ['css' => ['vendor/@fortawesome/fontawesome-free/css/all.min.css']], self::BOOTSTRAP => ['css' => ['vendor/bootstrap/dist/css/bootstrap.min.css'], 'js' => ['vendor/bootstrap/dist/js/bootstrap.bundle.min.js'], 'after' => [self::JQUERY_UI]], self::BOOTSTRAP_COLORPICKER => ['css' => ['vendor/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css'], 'js' => ['vendor/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.min.js'], 'depends' => [self::BOOTSTRAP]], self::CHART_JS => ['js' => ['vendor/chart.js/dist/Chart.min.js'], 'depends' => [self::JQUERY]], self::CODEMIRROR => ['css' => ['vendor/codemirror/lib/codemirror.css'], 'js' => ['vendor/codemirror/lib/codemirror.js', 'vendor/codemirror/mode/smarty/smarty.js', 'vendor/codemirror/mode/javascript/javascript.js', 'vendor/codemirror/mode/css/css.js', 'vendor/codemirror/mode/htmlmixed/htmlmixed.js']], self::DATATABLES => ['css' => ['vendor/datatables.net-bs4/css/dataTables.bootstrap4.css'], 'js' => ['vendor/datatables.net/js/jquery.dataTables.min.js', 'vendor/datatables.net-bs4/js/dataTables.bootstrap4.min.js'], 'depends' => [self::JQUERY]], self::DROPZONE => ['css' => ['vendor/dropzone/dist/min/dropzone.min.css'], 'js' => ['vendor/dropzone/dist/min/dropzone.min.js']], self::IMAGE_PICKER => ['css' => ['vendor/image-picker/image-picker/image-picker.css'], 'js' => ['vendor/image-picker/image-picker/image-picker.min.js'], 'depends' => [self::JQUERY]], self::JQUERY => ['js' => ['vendor/jquery/dist/jquery.min.js']], self::JQUERY_UI => ['js' => ['vendor/jquery-ui-dist/jquery-ui.min.js'], 'depends' => [self::JQUERY]], self::JQUERY_COOKIE => ['js' => ['vendor/jquery.cookie/jquery.cookie.js'], 'depends' => [self::JQUERY]], self::MOMENT => ['js' => ['vendor/moment/min/moment.min.js']], self::PRISM_DARK => ['js' => ['plugins/prism/prism.js'], 'css' => ['plugins/prism/prism_dark.css']], self::PRISM_LIGHT => ['js' => ['plugins/prism/prism.js'], 'css' => ['plugins/prism/prism_light_default.css']], self::SELECT2 => ['js' => ['vendor/select2/dist/js/select2.min.js'], 'css' => ['vendor/select2/dist/css/select2.min.css'], 'depends' => [self::JQUERY]], self::TINYMCE => ['js' => ['vendor/tinymce/tinymce.min.js'], 'depends' => [ // Not included here: Prism light/dark, since we cannot // check dark_mode const here in PHP 8.0+, // it is added in AssetResolver instead. self::TINYMCE_SPOILER, ]], self::TINYMCE_SPOILER => ['css' => ['plugins/tinymce_spoiler/css/spoiler.css'], 'js' => ['plugins/tinymce_spoiler/js/spoiler.js'], 'depends' => [self::JQUERY]], self::FOMANTIC_UI => ['css' => ['vendor/fomantic-ui/dist/semantic.min.css'], 'js' => ['vendor/fomantic-ui/dist/semantic.min.js'], 'after' => [self::JQUERY]]]

Properties

$_assets  : array<string|int, array<string|int, mixed>>

Methods

compile()  : array<string|int, array<string|int, string>>
Resolve all the assets as an array of CSS file and JS files to add to the template as `link` or `script` elements respectively.
include()  : void
Add assets to be put in the response HTML.
buildPath()  : string
Build an HTML tag for the given asset.
gatherAsset()  : void
Generate URLs for the given asset, and add them to the CSS and JS URL arrays as needed.
validateAsset()  : bool
Validate that an asset name is valid.

Constants

BOOTSTRAP

public string BOOTSTRAP = 'BOOTSTRAP'

Bootstrap bundle v4.5 (CSS + JS)

BOOTSTRAP_COLORPICKER

public string BOOTSTRAP_COLORPICKER = 'BOOTSTRAP_COLORPICKER'

Bootstrap Colorpicker v3.4 (CSS + JS)

CHART_JS

public string CHART_JS = 'CHART_JS'

Chart.js v2.7 (JS)

CODEMIRROR

public string CODEMIRROR = 'CODEMIRROR'

Codemirror (CSS + JS, as well as modes for Smarty, CSS, HTML & JS)

DATATABLES

public string DATATABLES = 'DATATABLES'

DataTables JQuery v1.10 (CSS + JS)

DROPZONE

public string DROPZONE = 'DROPZONE'

Dropzone v5.9 (CSS + JS)

FOMANTIC_UI

public string FOMANTIC_UI = 'FOMANTIC_UI'

Fomantic-UI bundle v2.8 (CSS + JS)

FONT_AWESOME

public string FONT_AWESOME = 'FONT_AWESOME'

Font Awesome v6.1 (CSS)

IMAGE_PICKER

public string IMAGE_PICKER = 'IMAGE_PICKER'

Image-Picker v0.2 (CSS + JS)

JQUERY

public string JQUERY = 'JQUERY'

JQuery v3.5 (JS)

public string JQUERY_COOKIE = 'JQUERY_COOKIE'

JQuery-Cookie v1.4 (JS)

JQUERY_UI

public string JQUERY_UI = 'JQUERY_UI'

JQuery-UI v2.12 (JS)

MOMENT

public string MOMENT = 'MOMENT'

Moment v2.29 (JS)

PRISM_DARK

public string PRISM_DARK = 'PRISM_DARK'

PrismJS v1.27 (CSS + JS, and the dark theme)

PRISM_LIGHT

public string PRISM_LIGHT = 'PRISM_LIGHT'

PrismJS v1.27 (CSS + JS, and the Default light theme)

SELECT2

public string SELECT2 = 'SELECT2'

Select2 v4.0 (CSS + JS)

TINYMCE

public string TINYMCE = 'TINYMCE'

TinyMCE v5.10 (JS, and the light/dark theme of Prism, as well as the spoiler plugin)

TINYMCE_SPOILER

public string TINYMCE_SPOILER = 'TINYMCE_SPOILER'

TinyMCE Spoiler plugin. Used individually when posts will be shown but not created (home page for example)

ASSET_TREE

protected mixed ASSET_TREE = [self::FONT_AWESOME => ['css' => ['vendor/@fortawesome/fontawesome-free/css/all.min.css']], self::BOOTSTRAP => ['css' => ['vendor/bootstrap/dist/css/bootstrap.min.css'], 'js' => ['vendor/bootstrap/dist/js/bootstrap.bundle.min.js'], 'after' => [self::JQUERY_UI]], self::BOOTSTRAP_COLORPICKER => ['css' => ['vendor/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css'], 'js' => ['vendor/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.min.js'], 'depends' => [self::BOOTSTRAP]], self::CHART_JS => ['js' => ['vendor/chart.js/dist/Chart.min.js'], 'depends' => [self::JQUERY]], self::CODEMIRROR => ['css' => ['vendor/codemirror/lib/codemirror.css'], 'js' => ['vendor/codemirror/lib/codemirror.js', 'vendor/codemirror/mode/smarty/smarty.js', 'vendor/codemirror/mode/javascript/javascript.js', 'vendor/codemirror/mode/css/css.js', 'vendor/codemirror/mode/htmlmixed/htmlmixed.js']], self::DATATABLES => ['css' => ['vendor/datatables.net-bs4/css/dataTables.bootstrap4.css'], 'js' => ['vendor/datatables.net/js/jquery.dataTables.min.js', 'vendor/datatables.net-bs4/js/dataTables.bootstrap4.min.js'], 'depends' => [self::JQUERY]], self::DROPZONE => ['css' => ['vendor/dropzone/dist/min/dropzone.min.css'], 'js' => ['vendor/dropzone/dist/min/dropzone.min.js']], self::IMAGE_PICKER => ['css' => ['vendor/image-picker/image-picker/image-picker.css'], 'js' => ['vendor/image-picker/image-picker/image-picker.min.js'], 'depends' => [self::JQUERY]], self::JQUERY => ['js' => ['vendor/jquery/dist/jquery.min.js']], self::JQUERY_UI => ['js' => ['vendor/jquery-ui-dist/jquery-ui.min.js'], 'depends' => [self::JQUERY]], self::JQUERY_COOKIE => ['js' => ['vendor/jquery.cookie/jquery.cookie.js'], 'depends' => [self::JQUERY]], self::MOMENT => ['js' => ['vendor/moment/min/moment.min.js']], self::PRISM_DARK => ['js' => ['plugins/prism/prism.js'], 'css' => ['plugins/prism/prism_dark.css']], self::PRISM_LIGHT => ['js' => ['plugins/prism/prism.js'], 'css' => ['plugins/prism/prism_light_default.css']], self::SELECT2 => ['js' => ['vendor/select2/dist/js/select2.min.js'], 'css' => ['vendor/select2/dist/css/select2.min.css'], 'depends' => [self::JQUERY]], self::TINYMCE => ['js' => ['vendor/tinymce/tinymce.min.js'], 'depends' => [ // Not included here: Prism light/dark, since we cannot // check dark_mode const here in PHP 8.0+, // it is added in AssetResolver instead. self::TINYMCE_SPOILER, ]], self::TINYMCE_SPOILER => ['css' => ['plugins/tinymce_spoiler/css/spoiler.css'], 'js' => ['plugins/tinymce_spoiler/js/spoiler.js'], 'depends' => [self::JQUERY]], self::FOMANTIC_UI => ['css' => ['vendor/fomantic-ui/dist/semantic.min.css'], 'js' => ['vendor/fomantic-ui/dist/semantic.min.js'], 'after' => [self::JQUERY]]]

Tree of all available assets, with their applicable CSS/JS files. In the case an asset depends on other assets within the tree, they are defined as "depends".

Properties

$_assets

private array<string|int, array<string|int, mixed>> $_assets = []

Array of assets currently resolved.

Methods

compile()

Resolve all the assets as an array of CSS file and JS files to add to the template as `link` or `script` elements respectively.

public compile() : array<string|int, array<string|int, string>>
Return values
array<string|int, array<string|int, string>> —

The resolved assets ready to be added to the template.

include()

Add assets to be put in the response HTML.

public include(string|array<string|int, string> $assets) : void
Parameters
$assets : string|array<string|int, string>

The asset(s) to resolve and add. Must be a constant from the AssetTree class.

buildPath()

Build an HTML tag for the given asset.

private buildPath(string $file, string $type) : string
Parameters
$file : string

The file to build the path for.

$type : string

The type of the file, either 'css' or 'js'

Return values
string —

Script or Link HTML tag with a URL to the asset.

gatherAsset()

Generate URLs for the given asset, and add them to the CSS and JS URL arrays as needed.

private gatherAsset(string $name, array<string|int, mixed> $asset, array<string|int, mixed> &$css, array<string|int, mixed> &$js) : void

This will also resolve and gather dependencies for the asset if applicable.

Parameters
$name : string

The name of the asset.

$asset : array<string|int, mixed>

The asset to gather.

$css : array<string|int, mixed>

Array of CSS assets already resolved to add to.

$js : array<string|int, mixed>

Array of JS assets already resolved to add to.

validateAsset()

Validate that an asset name is valid.

private validateAsset(string $assetName[, bool $throw = true ]) : bool

This checks that it exists in the asset tree, and that it has not already been resolved.

Parameters
$assetName : string

The asset name to validate.

$throw : bool = true
Tags
throws
InvalidArgumentException

If the asset name is invalid or if it has already been resolved.

Return values
bool —

False if the asset name is invalid, true otherwise.


        
On this page

Search results