Add hook EnhancedChangesListModifyBlockLineData
Introduce a new hook to allow (single) block-level entries. Very similar to EnhancedChangesListModifyLineData. Bug: T104399 Change-Id: I6b4715277d44e5f09d7a230b33e956676aeab1c2
This commit is contained in:
parent
dfbbf90b24
commit
94f153db6a
4 changed files with 70 additions and 21 deletions
|
|
@ -38,8 +38,9 @@ production.
|
|||
if ImageMagick is used as image scaler ($wgUseImageMagick = true). Uploading
|
||||
of WebP images still disabled by default. Add $wgFileExtensions[] =
|
||||
'webp'; to LocalSettings.php to enable uploading of WebP images.
|
||||
* Added a new hook 'EnhancedChangesListModifyLineData', to
|
||||
modify the data used to build lines in enhanced recentchanges and watchlist.
|
||||
* Added new hooks 'EnhancedChangesListModifyLineData' &
|
||||
'EnhancedChangesListModifyBlockLineData', to modify the data used to build
|
||||
lines in enhanced recentchanges and watchlist.
|
||||
|
||||
==== External libraries ====
|
||||
* Update es5-shim from v4.0.0 to v4.1.5.
|
||||
|
|
|
|||
|
|
@ -1305,12 +1305,18 @@ $changesList: EnhancedChangesList object
|
|||
$block: The RecentChanges objects in that block
|
||||
|
||||
'EnhancedChangesListModifyLineData': to alter data used to build
|
||||
a recent change inner line in EnhancedChangesList.
|
||||
a grouped recent change inner line in EnhancedChangesList.
|
||||
$changesList: EnhancedChangesList object
|
||||
&$data: An array with all the components that will be joined in order to create the line
|
||||
$block: An array of RecentChange objects in that block
|
||||
$rc: The RecentChange object for this line
|
||||
|
||||
'EnhancedChangesListModifyBlockLineData': to alter data used to build
|
||||
a non-grouped recent change line in EnhancedChangesList.
|
||||
$changesList: EnhancedChangesList object
|
||||
&$data: An array with all the components that will be joined in order to create the line
|
||||
$rc: The RecentChange object for this line
|
||||
|
||||
'ExemptFromAccountCreationThrottle': Exemption from the account creation
|
||||
throttle.
|
||||
$ip: The ip address of the user
|
||||
|
|
|
|||
|
|
@ -371,6 +371,19 @@ class ChangesList extends ContextSource {
|
|||
$s .= " $articlelink";
|
||||
}
|
||||
|
||||
/**
|
||||
* @param RecentChange $rc
|
||||
* @param bool $unpatrolled
|
||||
* @param bool $watched
|
||||
* @return string
|
||||
* @since 1.26
|
||||
*/
|
||||
public function getArticleLink( RecentChange $rc, $unpatrolled, $watched ) {
|
||||
$s = '';
|
||||
$this->insertArticleLink( $s, $rc, $unpatrolled, $watched );
|
||||
return $s;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the timestamp from $rc formatted with current user's settings
|
||||
* and a separator
|
||||
|
|
|
|||
|
|
@ -522,6 +522,8 @@ class EnhancedChangesList extends ChangesList {
|
|||
* @return string A HTML formatted line (generated using $r)
|
||||
*/
|
||||
protected function recentChangesBlockLine( $rcObj ) {
|
||||
$data = array();
|
||||
|
||||
$query['curid'] = $rcObj->mAttribs['rc_cur_id'];
|
||||
|
||||
$type = $rcObj->mAttribs['rc_type'];
|
||||
|
|
@ -536,32 +538,33 @@ class EnhancedChangesList extends ChangesList {
|
|||
}
|
||||
$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' );
|
||||
|
||||
$r .= '<td class="mw-enhanced-rc"><span class="mw-enhancedchanges-arrow-space"></span>';
|
||||
# Flag and Timestamp
|
||||
$r .= $this->recentChangesFlags( array(
|
||||
$data['recentChangesFlags'] = $this->recentChangesFlags( array(
|
||||
'newpage' => $type == RC_NEW,
|
||||
'minor' => $rcObj->mAttribs['rc_minor'],
|
||||
'unpatrolled' => $rcObj->unpatrolled,
|
||||
'bot' => $rcObj->mAttribs['rc_bot'],
|
||||
) );
|
||||
$r .= ' ' . $rcObj->timestamp . ' </td><td>';
|
||||
// timestamp is not really a link here, but is called timestampLink
|
||||
// for consistency with EnhancedChangesListModifyLineData
|
||||
$data['timestampLink'] = $rcObj->timestamp;
|
||||
|
||||
# Article or log link
|
||||
if ( $logType ) {
|
||||
$logPage = new LogPage( $logType );
|
||||
$logTitle = SpecialPage::getTitleFor( 'Log', $logType );
|
||||
$logName = $logPage->getName()->escaped();
|
||||
$r .= $this->msg( 'parentheses' )
|
||||
$data['logLink'] = $this->msg( 'parentheses' )
|
||||
->rawParams( Linker::linkKnown( $logTitle, $logName ) )->escaped();
|
||||
} else {
|
||||
$this->insertArticleLink( $r, $rcObj, $rcObj->unpatrolled, $rcObj->watched );
|
||||
$data['articleLink'] = $this->getArticleLink( $rcObj, $rcObj->unpatrolled, $rcObj->watched );
|
||||
}
|
||||
|
||||
# Diff and hist links
|
||||
if ( $type != RC_LOG ) {
|
||||
$query['action'] = 'history';
|
||||
$r .= ' ' . $this->msg( 'parentheses' )
|
||||
$data['historyLink'] = ' ' . $this->msg( 'parentheses' )
|
||||
->rawParams( $rcObj->difflink . $this->message['pipe-separator'] . Linker::linkKnown(
|
||||
$rcObj->getTitle(),
|
||||
$this->message['hist'],
|
||||
|
|
@ -569,31 +572,57 @@ class EnhancedChangesList extends ChangesList {
|
|||
$query
|
||||
) )->escaped();
|
||||
}
|
||||
$r .= ' <span class="mw-changeslist-separator">. .</span> ';
|
||||
$data['separatorAfterLinks'] = ' <span class="mw-changeslist-separator">. .</span> ';
|
||||
|
||||
# Character diff
|
||||
if ( $this->getConfig()->get( 'RCShowChangedSize' ) ) {
|
||||
$cd = $this->formatCharacterDifference( $rcObj );
|
||||
if ( $cd !== '' ) {
|
||||
$r .= $cd . ' <span class="mw-changeslist-separator">. .</span> ';
|
||||
$data['characterDiff'] = $cd;
|
||||
$data['separatorAftercharacterDiff'] = ' <span class="mw-changeslist-separator">. .</span> ';
|
||||
}
|
||||
}
|
||||
|
||||
if ( $type == RC_LOG ) {
|
||||
$r .= $this->insertLogEntry( $rcObj );
|
||||
$data['logEntry'] = $this->insertLogEntry( $rcObj );
|
||||
} else {
|
||||
$r .= ' ' . $rcObj->userlink . $rcObj->usertalklink;
|
||||
$r .= $this->insertComment( $rcObj );
|
||||
$this->insertRollback( $r, $rcObj );
|
||||
$data['userLink'] = $rcObj->userlink;
|
||||
$data['userTalkLink'] = $rcObj->usertalklink;
|
||||
$data['comment'] = $this->insertComment( $rcObj );
|
||||
$data['rollback'] = $this->getRollback( $rcObj );
|
||||
}
|
||||
|
||||
# Tags
|
||||
$this->insertTags( $r, $rcObj, $classes );
|
||||
$data['tags'] = $this->getTags( $rcObj, $classes );
|
||||
|
||||
# Show how many people are watching this if enabled
|
||||
$r .= $this->numberofWatchingusers( $rcObj->numberofWatchingusers );
|
||||
$data['watchingUsers'] = $this->numberofWatchingusers( $rcObj->numberofWatchingusers );
|
||||
|
||||
$r .= "</td></tr></table>\n";
|
||||
// give the hook a chance to modify the data
|
||||
Hooks::run( 'EnhancedChangesListModifyBlockLineData',
|
||||
array( $this, &$data, $rcObj ) );
|
||||
|
||||
return $r;
|
||||
$line = Html::openElement( 'table', array( 'class' => $classes ) ) .
|
||||
Html::openElement( 'tr' );
|
||||
$line .= '<td class="mw-enhanced-rc"><span class="mw-enhancedchanges-arrow-space"></span>';
|
||||
|
||||
if ( isset( $data['recentChangesFlags'] ) ) {
|
||||
$line .= $this->recentChangesFlags( $data['recentChangesFlags'] );
|
||||
unset( $data['recentChangesFlags'] );
|
||||
}
|
||||
|
||||
if ( isset( $data['timestampLink'] ) ) {
|
||||
$line .= ' ' . $data['timestampLink'];
|
||||
unset( $data['timestampLink'] );
|
||||
}
|
||||
$line .= ' </td><td>';
|
||||
|
||||
// everything else: makes it easier for extensions to add or remove data
|
||||
$line .= implode( '', $data );
|
||||
|
||||
$line .= "</td></tr></table>\n";
|
||||
|
||||
return $line;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue