From: Bartosz DziewoƄski Date: Thu, 8 May 2014 20:10:13 +0000 (+0200) Subject: OutputPage: Add addParserOutputContent() for more fine-grained control X-Git-Tag: 1.31.0-rc.0~15316 X-Git-Url: http://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/operations/?a=commitdiff_plain;h=e8f1fede77c5d593f57b3aaec3bfe2353e117314;p=lhc%2Fweb%2Fwiklou.git OutputPage: Add addParserOutputContent() for more fine-grained control We previously had addParserOutput(), which added everything and did some other magic, and addParserOutputNoText() which, as the same says, added everything but the text. I renamed addParserOutputNoText() to addParserOutputMetadata() and created two more functions: * addParserOutputText(): This is almost identical to adding the raw HTML, but calls the OutputPageBeforeHTML hook like other addParserOutput*() methods. * addParserOutputContent(): Like addParserOutputText(), but also adds the ResourceLoader modules and variables associated with the parser output. This is important especially for some extensions like TemplateData or SyntaxHighlight which add styles to the page to enhance the display. Change-Id: Iead541886fd1ccdbdf1cb06af71b34cd04644985 --- diff --git a/includes/OutputPage.php b/includes/OutputPage.php index 8fd78121db..612dc329da 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -1621,11 +1621,25 @@ class OutputPage extends ContextSource { } /** - * Add a ParserOutput object, but without Html + * Add a ParserOutput object, but without Html. * + * @deprecated since 1.24, use addParserOutputMetadata() instead. * @param ParserOutput $parserOutput */ public function addParserOutputNoText( &$parserOutput ) { + wfDeprecated( __METHOD__, '1.24' ); + $this->addParserOutputMetadata( $parserOutput ); + } + + /** + * Add all metadata associated with a ParserOutput object, but without the actual HTML. This + * includes categories, language links, ResourceLoader modules, effects of certain magic words, + * and so on. + * + * @since 1.24 + * @param ParserOutput $parserOutput + */ + public function addParserOutputMetadata( &$parserOutput ) { $this->mLanguageLinks += $parserOutput->getLanguageLinks(); $this->addCategoryLinks( $parserOutput->getCategories() ); $this->mNewSectionLink = $parserOutput->getNewSection(); @@ -1673,21 +1687,50 @@ class OutputPage extends ContextSource { } /** - * Add a ParserOutput object + * Add the HTML and enhancements for it (like ResourceLoader modules) associated with a + * ParserOutput object, without any other metadata. + * + * @since 1.24 + * @param ParserOutput $parserOutput + */ + public function addParserOutputContent( &$parserOutput ) { + $this->addParserOutputText( $parserOutput ); + + $this->addModules( $parserOutput->getModules() ); + $this->addModuleScripts( $parserOutput->getModuleScripts() ); + $this->addModuleStyles( $parserOutput->getModuleStyles() ); + $this->addModuleMessages( $parserOutput->getModuleMessages() ); + + $this->addJsConfigVars( $parserOutput->getJsConfigVars() ); + } + + /** + * Add the HTML associated with a ParserOutput object, without any metadata. + * + * @since 1.24 + * @param ParserOutput $parserOutput + */ + public function addParserOutputText( &$parserOutput ) { + $text = $parserOutput->getText(); + wfRunHooks( 'OutputPageBeforeHTML', array( &$this, &$text ) ); + $this->addHTML( $text ); + } + + /** + * Add everything from a ParserOutput object. * * @param ParserOutput $parserOutput */ function addParserOutput( &$parserOutput ) { - $this->addParserOutputNoText( $parserOutput ); + $this->addParserOutputMetadata( $parserOutput ); $parserOutput->setTOCEnabled( $this->mEnableTOC ); // Touch section edit links only if not previously disabled if ( $parserOutput->getEditSectionTokens() ) { $parserOutput->setEditSectionTokens( $this->mEnableSectionEditLinks ); } - $text = $parserOutput->getText(); - wfRunHooks( 'OutputPageBeforeHTML', array( &$this, &$text ) ); - $this->addHTML( $text ); + + $this->addParserOutputText( $parserOutput ); } /**