Merge "WLFilters: set default values"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 29 Aug 2017 00:50:06 +0000 (00:50 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 29 Aug 2017 00:50:06 +0000 (00:50 +0000)
1  2 
includes/specials/SpecialWatchlist.php

@@@ -97,8 -97,6 +97,8 @@@ class SpecialWatchlist extends ChangesL
                parent::execute( $subpage );
  
                if ( $this->isStructuredFilterUiEnabled() ) {
 +                      $output->addModuleStyles( [ 'mediawiki.rcfilters.highlightCircles.seenunseen.styles' ] );
 +
                        $output->addJsConfigVars( 'wgStructuredChangeFiltersLiveUpdateSupported', false );
                        $output->addJsConfigVars(
                                'wgStructuredChangeFiltersSavedQueriesPreferenceName',
        protected function registerFilters() {
                parent::registerFilters();
  
+               // legacy 'extended' filter
+               $this->registerFilterGroup( new ChangesListBooleanFilterGroup( [
+                       'name' => 'extended-group',
+                       'filters' => [
+                               [
+                                       'name' => 'extended',
+                                       'isReplacedInStructuredUi' => true,
+                                       'isVisible' => false,
+                                       'activeValue' => false,
+                                       'default' => $this->getUser()->getBoolOption( 'extendwatchlist' ),
+                                       'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables,
+                                                                                                 &$fields, &$conds, &$query_options, &$join_conds ) {
+                                               $nonRevisionTypes = [ RC_LOG ];
+                                               Hooks::run( 'SpecialWatchlistGetNonRevisionTypes', [ &$nonRevisionTypes ] );
+                                               if ( $nonRevisionTypes ) {
+                                                       $conds[] = $dbr->makeList(
+                                                               [
+                                                                       'rc_this_oldid=page_latest',
+                                                                       'rc_type' => $nonRevisionTypes,
+                                                               ],
+                                                               LIST_OR
+                                                       );
+                                               }
+                                       },
+                               ]
+                       ],
+               ] ) );
+               if ( $this->isStructuredFilterUiEnabled() ) {
+                       $this->getFilterGroup( 'lastRevision' )
+                               ->getFilter( 'hidepreviousrevisions' )
+                               ->setDefault( !$this->getUser()->getBoolOption( 'extendwatchlist' ) );
+               }
                $this->registerFilterGroup( new ChangesListStringOptionsFilterGroup( [
                        'name' => 'watchlistactivity',
                        'title' => 'rcfilters-filtergroup-watchlistactivity',
                $user = $this->getUser();
  
                $opts->add( 'days', $user->getOption( 'watchlistdays' ), FormOptions::FLOAT );
-               $opts->add( 'extended', $user->getBoolOption( 'extendwatchlist' ) );
                $opts->add( 'limit', $user->getIntOption( 'wllimit' ), FormOptions::INT );
  
                return $opts;
                        foreach ( $this->filterGroups as $filterGroup ) {
                                if ( $filterGroup instanceof ChangesListBooleanFilterGroup ) {
                                        foreach ( $filterGroup->getFilters() as $filter ) {
-                                               $allBooleansFalse[$filter->getName()] = false;
+                                               if ( $filter->isVisible() ) {
+                                                       $allBooleansFalse[$filter->getName()] = false;
+                                               }
                                        }
                                }
                        }
                $dbr = $this->getDB();
                $user = $this->getUser();
  
-               # Toggle watchlist content (all recent edits or just the latest)
-               if ( !$opts['extended'] ) {
-                       # Top log Ids for a page are not stored
-                       $nonRevisionTypes = [ RC_LOG ];
-                       Hooks::run( 'SpecialWatchlistGetNonRevisionTypes', [ &$nonRevisionTypes ] );
-                       if ( $nonRevisionTypes ) {
-                               $conds[] = $dbr->makeList(
-                                       [
-                                               'rc_this_oldid=page_latest',
-                                               'rc_type' => $nonRevisionTypes,
-                                       ],
-                                       LIST_OR
-                               );
-                       }
-               }
                $tables = array_merge( [ 'recentchanges', 'watchlist' ], $tables );
                $fields = array_merge( RecentChange::selectFields(), $fields );
  
                $count = $store->countWatchedItems( $this->getUser() );
                return floor( $count / 2 );
        }
+       function getDefaultLimit() {
+               return $this->getUser()->getIntOption( 'wllimit' );
+       }
+       function getDefaultDays() {
+               return $this->getUser()->getIntOption( 'watchlistdays' );
+       }
  }