SpaceChooserAsset
extends AssetBundle
in package
This base asset bundle class adds some additional properties as well ass default loading behavior for HumHub assets.
Some of the properties will affect settings as jsOptions
or publishOptions
. Note that settings defined
directly within those option arrays will have priority over the settings defined as property.
For example:
public $position = View::POS_HEAD;
will be overwritten by
public $jsOptions = [
'position' => VIEW::POS_END;
]
Production vs Debug
The additional $jsProd
property allows the definition of production assets which will be used in production and
acceptance test environments e.g. for minified scripts and stylesheets. This serves to facilitate development without the need
to rebuild assets while development and also allows a preview of all un-minified/combined assets.
-
jsProd
can be used to define script assets used in production, if not set$js
settings will be used instead -
cssProd
can be used to define stylesheet assets used in production, if not set$css
settings will be used instead -
forceProductionAssets
property can be used while development in order to force production asset usage also in debug mode
The forceCopy
property can be used to set the forceCopy publishOption.
Note: This asset bundle prevents
forceCopy
on production environments due to performance issues, but only if not directly set in publishOptions array
Default script loading behavior
The default script settings are described in the following:
-
defer
script loading is active by default and can be activated by the$defer
property -
async
script loading is not active by default and can be activated by the$async
property -
position
if no jsOption position is set and eitherasync
ordefer
is set (default)View::POS_HEAD
is used
Table of Contents
Properties
- $async : bool
- $basePath : string
- $baseUrl : string
- $css : array<string|int, mixed>
- $cssOptions : array<string|int, mixed>
- $cssProd : mixed
- $defaultDepends : array<string|int, mixed>|false
- $defer : bool
- $depends : mixed
- $forceCopy : bool
- $js : mixed
- $jsOptions : array<string|int, mixed>
- $jsPosition : int
- $jsProd : mixed
- $preload : array<string|int, mixed>
- $publishOptions : array<string|int, mixed>
- $sourcePath : mixed
- $forceProductionAssets : bool
Methods
- __call() : mixed
- Calls the named method which is not a class method.
- __construct() : mixed
- Constructor.
- __get() : mixed
- Returns the value of an object property.
- __isset() : bool
- Checks if a property is set, i.e. defined and not null.
- __set() : mixed
- Sets value of an object property.
- __unset() : mixed
- Sets an object property to null.
- canGetProperty() : bool
- Returns a value indicating whether a property can be read.
- canSetProperty() : bool
- Returns a value indicating whether a property can be set.
- className() : string
- Returns the fully qualified name of this class.
- hasMethod() : bool
- Returns a value indicating whether a method is defined.
- hasProperty() : bool
- Returns a value indicating whether a property is defined.
- init() : mixed
- Initializes the bundle.
- publish() : mixed
- Publishes the asset bundle if its source code is not under Web-accessible directory.
- register() : static
- Registers this asset bundle with a view.
- registerAssetFiles() : mixed
- Registers the CSS and JS files with the given view.
- getJsPosition() : int
- isAsync() : bool
- isDefer() : bool
- useProductionAssets() : bool
Properties
$async
public
bool
$async
= false
if true the $jsOptions['async']
will be activated only if this jsOption is not explicitly set.
$basePath
public
string
$basePath
the Web-accessible directory that contains the asset files in this bundle.
If [[sourcePath]] is set, this property will be overwritten by [[AssetManager]] when it publishes the asset files from [[sourcePath]].
You can use either a directory or an alias of the directory.
$baseUrl
public
string
$baseUrl
the base URL for the relative asset files listed in [[js]] and [[css]].
If [[sourcePath]] is set, this property will be overwritten by [[AssetManager]] when it publishes the asset files from [[sourcePath]].
You can use either a URL or an alias of the URL.
$css
public
array<string|int, mixed>
$css
= []
list of CSS files that this bundle contains. Each CSS file can be specified in one of the three formats as explained in [[js]].
Note that only a forward slash "/" should be used as directory separator.
$cssOptions
public
array<string|int, mixed>
$cssOptions
= []
the options that will be passed to [[View::registerCssFile()]] when registering the CSS files in this bundle.
$cssProd
public
mixed
$cssProd
Tags
$defaultDepends
public
array<string|int, mixed>|false
$defaultDepends
= [\humhub\assets\CoreBundleAsset::class]
default dependencies not required to be mentioned in $depends. Normally only deactivated in some core assets.
$defer
public
bool
$defer
= true
if true (default) the $jsOptions['defer']
will be activated only if this jsOption is not explicitly set.
$depends
public
mixed
$depends
= [\humhub\modules\space\assets\SpaceAsset::class, \humhub\modules\user\assets\UserAsset::class]
$forceCopy
public
bool
$forceCopy
= false
can be used to set $publishOptions['forceCopy']
. This property will be ignored in production environment
$js
public
mixed
$js
= ['js/humhub.space.chooser.js']
$jsOptions
public
array<string|int, mixed>
$jsOptions
= []
the options that will be passed to [[View::registerJsFile()]] when registering the JS files in this bundle.
$jsPosition
public
int
$jsPosition
can be used to set $publishOptions['position']
. This property will only have an affect if the publishOption
is not already set explicitly.
$jsProd
public
mixed
$jsProd
Tags
$preload
public
array<string|int, mixed>
$preload
= []
may contain scripts or stylesheets which should be pre-loaded by a <link rel="preload">
tag
$publishOptions
public
array<string|int, mixed>
$publishOptions
= []
the options to be passed to [[AssetManager::publish()]] when the asset bundle is being published. This property is used only when [[sourcePath]] is set.
$sourcePath
public
mixed
$sourcePath
= '@space/resources'
$forceProductionAssets
protected
static bool
$forceProductionAssets
= false
can be used to force production asset usage while testing
Methods
__call()
Calls the named method which is not a class method.
public
__call(string $name, array<string|int, mixed> $params) : mixed
Do not call this method directly as it is a PHP magic method that will be implicitly called when an unknown method is being invoked.
Parameters
- $name : string
-
the method name
- $params : array<string|int, mixed>
-
method parameters
Tags
Return values
mixed —the method return value
__construct()
Constructor.
public
__construct([array<string|int, mixed> $config = [] ]) : mixed
The default implementation does two things:
- Initializes the object with the given configuration
$config
. - Call [[init()]].
If this method is overridden in a child class, it is recommended that
- the last parameter of the constructor is a configuration array, like
$config
here. - call the parent implementation at the end of the constructor.
Parameters
- $config : array<string|int, mixed> = []
-
name-value pairs that will be used to initialize the object properties
__get()
Returns the value of an object property.
public
__get(string $name) : mixed
Do not call this method directly as it is a PHP magic method that
will be implicitly called when executing $value = $object->property;
.
Parameters
- $name : string
-
the property name
Tags
Return values
mixed —the property value
__isset()
Checks if a property is set, i.e. defined and not null.
public
__isset(string $name) : bool
Do not call this method directly as it is a PHP magic method that
will be implicitly called when executing isset($object->property)
.
Note that if the property is not defined, false will be returned.
Parameters
- $name : string
-
the property name or the event name
Tags
Return values
bool —whether the named property is set (not null).
__set()
Sets value of an object property.
public
__set(string $name, mixed $value) : mixed
Do not call this method directly as it is a PHP magic method that
will be implicitly called when executing $object->property = $value;
.
Parameters
- $name : string
-
the property name or the event name
- $value : mixed
-
the property value
Tags
__unset()
Sets an object property to null.
public
__unset(string $name) : mixed
Do not call this method directly as it is a PHP magic method that
will be implicitly called when executing unset($object->property)
.
Note that if the property is not defined, this method will do nothing. If the property is read-only, it will throw an exception.
Parameters
- $name : string
-
the property name
Tags
canGetProperty()
Returns a value indicating whether a property can be read.
public
canGetProperty(string $name[, bool $checkVars = true ]) : bool
A property is readable if:
- the class has a getter method associated with the specified name (in this case, property name is case-insensitive);
- the class has a member variable with the specified name (when
$checkVars
is true);
Parameters
- $name : string
-
the property name
- $checkVars : bool = true
-
whether to treat member variables as properties
Tags
Return values
bool —whether the property can be read
canSetProperty()
Returns a value indicating whether a property can be set.
public
canSetProperty(string $name[, bool $checkVars = true ]) : bool
A property is writable if:
- the class has a setter method associated with the specified name (in this case, property name is case-insensitive);
- the class has a member variable with the specified name (when
$checkVars
is true);
Parameters
- $name : string
-
the property name
- $checkVars : bool = true
-
whether to treat member variables as properties
Tags
Return values
bool —whether the property can be written
className()
Returns the fully qualified name of this class.
public
static className() : string
Tags
Return values
string —the fully qualified name of this class.
hasMethod()
Returns a value indicating whether a method is defined.
public
hasMethod(string $name) : bool
The default implementation is a call to php function method_exists()
.
You may override this method when you implemented the php magic method __call()
.
Parameters
- $name : string
-
the method name
Return values
bool —whether the method is defined
hasProperty()
Returns a value indicating whether a property is defined.
public
hasProperty(string $name[, bool $checkVars = true ]) : bool
A property is defined if:
- the class has a getter or setter method associated with the specified name (in this case, property name is case-insensitive);
- the class has a member variable with the specified name (when
$checkVars
is true);
Parameters
- $name : string
-
the property name
- $checkVars : bool = true
-
whether to treat member variables as properties
Tags
Return values
bool —whether the property is defined
init()
Initializes the bundle.
public
init() : mixed
Tags
publish()
Publishes the asset bundle if its source code is not under Web-accessible directory.
public
publish(AssetManager $am) : mixed
It will also try to convert non-CSS or JS files (e.g. LESS, Sass) into the corresponding CSS or JS files using [[AssetManager::converter|asset converter]].
Parameters
- $am : AssetManager
-
the asset manager to perform the asset publishing
register()
Registers this asset bundle with a view.
public
static register(View $view) : static
Parameters
- $view : View
-
the view to be registered with
Return values
static —the registered asset bundle instance
registerAssetFiles()
Registers the CSS and JS files with the given view.
public
registerAssetFiles(View $view) : mixed
Parameters
- $view : View
-
the view that the asset files are to be registered with.
getJsPosition()
protected
getJsPosition() : int
Return values
int —determines the $jsOptions['position'] value. By default the position will be View::POS_HEAD
if
the defer
or async
is set. Otherwise View::POS_END
is returned as default if no $this->publishOptions['position']
,
$jsPosition
given.
isAsync()
protected
isAsync() : bool
Return values
bool —whether or not the async
script option is set
isDefer()
protected
isDefer() : bool
Return values
bool —whether or not the defer
script option is set
useProductionAssets()
protected
static useProductionAssets() : bool
Return values
bool —whether or not to use the production assets