MediaWiki master
|
Abstraction for ResourceLoader modules which pull from wiki pages. More...
Inherits MediaWiki\ResourceLoader\Module.
Inherited by MediaWiki\ResourceLoader\SiteModule, MediaWiki\ResourceLoader\SiteStylesModule, MediaWiki\ResourceLoader\UserModule, and MediaWiki\ResourceLoader\UserStylesModule.
Public Member Functions | |
__construct (array $options=null) | |
enableModuleContentVersion () | |
Disable module content versioning. | |
getDefinitionSummary (Context $context) | |
getGroup () | |
Get group name. | |
getScript (Context $context) | |
getStyles (Context $context) | |
getType () | |
isKnownEmpty (Context $context) | |
shouldEmbedModule (Context $context) | |
supportsURLLoading () | |
Public Member Functions inherited from MediaWiki\ResourceLoader\Module | |
getConfig () | |
getDependencies (Context $context=null) | |
Get a list of modules this module depends on. | |
getDeprecationInformation (Context $context) | |
Get JS representing deprecation information for the current module if available. | |
getDeprecationWarning () | |
Get the deprecation warning, if any. | |
getFlip (Context $context) | |
getHeaders (Context $context) | |
Get headers to send as part of a module web response. | |
getMessages () | |
Get the messages needed for this module. | |
getModuleContent (Context $context) | |
Get an array of this module's resources. | |
getName () | |
Get this module's name. | |
getOrigin () | |
Get this module's origin. | |
getScriptURLsForDebug (Context $context) | |
Get alternative script URLs for legacy debug mode. | |
getSkins () | |
Get list of skins for which this module must be available to load. | |
getSkipFunction () | |
Get the skip function. | |
getSource () | |
Get the source of this module. | |
getStyleURLsForDebug (Context $context) | |
Get the URL or URLs to load for this module's CSS in debug mode. | |
getTemplates () | |
Takes named templates by the module and returns an array mapping. | |
getVersionHash (Context $context) | |
Get a string identifying the current version of this module in a given context. | |
requiresES6 () | |
Whether the module requires ES6 support in the client. | |
setConfig (Config $config) | |
setDependencyAccessCallbacks (callable $loadCallback, callable $saveCallback) | |
Inject the functions that load/save the indirect file path dependency list from storage. | |
setFileDependencies (Context $context, array $paths) | |
Set the indirect dependencies for this module pursuant to the skin/language context. | |
setHookContainer (HookContainer $hookContainer) | |
setLogger (LoggerInterface $logger) | |
setMessageBlob ( $blob, $lang) | |
Set in-object cache for message blobs. | |
setName ( $name) | |
Set this module's name. | |
setSkinStylesOverride (array $moduleSkinStyles) | |
Provide overrides for skinStyles to modules that support that. | |
shouldSkipStructureTest () | |
Whether to skip the structure test ResourcesTest::testRespond() for this module. | |
Static Public Member Functions | |
static | invalidateModuleCache (PageIdentity $page, ?RevisionRecord $old, ?RevisionRecord $new, string $domain) |
Clear the preloadTitleInfo() cache for all wiki modules on this wiki on page change if it was a JS or CSS page. | |
static | preloadTitleInfo (Context $context, array $moduleNames) |
Batched version of WikiModule::getTitleInfo. | |
Static Public Member Functions inherited from MediaWiki\ResourceLoader\Module | |
static | expandRelativePaths (array $filePaths) |
Expand directories relative to $IP. | |
static | getRelativePaths (array $filePaths) |
Make file paths relative to MediaWiki directory. | |
static | getVary (Context $context) |
Get vary string. | |
Protected Member Functions | |
getContent ( $titleText, Context $context) | |
getContentObj (PageIdentity $page, Context $context, $maxRedirects=1) | |
getDB () | |
Get the Database handle used for computing the module version. | |
getPages (Context $context) | |
Subclasses should return an associative array of resources in the module. | |
getRequireKey (string $titleText) | |
Convert a namespace-formatted page title to a virtual package file name. | |
getTitleInfo (Context $context) | |
Get the information about the wiki pages for a given context. | |
isPackaged () | |
Get whether this module is a packaged module. | |
Protected Member Functions inherited from MediaWiki\ResourceLoader\Module | |
buildContent (Context $context) | |
Bundle all resources attached to this module into an array. | |
getFileDependencies (Context $context) | |
Get the indirect dependencies for this module pursuant to the skin/language context. | |
getHookRunner () | |
Get a HookRunner for running core hooks. | |
getLessVars (Context $context) | |
Get module-specific LESS variables, if any. | |
getLogger () | |
getMessageBlob (Context $context) | |
Get the hash of the message blob. | |
getPreloadLinks (Context $context) | |
Get a list of resources that web browsers may preload. | |
saveFileDependencies (Context $context, array $curFileRefs) | |
Save the indirect dependencies for this module pursuant to the skin/language context. | |
validateScriptFile ( $fileName, $contents) | |
Validate a user-provided JavaScript blob. | |
Static Protected Member Functions | |
static | fetchTitleInfo (IReadableDatabase $db, array $pages, $fname=__METHOD__) |
Static Protected Member Functions inherited from MediaWiki\ResourceLoader\Module | |
static | safeFileHash ( $filePath) |
Compute a non-cryptographic string hash of a file's contents. | |
Protected Attributes | |
array | $datas = [] |
List of page names that contain JSON. | |
string null | $group |
Group of module. | |
string | $origin = self::ORIGIN_USER_SITEWIDE |
Origin defaults to users with sitewide authority. | |
array | $scripts = [] |
List of page names that contain JavaScript. | |
array | $styles = [] |
List of page names that contain CSS. | |
array | $titleInfo = [] |
In-process cache for title info, structured as an array [ <batchKey> // Pipe-separated list of sorted keys from getPages => [ <titleKey> => [ // Normalised title key 'page_len' => .., 'page_latest' => .., 'page_touched' => .., ] ] ]. | |
Protected Attributes inherited from MediaWiki\ResourceLoader\Module | |
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[] null | $skins = null |
Skin names. | |
array | $versionHash = [] |
Map of (context hash => cached module version hash) | |
Abstraction for ResourceLoader modules which pull from wiki pages.
This can only be used for wiki pages in the MediaWiki and User namespaces, because of its dependence on the functionality of Title::isUserConfigPage() and Title::isSiteConfigPage().
This module supports being used as a placeholder for a module on a remote wiki. To do so, getDB() must be overloaded to return a foreign database object that allows local wikis to query page metadata.
Safe for calls on local wikis are:
Definition at line 65 of file WikiModule.php.
MediaWiki\ResourceLoader\WikiModule::__construct | ( | array | $options = null | ) |
array | null | $options | For back-compat, this can be omitted in favour of overwriting getPages. |
Definition at line 103 of file WikiModule.php.
MediaWiki\ResourceLoader\WikiModule::enableModuleContentVersion | ( | ) |
Disable module content versioning.
This class does not support generating content outside of a module request due to foreign database support.
See getDefinitionSummary() for meta-data versioning.
Reimplemented from MediaWiki\ResourceLoader\Module.
Definition at line 447 of file WikiModule.php.
|
staticprotected |
IReadableDatabase | $db | |
string[] | $pages | |
string | $fname |
Definition at line 544 of file WikiModule.php.
References Wikimedia\Rdbms\IReadableDatabase\newSelectQueryBuilder().
|
protected |
string | $titleText | |
Context | $context |
Definition at line 194 of file WikiModule.php.
References CONTENT_FORMAT_CSS, CONTENT_FORMAT_JAVASCRIPT, CONTENT_FORMAT_JSON, MediaWiki\ResourceLoader\WikiModule\getContentObj(), and MediaWiki\MediaWikiServices\getInstance().
Referenced by MediaWiki\ResourceLoader\WikiModule\getScript().
|
protected |
PageIdentity | $page | |
Context | $context | |
int | $maxRedirects | Maximum number of redirects to follow. Either 0 or 1. |
Definition at line 229 of file WikiModule.php.
References MediaWiki\ResourceLoader\WikiModule\getContentObj(), MediaWiki\ResourceLoader\Context\getContentOverrideCallback(), MediaWiki\MediaWikiServices\getInstance(), and MediaWiki\ResourceLoader\Module\getLogger().
Referenced by MediaWiki\ResourceLoader\WikiModule\getContent(), and MediaWiki\ResourceLoader\WikiModule\getContentObj().
|
protected |
Get the Database handle used for computing the module version.
Subclasses may override this to return a foreign database, which would allow them to register a module on wiki A that fetches wiki pages from wiki B.
The way this works is that the local module is a placeholder that can only computer a module version hash. The 'source' of the module must be set to the foreign wiki directly. Methods getScript() and getContent() will not use this handle and are not valid on the local wiki.
Definition at line 184 of file WikiModule.php.
References MediaWiki\MediaWikiServices\getInstance().
MediaWiki\ResourceLoader\WikiModule::getDefinitionSummary | ( | Context | $context | ) |
Context | $context |
Reimplemented from MediaWiki\ResourceLoader\Module.
Definition at line 455 of file WikiModule.php.
MediaWiki\ResourceLoader\WikiModule::getGroup | ( | ) |
Get group name.
Reimplemented from MediaWiki\ResourceLoader\Module.
Reimplemented in MediaWiki\ResourceLoader\SiteStylesModule, MediaWiki\ResourceLoader\UserModule, and MediaWiki\ResourceLoader\UserStylesModule.
Definition at line 166 of file WikiModule.php.
References MediaWiki\ResourceLoader\WikiModule\$group.
|
protected |
Subclasses should return an associative array of resources in the module.
Keys should be the title of a page in the MediaWiki or User namespace.
Values should be a nested array of options. The supported keys are 'type' and (CSS only) 'media'.
For scripts, 'type' should be 'script'. For JSON files, 'type' should be 'data'. For stylesheets, 'type' should be 'style'.
There is an optional 'media' key, the value of which can be the medium ('screen', 'print', etc.) of the stylesheet.
Context | $context |
Reimplemented in MediaWiki\ResourceLoader\SiteModule, MediaWiki\ResourceLoader\SiteStylesModule, MediaWiki\ResourceLoader\UserModule, and MediaWiki\ResourceLoader\UserStylesModule.
Definition at line 138 of file WikiModule.php.
References MediaWiki\ResourceLoader\Module\$config, MediaWiki\Config\Config\get(), MediaWiki\ResourceLoader\Module\getConfig(), MediaWiki\MainConfigNames\UseSiteCss, and MediaWiki\MainConfigNames\UseSiteJs.
Referenced by MediaWiki\ResourceLoader\WikiModule\getScript(), and MediaWiki\ResourceLoader\WikiModule\shouldEmbedModule().
|
protected |
Convert a namespace-formatted page title to a virtual package file name.
This determines how the page may be imported in client-side code via require()
.
string | $titleText |
Definition at line 349 of file WikiModule.php.
MediaWiki\ResourceLoader\WikiModule::getScript | ( | Context | $context | ) |
Context | $context |
Reimplemented from MediaWiki\ResourceLoader\Module.
Definition at line 292 of file WikiModule.php.
References MediaWiki\ResourceLoader\WikiModule\$scripts, MediaWiki\ResourceLoader\WikiModule\getContent(), MediaWiki\ResourceLoader\WikiModule\getPages(), MediaWiki\ResourceLoader\WikiModule\isPackaged(), MediaWiki\ResourceLoader\ResourceLoader\makeComment(), and MediaWiki\ResourceLoader\Module\validateScriptFile().
MediaWiki\ResourceLoader\WikiModule::getStyles | ( | Context | $context | ) |
Context | $context |
Reimplemented from MediaWiki\ResourceLoader\Module.
Definition at line 402 of file WikiModule.php.
|
protected |
Get the information about the wiki pages for a given context.
Context | $context |
Definition at line 509 of file WikiModule.php.
References MediaWiki\ResourceLoader\Context\getContentOverrideCallback().
MediaWiki\ResourceLoader\WikiModule::getType | ( | ) |
Reimplemented from MediaWiki\ResourceLoader\Module.
Reimplemented in MediaWiki\ResourceLoader\SiteStylesModule, and MediaWiki\ResourceLoader\UserStylesModule.
Definition at line 719 of file WikiModule.php.
|
static |
Clear the preloadTitleInfo() cache for all wiki modules on this wiki on page change if it was a JS or CSS page.
PageIdentity | $page | |
RevisionRecord | null | $old | Prior page revision |
RevisionRecord | null | $new | New page revision |
string | $domain | Database domain ID |
Definition at line 678 of file WikiModule.php.
References CONTENT_MODEL_CSS, CONTENT_MODEL_JAVASCRIPT, and MediaWiki\Revision\RevisionRecord\getSlot().
MediaWiki\ResourceLoader\WikiModule::isKnownEmpty | ( | Context | $context | ) |
Context | $context |
Reimplemented from MediaWiki\ResourceLoader\Module.
Definition at line 469 of file WikiModule.php.
|
protected |
Get whether this module is a packaged module.
If false (the default), JavaScript pages are concatenated and executed as a single script. JSON pages are not supported.
If true, the pages are bundled such that each page gets a virtual file name, where only the "main" script will be executed at first, and other JS or JSON pages may be be imported in client-side code through the require()
function.
Definition at line 325 of file WikiModule.php.
Referenced by MediaWiki\ResourceLoader\WikiModule\getScript().
|
static |
Batched version of WikiModule::getTitleInfo.
Title info for the passed modules is cached together. On index.php, OutputPage improves cache use by having one batch shared between all users (site-wide modules) and a batch for current-user modules.
Context | $context | |
string[] | $moduleNames |
Definition at line 588 of file WikiModule.php.
References MediaWiki\ResourceLoader\Context\getResourceLoader().
Referenced by MediaWiki\ResourceLoader\ResourceLoader\preloadModuleInfo().
MediaWiki\ResourceLoader\WikiModule::shouldEmbedModule | ( | Context | $context | ) |
Context | $context |
Reimplemented from MediaWiki\ResourceLoader\Module.
Definition at line 274 of file WikiModule.php.
References MediaWiki\ResourceLoader\Context\getContentOverrideCallback(), MediaWiki\ResourceLoader\WikiModule\getPages(), and MediaWiki\ResourceLoader\Module\getSource().
MediaWiki\ResourceLoader\WikiModule::supportsURLLoading | ( | ) |
Reimplemented from MediaWiki\ResourceLoader\Module.
Definition at line 334 of file WikiModule.php.
|
protected |
List of page names that contain JSON.
Definition at line 94 of file WikiModule.php.
|
protected |
Group of module.
Definition at line 97 of file WikiModule.php.
Referenced by MediaWiki\ResourceLoader\WikiModule\getGroup(), MediaWiki\ResourceLoader\UserModule\getPages(), and MediaWiki\ResourceLoader\UserStylesModule\getPages().
|
protected |
Origin defaults to users with sitewide authority.
Definition at line 67 of file WikiModule.php.
|
protected |
List of page names that contain JavaScript.
Definition at line 91 of file WikiModule.php.
Referenced by MediaWiki\ResourceLoader\WikiModule\getScript().
|
protected |
List of page names that contain CSS.
Definition at line 88 of file WikiModule.php.
|
protected |
In-process cache for title info, structured as an array [ <batchKey> // Pipe-separated list of sorted keys from getPages => [ <titleKey> => [ // Normalised title key 'page_len' => .., 'page_latest' => .., 'page_touched' => .., ] ] ].
Definition at line 85 of file WikiModule.php.