InfoAction: Heading ID should not include # character.
authorTimo Tijhof <ttijhof@wikimedia.org>
Thu, 14 Feb 2013 09:55:36 +0000 (10:55 +0100)
committerTimo Tijhof <ttijhof@wikimedia.org>
Thu, 14 Feb 2013 09:58:21 +0000 (10:58 +0100)
It was using Parser::guessSectionNameFromWikiText, which expects
a string of wikitext (e.g. "== Foo ==") and extracts the heading
text, and from that it generates an ID, and from that it
generates an anchor link.

The extraction and anchor link are wrong and caused the output
to be <h2 id="#Foo"> instead of <h2 id="Foo">.

Follows up I702f2f13.

Bug: 44989
Change-Id: I81f67ae1ac86ed709c69f1bced970b2cbb5138db

includes/actions/InfoAction.php

index acb8c00..ebedde3 100644 (file)
@@ -125,8 +125,7 @@ class InfoAction extends FormlessAction {
         * @return string The HTML.
         */
        protected function makeHeader( $header ) {
-               global $wgParser;
-               $spanAttribs = array( 'class' => 'mw-headline', 'id' => $wgParser->guessSectionNameFromWikiText( $header ) );
+               $spanAttribs = array( 'class' => 'mw-headline', 'id' => Sanitizer::escapeId( $header ) );
                return Html::rawElement( 'h2', array(), Html::element( 'span', $spanAttribs, $header ) );
        }