* Get all registered JS and CSS tags for the header.
*
* @return string
+ * @deprecated since 1.24 Use OutputPage::headElement to build the full header.
*/
function getScript() {
+ wfDeprecated( __METHOD__, '1.24' );
return $this->mScripts . $this->getHeadItems();
}
* Get all header items in a string
*
* @return string
+ * @deprecated since 1.24 Use OutputPage::headElement or
+ * if absolutely necessary use OutputPage::getHeadItemsArray
*/
function getHeadItems() {
+ wfDeprecated( __METHOD__, '1.24' );
$s = '';
foreach ( $this->mHeadItems as $item ) {
$s .= $item;
$oldTidy = $popts->setTidy( $tidy );
$popts->setInterfaceMessage( (bool)$interface );
- $parserOutput = $wgParser->parse(
+ $parserOutput = $wgParser->getFreshParser()->parse(
$text, $title, $popts,
$linestart, true, $this->mRevisionId
);
}
/**
- * 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 ) {
+ $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();
}
/**
- * 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 );
}
/**
$oldLang = $popts->setTargetLanguage( $language );
}
- $parserOutput = $wgParser->parse(
+ $parserOutput = $wgParser->getFreshParser()->parse(
$text, $this->getTitle(), $popts,
$linestart, true, $this->mRevisionId
);
*/
public function parseInline( $text, $linestart = true, $interface = false ) {
$parsed = $this->parse( $text, $linestart, $interface );
-
- $m = array();
- if ( preg_match( '/^<p>(.*)\n?<\/p>\n?/sU', $parsed, $m ) ) {
- $parsed = $m[1];
- }
-
- return $parsed;
+ return Parser::stripOuterParagraph( $parsed );
}
/**
* /w/index.php?title=Main_page&variant=zh-cn should never be served.
*/
function addAcceptLanguage() {
- $lang = $this->getTitle()->getPageLanguage();
+ $title = $this->getTitle();
+ if ( !$title instanceof Title ) {
+ return;
+ }
+
+ $lang = $title->getPageLanguage();
if ( !$this->getRequest()->getCheck( 'variant' ) && $lang->hasVariants() ) {
$variants = $lang->getVariants();
$aloption = array();
$ret .= Html::element( 'title', null, $this->getHTMLTitle() ) . "\n";
- $ret .= (
- $this->getHeadLinks() .
- "\n" .
- $this->buildCssLinks() .
- // No newline after buildCssLinks since makeResourceLoaderLink did that already
- $this->getHeadScripts() .
- "\n" .
- $this->getHeadItems()
- );
+ foreach ( $this->getHeadLinksArray() as $item ) {
+ $ret .= $item . "\n";
+ }
+
+ // No newline after buildCssLinks since makeResourceLoaderLink did that already
+ $ret .= $this->buildCssLinks();
+
+ $ret .= $this->getHeadScripts() . "\n";
+
+ foreach ( $this->mHeadItems as $item ) {
+ $ret .= $item . "\n";
+ }
$closeHead = Html::closeElement( 'head' );
if ( $closeHead ) {
'rel' => 'alternate',
'type' => 'application/x-wiki',
'title' => $msg,
- 'href' => $this->getTitle()->getLocalURL( 'action=edit' )
+ 'href' => $this->getTitle()->getEditURL(),
) );
// Alternate edit link
$tags['alternative-edit'] = Html::element( 'link', array(
'rel' => 'edit',
'title' => $msg,
- 'href' => $this->getTitle()->getLocalURL( 'action=edit' )
+ 'href' => $this->getTitle()->getEditURL(),
) );
}
}
/**
* @return string HTML tag links to be put in the header.
+ * @deprecated since 1.24 Use OutputPage::headElement or if you have to,
+ * OutputPage::getHeadLinksArray directly.
*/
public function getHeadLinks() {
+ wfDeprecated( __METHOD__, '1.24' );
return implode( "\n", $this->getHeadLinksArray() );
}