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