mediawiki-extensions-Echo/includes/ResourceLoaderEchoImageModule.php
MtDu 185e68a803 Support loading of secondary icons in RLEIM module
Before, secondary icons, such as linked, changes, thanks, and
userSpeechBubble were loaded in mw.echo.ui.icons.less. Now, an
extra icons attribute is passed when the module is loaded, allowing
RLEIM to know which icons to load. If this attribute is left out,
an MWException will be thrown.

Bug: T159394
Change-Id: I9b36a74bcf1da0d1c698845bd067b226fb81ac96
2017-03-01 23:45:04 -06:00

63 lines
1.9 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
*/
/**
* A sibling of secret special sauce.
* @see ResourceLoaderOOUIImageModule for familial resemblence
*/
class ResourceLoaderEchoImageModule extends ResourceLoaderImageModule {
protected function loadFromDefinition() {
if ( $this->definition === null ) {
return;
}
// Check to make sure icons are set
if ( !isset( $this->definition['icons'] ) ) {
throw new MWException( 'Icons must be set.' );
}
$images = [];
foreach ( $this->definition['icons'] as $iconName => $definition ) {
// FIXME: We also have a 'site' icon which is "magical"
// and uses witchcraft and should be handled specifically
$paths = '';
if ( isset( $definition[ 'path' ] ) ) {
if ( is_array( $definition[ 'path' ] ) ) {
foreach ( $definition[ 'path' ] as $dir => $p ) {
// Has both rtl and ltr definitions
$paths[ $dir ] = $p;
}
} else {
$paths = $definition[ 'path' ];
}
if ( !empty( $paths ) ) {
$images[ $iconName ][ 'file' ] = $paths;
}
}
}
$this->definition[ 'images' ] = $images;
$this->definition[ 'selector' ] = '.oo-ui-icon-{name}';
// Parent
parent::loadFromDefinition();
}
}