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
usort( $wgExtensionCredits[$type], [ $this, 'compare' ] );
foreach ( $wgExtensionCredits[$type] as $extension ) {
usort( $wgExtensionCredits[$type], [ $this, 'compare' ] );
foreach ( $wgExtensionCredits[$type] as $extension ) {
- $out .= $this->getCreditsForExtension( $extension );
+ $out .= $this->getCreditsForExtension( $type, $extension );
* - Description of extension (descriptionmsg or description)
* - List of authors (author) and link to a ((AUTHORS)|(CREDITS))(\.txt)? file if it exists
*
* - 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
*/
* @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!
$out = $this->getOutput();
// We must obtain the information for all the bits and pieces!
// Finally! Create the table
$html = Html::openElement( 'tr', [
'class' => 'mw-version-ext',
// 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'] )