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

Reply via email to