/**
* Format a line for enhanced recentchange (aka with javascript and block of lines).
*
- * @param RecentChange $rc
+ * @param RecentChange &$rc
* @param bool $watched
* @param int $linenumber (default null)
*
$recentChangesFlags = $this->getConfig()->get( 'RecentChangesFlags' );
# Add the namespace and title of the block as part of the class
- $tableClasses = [ 'mw-collapsible', 'mw-collapsed', 'mw-enhanced-rc' ];
+ $tableClasses = [ 'mw-collapsible', 'mw-collapsed', 'mw-enhanced-rc', 'mw-changeslist-line' ];
if ( $block[0]->mAttribs['rc_log_type'] ) {
# Log entry
+ $tableClasses[] = 'mw-changeslist-log';
$tableClasses[] = Sanitizer::escapeClass( 'mw-changeslist-log-'
. $block[0]->mAttribs['rc_log_type'] );
} else {
+ $tableClasses[] = 'mw-changeslist-edit';
$tableClasses[] = Sanitizer::escapeClass( 'mw-changeslist-ns'
. $block[0]->mAttribs['rc_namespace'] . '-' . $block[0]->mAttribs['rc_title'] );
}
implode( $this->message['semicolon-separator'], $users )
)->escaped();
+ $prefix = '';
+ if ( is_callable( $this->changeLinePrefixer ) ) {
+ $prefix = call_user_func( $this->changeLinePrefixer, $block[0], $this, true );
+ }
+
$templateParams = [
'articleLink' => $articleLink,
'charDifference' => $charDifference,
'lines' => $lines,
'logText' => $logText,
'numberofWatchingusers' => $numberofWatchingusers,
+ 'prefix' => $prefix,
'rev-deleted-event' => $revDeletedMsg,
'tableClasses' => $tableClasses,
'timestamp' => $block[0]->timestamp,
+ 'fullTimestamp' => $block[0]->getAttribute( 'rc_timestamp' ),
'users' => $usersList,
];
$type = $rcObj->mAttribs['rc_type'];
$data = [];
- $lineParams = [];
+ $lineParams = [ 'targetTitle' => $rcObj->getTitle() ];
$classes = [ 'mw-enhanced-rc' ];
if ( $rcObj->watched
if ( $logType ) {
# Log entry
+ $classes[] = 'mw-changeslist-log';
$classes[] = Sanitizer::escapeClass( 'mw-changeslist-log-' . $logType );
} else {
+ $classes[] = 'mw-changeslist-edit';
$classes[] = Sanitizer::escapeClass( 'mw-changeslist-ns' .
$rcObj->mAttribs['rc_namespace'] . '-' . $rcObj->mAttribs['rc_title'] );
}
return $key === 'class' || Sanitizer::isReservedDataAttribute( $key );
} );
+ $prefix = '';
+ if ( is_callable( $this->changeLinePrefixer ) ) {
+ $prefix = call_user_func( $this->changeLinePrefixer, $rcObj, $this, false );
+ }
+
$line = Html::openElement( 'table', $attribs ) . Html::openElement( 'tr' );
- $line .= '<td class="mw-enhanced-rc"><span class="mw-enhancedchanges-arrow-space"></span>';
+ $line .= Html::rawElement( 'td', [], '<span class="mw-enhancedchanges-arrow-space"></span>' );
+ $line .= Html::rawElement( 'td', [ 'class' => 'mw-changeslist-line-prefix' ], $prefix );
+ $line .= '<td class="mw-enhanced-rc">';
if ( isset( $data['recentChangesFlags'] ) ) {
$line .= $this->recentChangesFlags( $data['recentChangesFlags'] );
$line .= ' ' . $data['timestampLink'];
unset( $data['timestampLink'] );
}
- $line .= ' </td><td>';
+ $line .= ' </td>';
+ $line .= Html::openElement( 'td', [
+ 'class' => 'mw-changeslist-line-inner',
+ // Used for reliable determination of the affiliated page
+ 'data-target-page' => $rcObj->getTitle(),
+ ] );
// everything else: makes it easier for extensions to add or remove data
$line .= implode( '', $data );
- <table class="{{# tableClasses }}{{ . }} {{/ tableClasses }}">
+ <table class="{{# tableClasses }}{{ . }} {{/ tableClasses }}" data-mw-ts="{{{ fullTimestamp }}}">
<tr>
<td>
<span class="mw-collapsible-toggle mw-collapsible-arrow mw-enhancedchanges-arrow mw-enhancedchanges-arrow-space"></span>
</td>
+ <td class="mw-changeslist-line-prefix">{{{ prefix }}}</td>
<td class="mw-enhanced-rc">{{{ collectedRcFlags }}} {{ timestamp }} </td>
- <td>
+ <td class="mw-changeslist-line-inner">
{{# rev-deleted-event }}<span class="history-deleted">{{{ . }}}</span>{{/ rev-deleted-event }}
{{{ articleLink }}}{{{ languageDirMark }}}{{{ logText }}}
<span class="mw-changeslist-separator">. .</span>
</tr>
{{# lines }}
<tr class="{{# classes }}{{ . }} {{/ classes }}"{{{ attribs }}}>
+ <td></td>
<td></td>
<td class="mw-enhanced-rc">{{{ recentChangesFlags }}} </td>
- <td class="mw-enhanced-rc-nested">
+ <td class="mw-enhanced-rc-nested" data-target-page="{{ targetTitle }}">
{{# timestampLink }}
<span class="mw-enhanced-rc-time">{{{ . }}}</span>
{{/ timestampLink }}