(bug 31502) (follow-up r84718) Restore ToC to Special:EditWatchlist if there is more...
authorHappy-melon <happy-melon@users.mediawiki.org>
Mon, 7 Nov 2011 22:11:04 +0000 (22:11 +0000)
committerHappy-melon <happy-melon@users.mediawiki.org>
Mon, 7 Nov 2011 22:11:04 +0000 (22:11 +0000)
includes/specials/SpecialEditWatchlist.php

index fa16de9..9fcd95e 100644 (file)
@@ -18,6 +18,8 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
 
        protected $successMessage;
 
+       protected $toc;
+
        public function __construct(){
                parent::__construct( 'EditWatchlist' );
        }
@@ -90,6 +92,8 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                                if( $form->show() ){
                                        $out->addHTML( $this->successMessage );
                                        $out->returnToMain();
+                               } elseif ( $this->toc !== false ) {
+                                       $out->prependHTML( $this->toc );
                                }
                                break;
                }
@@ -382,10 +386,6 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                                $haveInvalidNamespaces = true;
                                continue;
                        }
-               
-                       $namespace == NS_MAIN
-                               ? wfMsgHtml( 'blanknamespace' )
-                               : htmlspecialchars( $wgContLang->getFormattedNsText( $namespace ) );
 
                        $fields['TitlesNs'.$namespace] = array(
                                'class' => 'EditWatchlistCheckboxSeriesField',
@@ -397,6 +397,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                                $title = Title::makeTitleSafe( $namespace, $dbkey );
                                $text = $this->buildRemoveLine( $title );
                                $fields['TitlesNs'.$namespace]['options'][$text] = $title->getEscapedText();
+                               $count++;
                        }
                }
                if ( $haveInvalidNamespaces ) {
@@ -404,6 +405,21 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                        $this->getContext()->getUser()->cleanupWatchlist();
                }
 
+               if ( count( $fields ) > 1 && $count > 30 ) {
+                       $this->toc = Linker::tocIndent();
+                       $tocLength = 0;
+                       foreach( $fields as $key => $data ) {
+                               $ns = substr( $data['section'], 2 );
+                               $nsText = $ns == NS_MAIN
+                                       ? wfMsgHtml( 'blanknamespace' )
+                                       : htmlspecialchars( $wgContLang->getFormattedNsText( $ns ) );
+                               -$this->toc .= Linker::tocLine( "mw-htmlform-{$data['section']}", $nsText, ++$tocLength, 1 ) . Linker::tocLineEnd();
+                       }
+                       $this->toc = Linker::tocList( $this->toc );
+               } else {
+                       $this->toc = false;
+               }
+
                $form = new EditWatchlistNormalHTMLForm( $fields, $this->getContext() );
                $form->setTitle( $this->getTitle() );
                $form->setSubmitText( wfMessage( 'watchlistedit-normal-submit' )->text() );