Restore non-mangled anchors in API help in all cases
authorBrad Jorsch <bjorsch@wikimedia.org>
Wed, 2 Aug 2017 22:45:01 +0000 (18:45 -0400)
committerAnomie <bjorsch@wikimedia.org>
Wed, 16 Aug 2017 19:59:10 +0000 (19:59 +0000)
Prior to Id304010a, the API help included non-mangled anchors even when
$wgExperimentalHtmlIds was false. This was lost in Id304010a when the
new $wgFragmentMode is [ 'legacy' ], as is the default, despite the loss
being pointed out multiple times in code review.

Change-Id: Ibcb86deb4e3ea2131211f184f46960e5ad390212

includes/api/ApiMain.php

index f6dd524..e69300b 100644 (file)
@@ -1933,14 +1933,18 @@ class ApiMain extends ApiBase {
 
                        $id = Sanitizer::escapeIdForAttribute( 'main/datatypes', Sanitizer::ID_PRIMARY );
                        $idFallback = Sanitizer::escapeIdForAttribute( 'main/datatypes', Sanitizer::ID_FALLBACK );
-
-                       $help['datatypes'] .= Linker::makeHeadline( min( 6, $level ),
+                       $headline = Linker::makeHeadline( min( 6, $level ),
                                ' class="apihelp-header"',
                                $id,
                                $header,
                                '',
                                $idFallback
                        );
+                       // Ensure we have a sane anchor
+                       if ( $id !== 'main/datatypes' && $idFallback !== 'main/datatypes' ) {
+                               $headline = '<div id="main/datatypes"></div>' . $headline;
+                       }
+                       $help['datatypes'] .= $headline;
                        $help['datatypes'] .= $this->msg( 'api-help-datatypes' )->parseAsBlock();
                        if ( !isset( $tocData['main/datatypes'] ) ) {
                                $tocnumber[$level]++;
@@ -1957,13 +1961,18 @@ class ApiMain extends ApiBase {
                        $header = $this->msg( 'api-credits-header' )->parse();
                        $id = Sanitizer::escapeIdForAttribute( 'main/credits', Sanitizer::ID_PRIMARY );
                        $idFallback = Sanitizer::escapeIdForAttribute( 'main/credits', Sanitizer::ID_FALLBACK );
-                       $help['credits'] .= Linker::makeHeadline( min( 6, $level ),
+                       $headline = Linker::makeHeadline( min( 6, $level ),
                                ' class="apihelp-header"',
                                $id,
                                $header,
                                '',
                                $idFallback
                        );
+                       // Ensure we have a sane anchor
+                       if ( $id !== 'main/credits' && $idFallback !== 'main/credits' ) {
+                               $headline = '<div id="main/credits"></div>' . $headline;
+                       }
+                       $help['credits'] .= $headline;
                        $help['credits'] .= $this->msg( 'api-credits' )->useDatabase( false )->parseAsBlock();
                        if ( !isset( $tocData['main/credits'] ) ) {
                                $tocnumber[$level]++;