MediaWiki  master
ResourceLoaderSkinModule Class Reference

Module for skin stylesheets. More...

Inheritance diagram for ResourceLoaderSkinModule:
Collaboration diagram for ResourceLoaderSkinModule:

Public Member Functions

 __construct (array $options=[], $localBasePath=null, $remoteBasePath=null)
 
 getDefinitionSummary (ResourceLoaderContext $context)
 Get the definition summary for this module. More...
 
 getPreloadLinks (ResourceLoaderContext $context)
 
 getStyleFiles (ResourceLoaderContext $context)
 Get styles defined in the module definition, plus any enabled feature styles. More...
 
 getStyles (ResourceLoaderContext $context)
 
 isKnownEmpty (ResourceLoaderContext $context)
 
- Public Member Functions inherited from ResourceLoaderLessVarFileModule
 getMessages ()
 Gets list of message keys used by this module.
Returns
string[] List of message keys
More...
 
- Public Member Functions inherited from ResourceLoaderFileModule
 enableModuleContentVersion ()
 Disable module content versioning. More...
 
 getAllStyleFiles ()
 Returns all style files and all skin style files used by this module. More...
 
 getDependencies (ResourceLoaderContext $context=null)
 Gets list of names of modules this module depends on. More...
 
 getFlip (ResourceLoaderContext $context)
 Get whether CSS for this module should be flipped. More...
 
 getGroup ()
 Gets the name of the group this module should be loaded in. More...
 
 getPackageFiles (ResourceLoaderContext $context)
 Resolves the package files definition and generates the content of each package file. More...
 
 getScript (ResourceLoaderContext $context)
 Gets all scripts for a given context concatenated together. More...
 
 getScriptURLsForDebug (ResourceLoaderContext $context)
 
 getSkipFunction ()
 
 getStyleSheetLang ( $path)
 Infer the stylesheet language from a stylesheet file path. More...
 
 getStyleURLsForDebug (ResourceLoaderContext $context)
 
 getTargets ()
 Get target(s) for the module, eg ['desktop'] or ['desktop', 'mobile']. More...
 
 getTemplates ()
 Takes named templates by the module and returns an array mapping. More...
 
 getType ()
 Get the module's load type. More...
 
 readStyleFiles (array $styles, ResourceLoaderContext $context)
 Get the contents of a list of CSS files. More...
 
 requiresES6 ()
 Whether the module requires ES6 support in the client. More...
 
 setSkinStylesOverride (array $moduleSkinStyles)
 Provide overrides for skinStyles to modules that support that. More...
 
 supportsURLLoading ()
 
- Public Member Functions inherited from ResourceLoaderModule
 getConfig ()
 
 getDeprecationInformation (ResourceLoaderContext $context)
 Get JS representing deprecation information for the current module if available. More...
 
 getHeaders (ResourceLoaderContext $context)
 Get headers to send as part of a module web response. More...
 
 getModuleContent (ResourceLoaderContext $context)
 Get an array of this module's resources. More...
 
 getName ()
 Get this module's name. More...
 
 getOrigin ()
 Get this module's origin. More...
 
 getSource ()
 Get the source of this module. More...
 
 getVersionHash (ResourceLoaderContext $context)
 Get a string identifying the current version of this module in a given context. More...
 
 setConfig (Config $config)
 
 setDependencyAccessCallbacks (callable $loadCallback, callable $saveCallback)
 Inject the functions that load/save the indirect file path dependency list from storage. More...
 
 setFileDependencies (ResourceLoaderContext $context, array $paths)
 Set the indirect dependencies for this module persuant to the skin/language context. More...
 
 setHookContainer (HookContainer $hookContainer)
 
 setLogger (LoggerInterface $logger)
 
 setMessageBlob ( $blob, $lang)
 Set in-object cache for message blobs. More...
 
 setName ( $name)
 Set this module's name. More...
 
 shouldEmbedModule (ResourceLoaderContext $context)
 Check whether this module should be embeded rather than linked. More...
 

Static Public Member Functions

static getAvailableLogos ( $conf)
 Return an array of all available logos that a skin may use. More...
 
- Static Public Member Functions inherited from ResourceLoaderFileModule
static extractBasePaths (array $options=[], $localBasePath=null, $remoteBasePath=null)
 Extract a pair of local and remote base paths from module definition information. More...
 
static getPackageFileType ( $path)
 Infer the file type from a package file path. More...
 
- Static Public Member Functions inherited from ResourceLoaderModule
static expandRelativePaths (array $filePaths)
 Expand directories relative to $IP. More...
 
static getRelativePaths (array $filePaths)
 Make file paths relative to MediaWiki directory. More...
 
static getVary (ResourceLoaderContext $context)
 Get vary string. More...
 

Public Attributes

 $targets = [ 'desktop', 'mobile' ]
 All skins are assumed to be compatible with mobile. More...
 

Protected Member Functions

 getLessVars (ResourceLoaderContext $context)
 Get language-specific LESS variables for this module. More...
 
 getLogoData (Config $conf)
 
- Protected Member Functions inherited from ResourceLoaderLessVarFileModule
 getMessageBlob (ResourceLoaderContext $context)
 Get the hash of the message blob.
Stability: stable
to override
Since
1.27
Parameters
ResourceLoaderContext$context
Returns
string|null JSON blob or null if module has no messages
More...
 
- Protected Member Functions inherited from ResourceLoaderFileModule
 compileLessFile ( $fileName, ResourceLoaderContext $context)
 
 compileLessString ( $style, $stylePath, ResourceLoaderContext $context)
 Compile a LESS string into CSS. More...
 
 getAllSkinStyleFiles ()
 Gets a list of file paths for all skin style files in the module, for all available skins. More...
 
 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. More...
 
 getVueComponentParser ()
 
 processStyle ( $style, $styleLang, $path, ResourceLoaderContext $context)
 Process a CSS/LESS string. More...
 
 readStyleFile ( $path, ResourceLoaderContext $context)
 Read and process a style file. More...
 
 stripBom ( $input)
 Takes an input string and removes the UTF-8 BOM character if present. More...
 
- Protected Member Functions inherited from ResourceLoaderModule
 buildContent (ResourceLoaderContext $context)
 Bundle all resources attached to this module into an array. More...
 
 getFileDependencies (ResourceLoaderContext $context)
 Get the indirect dependencies for this module persuant to the skin/language context. More...
 
 getHookRunner ()
 Get a HookRunner for running core hooks. More...
 
 getLogger ()
 
 saveFileDependencies (ResourceLoaderContext $context, array $curFileRefs)
 Save the indirect dependencies for this module persuant to the skin/language context. More...
 
 validateScriptFile ( $fileName, $contents)
 Validate a user-provided JavaScript blob. More...
 

Static Protected Member Functions

static applyFeaturesCompatibility (array $features, &$messages='')
 
- Static Protected Member Functions inherited from ResourceLoaderFileModule
static collateFilePathListByOption (array $list, $option, $default)
 Collates file paths by option (where provided). More...
 
static tryForKey (array $list, $key, $fallback=null)
 Get a list of element that match a key, optionally using a fallback key. More...
 
- Static Protected Member Functions inherited from ResourceLoaderModule
static safeFileHash ( $filePath)
 Compute a non-cryptographic string hash of a file's contents. More...
 

Private Member Functions

 getLogoPreloadlinks ()
 Helper method for getPreloadLinks() More...
 
 normalizeStyles (array &$styles)
 Ensure all media keys use array values. More...
 

Static Private Member Functions

static getRelativeSizedLogo (array $logoElement)
 Modifies configured logo width/height to ensure they are present and scaleable with different font-sizes. More...
 

Private Attributes

string[] $features
 
const FEATURE_FILES
 Every skin should define which features it would like to reuse for core inside a ResourceLoader module that has set the class to ResourceLoaderSkinModule. More...
 
const LESS_MESSAGES
 

Additional Inherited Members

- Protected Attributes inherited from ResourceLoaderLessVarFileModule
 $lessVariables = []
 
- Protected Attributes inherited from ResourceLoaderFileModule
bool $debugRaw = true
 Link to raw files in debug mode. More...
 
array $debugScripts = []
 List of paths to JavaScript files to include in debug mode. More...
 
array $dependencies = []
 List of modules this module depends on. More...
 
bool $es6 = false
 Whether this module requires the client to support ES6. More...
 
string $group
 Name of group to load this module in. More...
 
bool $hasGeneratedStyles = false
 Whether getStyleURLsForDebug should return raw file paths, or return load.php urls. More...
 
array $languageScripts = []
 List of JavaScript files to include when using a specific language. More...
 
string $localBasePath = ''
 Local base path, see __construct() More...
 
array $localFileRefs = []
 Place where readStyleFile() tracks file dependencies. More...
 
array $messages = []
 List of message keys used by this module. More...
 
array $missingLocalFileRefs = []
 Place where readStyleFile() tracks file dependencies for non-existent files. More...
 
bool $noflip = false
 Whether CSSJanus flipping should be skipped for this module. More...
 
array $packageFiles = null
 List of packaged files to make available through require() More...
 
string $remoteBasePath = ''
 Remote base path, see __construct() More...
 
array $scripts = []
 List of paths to JavaScript files to always include. More...
 
array $skinScripts = []
 List of JavaScript files to include when using a specific skin. More...
 
array $skinStyles = []
 List of paths to CSS files to include when using specific skins. More...
 
string $skipFunction = null
 File name containing the body of the skip function. More...
 
array $styles = []
 List of paths to CSS files to always include. More...
 
string[] $targets = [ 'desktop' ]
 
array $templates = []
 Saves a list of the templates named by the modules. More...
 
VueComponentParser null $vueComponentParser = null
 Lazy-created by getVueComponentParser() More...
 
- Protected Attributes inherited from ResourceLoaderModule
Config $config
 
array $contents = []
 Map of (context hash => cached module content) More...
 
string bool $deprecated = false
 Deprecation string or true if deprecated; false otherwise. More...
 
array $fileDeps = []
 Map of (variant => indirect file dependencies) More...
 
LoggerInterface $logger
 
array $msgBlobs = []
 Map of (language => in-object cache for message blob) More...
 
string null $name = null
 Module name. More...
 
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. More...
 
string[] $targets = [ 'desktop' ]
 What client platforms the module targets (e.g. More...
 
array $versionHash = []
 Map of (context hash => cached module version hash) More...
 

Detailed Description

Module for skin stylesheets.

Access: internal

Definition at line 28 of file ResourceLoaderSkinModule.php.

Constructor & Destructor Documentation

◆ __construct()

ResourceLoaderSkinModule::__construct ( array  $options = [],
  $localBasePath = null,
  $remoteBasePath = null 
)
Parameters
array$options
  • features: Map from feature keys to boolean indicating whether to load or not include the associated styles. Keys not specified get their default from self::DEFAULT_FEATURES_SPECIFIED.

    If this is set to a list of strings, then the defaults do not apply. Use this at your own risk as it means you opt-out from backwards compatibility provided through these defaults. For example, when features are migrated to the SkinModule system from other parts of MediaWiki, those new feature keys may be enabled by default, and opting out means you may be missing some styles after an upgrade until you enable them or implement them by other means.

  • lessMessages: Interface message keys to export as LESS variables. See also ResourceLoaderLessVarFileModule.
string | null$localBasePath
string | null$remoteBasePath
See also
Additonal options at $wgResourceModules

Reimplemented from ResourceLoaderLessVarFileModule.

Definition at line 234 of file ResourceLoaderSkinModule.php.

References $features, ResourceLoaderFileModule\$localBasePath, ResourceLoaderFileModule\$messages, ResourceLoaderFileModule\$remoteBasePath, and applyFeaturesCompatibility().

Member Function Documentation

◆ applyFeaturesCompatibility()

static ResourceLoaderSkinModule::applyFeaturesCompatibility ( array  $features,
$messages = '' 
)
staticprotected
Access: internal
Parameters
array$features
string&$messagesto report deprecations
Returns
array

Definition at line 281 of file ResourceLoaderSkinModule.php.

References $features, and ResourceLoaderFileModule\$messages.

Referenced by __construct().

◆ getAvailableLogos()

static ResourceLoaderSkinModule::getAvailableLogos (   $conf)
static

Return an array of all available logos that a skin may use.

Since
1.35
Parameters
Config$conf
Returns
array with the following keys:
  • 1x(string): a square logo composing the icon and wordmark (required)
  • 2x (string): a square logo for HD displays (optional)
  • wordmark (object): a rectangle logo (wordmark) for print media and skins which desire horizontal logo (optional). Must declare width and height fields, defined in pixels which will be converted to ems based on 16px font-size.
  • tagline (object): replaces tagline message in certain skins. Must declare width and height fields defined in pixels, which are converted to ems based on 16px font-size.
  • icon (string): a square logo similar to 1x, but without the wordmark. SVG recommended.

Definition at line 567 of file ResourceLoaderSkinModule.php.

References getRelativeSizedLogo().

Referenced by ApiQuerySiteinfo\appendGeneralInfo(), getDefinitionSummary(), getLessVars(), SkinTemplate\getLogoData(), getLogoData(), Skin\logoText(), and SkinTemplate\prepareQuickTemplate().

◆ getDefinitionSummary()

ResourceLoaderSkinModule::getDefinitionSummary ( ResourceLoaderContext  $context)

Get the definition summary for this module.

Parameters
ResourceLoaderContext$context
Returns
array

Reimplemented from ResourceLoaderFileModule.

Definition at line 695 of file ResourceLoaderSkinModule.php.

References getAvailableLogos(), and ResourceLoaderModule\getConfig().

◆ getLessVars()

ResourceLoaderSkinModule::getLessVars ( ResourceLoaderContext  $context)
protected

Get language-specific LESS variables for this module.

Parameters
ResourceLoaderContext$context
Returns
array

Reimplemented from ResourceLoaderLessVarFileModule.

Definition at line 679 of file ResourceLoaderSkinModule.php.

References getAvailableLogos(), and ResourceLoaderModule\getConfig().

◆ getLogoData()

ResourceLoaderSkinModule::getLogoData ( Config  $conf)
protected
Since
1.31
Parameters
Config$conf
Returns
string|array Single url if no variants are defined, or an array of logo urls keyed by dppx in form "<float>x". Key "1x" is always defined. Key "svg" may also be defined, in which case variants other than "1x" are omitted.

Definition at line 626 of file ResourceLoaderSkinModule.php.

References getAvailableLogos(), and OutputPage\transformResourcePath().

Referenced by getLogoPreloadlinks(), and getStyles().

◆ getLogoPreloadlinks()

ResourceLoaderSkinModule::getLogoPreloadlinks ( )
private

Helper method for getPreloadLinks()

Returns
array

Definition at line 445 of file ResourceLoaderSkinModule.php.

References ResourceLoaderModule\getConfig(), and getLogoData().

Referenced by getPreloadLinks().

◆ getPreloadLinks()

ResourceLoaderSkinModule::getPreloadLinks ( ResourceLoaderContext  $context)
Parameters
ResourceLoaderContext$context
Returns
array

Reimplemented from ResourceLoaderModule.

Definition at line 437 of file ResourceLoaderSkinModule.php.

References getLogoPreloadlinks().

◆ getRelativeSizedLogo()

static ResourceLoaderSkinModule::getRelativeSizedLogo ( array  $logoElement)
staticprivate

Modifies configured logo width/height to ensure they are present and scaleable with different font-sizes.

Parameters
array$logoElementwith width, height and src keys.
Returns
array modified version of $logoElement

Definition at line 543 of file ResourceLoaderSkinModule.php.

Referenced by getAvailableLogos().

◆ getStyleFiles()

ResourceLoaderSkinModule::getStyleFiles ( ResourceLoaderContext  $context)

Get styles defined in the module definition, plus any enabled feature styles.

Parameters
ResourceLoaderContext$context
Returns
string[][]

Reimplemented from ResourceLoaderFileModule.

Definition at line 334 of file ResourceLoaderSkinModule.php.

References ResourceLoaderFileModule\$styles, ResourceLoaderFileModule\extractBasePaths(), and ResourceLoaderModule\getConfig().

◆ getStyles()

ResourceLoaderSkinModule::getStyles ( ResourceLoaderContext  $context)

◆ isKnownEmpty()

ResourceLoaderSkinModule::isKnownEmpty ( ResourceLoaderContext  $context)
Parameters
ResourceLoaderContext$context
Returns
bool

Reimplemented from ResourceLoaderModule.

Definition at line 667 of file ResourceLoaderSkinModule.php.

◆ normalizeStyles()

ResourceLoaderSkinModule::normalizeStyles ( array &  $styles)
private

Ensure all media keys use array values.

Normalises arrays returned by the ResourceLoaderFileModule::getStyles() method.

Parameters
array&$stylesAssociative array, keys are strings (media queries), values are strings or arrays

Definition at line 529 of file ResourceLoaderSkinModule.php.

References ResourceLoaderFileModule\$styles.

Referenced by getStyles().

Member Data Documentation

◆ $features

string [] ResourceLoaderSkinModule::$features
private

Definition at line 181 of file ResourceLoaderSkinModule.php.

Referenced by __construct(), and applyFeaturesCompatibility().

◆ $targets

ResourceLoaderSkinModule::$targets = [ 'desktop', 'mobile' ]

All skins are assumed to be compatible with mobile.

Definition at line 32 of file ResourceLoaderSkinModule.php.

◆ FEATURE_FILES

const ResourceLoaderSkinModule::FEATURE_FILES
private

Every skin should define which features it would like to reuse for core inside a ResourceLoader module that has set the class to ResourceLoaderSkinModule.

For a feature to be valid it must be listed here along with the associated resources

The following features are available:

"logo": Adds CSS to style an element with class mw-wiki-logo using the value of wgLogos['1x']. This is enabled by default if no features are added.

"normalize": Styles needed to normalize rendering across different browser rendering engines. All to address bugs and common browser inconsistencies for skins and extensions. Inspired by necolas' normalize.css. This is meant to be kept lean, basic styling beyond normalization should live in one of the following modules.

"elements": The base level that only contains the most basic of common skin styles. Only styles for single elements are included, no styling for complex structures like the TOC is present. This level is for skins that want to implement the entire style of even content area structures like the TOC themselves.

"content": Deprecated. Alias for "content-media".

"content-thumbnails": Deprecated. Alias for "content-media".

"content-media": Styles for thumbnails and floated elements. Will add styles for the new media structure on wikis where $wgParserEnableLegacyMediaDOM is disabled, or $wgUseContentMediaStyles is enabled. See https://www.mediawiki.org/wiki/Parsing/Media_structure

"content-links": The skin will apply optional styling rules for links that should be styled differently to the rules in elements and normalize. It provides support for .mw-selflink, a.new (red links), a.stub (stub links) and some basic styles for external links. It also provides rules supporting the underline user preference.

"content-links-external": The skin will apply optional styling rules to links to provide icons for different file types.

"content-body": Styles for the mw-parser-output class.

"content-tables": Styles .wikitable style tables.

"interface": The highest level, this stylesheet contains extra common styles for classes like .firstHeading, #contentSub, et cetera which are not outputted by MediaWiki but are common to skins like MonoBook, Vector, etc... Essentially this level is for styles that are common to MonoBook clones.

"interface-category": Styles used for styling the categories in a horizontal bar at the bottom of the content.

"interface-message-box": Styles for message boxes.

"i18n-ordered-lists": Styles for ordered lists elements that support mixed language content.

"i18n-all-lists-margins": Styles for margins of list elements where LTR and RTL are mixed.

"i18n-headings": Styles for line-heights of headings across different languages.

"legacy": For backwards compatibility a legacy feature is provided. New skins should not use this if they can avoid doing so. This feature also contains interface-message-box and all i18n- prefixed features.

"toc" Styling rules for the table of contents.

NOTE: The order of the keys defines the order in which the styles are output.

Definition at line 116 of file ResourceLoaderSkinModule.php.

◆ LESS_MESSAGES

const ResourceLoaderSkinModule::LESS_MESSAGES
private
Initial value:
= [
'hidetoc',
'showtoc',
]

Definition at line 208 of file ResourceLoaderSkinModule.php.


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