MediaWiki REL1_34
ResourceLoaderLessVarFileModule Class Reference

Module augmented with context-specific LESS variables. More...

Inheritance diagram for ResourceLoaderLessVarFileModule:
Collaboration diagram for ResourceLoaderLessVarFileModule:

Public Member Functions

 __construct ( $options=[], $localBasePath=null, $remoteBasePath=null)
 Constructs a new module from an options array.
Parameters
array$optionsList of options; if not given or empty, an empty module will be constructed
string | null$localBasePathBase path to prepend to all local paths in $options. Defaults to $IP
string | null$remoteBasePathBase path to prepend to all remote paths in $options. Defaults to $wgResourceBasePath

Below is a description for the $options array:

Exceptions
InvalidArgumentException
Construction options:
[
// Base path to prepend to all local paths in $options. Defaults to $IP
'localBasePath' => [base path],
// Base path to prepend to all remote paths in $options. Defaults to $wgResourceBasePath
'remoteBasePath' => [base path],
// Equivalent of remoteBasePath, but relative to $wgExtensionAssetsPath
'remoteExtPath' => [base path],
// Equivalent of remoteBasePath, but relative to $wgStylePath
'remoteSkinPath' => [base path],
// Scripts to always include (cannot be set if 'packageFiles' is also set, see below)
'scripts' => [file path string or array of file path strings],
// Scripts to include in specific language contexts
'languageScripts' => [
[language code] => [file path string or array of file path strings],
],
// Scripts to include in specific skin contexts
'skinScripts' => [
[skin name] => [file path string or array of file path strings],
],
// Scripts to include in debug contexts
'debugScripts' => [file path string or array of file path strings],
// For package modules: files to be made available for internal require() do not
// need to have 'type' defined; it will be inferred from the file name extension
// if omitted. 'config' can only be used when 'type' is 'data'; the variables are
// resolved with Config::get(). The first entry in 'packageFiles' is always the
// module entry point. If 'packageFiles' is set, 'scripts' cannot also be set.
'packageFiles' => [
[file path string], // or:
[ 'name' => [file name], 'file' => [file path], 'type' => 'script'|'data' ], // or:
[ 'name' => [name], 'content' => [string], 'type' => 'script'|'data' ], // or:
[ 'name' => [name], 'callback' => [callable], 'type' => 'script'|'data' ],
[ 'name' => [name], 'config' => [ [config var name], ... ], 'type' => 'data' ],
[ 'name' => [name], 'config' => [ [JS name] => [PHP name] ], 'type' => 'data' ],
],
// Modules which must be loaded before this module
'dependencies' => [module name string or array of module name strings],
'templates' => [
[template alias with file.ext] => [file path to a template file],
],
// Styles to always load
'styles' => [file path string or array of file path strings],
// Styles to include in specific skin contexts
'skinStyles' => [
[skin name] => [file path string or array of file path strings],
],
// Messages to always load
'messages' => [array of message key strings],
// Group which this module should be loaded together with
'group' => [group name string],
// Function that, if it returns true, makes the loader skip this module.
// The file must contain valid JavaScript for execution in a private function.
// The file must not contain the "function () {" and "}" wrapper though.
'skipFunction' => [file path]
]

 
 getMessages ()
 Gets list of message keys used by this module.
Returns
array List of message keys

 
- Public Member Functions inherited from ResourceLoaderFileModule
 enableModuleContentVersion ()
 Disable module content versioning.
 
 getAllStyleFiles ()
 Returns all style files and all skin style files used by this module.
 
 getDefinitionSummary (ResourceLoaderContext $context)
 Get the definition summary for this module.
 
 getDependencies (ResourceLoaderContext $context=null)
 Gets list of names of modules this module depends on.
 
 getFlip (ResourceLoaderContext $context)
 Get whether CSS for this module should be flipped.
 
 getGroup ()
 Gets the name of the group this module should be loaded in.
 
 getPackageFiles (ResourceLoaderContext $context)
 Resolves the package files defintion and generates the content of each package file.
 
 getScript (ResourceLoaderContext $context)
 Gets all scripts for a given context concatenated together.
 
 getScriptURLsForDebug (ResourceLoaderContext $context)
 
 getSkipFunction ()
 Get the skip function.
 
 getStyleFiles (ResourceLoaderContext $context)
 Get a list of file paths for all styles in this module, in order of proper inclusion.
 
 getStyles (ResourceLoaderContext $context)
 Get all styles for a given context.
 
 getStyleSheetLang ( $path)
 Infer the stylesheet language from a stylesheet file path.
 
 getStyleURLsForDebug (ResourceLoaderContext $context)
 
 getTargets ()
 Get target(s) for the module, eg ['desktop'] or ['desktop', 'mobile'].
 
 getTemplates ()
 Takes named templates by the module and returns an array mapping.
 
 getType ()
 Get the module's load type.
 
 readStyleFiles (array $styles, $flip, ResourceLoaderContext $context)
 Get the contents of a list of CSS files.
 
 supportsURLLoading ()
 
- Public Member Functions inherited from ResourceLoaderModule
 getConfig ()
 
 getDeprecationInformation (ResourceLoaderContext $context=null)
 Get JS representing deprecation information for the current module if available.
 
 getHeaders (ResourceLoaderContext $context)
 Get headers to send as part of a module web response.
 
 getModuleContent (ResourceLoaderContext $context)
 Get an array of this module's resources.
 
 getName ()
 Get this module's name.
 
 getOrigin ()
 Get this module's origin.
 
 getSource ()
 Get the source of this module.
 
 getVersionHash (ResourceLoaderContext $context)
 Get a string identifying the current version of this module in a given context.
 
 isKnownEmpty (ResourceLoaderContext $context)
 Check whether this module is known to be empty.
 
 setConfig (Config $config)
 
 setFileDependencies (ResourceLoaderContext $context, $files)
 Set in-object cache for file dependencies.
 
 setLogger (LoggerInterface $logger)
 
 setMessageBlob ( $blob, $lang)
 Set in-object cache for message blobs.
 
 setName ( $name)
 Set this module's name.
 
 shouldEmbedModule (ResourceLoaderContext $context)
 Check whether this module should be embeded rather than linked.
 

Protected Member Functions

 excludeMessagesFromBlob ( $blob, $exclusions)
 Exclude a set of messages from a JSON string representation.
 
 getLessVars (ResourceLoaderContext $context)
 Get language-specific LESS variables for this module.
 
 getMessageBlob (ResourceLoaderContext $context)
 Get the hash of the message blob.
Since
1.27
Parameters
ResourceLoaderContext$context
Returns
string|null JSON blob or null if module has no messages

 
- Protected Member Functions inherited from ResourceLoaderFileModule
 compileLessFile ( $fileName, ResourceLoaderContext $context)
 Compile a LESS file into CSS.
 
 getAllSkinStyleFiles ()
 Gets a list of file paths for all skin style files in the module, for all available skins.
 
 getLocalPath ( $path)
 
 getPath ( $path)
 
 getRemotePath ( $path)
 
 getSkinStyleFiles ( $skinName)
 Gets a list of file paths for all skin styles in the module used by the skin.
 
 readStyleFile ( $path, $flip, ResourceLoaderContext $context)
 Reads a style file.
 
 stripBom ( $input)
 Takes an input string and removes the UTF-8 BOM character if present.
 
- Protected Member Functions inherited from ResourceLoaderModule
 buildContent (ResourceLoaderContext $context)
 Bundle all resources attached to this module into an array.
 
 getFileDependencies (ResourceLoaderContext $context)
 Get the files this module depends on indirectly for a given skin.
 
 getLogger ()
 
 getPreloadLinks (ResourceLoaderContext $context)
 Get a list of resources that web browsers may preload.
 
 saveFileDependencies (ResourceLoaderContext $context, $localFileRefs)
 Set the files this module depends on indirectly for a given skin.
 
 validateScriptFile ( $fileName, $contents)
 Validate a given script file; if valid returns the original source.
 

Protected Attributes

 $lessVariables = []
 
- Protected Attributes inherited from ResourceLoaderFileModule
bool $debugRaw = true
 Link to raw files in debug mode.
 
array $debugScripts = []
 List of paths to JavaScript files to include in debug mode.
 
array $dependencies = []
 List of modules this module depends on.
 
string $group
 Name of group to load this module in.
 
bool $hasGeneratedStyles = false
 Whether getStyleURLsForDebug should return raw file paths, or return load.php urls.
 
array $languageScripts = []
 List of JavaScript files to include when using a specific language.
 
string $localBasePath = ''
 Local base path, see __construct()
 
array $localFileRefs = []
 Place where readStyleFile() tracks file dependencies.
 
array $messages = []
 List of message keys used by this module.
 
array $missingLocalFileRefs = []
 Place where readStyleFile() tracks file dependencies for non-existent files.
 
bool $noflip = false
 Whether CSSJanus flipping should be skipped for this module.
 
array $packageFiles = null
 List of packaged files to make available through require()
 
string $remoteBasePath = ''
 Remote base path, see __construct()
 
array $scripts = []
 List of paths to JavaScript files to always include.
 
array $skinScripts = []
 List of JavaScript files to include when using a specific skin.
 
array $skinStyles = []
 List of paths to CSS files to include when using specific skins.
 
string $skipFunction = null
 File name containing the body of the skip function.
 
array $styles = []
 List of paths to CSS files to always include.
 
 $targets = [ 'desktop' ]
 
array $templates = []
 Saves a list of the templates named by the modules.
 
- Protected Attributes inherited from ResourceLoaderModule
Config $config
 
array $contents = []
 Map of (context hash => cached module content)
 
string bool $deprecated = false
 Deprecation string or true if deprecated; false otherwise.
 
array $fileDeps = []
 Map of (variant => indirect file dependencies)
 
LoggerInterface $logger
 
array $msgBlobs = []
 Map of (language => in-object cache for message blob)
 
string null $name = null
 Module name.
 
int $origin = self::ORIGIN_CORE_SITEWIDE
 Script and style modules form a hierarchy of trustworthiness, with core modules like skins and jQuery as most trustworthy, and user scripts as least trustworthy.
 
string[] $targets = [ 'desktop' ]
 What client platforms the module targets (e.g.
 
array $versionHash = []
 Map of (context hash => cached module version hash)
 

Static Private Member Functions

static wrapAndEscapeMessage ( $msg)
 Takes a message and wraps it in quotes for compatibility with LESS parser (ModifyVars) method so that the variable can be loaded and made available to stylesheets.
 

Additional Inherited Members

- Static Public Member Functions inherited from ResourceLoaderFileModule
static extractBasePaths ( $options=[], $localBasePath=null, $remoteBasePath=null)
 Extract a pair of local and remote base paths from module definition information.
 
static getPackageFileType ( $path)
 Infer the file type from a package file path.
 
- Static Public Member Functions inherited from ResourceLoaderModule
static expandRelativePaths (array $filePaths)
 Expand directories relative to $IP.
 
static getRelativePaths (array $filePaths)
 Make file paths relative to MediaWiki directory.
 
static getVary (ResourceLoaderContext $context)
 Get vary string.
 
- Static Protected Member Functions inherited from ResourceLoaderFileModule
static collateFilePathListByOption (array $list, $option, $default)
 Collates file paths by option (where provided).
 
static tryForKey (array $list, $key, $fallback=null)
 Get a list of element that match a key, optionally using a fallback key.
 
- Static Protected Member Functions inherited from ResourceLoaderModule
static javaScriptParser ()
 
static safeFileHash ( $filePath)
 Compute a non-cryptographic string hash of a file's contents.
 
static safeFilemtime ( $filePath)
 Safe version of filemtime(), which doesn't throw a PHP warning if the file doesn't exist.
 

Detailed Description

Module augmented with context-specific LESS variables.

Since
1.32

Definition at line 27 of file ResourceLoaderLessVarFileModule.php.

Constructor & Destructor Documentation

◆ __construct()

ResourceLoaderLessVarFileModule::__construct (   $options = [],
  $localBasePath = null,
  $remoteBasePath = null 
)

Constructs a new module from an options array.

Parameters
array$optionsList of options; if not given or empty, an empty module will be constructed
string | null$localBasePathBase path to prepend to all local paths in $options. Defaults to $IP
string | null$remoteBasePathBase path to prepend to all remote paths in $options. Defaults to $wgResourceBasePath

Below is a description for the $options array:

Exceptions
InvalidArgumentException
Construction options:
[
// Base path to prepend to all local paths in $options. Defaults to $IP
'localBasePath' => [base path],
// Base path to prepend to all remote paths in $options. Defaults to $wgResourceBasePath
'remoteBasePath' => [base path],
// Equivalent of remoteBasePath, but relative to $wgExtensionAssetsPath
'remoteExtPath' => [base path],
// Equivalent of remoteBasePath, but relative to $wgStylePath
'remoteSkinPath' => [base path],
// Scripts to always include (cannot be set if 'packageFiles' is also set, see below)
'scripts' => [file path string or array of file path strings],
// Scripts to include in specific language contexts
'languageScripts' => [
[language code] => [file path string or array of file path strings],
],
// Scripts to include in specific skin contexts
'skinScripts' => [
[skin name] => [file path string or array of file path strings],
],
// Scripts to include in debug contexts
'debugScripts' => [file path string or array of file path strings],
// For package modules: files to be made available for internal require() do not
// need to have 'type' defined; it will be inferred from the file name extension
// if omitted. 'config' can only be used when 'type' is 'data'; the variables are
// resolved with Config::get(). The first entry in 'packageFiles' is always the
// module entry point. If 'packageFiles' is set, 'scripts' cannot also be set.
'packageFiles' => [
[file path string], // or:
[ 'name' => [file name], 'file' => [file path], 'type' => 'script'|'data' ], // or:
[ 'name' => [name], 'content' => [string], 'type' => 'script'|'data' ], // or:
[ 'name' => [name], 'callback' => [callable], 'type' => 'script'|'data' ],
[ 'name' => [name], 'config' => [ [config var name], ... ], 'type' => 'data' ],
[ 'name' => [name], 'config' => [ [JS name] => [PHP name] ], 'type' => 'data' ],
],
// Modules which must be loaded before this module
'dependencies' => [module name string or array of module name strings],
'templates' => [
[template alias with file.ext] => [file path to a template file],
],
// Styles to always load
'styles' => [file path string or array of file path strings],
// Styles to include in specific skin contexts
'skinStyles' => [
[skin name] => [file path string or array of file path strings],
],
// Messages to always load
'messages' => [array of message key strings],
// Group which this module should be loaded together with
'group' => [group name string],
// Function that, if it returns true, makes the loader skip this module.
// The file must contain valid JavaScript for execution in a private function.
// The file must not contain the "function () {" and "}" wrapper though.
'skipFunction' => [file path]
]

Reimplemented from ResourceLoaderFileModule.

Definition at line 33 of file ResourceLoaderLessVarFileModule.php.

References ResourceLoaderFileModule\$localBasePath, and ResourceLoaderFileModule\$remoteBasePath.

Member Function Documentation

◆ excludeMessagesFromBlob()

ResourceLoaderLessVarFileModule::excludeMessagesFromBlob (   $blob,
  $exclusions 
)
protected

Exclude a set of messages from a JSON string representation.

Parameters
string$blob
array$exclusions
Returns
object $blob

Definition at line 59 of file ResourceLoaderLessVarFileModule.php.

References $blob.

Referenced by getLessVars(), and getMessageBlob().

◆ getLessVars()

ResourceLoaderLessVarFileModule::getLessVars ( ResourceLoaderContext  $context)
protected

Get language-specific LESS variables for this module.

Parameters
ResourceLoaderContext$context
Returns
array LESS variables

Reimplemented from ResourceLoaderModule.

Definition at line 95 of file ResourceLoaderLessVarFileModule.php.

References $blob, $context, excludeMessagesFromBlob(), and wrapAndEscapeMessage().

◆ getMessageBlob()

ResourceLoaderLessVarFileModule::getMessageBlob ( ResourceLoaderContext  $context)
protected

Get the hash of the message blob.

Since
1.27
Parameters
ResourceLoaderContext$context
Returns
string|null JSON blob or null if module has no messages

Reimplemented from ResourceLoaderModule.

Definition at line 71 of file ResourceLoaderLessVarFileModule.php.

References $blob, $context, and excludeMessagesFromBlob().

◆ getMessages()

ResourceLoaderLessVarFileModule::getMessages ( )

Gets list of message keys used by this module.

Returns
array List of message keys

Reimplemented from ResourceLoaderFileModule.

Definition at line 47 of file ResourceLoaderLessVarFileModule.php.

◆ wrapAndEscapeMessage()

static ResourceLoaderLessVarFileModule::wrapAndEscapeMessage (   $msg)
staticprivate

Takes a message and wraps it in quotes for compatibility with LESS parser (ModifyVars) method so that the variable can be loaded and made available to stylesheets.

Note this does not take care of CSS escaping. That will be taken care of as part of CSS Janus.

Parameters
string$msg
Returns
string wrapped LESS variable definition

Definition at line 85 of file ResourceLoaderLessVarFileModule.php.

References CSSMin\serializeStringValue().

Referenced by getLessVars().

Member Data Documentation

◆ $lessVariables

ResourceLoaderLessVarFileModule::$lessVariables = []
protected

Definition at line 28 of file ResourceLoaderLessVarFileModule.php.


The documentation for this class was generated from the following file: