* (bug 10160) Show error message for unknown namespace on Special:Allpages and
authorRaimond Spekking <raymond@users.mediawiki.org>
Tue, 26 Jun 2007 07:21:28 +0000 (07:21 +0000)
committerRaimond Spekking <raymond@users.mediawiki.org>
Tue, 26 Jun 2007 07:21:28 +0000 (07:21 +0000)
  Special:Prefixindex
* Making input forms prettier for RTL wikis.
* Use proper XML functions for input forms

RELEASE-NOTES
includes/SpecialAllpages.php
includes/SpecialPrefixindex.php
languages/messages/MessagesDe.php
languages/messages/MessagesEn.php
maintenance/language/messages.inc

index f7e0f4a..d282786 100644 (file)
@@ -208,6 +208,8 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN
 * Fixed zero-padding issues with MySQL 5 binary schema
 * (bug 10344) Don't follow a redirect after changing its protection level
 * (bug 10333) Correct date format in Slovenian
+* (bug 10160) Show error message for unknown namespace on Special:Allpages and
+  Special:Prefixindex; making forms prettier for RTL wikis.
 
 == API changes since 1.10 ==
 
index 03e164b..8599cbf 100644 (file)
@@ -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.
@@ -170,8 +170,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 +187,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 +198,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 +211,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;
 
@@ -298,8 +306,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 +332,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>' );
 
        }
index b7c51d4..d2e5139 100644 (file)
@@ -15,20 +15,14 @@ function wfSpecialPrefixIndex( $par=NULL, $specialPage ) {
        $from = $wgRequest->getVal( 'from' );
        $prefix = $wgRequest->getVal( 'prefix' );
        $namespace = $wgRequest->getInt( 'namespace' );
-
        $namespaces = $wgContLang->getNamespaces();
 
        $indexPage = new SpecialPrefixIndex();
 
-       if( !in_array($namespace, array_keys($namespaces)) )
-               $namespace = 0;
-
-       $wgOut->setPagetitle( $namespace > 0 ?
-               wfMsg( 'allinnamespace', str_replace( '_', ' ', $namespaces[$namespace] ) ) :
-               wfMsg( 'allarticles' )
-               );
-
-
+       $wgOut->setPagetitle( ( $namespace > 0 && in_array( $namespace, array_keys( $namespaces ) ) )
+               ? wfMsg( 'allinnamespace', str_replace( '_', ' ', $namespaces[$namespace] ) )
+               : wfMsg( 'allarticles' )
+       );
 
        if ( isset($par) ) {
                $indexPage->showChunk( $namespace, $par, $specialPage->including(), $from );
@@ -67,9 +61,15 @@ function showChunk( $namespace = NS_MAIN, $prefix, $including = false, $from = n
 
        $fromList = $this->getNamespaceKeyAndText($namespace, $from);
        $prefixList = $this->getNamespaceKeyAndText($namespace, $prefix);
+       $namespaces = $wgContLang->getNamespaces();
+       $align = $wgContLang->isRtl() ? 'left' : 'right';
 
        if ( !$prefixList || !$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, $prefixKey, $prefix ) = $prefixList;
                list( /* $fromNs */, $fromKey, $from ) = $fromList;
@@ -127,8 +127,8 @@ function showChunk( $namespace = NS_MAIN, $prefix, $including = false, $from = n
        } else {
                $nsForm = $this->namespaceForm ( $namespace, $prefix );
                $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( $this->name ),
                                        wfMsg ( 'allpages' ) );
                if ( isset($dbr) && $dbr && ($n == $this->maxPerPage) && ($s = $dbr->fetchObject( $res )) ) {
index bae45de..f145907 100644 (file)
@@ -1273,6 +1273,7 @@ Davon {{PLURAL:$2|hat|haben}} '''$2''' (=$4%) $5-Rechte.",
 'allpagessubmit'    => 'Anwenden',
 'allpagesprefix'    => 'Seiten anzeigen mit Präfix:',
 'allpagesbadtitle'  => 'Der eingegebene Seitenname ist ungültig: Er hat entweder ein vorangestelltes Sprach-, ein Interwiki-Kürzel oder enthält ein oder mehrere Zeichen, welche in Seitennamen nicht verwendet werden dürfen.',
+'allpages-bad-ns'   => 'Der Namensraum „$1“ ist in {{SITENAME}} nicht vorhanden.',
 
 # Special:Listusers
 'listusersfrom'      => 'Zeige Benutzer ab:',
index 2676ce8..57864be 100644 (file)
@@ -1652,6 +1652,7 @@ You can narrow down the view by selecting a log type, the user name, or the affe
 'allpagessubmit'    => 'Go',
 'allpagesprefix'    => 'Display pages with prefix:',
 'allpagesbadtitle'  => 'The given page title was invalid or had an inter-language or inter-wiki prefix. It may contain one or more characters which cannot be used in titles.',
+'allpages-bad-ns'   => '{{SITENAME}} does not have namespace "$1".',
 
 # Special:Listusers
 'listusersfrom'      => 'Display users starting at:',
index f58faa1..b9eb636 100644 (file)
@@ -1045,6 +1045,7 @@ $wgMessageStructure = array(
                'allpagessubmit',
                'allpagesprefix',
                'allpagesbadtitle',
+               'allpages-bad-ns',
        ),
        'listusers' => array(
                'listusersfrom',