From 5358d67b5bb7a7aadf99c856664d3ae2a6f27fd5 Mon Sep 17 00:00:00 2001 From: Raimond Spekking Date: Tue, 26 Jun 2007 07:21:28 +0000 Subject: [PATCH] * (bug 10160) Show error message for unknown namespace on Special:Allpages and Special:Prefixindex * Making input forms prettier for RTL wikis. * Use proper XML functions for input forms --- RELEASE-NOTES | 2 + includes/SpecialAllpages.php | 99 +++++++++++++++++-------------- includes/SpecialPrefixindex.php | 24 ++++---- languages/messages/MessagesDe.php | 1 + languages/messages/MessagesEn.php | 1 + maintenance/language/messages.inc | 1 + 6 files changed, 73 insertions(+), 55 deletions(-) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index f7e0f4ac0d..d282786630 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -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 == diff --git a/includes/SpecialAllpages.php b/includes/SpecialAllpages.php index 03e164bd5b..8599cbf9dc 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 = "'; - $submitbutton = ''; - - $out = "
"; - $out .= ''; - $out .= " - - - - - - - - - -
" . wfMsgHtml($this->nsfromMsg) . "
- $namespaceselect $submitbutton -
-"; - $out .= '
'; - 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 .= " + " . + Xml::label( wfMsg( $this->nsfromMsg ), 'nsfrom' ) . + " + " . + Xml::input( 'from', 20, htmlspecialchars ( $from ), array( 'id' => 'nsfrom' ) ) . + " + + + " . + Xml::label( wfMsg( 'namespace' ), 'namespace' ) . + " + " . + Xml::namespaceSelector( $namespace, null ) . + Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . + " + "; + $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 = ''; - $out2 .= '
' . $nsForm; - $out2 .= ''; + $out2 .= '
' . $nsForm; + $out2 .= ''; $out2 .= $morelinks . '

'; } else { $out2 = $nsForm . '
'; @@ -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', "$inpointf", - "$outpointf" + "$outpointf" ); - return ''.$out.''; + return ''.$out.''; } /** @@ -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 = ''; - $out2 .= '
' . $nsForm; - $out2 .= '' . + $out2 .= '
' . $nsForm; + $out2 .= '' . $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( '

' ); - if( isset( $prevLink ) ) - $wgOut->addHTML( $prevLink . ' | '); - if( isset( $nextLink ) ) + $wgOut->addHtml( '


' ); + if( isset( $prevLink ) ) { + $wgOut->addHTML( $prevLink ); + } + if( isset( $prevLink ) && isset( $nextLink ) ) { + $wgOut->addHTML( ' | ' ); + } + if( isset( $nextLink ) ) { $wgOut->addHTML( $nextLink ); + } $wgOut->addHTML( '

' ); } diff --git a/includes/SpecialPrefixindex.php b/includes/SpecialPrefixindex.php index b7c51d49c8..d2e5139e9b 100644 --- a/includes/SpecialPrefixindex.php +++ b/includes/SpecialPrefixindex.php @@ -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 = ''; - $out2 .= '
' . $nsForm; - $out2 .= '' . + $out2 .= '
' . $nsForm; + $out2 .= '' . $sk->makeKnownLink( $wgContLang->specialPage( $this->name ), wfMsg ( 'allpages' ) ); if ( isset($dbr) && $dbr && ($n == $this->maxPerPage) && ($s = $dbr->fetchObject( $res )) ) { diff --git a/languages/messages/MessagesDe.php b/languages/messages/MessagesDe.php index bae45deb56..f145907220 100644 --- a/languages/messages/MessagesDe.php +++ b/languages/messages/MessagesDe.php @@ -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:', diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index 2676ce8cd9..57864be510 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -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:', diff --git a/maintenance/language/messages.inc b/maintenance/language/messages.inc index f58faa1255..b9eb636343 100644 --- a/maintenance/language/messages.inc +++ b/maintenance/language/messages.inc @@ -1045,6 +1045,7 @@ $wgMessageStructure = array( 'allpagessubmit', 'allpagesprefix', 'allpagesbadtitle', + 'allpages-bad-ns', ), 'listusers' => array( 'listusersfrom', -- 2.20.1