Merge "Refactor Watchlist code so mobile can be more consistent"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 30 Jul 2014 23:54:34 +0000 (23:54 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 30 Jul 2014 23:54:34 +0000 (23:54 +0000)
1  2 
includes/specials/SpecialEditWatchlist.php

@@@ -70,9 -70,7 +70,7 @@@ class SpecialEditWatchlist extends Unli
                $this->checkReadOnly();
  
                $this->outputHeader();
-               $out->addSubtitle( $this->msg( 'watchlistfor2', $this->getUser()->getName() )
-                       ->rawParams( SpecialEditWatchlist::buildTools( null ) ) );
+               $this->outputSubtitle();
  
                # B/C: $mode used to be waaay down the parameter list, and the first parameter
                # was $wgUser
  
                        case self::EDIT_NORMAL:
                        default:
-                               $out->setPageTitle( $this->msg( 'watchlistedit-normal-title' ) );
-                               $form = $this->getNormalForm();
-                               if ( $form->show() ) {
-                                       $out->addHTML( $this->successMessage );
-                                       $out->addReturnTo( SpecialPage::getTitleFor( 'Watchlist' ) );
-                               } elseif ( $this->toc !== false ) {
-                                       $out->prependHTML( $this->toc );
-                                       $out->addModules( 'mediawiki.toc' );
-                               }
+                       $this->executeViewEditWatchlist();
                                break;
                }
        }
  
+       /**
+        * Renders a subheader on the watchlist page.
+        */
+       protected function outputSubtitle() {
+               $out = $this->getOutput();
+               $out->addSubtitle( $this->msg( 'watchlistfor2', $this->getUser()->getName() )
+                       ->rawParams( SpecialEditWatchlist::buildTools( null ) ) );
+       }
+       /**
+        * Executes an edit mode for the watchlist view, from which you can manage your watchlist
+        *
+        */
+       protected function executeViewEditWatchlist() {
+               $out = $this->getOutput();
+               $out->setPageTitle( $this->msg( 'watchlistedit-normal-title' ) );
+               $form = $this->getNormalForm();
+               if ( $form->show() ) {
+                       $out->addHTML( $this->successMessage );
+                       $out->addReturnTo( SpecialPage::getTitleFor( 'Watchlist' ) );
+               } elseif ( $this->toc !== false ) {
+                       $out->prependHTML( $this->toc );
+                       $out->addModules( 'mediawiki.toc' );
+               }
+       }
        /**
         * Return an array of subpages beginning with $search that this special page will accept.
         *
         * @param string $search Prefix to search for
 -       * @param integer $limit Maximum number of results to return
 +       * @param int $limit Maximum number of results to return
         * @return string[] Matching subpages
         */
        public function prefixSearchSubpages( $search, $limit = 10 ) {
         *
         * @return array
         */
-       private function getWatchlistInfo() {
+       protected function getWatchlistInfo() {
                $titles = array();
                $dbr = wfGetDB( DB_MASTER );
  
                $count = 0;
  
                foreach ( $this->getWatchlistInfo() as $namespace => $pages ) {
 -                      if ( $namespace >= 0 ) {
 -                              $fields['TitlesNs' . $namespace] = array(
 -                                      'class' => 'EditWatchlistCheckboxSeriesField',
 -                                      'options' => array(),
 -                                      'section' => "ns$namespace",
 -                              );
 -                      }
 +                      $options = array();
  
                        foreach ( array_keys( $pages ) as $dbkey ) {
                                $title = Title::makeTitleSafe( $namespace, $dbkey );
  
                                if ( $this->checkTitle( $title, $namespace, $dbkey ) ) {
                                        $text = $this->buildRemoveLine( $title );
 -                                      $fields['TitlesNs' . $namespace]['options'][$text] = $title->getPrefixedText();
 +                                      $options[$text] = $title->getPrefixedText();
                                        $count++;
                                }
                        }
 +
 +                      // checkTitle can filter some options out, avoid empty sections
 +                      if ( count( $options ) > 0 ) {
 +                              $fields['TitlesNs' . $namespace] = array(
 +                                      'class' => 'EditWatchlistCheckboxSeriesField',
 +                                      'options' => $options,
 +                                      'section' => "ns$namespace",
 +                              );
 +                      }
                }
                $this->cleanupWatchlist();
  
@@@ -766,8 -779,8 +782,8 @@@ class EditWatchlistCheckboxSeriesField 
         * form is open (bug 32126), but we know that invalid items will
         * be harmless so we can override it here.
         *
 -       * @param string $value the value the field was submitted with
 -       * @param array $alldata the data collected from the form
 +       * @param string $value The value the field was submitted with
 +       * @param array $alldata The data collected from the form
         * @return bool|string Bool true on success, or String error to display.
         */
        function validate( $value, $alldata ) {