'mediawiki.special.changeslist.visitedstatus',
'mediawiki.special.watchlist',
] );
+ $output->addModuleStyles( [ 'mediawiki.special.watchlist.styles' ] );
$mode = SpecialEditWatchlist::getMode( $request, $subpage );
if ( $mode !== false ) {
}
/**
- * @inheritdoc
+ * @inheritDoc
*/
protected function transformFilterDefinition( array $filterDefinition ) {
if ( isset( $filterDefinition['showHideSuffix'] ) ) {
}
/**
- * @inheritdoc
+ * @inheritDoc
*/
protected function registerFilters() {
parent::registerFilters();
}
/**
- * @inheritdoc
+ * @inheritDoc
*/
protected function buildQuery( &$tables, &$fields, &$conds, &$query_options,
&$join_conds, FormOptions $opts
}
/**
- * @inheritdoc
+ * @inheritDoc
*/
protected function doMainQuery( $tables, $fields, $conds, $query_options,
$join_conds, FormOptions $opts
# Toggle watchlist content (all recent edits or just the latest)
if ( $opts['extended'] ) {
- $limitWatchlist = $user->getIntOption( 'wllimit' );
$usePage = false;
} else {
# Top log Ids for a page are not stored
LIST_OR
);
}
- $limitWatchlist = 0;
$usePage = true;
}
$tables = array_merge( [ 'recentchanges', 'watchlist' ], $tables );
$fields = array_merge( RecentChange::selectFields(), $fields );
- $query_options = array_merge( [ 'ORDER BY' => 'rc_timestamp DESC' ], $query_options );
+ $query_options = array_merge( [
+ 'ORDER BY' => 'rc_timestamp DESC',
+ 'LIMIT' => $user->getIntOption( 'wllimit' )
+ ], $query_options );
$join_conds = array_merge(
[
'watchlist' => [
if ( $this->getConfig()->get( 'ShowUpdatedMarker' ) ) {
$fields[] = 'wl_notificationtimestamp';
}
- if ( $limitWatchlist ) {
- $query_options['LIMIT'] = $limitWatchlist;
- }
$rollbacker = $user->isAllowed( 'rollback' );
if ( $usePage || $rollbacker ) {
$list = ChangesList::newFromContext( $this->getContext(), $this->filterGroups );
$list->setWatchlistDivs();
$list->initChangesListRows( $rows );
+ if ( $user->getOption( 'watchlistunwatchlinks' ) ) {
+ $list->setChangeLinePrefixer( function ( RecentChange $rc, ChangesList $cl, $grouped ) {
+ // Don't show unwatch link if the line is a grouped log entry using EnhancedChangesList,
+ // since EnhancedChangesList groups log entries by performer rather than by target article
+ if ( $rc->mAttribs['rc_type'] == RC_LOG && $cl instanceof EnhancedChangesList &&
+ $grouped ) {
+ return '';
+ } else {
+ return $this->getLinkRenderer()
+ ->makeKnownLink( $rc->getTitle(),
+ $this->msg( 'watchlist-unwatch' )->text(), [
+ 'class' => 'mw-unwatch-link',
+ 'title' => $this->msg( 'tooltip-ca-unwatch' )->text()
+ ], [ 'action' => 'unwatch' ] ) . ' ';
+ }
+ } );
+ }
$dbr->dataSeek( $rows, 0 );
if ( $this->getConfig()->get( 'RCShowWatchingUsers' )
// default string representation, for example, and would confuse comparisons.
// Misleadingly, the 'days' option supports hours too.
- $days = array_map( 'strval', [ 1/24, 2/24, 6/24, 12/24, 1, 3, 7 ] );
+ $days = array_map( 'strval', [ 1 / 24, 2 / 24, 6 / 24, 12 / 24, 1, 3, 7 ] );
$userWatchlistOption = (string)$this->getUser()->getOption( 'watchlistdays' );
// add the user preference, if it isn't available already