Matmarex has uploaded a new change for review. https://gerrit.wikimedia.org/r/75579
Change subject: Enhanced RC: Add a "view changes since my last visit" link ...................................................................... Enhanced RC: Add a "view changes since my last visit" link It's only shown if there are any unviewed changes and if as least one of previous versions was viewed already. * Added new message 'enhancedrc-since-last-visit' for link text * Renamed 'nchanges' to 'enhancedrc-changes-count' for consistency * Added 'enhancedrc-history' to replace 'hist' in enhanced RC context Bug: 51901 Change-Id: Id74fe88bb2a1879651935ac56e9cdcb2e54b331f --- M includes/ChangesList.php M languages/messages/MessagesEn.php M languages/messages/MessagesQqq.php M maintenance/language/messages.inc 4 files changed, 54 insertions(+), 13 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/79/75579/1 diff --git a/includes/ChangesList.php b/includes/ChangesList.php index eb6465a..a8406da 100644 --- a/includes/ChangesList.php +++ b/includes/ChangesList.php @@ -122,7 +122,7 @@ private function preCacheMessages() { if ( !isset( $this->message ) ) { foreach ( array( - 'cur', 'diff', 'hist', 'last', 'blocklink', 'history', + 'cur', 'diff', 'hist', 'enhancedrc-history', 'last', 'blocklink', 'history', 'semicolon-separator', 'pipe-separator' ) as $msg ) { $this->message[$msg] = $this->msg( $msg )->escaped(); @@ -951,12 +951,29 @@ $r .= $this->getLanguage()->getDirMark(); $queryParams['curid'] = $curId; + # Changes message - $n = count( $block ); static $nchanges = array(); + static $sinceLastVisitMsg = array(); + + $n = count( $block ); if ( !isset( $nchanges[$n] ) ) { - $nchanges[$n] = $this->msg( 'nchanges' )->numParams( $n )->escaped(); + $nchanges[$n] = $this->msg( 'enhancedrc-changes-count' )->numParams( $n )->escaped(); } + + $sinceLast = 0; + $unvisitedOldid = null; + foreach ( $block as $rcObj ) { + // Same logic as below inside main foreach + if ( $rcObj->watched && $rcObj->mAttribs['rc_timestamp'] >= $rcObj->watched ) { + $sinceLast++; + $unvisitedOldid = $rcObj->mAttribs['rc_last_oldid']; + } + } + if ( !isset( $sinceLastVisitMsg[$sinceLast] ) ) { + $sinceLastVisitMsg[$sinceLast] = $this->msg( 'enhancedrc-since-last-visit' )->numParams( $sinceLast )->escaped(); + } + # Total change link $r .= ' '; $logtext = ''; @@ -966,17 +983,28 @@ } elseif ( $isnew ) { $logtext .= $nchanges[$n]; } else { - $params = $queryParams; - $params['diff'] = $currentRevision; - $params['oldid'] = $oldid; - $logtext .= Linker::link( $block[0]->getTitle(), $nchanges[$n], array(), - $params, + $queryParams + array( + 'diff' => $currentRevision, + 'oldid' => $oldid, + ), array( 'known', 'noclasses' ) ); + if ( $sinceLast > 0 && $sinceLast < $n ) { + $logtext .= $this->message['pipe-separator'] . Linker::link( + $block[0]->getTitle(), + $sinceLastVisitMsg[$sinceLast], + array(), + $queryParams + array( + 'diff' => $currentRevision, + 'oldid' => $unvisitedOldid, + ), + array( 'known', 'noclasses' ) + ); + } } } @@ -984,7 +1012,7 @@ if ( $allLogs ) { // don't show history link for logs } elseif ( $namehidden || !$block[0]->getTitle()->exists() ) { - $logtext .= $this->message['pipe-separator'] . $this->message['hist']; + $logtext .= $this->message['pipe-separator'] . $this->message['enhancedrc-history']; } else { $params = $queryParams; $params['action'] = 'history'; @@ -992,7 +1020,7 @@ $logtext .= $this->message['pipe-separator'] . Linker::linkKnown( $block[0]->getTitle(), - $this->message['hist'], + $this->message['enhancedrc-history'], array(), $params ); diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index bb4763b..6b7f134 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -2174,7 +2174,9 @@ 'action-editmyprivateinfo' => 'edit your private information', # Recent changes -'nchanges' => '$1 {{PLURAL:$1|change|changes}}', +'enhancedrc-changes-count' => '$1 {{PLURAL:$1|change|changes}}', +'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|since last visit}}', +'enhancedrc-history' => 'history', 'recentchanges' => 'Recent changes', 'recentchanges-url' => 'Special:RecentChanges', # do not translate or duplicate this message to other languages 'recentchanges-legend' => 'Recent changes options', diff --git a/languages/messages/MessagesQqq.php b/languages/messages/MessagesQqq.php index 1285026..b7fb35f 100644 --- a/languages/messages/MessagesQqq.php +++ b/languages/messages/MessagesQqq.php @@ -3042,7 +3042,16 @@ 'action-editmyprivateinfo' => '{{doc-action|editmyprivateinfo}}', # Recent changes -'nchanges' => 'Appears on the [[Special:RecentChanges]] special page in brackets after pages having more than one change on that date. $1 is the number of changes on that day.', +'enhancedrc-changes-count' => 'Appears on enhanced watchlist and recent changes when page has more than one change on given date, linking to a diff of the changes. +$1 is the number of changes on that day (2 or more). +Three messages are shown side-by-side: ({{msg-mw|enhancedrc-changes-count}} | {{msg-mw|enhancedrc-since-last-visit}} | {{msg-mw|enhancedrc-history}}).', + +'enhancedrc-since-last-visit' => 'Appears on enhanced watchlist and recent changes when page has more than one change on given date and at least one that the user hasn\'t seen yet, linking to a diff of the unviewed changes. +$1 is the number of unviewed changes (1 or more). +Three messages are shown side-by-side: ({{msg-mw|enhancedrc-changes-count}} | {{msg-mw|enhancedrc-since-last-visit}} | {{msg-mw|enhancedrc-history}}).', +'enhancedrc-history' => 'Appears on enhanced watchlist and recent changes when page has more than one change on given date, linking to its history. +This is the same as {{msg-mw|hist}}, but not abbreviated. +Three messages are shown side-by-side: ({{msg-mw|enhancedrc-changes-count}} | {{msg-mw|enhancedrc-since-last-visit}} | {{msg-mw|enhancedrc-history}}).',, 'recentchanges' => 'The text of the link in sidebar going to the special page [[Special:RecentChanges]]. Also the page title of that special page. See also: diff --git a/maintenance/language/messages.inc b/maintenance/language/messages.inc index 43d05d0..db129ba 100644 --- a/maintenance/language/messages.inc +++ b/maintenance/language/messages.inc @@ -1302,7 +1302,9 @@ 'action-editmyprivateinfo', ), 'recentchanges' => array( - 'nchanges', + 'enhancedrc-changes-count', + 'enhancedrc-since-last-visit', + 'enhancedrc-history', 'recentchanges', 'recentchanges-url', 'recentchanges-legend', -- To view, visit https://gerrit.wikimedia.org/r/75579 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id74fe88bb2a1879651935ac56e9cdcb2e54b331f Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Matmarex <matma....@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits