Add category name in ID property for extension row in Special:Version page
authorRamunas Geciauskas <ramunas@geciauskas.com>
Tue, 8 Mar 2016 16:04:27 +0000 (11:04 -0500)
committerJdlrobson <jrobson@wikimedia.org>
Thu, 22 Sep 2016 18:19:22 +0000 (18:19 +0000)
Extensions can belong to multiple different categories. When listing them in
the Special:Version page each entry is surrounded with HTML element with
ID property "mw-version-ext-{NAME}". This causes generation of duplicate
ID values, which is against W3C rules.
To preserve valid and compliant HTML while retaining ID values, change the
ID pattern to "mw-version-ext-{CATEGORY}-{NAME}".

Bug: T99025
Change-Id: Ifdde0704631f1ef41e4c83e7e8116003983e0808

includes/specials/SpecialVersion.php

index c8b85ae..2cd492e 100644 (file)
@@ -633,7 +633,7 @@ class SpecialVersion extends SpecialPage {
                        usort( $wgExtensionCredits[$type], [ $this, 'compare' ] );
 
                        foreach ( $wgExtensionCredits[$type] as $extension ) {
-                               $out .= $this->getCreditsForExtension( $extension );
+                               $out .= $this->getCreditsForExtension( $type, $extension );
                        }
                }
 
@@ -669,11 +669,12 @@ class SpecialVersion extends SpecialPage {
         *  - Description of extension (descriptionmsg or description)
         *  - List of authors (author) and link to a ((AUTHORS)|(CREDITS))(\.txt)? file if it exists
         *
+        * @param string $type Category name of the extension
         * @param array $extension
         *
         * @return string Raw HTML
         */
-       public function getCreditsForExtension( array $extension ) {
+       public function getCreditsForExtension( $type, array $extension ) {
                $out = $this->getOutput();
 
                // We must obtain the information for all the bits and pieces!
@@ -830,7 +831,7 @@ class SpecialVersion extends SpecialPage {
                // Finally! Create the table
                $html = Html::openElement( 'tr', [
                                'class' => 'mw-version-ext',
-                               'id' => Sanitizer::escapeId( 'mw-version-ext-' . $extension['name'] )
+                               'id' => Sanitizer::escapeId( 'mw-version-ext-' . $type . '-' . $extension['name'] )
                        ]
                );