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,
+ '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;
// unchecked boxes.
foreach ( $this->filterGroups as $filterGroup ) {
if ( $filterGroup instanceof ChangesListBooleanFilterGroup ) {
+ /** @var ChangesListBooleanFilter $filter */
foreach ( $filterGroup->getFilters() as $filter ) {
- $allBooleansFalse[$filter->getName()] = false;
+ if ( $filter->displaysOnUnstructuredUi() ) {
+ $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' );
+ }
}