Don't apply CSS columns if less than 3 results were found on AllPages & PrefixIndex
authorGlaisher <glaisher.wiki@gmail.com>
Mon, 9 Nov 2015 16:50:53 +0000 (21:50 +0500)
committerGlaisher <glaisher.wiki@gmail.com>
Mon, 9 Nov 2015 17:28:37 +0000 (22:28 +0500)
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
includes/specials/SpecialPrefixindex.php
tests/parser/parserTests.txt

index 2446270..190fe8f 100644 (file)
@@ -205,8 +205,7 @@ class SpecialAllPages extends IncludableSpecialPage {
                        );
 
                        if ( $res->numRows() > 0 ) {
                        );
 
                        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 );
 
                                while ( ( $n < $this->maxPerPage ) && ( $s = $res->fetchObject() ) ) {
                                        $t = Title::newFromRow( $s );
@@ -222,7 +221,12 @@ class SpecialAllPages extends IncludableSpecialPage {
                                        $n++;
                                }
                                $out .= Html::closeElement( 'ul' );
                                        $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 = '';
                        }
                        } else {
                                $out = '';
                        }
index fbe5ab3..f10a979 100644 (file)
@@ -205,8 +205,7 @@ class SpecialPrefixindex extends SpecialAllPages {
 
                        $n = 0;
                        if ( $res->numRows() > 0 ) {
 
                        $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() ) ) {
 
                                $prefixLength = strlen( $prefix );
                                while ( ( $n < $this->maxPerPage ) && ( $s = $res->fetchObject() ) ) {
@@ -228,12 +227,17 @@ class SpecialPrefixindex extends SpecialAllPages {
                                                $link = '[[' . htmlspecialchars( $s->page_title ) . ']]';
                                        }
 
                                                $link = '[[' . htmlspecialchars( $s->page_title ) . ']]';
                                        }
 
-                                       $out .= "<li> $link </li>\n";
+                                       $out .= "<li>$link</li>\n";
                                        $n++;
 
                                }
                                $out .= Html::closeElement( 'ul' );
                                        $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 = '';
                        }
                        } else {
                                $out = '';
                        }
index 4e6c591..c127be2 100644 (file)
@@ -17173,8 +17173,8 @@ Special page transclusion
 !! wikitext
 {{Special:Prefixindex/Xyzzyx}}
 !! html
 !! wikitext
 {{Special:Prefixindex/Xyzzyx}}
 !! html
-<div class="mw-prefixindex-body"><ul class="mw-prefixindex-list"><li> <a href="/wiki/Xyzzyx" title="Xyzzyx">Xyzzyx</a> </li>
-</ul></div>
+<ul class="mw-prefixindex-list"><li><a href="/wiki/Xyzzyx" title="Xyzzyx">Xyzzyx</a></li>
+</ul>
 
 !! end
 
 
 !! end
 
@@ -17185,10 +17185,10 @@ Special page transclusion twice (bug 5021)
 {{Special:Prefixindex/Xyzzyx}}
 {{Special:Prefixindex/Xyzzyx}}
 !! html
 {{Special:Prefixindex/Xyzzyx}}
 {{Special:Prefixindex/Xyzzyx}}
 !! html
-<div class="mw-prefixindex-body"><ul class="mw-prefixindex-list"><li> <a href="/wiki/Xyzzyx" title="Xyzzyx">Xyzzyx</a> </li>
-</ul></div>
-<div class="mw-prefixindex-body"><ul class="mw-prefixindex-list"><li> <a href="/wiki/Xyzzyx" title="Xyzzyx">Xyzzyx</a> </li>
-</ul></div>
+<ul class="mw-prefixindex-list"><li><a href="/wiki/Xyzzyx" title="Xyzzyx">Xyzzyx</a></li>
+</ul>
+<ul class="mw-prefixindex-list"><li><a href="/wiki/Xyzzyx" title="Xyzzyx">Xyzzyx</a></li>
+</ul>
 
 !! end
 
 
 !! end