From 0968cce3f78b81dc32b0db097b5a6a61fffc5ce9 Mon Sep 17 00:00:00 2001 From: Glaisher Date: Mon, 9 Nov 2015 21:50:53 +0500 Subject: [PATCH] Don't apply CSS columns if less than 3 results were found on AllPages & PrefixIndex If there are less than 3 entries, the browser still tries to render as it would appear as if there are 3 columns, so the final rendering is broken. So don't apply CSS columns and just show a normal list if there are less than 3 results. This also matches the behavior of CategoryViewer. Bug: T117887 Change-Id: Ie6ac0e1174ff8cc14008f39a91c95bcd6f616353 --- includes/specials/SpecialAllPages.php | 10 +++++++--- includes/specials/SpecialPrefixindex.php | 12 ++++++++---- tests/parser/parserTests.txt | 12 ++++++------ 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/includes/specials/SpecialAllPages.php b/includes/specials/SpecialAllPages.php index 2446270085..190fe8f739 100644 --- a/includes/specials/SpecialAllPages.php +++ b/includes/specials/SpecialAllPages.php @@ -205,8 +205,7 @@ class SpecialAllPages extends IncludableSpecialPage { ); if ( $res->numRows() > 0 ) { - $out = Html::openElement( 'div', array( 'class' => 'mw-allpages-body' ) ); - $out .= Html::openElement( 'ul', array( 'class' => 'mw-allpages-chunk' ) ); + $out = Html::openElement( 'ul', array( 'class' => 'mw-allpages-chunk' ) ); while ( ( $n < $this->maxPerPage ) && ( $s = $res->fetchObject() ) ) { $t = Title::newFromRow( $s ); @@ -222,7 +221,12 @@ class SpecialAllPages extends IncludableSpecialPage { $n++; } $out .= Html::closeElement( 'ul' ); - $out .= Html::closeElement( 'div' ); + + if ( $res->numRows() > 2 ) { + // Only apply CSS column styles if there's more than 2 entries. + // Otherwise, rendering is broken as "mw-allpages-body"'s CSS column count is 3. + $out = Html::rawElement( 'div', array( 'class' => 'mw-allpages-body' ), $out ); + } } else { $out = ''; } diff --git a/includes/specials/SpecialPrefixindex.php b/includes/specials/SpecialPrefixindex.php index fbe5ab39ea..f10a979922 100644 --- a/includes/specials/SpecialPrefixindex.php +++ b/includes/specials/SpecialPrefixindex.php @@ -205,8 +205,7 @@ class SpecialPrefixindex extends SpecialAllPages { $n = 0; if ( $res->numRows() > 0 ) { - $out = Html::openElement( 'div', array( 'class' => 'mw-prefixindex-body' ) ); - $out .= Html::openElement( 'ul', array( 'class' => 'mw-prefixindex-list' ) ); + $out = Html::openElement( 'ul', array( 'class' => 'mw-prefixindex-list' ) ); $prefixLength = strlen( $prefix ); while ( ( $n < $this->maxPerPage ) && ( $s = $res->fetchObject() ) ) { @@ -228,12 +227,17 @@ class SpecialPrefixindex extends SpecialAllPages { $link = '[[' . htmlspecialchars( $s->page_title ) . ']]'; } - $out .= "
  • $link
  • \n"; + $out .= "
  • $link
  • \n"; $n++; } $out .= Html::closeElement( 'ul' ); - $out .= Html::closeElement( 'div' ); + + if ( $res->numRows() > 2 ) { + // Only apply CSS column styles if there's more than 2 entries. + // Otherwise rendering is broken as "mw-prefixindex-body"'s CSS column count is 3. + $out = Html::rawElement( 'div', array( 'class' => 'mw-prefixindex-body' ), $out ); + } } else { $out = ''; } diff --git a/tests/parser/parserTests.txt b/tests/parser/parserTests.txt index 4e6c591695..c127be2705 100644 --- a/tests/parser/parserTests.txt +++ b/tests/parser/parserTests.txt @@ -17173,8 +17173,8 @@ Special page transclusion !! wikitext {{Special:Prefixindex/Xyzzyx}} !! html -
    + !! end @@ -17185,10 +17185,10 @@ Special page transclusion twice (bug 5021) {{Special:Prefixindex/Xyzzyx}} {{Special:Prefixindex/Xyzzyx}} !! html -
    -
    + + !! end -- 2.20.1