diff options
Diffstat (limited to 'includes/SpecialAllpages.php')
-rw-r--r-- | includes/SpecialAllpages.php | 112 |
1 files changed, 66 insertions, 46 deletions
diff --git a/includes/SpecialAllpages.php b/includes/SpecialAllpages.php index 03e164bd..07ff120b 100644 --- a/includes/SpecialAllpages.php +++ b/includes/SpecialAllpages.php @@ -19,10 +19,7 @@ function wfSpecialAllpages( $par=NULL, $specialPage ) { $indexPage = new SpecialAllpages(); - if( !in_array($namespace, array_keys($namespaces)) ) - $namespace = 0; - - $wgOut->setPagetitle( $namespace > 0 ? + $wgOut->setPagetitle( ( $namespace > 0 && in_array( $namespace, array_keys( $namespaces) ) ) ? wfMsg( 'allinnamespace', str_replace( '_', ' ', $namespaces[$namespace] ) ) : wfMsg( 'allarticles' ) ); @@ -53,41 +50,44 @@ class SpecialAllpages { * @param string $from Article name we are starting listing at. */ function namespaceForm ( $namespace = NS_MAIN, $from = '' ) { - global $wgScript; + global $wgScript, $wgContLang; $t = SpecialPage::getTitleFor( $this->name ); - - $namespaceselect = HTMLnamespaceselector($namespace, null); - - $frombox = "<input type='text' size='20' name='from' id='nsfrom' value=\"" - . htmlspecialchars ( $from ) . '"/>'; - $submitbutton = '<input type="submit" value="' . wfMsgHtml( 'allpagessubmit' ) . '" />'; - - $out = "<div class='namespaceoptions'><form method='get' action='{$wgScript}'>"; - $out .= '<input type="hidden" name="title" value="'.$t->getPrefixedText().'" />'; - $out .= " -<table id='nsselect' class='allpages'> - <tr> - <td align='right'>" . wfMsgHtml($this->nsfromMsg) . "</td> - <td align='left'><label for='nsfrom'>$frombox</label></td> - </tr> - <tr> - <td align='right'><label for='namespace'>" . wfMsgHtml('namespace') . "</label></td> - <td align='left'> - $namespaceselect $submitbutton - </td> - </tr> -</table> -"; - $out .= '</form></div>'; - return $out; + $align = $wgContLang->isRtl() ? 'left' : 'right'; + + $out = Xml::openElement( 'div', array( 'class' => 'namespaceoptions' ) ); + $out .= Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ); + $out .= Xml::hidden( 'title', $t->getPrefixedText() ); + $out .= Xml::openElement( 'table', array( 'id' => 'nsselect', 'class' => 'allpages' ) ); + $out .= "<tr> + <td align='$align'>" . + Xml::label( wfMsg( $this->nsfromMsg ), 'nsfrom' ) . + "</td> + <td>" . + Xml::input( 'from', 20, htmlspecialchars ( $from ), array( 'id' => 'nsfrom' ) ) . + "</td> + </tr> + <tr> + <td align='$align'>" . + Xml::label( wfMsg( 'namespace' ), 'namespace' ) . + "</td> + <td>" . + Xml::namespaceSelector( $namespace, null ) . + Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . + "</td> + </tr>"; + $out .= Xml::closeElement( 'table' ); + $out .= Xml::closeElement( 'form' ); + $out .= Xml::closeElement( 'div' ); + return $out; } /** * @param integer $namespace (default NS_MAIN) */ function showToplevel ( $namespace = NS_MAIN, $including = false ) { - global $wgOut; + global $wgOut, $wgContLang; $fname = "indexShowToplevel"; + $align = $wgContLang->isRtl() ? 'left' : 'right'; # TODO: Either make this *much* faster or cache the title index points # in the querycache table. @@ -101,7 +101,11 @@ function showToplevel ( $namespace = NS_MAIN, $including = false ) { $lines = $wgMemc->get( $key ); if( !is_array( $lines ) ) { - $firstTitle = $dbr->selectField( 'page', 'page_title', $where, $fname, array( 'LIMIT' => 1 ) ); + $options = array( 'LIMIT' => 1 ); + if ( ! $dbr->implicitOrderby() ) { + $options['ORDER BY'] = 'page_title'; + } + $firstTitle = $dbr->selectField( 'page', 'page_title', $where, $fname, $options ); $lastTitle = $firstTitle; # This array is going to hold the page_titles in order. @@ -170,8 +174,8 @@ function showToplevel ( $namespace = NS_MAIN, $including = false ) { $morelinks = ''; if ( $morelinks != '' ) { $out2 = '<table style="background: inherit;" width="100%" cellpadding="0" cellspacing="0" border="0">'; - $out2 .= '<tr valign="top"><td align="left">' . $nsForm; - $out2 .= '</td><td align="right" style="font-size: smaller; margin-bottom: 1em;">'; + $out2 .= '<tr valign="top"><td>' . $nsForm; + $out2 .= '</td><td align="' . $align . '" style="font-size: smaller; margin-bottom: 1em;">'; $out2 .= $morelinks . '</td></tr></table><hr />'; } else { $out2 = $nsForm . '<hr />'; @@ -187,6 +191,8 @@ function showToplevel ( $namespace = NS_MAIN, $including = false ) { * @param integer $namespace (Default NS_MAIN) */ function showline( $inpoint, $outpoint, $namespace = NS_MAIN ) { + global $wgContLang; + $align = $wgContLang->isRtl() ? 'left' : 'right'; $inpointf = htmlspecialchars( str_replace( '_', ' ', $inpoint ) ); $outpointf = htmlspecialchars( str_replace( '_', ' ', $outpoint ) ); $queryparams = ($namespace ? "namespace=$namespace" : ''); @@ -196,9 +202,9 @@ function showline( $inpoint, $outpoint, $namespace = NS_MAIN ) { $out = wfMsgHtml( 'alphaindexline', "<a href=\"$link\">$inpointf</a></td><td><a href=\"$link\">", - "</a></td><td align=\"left\"><a href=\"$link\">$outpointf</a>" + "</a></td><td><a href=\"$link\">$outpointf</a>" ); - return '<tr><td align="right">'.$out.'</td></tr>'; + return '<tr><td align="' . $align . '">'.$out.'</td></tr>'; } /** @@ -209,14 +215,20 @@ function showChunk( $namespace = NS_MAIN, $from, $including = false ) { global $wgOut, $wgUser, $wgContLang; $fname = 'indexShowChunk'; - $sk = $wgUser->getSkin(); $fromList = $this->getNamespaceKeyAndText($namespace, $from); + $namespaces = $wgContLang->getNamespaces(); + $align = $wgContLang->isRtl() ? 'left' : 'right'; + $n = 0; - + if ( !$fromList ) { $out = wfMsgWikiHtml( 'allpagesbadtitle' ); + } elseif ( !in_array( $namespace, array_keys( $namespaces ) ) ) { + // Show errormessage and reset to NS_MAIN + $out = wfMsgExt( 'allpages-bad-ns', array( 'parseinline' ), $namespace ); + $namespace = NS_MAIN; } else { list( $namespace, $fromKey, $from ) = $fromList; @@ -285,8 +297,11 @@ function showChunk( $namespace = NS_MAIN, $from, $including = false ) { } else { # The previous chunk is not complete, need to link to the very first title # available in the database - $reallyFirstPage_title = $dbr->selectField( 'page', 'page_title', array( 'page_namespace' => $namespace ), $fname, array( 'LIMIT' => 1) ); - + $options = array( 'LIMIT' => 1 ); + if ( ! $dbr->implicitOrderby() ) { + $options['ORDER BY'] = 'page_title'; + } + $reallyFirstPage_title = $dbr->selectField( 'page', 'page_title', array( 'page_namespace' => $namespace ), $fname, $options ); # Show the previous link if it s not the current requested chunk if( $from != $reallyFirstPage_title ) { $prevTitle = Title::makeTitle( $namespace, $reallyFirstPage_title ); @@ -298,8 +313,8 @@ function showChunk( $namespace = NS_MAIN, $from, $including = false ) { $nsForm = $this->namespaceForm ( $namespace, $from ); $out2 = '<table style="background: inherit;" width="100%" cellpadding="0" cellspacing="0" border="0">'; - $out2 .= '<tr valign="top"><td align="left">' . $nsForm; - $out2 .= '</td><td align="right" style="font-size: smaller; margin-bottom: 1em;">' . + $out2 .= '<tr valign="top"><td>' . $nsForm; + $out2 .= '</td><td align="' . $align . '" style="font-size: smaller; margin-bottom: 1em;">' . $sk->makeKnownLink( $wgContLang->specialPage( "Allpages" ), wfMsgHtml ( 'allpages' ) ); @@ -324,11 +339,16 @@ function showChunk( $namespace = NS_MAIN, $from, $including = false ) { $wgOut->addHtml( $out2 . $out ); if( isset($prevLink) or isset($nextLink) ) { - $wgOut->addHtml( '<hr/><p style="font-size: smaller; float: right;">' ); - if( isset( $prevLink ) ) - $wgOut->addHTML( $prevLink . ' | '); - if( isset( $nextLink ) ) + $wgOut->addHtml( '<hr /><p style="font-size: smaller; float: ' . $align . '">' ); + if( isset( $prevLink ) ) { + $wgOut->addHTML( $prevLink ); + } + if( isset( $prevLink ) && isset( $nextLink ) ) { + $wgOut->addHTML( ' | ' ); + } + if( isset( $nextLink ) ) { $wgOut->addHTML( $nextLink ); + } $wgOut->addHTML( '</p>' ); } |