Do not bold all entries of an unvisited page on the Watchlist
authorumherirrender <umherirrender_de.wp@web.de>
Mon, 31 Dec 2012 19:41:00 +0000 (20:41 +0100)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 15 May 2013 15:55:37 +0000 (15:55 +0000)
When a page is unvisited (wl_notificationtimestamp IS NOT NULL) all
entries of that page on the watchlist gets bold (class=mw-changeslist-line-watched),
because wl_notificationtimestamp is only checked for null.

wl_notificationtimestamp should be compared against rc_timestamp to
find only the really unvisited pages since the last visit on that page.

It is confusing, when all entries of a page on the watchlist gets bold,
but only some of the newer are unvisited.

Support for old and enhanced watchlist.

Change-Id: I7265141a6c84bcbdd7b651bd2983a08b73c6ddfe

includes/ChangesList.php
resources/mediawiki.special/mediawiki.special.changeslist.css

index 73d3b61..5ecd4d9 100644 (file)
@@ -618,7 +618,8 @@ class OldChangesList extends ChangesList {
 
                // Indicate watched status on the line to allow for more
                // comprehensive styling.
-               $classes[] = $watched ? 'mw-changeslist-line-watched' : 'mw-changeslist-line-not-watched';
+               $classes[] = $watched && $rc->mAttribs['rc_timestamp'] >= $watched
+                       ? 'mw-changeslist-line-watched' : 'mw-changeslist-line-not-watched';
 
                // Moved pages (very very old, not supported anymore)
                if ( $rc->mAttribs['rc_type'] == RC_MOVE || $rc->mAttribs['rc_type'] == RC_MOVE_OVER_REDIRECT ) {
@@ -880,7 +881,8 @@ class EnhancedChangesList extends ChangesList {
                        $classes[] = Sanitizer::escapeClass( 'mw-changeslist-ns'
                                        . $block[0]->mAttribs['rc_namespace'] . '-' . $block[0]->mAttribs['rc_title'] );
                }
-               $classes[] = $block[0]->watched ? 'mw-changeslist-line-watched' : 'mw-changeslist-line-not-watched';
+               $classes[] = $block[0]->watched && $block[0]->mAttribs['rc_timestamp'] >= $block[0]->watched
+                       ? 'mw-changeslist-line-watched' : 'mw-changeslist-line-not-watched';
                $r = Html::openElement( 'table', array( 'class' => $classes ) ) .
                        Html::openElement( 'tr' );
 
@@ -1061,7 +1063,10 @@ class EnhancedChangesList extends ChangesList {
                        $classes = array();
                        $type = $rcObj->mAttribs['rc_type'];
 
-                       $r .= '<tr><td></td><td class="mw-enhanced-rc">';
+                       $trClass = $rcObj->watched && $rcObj->mAttribs['rc_timestamp'] >= $rcObj->watched
+                               ? ' class="mw-enhanced-watched"' : '';
+
+                       $r .= '<tr' . $trClass . '><td></td><td class="mw-enhanced-rc">';
                        $r .= $this->recentChangesFlags( array(
                                'newpage' => $type == RC_NEW,
                                'minor' => $rcObj->mAttribs['rc_minor'],
@@ -1202,7 +1207,8 @@ class EnhancedChangesList extends ChangesList {
                        $classes[] = Sanitizer::escapeClass( 'mw-changeslist-ns' .
                                        $rcObj->mAttribs['rc_namespace'] . '-' . $rcObj->mAttribs['rc_title'] );
                }
-               $classes[] = $rcObj->watched ? 'mw-changeslist-line-watched' : 'mw-changeslist-line-not-watched';
+               $classes[] = $rcObj->watched && $rcObj->mAttribs['rc_timestamp'] >= $rcObj->watched
+                       ? 'mw-changeslist-line-watched' : 'mw-changeslist-line-not-watched';
                $r = Html::openElement( 'table', array( 'class' => $classes ) ) .
                        Html::openElement( 'tr' );
 
index ab57314..3c841e5 100644 (file)
@@ -59,6 +59,7 @@ table.mw-enhanced-rc td.mw-enhanced-rc-nested {
        background: url(images/arrow-expanded.png) no-repeat left bottom;
 }
 
-.mw-changeslist-line-watched .mw-title {
+.mw-changeslist-line-watched .mw-title,
+.mw-enhanced-watched .mw-enhanced-rc-time {
        font-weight: bold;
 }