wiki.techinc.nl/includes/ResourceLoader/CodexModule.php
Timo Tijhof 85892edce5 resourceloader: Minor doc changes following PSR-4 namepace change
Follows Id08a220e1d60 (after I92998ae6a82e).

Change-Id: I33d20201bfee4595baa39c01eaf8b7de6034a8ed
2022-05-29 16:41:19 +00:00

88 lines
2.8 KiB
PHP

<?php
/**
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
*/
namespace MediaWiki\ResourceLoader;
use Config;
/**
* Module for codex that has direction-specific style files and a static helper function for
* embedding icons in package modules.
*
* @ingroup ResourceLoader
* @internal
*/
class CodexModule extends FileModule {
protected $dirSpecificStyles = [];
public function __construct( array $options = [], $localBasePath = null, $remoteBasePath = null ) {
if ( isset( $options['dirSpecificStyles'] ) ) {
$this->dirSpecificStyles = $options['dirSpecificStyles'];
}
parent::__construct( $options, $localBasePath, $remoteBasePath );
}
public function getStyleFiles( Context $context ) {
// Add direction-specific styles
$dir = $context->getDirection();
if ( isset( $this->dirSpecificStyles[ $dir ] ) ) {
$this->styles = array_merge( $this->styles, (array)$this->dirSpecificStyles[ $dir ] );
// Empty dirSpecificStyles so we don't add them twice if getStyleFiles() is called twice
$this->dirSpecificStyles = [];
}
return parent::getStyleFiles( $context );
}
/**
* Retrieve the specified icon definitions from codex-icons.json. Intended as a convenience
* function to be used in packageFiles definitions.
*
* Example:
* "packageFiles": [
* {
* "name": "icons.json",
* "callback": "MediaWiki\\ResourceLoader\\CodexModule::getIcons",
* "callbackParam": [
* "cdxIconClear",
* "cdxIconTrash"
* ]
* }
* ]
*
* @param Context $context
* @param Config $config
* @param string[] $iconNames Names of icons to fetch
* @return array
*/
public static function getIcons( Context $context, Config $config, array $iconNames = [] ) {
global $IP;
static $allIcons = null;
if ( $allIcons === null ) {
$allIcons = json_decode( file_get_contents( "$IP/resources/lib/codex-icons/codex-icons.json" ), true );
}
return array_intersect_key( $allIcons, array_flip( $iconNames ) );
}
}
/** @deprecated since 1.39 */
class_alias( CodexModule::class, 'ResourceLoaderCodexModule' );