9use InvalidArgumentException;
20 protected static $knownScriptsModules = [
'core' ];
27 'icons-accessibility',
30 'icons-editing-advanced',
31 'icons-editing-citation',
32 'icons-editing-functions',
35 'icons-editing-styling',
48 'default' =>
'WikimediaUI',
54 'scripts' =>
'resources/lib/ooui/oojs-ui-wikimediaui.js',
55 'styles' =>
'resources/lib/ooui/oojs-ui-{module}-wikimediaui.css',
56 'images' =>
'resources/lib/ooui/themes/wikimediaui/{module}.json',
59 'scripts' =>
'resources/lib/ooui/oojs-ui-apex.js',
60 'styles' =>
'resources/lib/ooui/oojs-ui-{module}-apex.css',
61 'images' =>
'resources/lib/ooui/themes/apex/{module}.json',
73 $themeMap += ExtensionRegistry::getInstance()->
getAttribute(
'SkinOOUIThemes' );
89 $themePaths += ExtensionRegistry::getInstance()->getAttribute(
'OOUIThemePaths' );
91 [ $defaultLocalBasePath, $defaultRemoteBasePath ] =
96 foreach ( $themePaths as &$paths ) {
97 [ $localBasePath, $remoteBasePath ] =
99 if ( $localBasePath !== $defaultLocalBasePath || $remoteBasePath !== $defaultRemoteBasePath ) {
100 foreach ( $paths as &
$path ) {
123 $path = $paths[$theme][$kind];
126 str_replace(
'{module}', $module,
$path->getPath() ),
127 $path->getLocalBasePath(),
128 $path->getRemoteBasePath()
131 $path = str_replace(
'{module}', $module,
$path );
142 if ( !in_array( $module, self::$knownScriptsModules ) ) {
143 throw new InvalidArgumentException(
"Invalid OOUI scripts module '$module'" );
145 return $this->
getThemePath( $theme,
'scripts', $module );
154 if ( !in_array( $module, self::$knownStylesModules ) ) {
155 throw new InvalidArgumentException(
"Invalid OOUI styles module '$module'" );
157 return $this->
getThemePath( $theme,
'styles', $module );
166 if ( !in_array( $module, self::$knownImagesModules ) ) {
167 throw new InvalidArgumentException(
"Invalid OOUI images module '$module'" );
169 return $this->
getThemePath( $theme,
'images', $module );
trait OOUIModule
Convenience methods for dealing with OOUI themes and their relations to MW skins.