From 63601400e476c6cf43d985f3e7b9864681695ed4 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Fri, 18 Jan 2013 16:46:04 +0100 Subject: Update to MediaWiki 1.20.2 this update includes: * adjusted Arch Linux skin * updated FluxBBAuthPlugin * patch for https://bugzilla.wikimedia.org/show_bug.cgi?id=44024 --- includes/ChangesList.php | 276 ++++++++++++++++++++++++++++------------------- 1 file changed, 167 insertions(+), 109 deletions(-) (limited to 'includes/ChangesList.php') diff --git a/includes/ChangesList.php b/includes/ChangesList.php index fd97e0cb..84677124 100644 --- a/includes/ChangesList.php +++ b/includes/ChangesList.php @@ -1,10 +1,27 @@ tag + * Sets the list to use a "
  • " tag * @param $value Boolean */ public function setWatchlistDivs( $value = true ) { @@ -106,7 +123,7 @@ class ChangesList extends ContextSource { if( !isset( $this->message ) ) { foreach ( explode( ' ', 'cur diff hist last blocklink history ' . 'semicolon-separator pipe-separator' ) as $msg ) { - $this->message[$msg] = wfMsgExt( $msg, array( 'escapenoentities' ) ); + $this->message[$msg] = $this->msg( $msg )->escaped(); } } } @@ -128,7 +145,7 @@ class ChangesList extends ContextSource { } /** - * Provide the element appropriate to a given abbreviated flag, + * Provide the "" element appropriate to a given abbreviated flag, * namely the flag indicating a new page, a minor edit, a bot edit, or an * unpatrolled edit. By default in English it will contain "N", "m", "b", * "!" respectively, plus it will have an appropriate title and class. @@ -146,8 +163,8 @@ class ChangesList extends ContextSource { 'unpatrolled' => array( 'unpatrolledletter', 'recentchanges-label-unpatrolled' ), ); foreach( $messages as &$value ) { - $value[0] = wfMsgExt( $value[0], 'escapenoentities' ); - $value[1] = wfMsgExt( $value[1], 'escapenoentities' ); + $value[0] = wfMessage( $value[0] )->escaped(); + $value[1] = wfMessage( $value[1] )->escaped(); } } @@ -175,6 +192,7 @@ class ChangesList extends ContextSource { $this->rcCacheIndex = 0; $this->lastdate = ''; $this->rclistOpen = false; + $this->getOutput()->addModuleStyles( 'mediawiki.special.changeslist' ); return ''; } @@ -182,22 +200,31 @@ class ChangesList extends ContextSource { * Show formatted char difference * @param $old Integer: bytes * @param $new Integer: bytes + * @param $context IContextSource context to use * @return String */ - public static function showCharacterDifference( $old, $new ) { - global $wgRCChangedSizeThreshold, $wgLang, $wgMiserMode; + public static function showCharacterDifference( $old, $new, IContextSource $context = null ) { + global $wgRCChangedSizeThreshold, $wgMiserMode; + + if ( !$context ) { + $context = RequestContext::getMain(); + } + + $new = (int)$new; + $old = (int)$old; $szdiff = $new - $old; - $code = $wgLang->getCode(); + $lang = $context->getLanguage(); + $code = $lang->getCode(); static $fastCharDiff = array(); if ( !isset($fastCharDiff[$code]) ) { - $fastCharDiff[$code] = $wgMiserMode || wfMsgNoTrans( 'rc-change-size' ) === '$1'; + $fastCharDiff[$code] = $wgMiserMode || $context->msg( 'rc-change-size' )->plain() === '$1'; } - $formattedSize = $wgLang->formatNum($szdiff); + $formattedSize = $lang->formatNum( $szdiff ); if ( !$fastCharDiff[$code] ) { - $formattedSize = wfMsgExt( 'rc-change-size', array( 'parsemag' ), $formattedSize ); + $formattedSize = $context->msg( 'rc-change-size', $formattedSize )->text(); } if( abs( $szdiff ) > abs( $wgRCChangedSizeThreshold ) ) { @@ -217,11 +244,34 @@ class ChangesList extends ContextSource { $formattedSizeClass = 'mw-plusminus-neg'; } - $formattedTotalSize = wfMsgExt( 'rc-change-size-new', 'parsemag', $wgLang->formatNum( $new ) ); + $formattedTotalSize = $context->msg( 'rc-change-size-new' )->numParams( $new )->text(); return Html::element( $tag, array( 'dir' => 'ltr', 'class' => $formattedSizeClass, 'title' => $formattedTotalSize ), - wfMessage( 'parentheses', $formattedSize )->plain() ) . $wgLang->getDirMark(); + $context->msg( 'parentheses', $formattedSize )->plain() ) . $lang->getDirMark(); + } + + /** + * Format the character difference of one or several changes. + * + * @param $old RecentChange + * @param $new RecentChange last change to use, if not provided, $old will be used + * @return string HTML fragment + */ + public function formatCharacterDifference( RecentChange $old, RecentChange $new = null ) { + $oldlen = $old->mAttribs['rc_old_len']; + + if ( $new ) { + $newlen = $new->mAttribs['rc_new_len']; + } else { + $newlen = $old->mAttribs['rc_new_len']; + } + + if( $oldlen === null || $newlen === null ) { + return ''; + } + + return self::showCharacterDifference( $oldlen, $newlen, $this->getContext() ); } /** @@ -238,7 +288,7 @@ class ChangesList extends ContextSource { public function insertDateHeader( &$s, $rc_timestamp ) { # Make date header if necessary - $date = $this->getLanguage()->date( $rc_timestamp, true, true ); + $date = $this->getLanguage()->userDate( $rc_timestamp, $this->getUser() ); if( $date != $this->lastdate ) { if( $this->lastdate != '' ) { $s .= "\n"; @@ -252,7 +302,7 @@ class ChangesList extends ContextSource { public function insertLog( &$s, $title, $logtype ) { $page = new LogPage( $logtype ); $logname = $page->getName()->escaped(); - $s .= '(' . Linker::linkKnown( $title, $logname ) . ')'; + $s .= $this->msg( 'parentheses' )->rawParams( Linker::linkKnown( $title, $logname ) )->escaped(); } /** @@ -284,9 +334,9 @@ class ChangesList extends ContextSource { $query ); } - $s .= '(' . $diffLink . $this->message['pipe-separator']; + $diffhist = $diffLink . $this->message['pipe-separator']; # History link - $s .= Linker::linkKnown( + $diffhist .= Linker::linkKnown( $rc->getTitle(), $this->message['hist'], array(), @@ -295,7 +345,7 @@ class ChangesList extends ContextSource { 'action' => 'history' ) ); - $s .= ') . . '; + $s .= $this->msg( 'parentheses' )->rawParams( $diffhist )->escaped() . ' . . '; } /** @@ -316,16 +366,14 @@ class ChangesList extends ContextSource { $articlelink = Linker::linkKnown( $rc->getTitle(), null, - array(), + array( 'class' => 'mw-changeslist-title' ), $params ); if( $this->isDeleted($rc,Revision::DELETED_TEXT) ) { $articlelink = '' . $articlelink . ''; } - # Bolden pages watched by this user - if( $watched ) { - $articlelink = "{$articlelink}"; - } + # To allow for boldening pages watched by this user + $articlelink = "{$articlelink}"; # RTL/LTR marker $articlelink .= $this->getLanguage()->getDirMark(); @@ -340,8 +388,8 @@ class ChangesList extends ContextSource { * @param $rc RecentChange */ public function insertTimestamp( &$s, $rc ) { - $s .= $this->message['semicolon-separator'] . - $this->getLanguage()->time( $rc->mAttribs['rc_timestamp'], true, true ) . ' . . '; + $s .= $this->message['semicolon-separator'] . '' . + $this->getLanguage()->userTime( $rc->mAttribs['rc_timestamp'], $this->getUser() ) . ' . . '; } /** @@ -352,7 +400,7 @@ class ChangesList extends ContextSource { */ public function insertUserRelatedLinks( &$s, &$rc ) { if( $this->isDeleted( $rc, Revision::DELETED_USER ) ) { - $s .= ' ' . wfMsgHtml( 'rev-deleted-user' ) . ''; + $s .= ' ' . $this->msg( 'rev-deleted-user' )->escaped() . ''; } else { $s .= $this->getLanguage()->getDirMark() . Linker::userLink( $rc->mAttribs['rc_user'], $rc->mAttribs['rc_user_text'] ); @@ -364,22 +412,25 @@ class ChangesList extends ContextSource { * Insert a formatted action * * @param $rc RecentChange + * @return string */ public function insertLogEntry( $rc ) { $formatter = LogFormatter::newFromRow( $rc->mAttribs ); + $formatter->setContext( $this->getContext() ); $formatter->setShowUserToolLinks( true ); $mark = $this->getLanguage()->getDirMark(); return $formatter->getActionText() . " $mark" . $formatter->getComment(); } - /** + /** * Insert a formatted comment * @param $rc RecentChange + * @return string */ public function insertComment( $rc ) { if( $rc->mAttribs['rc_type'] != RC_MOVE && $rc->mAttribs['rc_type'] != RC_MOVE_OVER_REDIRECT ) { if( $this->isDeleted( $rc, Revision::DELETED_COMMENT ) ) { - return ' ' . wfMsgHtml( 'rev-deleted-comment' ) . ''; + return ' ' . $this->msg( 'rev-deleted-comment' )->escaped() . ''; } else { return Linker::commentBlock( $rc->mAttribs['rc_comment'], $rc->getTitle() ); } @@ -397,13 +448,13 @@ class ChangesList extends ContextSource { /** * Returns the string which indicates the number of watching users + * @return string */ protected function numberofWatchingusers( $count ) { static $cache = array(); if( $count > 0 ) { if( !isset( $cache[$count] ) ) { - $cache[$count] = wfMsgExt( 'number_of_watching_users_RCview', - array('parsemag', 'escape' ), $this->getLanguage()->formatNum( $count ) ); + $cache[$count] = $this->msg( 'number_of_watching_users_RCview' )->numParams( $count )->escaped(); } return $cache[$count]; } else { @@ -456,7 +507,7 @@ class ChangesList extends ContextSource { * @param $rc RecentChange */ public function insertRollback( &$s, &$rc ) { - if( !$rc->mAttribs['rc_new'] && $rc->mAttribs['rc_this_oldid'] && $rc->mAttribs['rc_cur_id'] ) { + if( $rc->mAttribs['rc_type'] != RC_NEW && $rc->mAttribs['rc_this_oldid'] && $rc->mAttribs['rc_cur_id'] ) { $page = $rc->getTitle(); /** Check for rollback and edit permissions, disallow special pages, and only * show a link on the top-most revision */ @@ -497,7 +548,7 @@ class ChangesList extends ContextSource { if ( !$rc->mAttribs['rc_patrolled'] ) { if ( $this->getUser()->useRCPatrol() ) { $unpatrolled = true; - } elseif ( $this->getUser()->useNPPatrol() && $rc->mAttribs['rc_new'] ) { + } elseif ( $this->getUser()->useNPPatrol() && $rc->mAttribs['rc_type'] == RC_NEW ) { $unpatrolled = true; } } @@ -513,7 +564,10 @@ class OldChangesList extends ChangesList { /** * Format a line using the old system (aka without any javascript). * - * @param $rc RecentChange + * @param $rc RecentChange, passed by reference + * @param $watched Bool (default false) + * @param $linenumber Int (default null) + * @return string */ public function recentChangesLine( &$rc, $watched = false, $linenumber = null ) { global $wgRCShowChangedSize; @@ -537,11 +591,15 @@ 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'; + // Moved pages (very very old, not supported anymore) if( $rc->mAttribs['rc_type'] == RC_MOVE || $rc->mAttribs['rc_type'] == RC_MOVE_OVER_REDIRECT ) { // Log entries } elseif( $rc->mAttribs['rc_log_type'] ) { - $logtitle = Title::newFromText( 'Log/'.$rc->mAttribs['rc_log_type'], NS_SPECIAL ); + $logtitle = SpecialPage::getTitleFor( 'Log', $rc->mAttribs['rc_log_type'] ); $this->insertLog( $s, $logtitle, $rc->mAttribs['rc_log_type'] ); // Log entries (old format) or log targets, and special pages } elseif( $rc->mAttribs['rc_namespace'] == NS_SPECIAL ) { @@ -555,7 +613,7 @@ class OldChangesList extends ChangesList { # M, N, b and ! (minor, new, bot and unpatrolled) $s .= $this->recentChangesFlags( array( - 'newpage' => $rc->mAttribs['rc_new'], + 'newpage' => $rc->mAttribs['rc_type'] == RC_NEW, 'minor' => $rc->mAttribs['rc_minor'], 'unpatrolled' => $unpatrolled, 'bot' => $rc->mAttribs['rc_bot'] @@ -567,10 +625,10 @@ class OldChangesList extends ChangesList { # Edit/log timestamp $this->insertTimestamp( $s, $rc ); # Bytes added or removed - if( $wgRCShowChangedSize ) { - $cd = $rc->getCharacterDifference(); - if( $cd != '' ) { - $s .= "$cd . . "; + if ( $wgRCShowChangedSize ) { + $cd = $this->formatCharacterDifference( $rc ); + if ( $cd !== '' ) { + $s .= $cd . ' . . '; } } @@ -593,8 +651,7 @@ class OldChangesList extends ChangesList { # How many users watch this page if( $rc->numberofWatchingusers > 0 ) { - $s .= ' ' . wfMsgExt( 'number_of_watching_users_RCview', - array( 'parsemag', 'escape' ), $this->getLanguage()->formatNum( $rc->numberofWatchingusers ) ); + $s .= ' ' . $this->numberofWatchingusers( $rc->numberofWatchingusers ); } if( $this->watchlist ) { @@ -646,7 +703,7 @@ class EnhancedChangesList extends ChangesList { $curIdEq = array( 'curid' => $rc->mAttribs['rc_cur_id'] ); # If it's a new day, add the headline and flush the cache - $date = $this->getLanguage()->date( $rc->mAttribs['rc_timestamp'], true ); + $date = $this->getLanguage()->userDate( $rc->mAttribs['rc_timestamp'], $this->getUser() ); $ret = ''; if( $date != $this->lastdate ) { # Process current cache @@ -675,7 +732,7 @@ class EnhancedChangesList extends ChangesList { $logtitle = SpecialPage::getTitleFor( 'Log', $logType ); $logpage = new LogPage( $logType ); $logname = $logpage->getName()->escaped(); - $clink = '(' . Linker::linkKnown( $logtitle, $logname ) . ')'; + $clink = $this->msg( 'parentheses' )->rawParams( Linker::linkKnown( $logtitle, $logname ) )->escaped(); } else { $clink = Linker::link( $rc->getTitle() ); } @@ -694,7 +751,7 @@ class EnhancedChangesList extends ChangesList { $showdifflinks = false; } - $time = $this->getLanguage()->time( $rc->mAttribs['rc_timestamp'], true, true ); + $time = $this->getLanguage()->userTime( $rc->mAttribs['rc_timestamp'], $this->getUser() ); $rc->watched = $watched; $rc->link = $clink; $rc->timestamp = $time; @@ -743,7 +800,7 @@ class EnhancedChangesList extends ChangesList { # Make user links if( $this->isDeleted( $rc, Revision::DELETED_USER ) ) { - $rc->userlink = ' ' . wfMsgHtml( 'rev-deleted-user' ) . ''; + $rc->userlink = ' ' . $this->msg( 'rev-deleted-user' )->escaped() . ''; } else { $rc->userlink = Linker::userLink( $rc->mAttribs['rc_user'], $rc->mAttribs['rc_user_text'] ); $rc->usertalklink = Linker::userToolLinks( $rc->mAttribs['rc_user'], $rc->mAttribs['rc_user_text'] ); @@ -779,6 +836,7 @@ class EnhancedChangesList extends ChangesList { /** * Enhanced RC group + * @return string */ protected function recentChangesBlockGroup( $block ) { global $wgRCShowChangedSize; @@ -786,14 +844,16 @@ class EnhancedChangesList extends ChangesList { wfProfileIn( __METHOD__ ); # Add the namespace and title of the block as part of the class + $classes = array( 'mw-collapsible', 'mw-collapsed', 'mw-enhanced-rc' ); if ( $block[0]->mAttribs['rc_log_type'] ) { # Log entry - $classes = 'mw-collapsible mw-collapsed mw-enhanced-rc ' . Sanitizer::escapeClass( 'mw-changeslist-log-' + $classes[] = Sanitizer::escapeClass( 'mw-changeslist-log-' . $block[0]->mAttribs['rc_log_type'] . '-' . $block[0]->mAttribs['rc_title'] ); } else { - $classes = 'mw-collapsible mw-collapsed mw-enhanced-rc ' . Sanitizer::escapeClass( 'mw-changeslist-ns' + $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'; $r = Html::openElement( 'table', array( 'class' => $classes ) ) . Html::openElement( 'tr' ); @@ -808,7 +868,7 @@ class EnhancedChangesList extends ChangesList { $allLogs = true; foreach( $block as $rcObj ) { $oldid = $rcObj->mAttribs['rc_last_oldid']; - if( $rcObj->mAttribs['rc_new'] ) { + if( $rcObj->mAttribs['rc_type'] == RC_NEW ) { $isnew = true; } // If all log actions to this page were hidden, then don't @@ -847,24 +907,17 @@ class EnhancedChangesList extends ChangesList { $text = $userlink; $text .= $this->getLanguage()->getDirMark(); if( $count > 1 ) { - $text .= ' (' . $this->getLanguage()->formatNum( $count ) . '×)'; + $text .= ' ' . $this->msg( 'parentheses' )->rawParams( $this->getLanguage()->formatNum( $count ) . '×' )->escaped(); } array_push( $users, $text ); } - $users = ' [' . - implode( $this->message['semicolon-separator'], $users ) . ']'; + $users = ' ' + . $this->msg( 'brackets' )->rawParams( + implode( $this->message['semicolon-separator'], $users ) + )->escaped() . ''; - # Title for tags - $expandTitle = htmlspecialchars( wfMsg( 'rc-enhanced-expand' ) ); - $closeTitle = htmlspecialchars( wfMsg( 'rc-enhanced-hide' ) ); - - $tl = "" - . "" - . "{$this->sideArrow()}" - . "" - . "{$this->downArrow()}" - . ""; + $tl = ''; $r .= "$tl"; # Main line @@ -880,7 +933,7 @@ class EnhancedChangesList extends ChangesList { # Article link if( $namehidden ) { - $r .= ' ' . wfMsgHtml( 'rev-deleted-event' ) . ''; + $r .= ' ' . $this->msg( 'rev-deleted-event' )->escaped() . ''; } elseif( $allLogs ) { $r .= $this->maybeWatchedLink( $block[0]->link, $block[0]->watched ); } else { @@ -894,22 +947,22 @@ class EnhancedChangesList extends ChangesList { $n = count($block); static $nchanges = array(); if ( !isset( $nchanges[$n] ) ) { - $nchanges[$n] = wfMsgExt( 'nchanges', array( 'parsemag', 'escape' ), $this->getLanguage()->formatNum( $n ) ); + $nchanges[$n] = $this->msg( 'nchanges' )->numParams( $n )->escaped(); } # Total change link $r .= ' '; + $logtext = ''; if( !$allLogs ) { - $r .= '('; if( !ChangesList::userCan( $rcObj, Revision::DELETED_TEXT, $this->getUser() ) ) { - $r .= $nchanges[$n]; + $logtext .= $nchanges[$n]; } elseif( $isnew ) { - $r .= $nchanges[$n]; + $logtext .= $nchanges[$n]; } else { $params = $queryParams; $params['diff'] = $currentRevision; $params['oldid'] = $oldid; - $r .= Linker::link( + $logtext .= Linker::link( $block[0]->getTitle(), $nchanges[$n], array(), @@ -923,20 +976,25 @@ class EnhancedChangesList extends ChangesList { if( $allLogs ) { // don't show history link for logs } elseif( $namehidden || !$block[0]->getTitle()->exists() ) { - $r .= $this->message['pipe-separator'] . $this->message['hist'] . ')'; + $logtext .= $this->message['pipe-separator'] . $this->message['hist']; } else { $params = $queryParams; $params['action'] = 'history'; - $r .= $this->message['pipe-separator'] . + $logtext .= $this->message['pipe-separator'] . Linker::linkKnown( $block[0]->getTitle(), $this->message['hist'], array(), $params - ) . ')'; + ); } - $r .= ' . . '; + + if( $logtext !== '' ) { + $r .= $this->msg( 'parentheses' )->rawParams( $logtext )->escaped(); + } + + $r .= ' . . '; # Character difference (does not apply if only log items) if( $wgRCShowChangedSize && !$allLogs ) { @@ -950,13 +1008,12 @@ class EnhancedChangesList extends ChangesList { $first--; } # Get net change - $chardiff = $rcObj->getCharacterDifference( $block[$first]->mAttribs['rc_old_len'], - $block[$last]->mAttribs['rc_new_len'] ); + $chardiff = $this->formatCharacterDifference( $block[$first], $block[$last] ); if( $chardiff == '' ) { $r .= ' '; } else { - $r .= ' ' . $chardiff. ' . . '; + $r .= ' ' . $chardiff. ' . . '; } } @@ -969,10 +1026,9 @@ class EnhancedChangesList extends ChangesList { $classes = array(); $type = $rcObj->mAttribs['rc_type']; - #$r .= ''.$this->spacerArrow(); $r .= ''; $r .= $this->recentChangesFlags( array( - 'newpage' => $rcObj->mAttribs['rc_new'], + 'newpage' => $type == RC_NEW, 'minor' => $rcObj->mAttribs['rc_minor'], 'unpatrolled' => $rcObj->unpatrolled, 'bot' => $rcObj->mAttribs['rc_bot'], @@ -1008,17 +1064,16 @@ class EnhancedChangesList extends ChangesList { $r .= $link . ''; if ( !$type == RC_LOG || $type == RC_NEW ) { - $r .= ' ('; - $r .= $rcObj->curlink; - $r .= $this->message['pipe-separator']; - $r .= $rcObj->lastlink; - $r .= ')'; + $r .= ' ' . $this->msg( 'parentheses' )->rawParams( $rcObj->curlink . $this->message['pipe-separator'] . $rcObj->lastlink )->escaped(); } - $r .= ' . . '; + $r .= ' . . '; # Character diff - if( $wgRCShowChangedSize && $rcObj->getCharacterDifference() ) { - $r .= $rcObj->getCharacterDifference() . ' . . ' ; + if ( $wgRCShowChangedSize ) { + $cd = $this->formatCharacterDifference( $rcObj ); + if ( $cd !== '' ) { + $r .= $cd . ' . . '; + } } if ( $rcObj->mAttribs['rc_type'] == RC_LOG ) { @@ -1051,7 +1106,7 @@ class EnhancedChangesList extends ChangesList { * @param $dir String: one of '', 'd', 'l', 'r' * @param $alt String: text * @param $title String: text - * @return String: HTML tag + * @return String: HTML "" tag */ protected function arrow( $dir, $alt='', $title='' ) { global $wgStylePath; @@ -1064,26 +1119,25 @@ class EnhancedChangesList extends ChangesList { /** * Generate HTML for a right- or left-facing arrow, * depending on language direction. - * @return String: HTML tag + * @return String: HTML "" tag */ protected function sideArrow() { - global $wgLang; - $dir = $wgLang->isRTL() ? 'l' : 'r'; - return $this->arrow( $dir, '+', wfMsg( 'rc-enhanced-expand' ) ); + $dir = $this->getLanguage()->isRTL() ? 'l' : 'r'; + return $this->arrow( $dir, '+', $this->msg( 'rc-enhanced-expand' )->text() ); } /** * Generate HTML for a down-facing arrow * depending on language direction. - * @return String: HTML tag + * @return String: HTML "" tag */ protected function downArrow() { - return $this->arrow( 'd', '-', wfMsg( 'rc-enhanced-hide' ) ); + return $this->arrow( 'd', '-', $this->msg( 'rc-enhanced-hide' )->text() ); } /** * Generate HTML for a spacer image - * @return String: HTML tag + * @return String: HTML "" tag */ protected function spacerArrow() { return $this->arrow( '', codepointToUtf8( 0xa0 ) ); // non-breaking space @@ -1103,18 +1157,20 @@ class EnhancedChangesList extends ChangesList { $type = $rcObj->mAttribs['rc_type']; $logType = $rcObj->mAttribs['rc_log_type']; + $classes = array( 'mw-enhanced-rc' ); if( $logType ) { # Log entry - $classes = 'mw-enhanced-rc ' . Sanitizer::escapeClass( 'mw-changeslist-log-' + $classes[] = Sanitizer::escapeClass( 'mw-changeslist-log-' . $logType . '-' . $rcObj->mAttribs['rc_title'] ); } else { - $classes = 'mw-enhanced-rc ' . Sanitizer::escapeClass( 'mw-changeslist-ns' . + $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'; $r = Html::openElement( 'table', array( 'class' => $classes ) ) . Html::openElement( 'tr' ); - $r .= '' . $this->spacerArrow(); + $r .= ''; # Flag and Timestamp if( $type == RC_MOVE || $type == RC_MOVE_OVER_REDIRECT ) { $r .= '    '; // 4 flags -> 4 spaces @@ -1129,39 +1185,41 @@ class EnhancedChangesList extends ChangesList { $r .= ' '.$rcObj->timestamp.' '; # Article or log link if( $logType ) { - $logtitle = SpecialPage::getTitleFor( 'Log', $logType ); - $logname = LogPage::logName( $logType ); - $r .= '(' . Linker::linkKnown( $logtitle, htmlspecialchars( $logname ) ) . ')'; + $logPage = new LogPage( $logType ); + $logTitle = SpecialPage::getTitleFor( 'Log', $logType ); + $logName = $logPage->getName()->escaped(); + $r .= $this->msg( 'parentheses' )->rawParams( Linker::linkKnown( $logTitle, $logName ) )->escaped(); } else { $this->insertArticleLink( $r, $rcObj, $rcObj->unpatrolled, $rcObj->watched ); } # Diff and hist links if ( $type != RC_LOG ) { - $r .= ' ('. $rcObj->difflink . $this->message['pipe-separator']; $query['action'] = 'history'; - $r .= Linker::linkKnown( + $r .= ' ' . $this->msg( 'parentheses' )->rawParams( $rcObj->difflink . $this->message['pipe-separator'] . Linker::linkKnown( $rcObj->getTitle(), $this->message['hist'], array(), $query - ) . ')'; + ) )->escaped(); } - $r .= ' . . '; + $r .= ' . . '; # Character diff - if( $wgRCShowChangedSize && ($cd = $rcObj->getCharacterDifference()) ) { - $r .= "$cd . . "; + if ( $wgRCShowChangedSize ) { + $cd = $this->formatCharacterDifference( $rcObj ); + if ( $cd !== '' ) { + $r .= $cd . ' . . '; + } } if ( $type == RC_LOG ) { $r .= $this->insertLogEntry( $rcObj ); - } else { + } else { $r .= ' '.$rcObj->userlink . $rcObj->usertalklink; $r .= $this->insertComment( $rcObj ); - $r .= $this->insertRollback( $r, $rcObj ); + $this->insertRollback( $r, $rcObj ); } # Tags - $classes = explode( ' ', $classes ); $this->insertTags( $r, $rcObj, $classes ); # Show how many people are watching this if enabled $r .= $this->numberofWatchingusers($rcObj->numberofWatchingusers); -- cgit v1.2.2