}
}
+ // enable OOUI if requested via ParserOutput
+ if ( $parserOutput->getEnableOOUI() ) {
+ $this->enableOOUI();
+ }
+
// Link flags are ignored for now, but may in the future be
// used to mark individual language links.
$linkFlags = array();
}
/**
- * Add ResourceLoader module styles for OOUI and set up the PHP implementation of it for use with
- * MediaWiki and this OutputPage instance.
+ * Helper function to setup the PHP implementation of OOUI to use in this request.
*
- * @since 1.25
+ * @since 1.26
+ * @param String $skinName The Skin name to determine the correct OOUI theme
+ * @param String $dir Language direction
*/
- public function enableOOUI() {
+ public static function setupOOUI( $skinName = '', $dir = 'ltr' ) {
$themes = ExtensionRegistry::getInstance()->getAttribute( 'SkinOOUIThemes' );
// Make keys (skin names) lowercase for case-insensitive matching.
$themes = array_change_key_case( $themes, CASE_LOWER );
- $skinName = strtolower( $this->getSkin()->getSkinName() );
$theme = isset( $themes[ $skinName ] ) ? $themes[ $skinName ] : 'MediaWiki';
// For example, 'OOUI\MediaWikiTheme'.
$themeClass = "OOUI\\{$theme}Theme";
OOUI\Theme::setSingleton( new $themeClass() );
- OOUI\Element::setDefaultDir( $this->getLanguage()->getDir() );
+ OOUI\Element::setDefaultDir( $dir );
+ }
+
+ /**
+ * Add ResourceLoader module styles for OOUI and set up the PHP implementation of it for use with
+ * MediaWiki and this OutputPage instance.
+ *
+ * @since 1.25
+ */
+ public function enableOOUI() {
+ self::setupOOUI(
+ strtolower( $this->getSkin()->getSkinName() ),
+ $this->getLanguage()->getDir()
+ );
$this->addModuleStyles( array(
'oojs-ui.styles',
'oojs-ui.styles.icons',
$mProperties = array(), # Name/value pairs to be cached in the DB
$mTOCHTML = '', # HTML of the TOC
$mTimestamp, # Timestamp of the revision
- $mTOCEnabled = true; # Whether TOC should be shown, can't override __NOTOC__
+ $mTOCEnabled = true, # Whether TOC should be shown, can't override __NOTOC__
+ $mEnableOOUI = false; # Whether OOUI should be enabled
private $mIndexPolicy = ''; # 'index' or 'noindex'? Any other value will result in no change.
private $mAccessedOptions = array(); # List of ParserOptions (stored in the keys)
private $mExtensionData = array(); # extra data used by extensions
return $this->mTOCEnabled;
}
+ public function getEnableOOUI() {
+ return $this->mEnableOOUI;
+ }
+
public function setText( $text ) {
return wfSetVar( $this->mText, $text );
}
$this->mIndicators[$id] = $content;
}
+ /**
+ * Enables OOUI, if true, in any OutputPage instance this ParserOutput
+ * object is added to.
+ *
+ * @since 1.26
+ * @param bool $enable If OOUI should be enabled or not
+ */
+ public function setEnableOOUI( $enable = false ) {
+ $this->mEnableOOUI = $enable;
+ }
+
public function addLanguageLink( $t ) {
$this->mLanguageLinks[] = $t;
}