23use InvalidArgumentException;
34 protected static $knownScriptsModules = [
'core' ];
41 'icons-accessibility',
44 'icons-editing-advanced',
45 'icons-editing-citation',
46 'icons-editing-functions',
49 'icons-editing-styling',
62 'default' =>
'WikimediaUI',
68 'scripts' =>
'resources/lib/ooui/oojs-ui-wikimediaui.js',
69 'styles' =>
'resources/lib/ooui/oojs-ui-{module}-wikimediaui.css',
70 'images' =>
'resources/lib/ooui/themes/wikimediaui/{module}.json',
73 'scripts' =>
'resources/lib/ooui/oojs-ui-apex.js',
74 'styles' =>
'resources/lib/ooui/oojs-ui-{module}-apex.css',
75 'images' =>
'resources/lib/ooui/themes/apex/{module}.json',
87 $themeMap += ExtensionRegistry::getInstance()->
getAttribute(
'SkinOOUIThemes' );
103 $themePaths += ExtensionRegistry::getInstance()->getAttribute(
'OOUIThemePaths' );
105 [ $defaultLocalBasePath, $defaultRemoteBasePath ] =
110 foreach ( $themePaths as &$paths ) {
111 [ $localBasePath, $remoteBasePath ] =
113 if ( $localBasePath !== $defaultLocalBasePath || $remoteBasePath !== $defaultRemoteBasePath ) {
114 foreach ( $paths as &
$path ) {
137 $path = $paths[$theme][$kind];
140 str_replace(
'{module}', $module,
$path->getPath() ),
141 $path->getLocalBasePath(),
142 $path->getRemoteBasePath()
145 $path = str_replace(
'{module}', $module,
$path );
156 if ( !in_array( $module, self::$knownScriptsModules ) ) {
157 throw new InvalidArgumentException(
"Invalid OOUI scripts module '$module'" );
159 return $this->
getThemePath( $theme,
'scripts', $module );
168 if ( !in_array( $module, self::$knownStylesModules ) ) {
169 throw new InvalidArgumentException(
"Invalid OOUI styles module '$module'" );
171 return $this->
getThemePath( $theme,
'styles', $module );
180 if ( !in_array( $module, self::$knownImagesModules ) ) {
181 throw new InvalidArgumentException(
"Invalid OOUI images module '$module'" );
183 return $this->
getThemePath( $theme,
'images', $module );
trait OOUIModule
Convenience methods for dealing with OOUI themes and their relations to MW skins.