From: Daniel Friesen Date: Sat, 11 May 2013 09:31:30 +0000 (-0700) Subject: OutputPage: Move our so it's placed above the title It's recommended for the meta charset to be placed before the since <title> contains text which is inside the character set defined by the meta charset. Use of meta charset inside XHTML also seems to be redundant, not recommended, and is very likely completely ignored. Change-Id: I335b0598a9615540dc5e917682508b4a8d32d96e --- diff --git a/includes/OutputPage.php b/includes/OutputPage.php index d379e46d0e..43f27bdfe6 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -2474,7 +2474,7 @@ $templates * @return String: The doctype, opening "<html>", and head element. */ public function headElement( Skin $sk, $includeStyle = true ) { - global $wgContLang; + global $wgContLang, $wgMimeType; $userdir = $this->getLanguage()->getDir(); $sitedir = $wgContLang->getDir(); @@ -2495,10 +2495,22 @@ $templates $ret .= "$openHead\n"; } + if ( !Html::isXmlMimeType( $wgMimeType ) ) { + // Add <meta charset="UTF-8"> + // This should be before <title> since it defines the charset used by + // text including the text inside <title>. + // The spec recommends defining XHTML5's charset using the XML declaration + // instead of meta. + // Our XML declaration is output by Html::htmlHeader. + // http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#attr-meta-http-equiv-content-type + // http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#charset + $ret .= Html::element( 'meta', array( 'charset' => 'UTF-8' ) ); + } + $ret .= Html::element( 'title', null, $this->getHTMLTitle() ) . "\n"; $ret .= implode( "\n", array( - $this->getHeadLinks( null, true ), + $this->getHeadLinks(), $this->buildCssLinks(), $this->getHeadScripts(), $this->getHeadItems() @@ -3127,11 +3139,9 @@ $templates } /** - * @param bool $addContentType Whether "<meta>" specifying content type should be returned - * * @return array in format "link name or number => 'link html'". */ - public function getHeadLinksArray( $addContentType = false ) { + public function getHeadLinksArray() { global $wgUniversalEditButton, $wgFavicon, $wgAppleTouchIcon, $wgEnableAPI, $wgSitename, $wgVersion, $wgFeed, $wgOverrideSiteFeed, $wgAdvertisedFeedTypes, @@ -3142,12 +3152,6 @@ $templates $canonicalUrl = $this->mCanonicalUrl; - if ( $addContentType ) { - # More succinct than <meta http-equiv=Content-Type>, has the - # same effect - $tags['meta-charset'] = Html::element( 'meta', array( 'charset' => 'UTF-8' ) ); - } - $tags['meta-generator'] = Html::element( 'meta', array( 'name' => 'generator', 'content' => "MediaWiki $wgVersion", @@ -3365,13 +3369,10 @@ $templates } /** - * @param $unused - * @param bool $addContentType Whether "<meta>" specifying content type should be returned - * * @return string HTML tag links to be put in the header. */ - public function getHeadLinks( $unused = null, $addContentType = false ) { - return implode( "\n", $this->getHeadLinksArray( $addContentType ) ); + public function getHeadLinks() { + return implode( "\n", $this->getHeadLinksArray() ); } /**