* @param int $flags Customisation flags (e.g. Linker::TOOL_LINKS_NOBLOCK
* and Linker::TOOL_LINKS_EMAIL).
* @param int|null $edits User edit count (optional, for performance)
+ * @param bool $useParentheses (optional) Wrap comments in parentheses where needed
* @return string HTML fragment
*/
public static function userToolLinks(
- $userId, $userText, $redContribsWhenNoEdits = false, $flags = 0, $edits = null
+ $userId, $userText, $redContribsWhenNoEdits = false, $flags = 0, $edits = null,
+ $useParentheses = true
) {
global $wgUser, $wgDisableAnonTalk, $wgLang;
$talkable = !( $wgDisableAnonTalk && $userId == 0 );
Hooks::run( 'UserToolLinksEdit', [ $userId, $userText, &$items ] );
- if ( $items ) {
+ if ( !$items ) {
+ return '';
+ }
+
+ if ( $useParentheses ) {
return wfMessage( 'word-separator' )->escaped()
. '<span class="mw-usertoollinks">'
. wfMessage( 'parentheses' )->rawParams( $wgLang->pipeList( $items ) )->escaped()
. '</span>';
- } else {
- return '';
}
+
+ $tools = [];
+ foreach ( $items as $tool ) {
+ $tools[] = Html::rawElement( 'span', [], $tool );
+ }
+ return ' <span class="mw-usertoollinks mw-changeslist-links">' .
+ implode( ' ', $tools ) . '</span>';
}
/**
// compatibility, acc. to brion -ævar
if ( $comment == '' || $comment == '*' ) {
return '';
+ }
+ $formatted = self::formatComment( $comment, $title, $local, $wikiId );
+ if ( $useParentheses ) {
+ $formatted = wfMessage( 'parentheses' )->rawParams( $formatted )->escaped();
+ $classNames = 'comment';
} else {
- $formatted = self::formatComment( $comment, $title, $local, $wikiId );
- if ( $useParentheses ) {
- $formatted = wfMessage( 'parentheses' )->rawParams( $formatted )->escaped();
- $classNames = 'comment';
- } else {
- $classNames = 'comment comment--without-parentheses';
- }
- return " <span class=\"$classNames\">$formatted</span>";
+ $classNames = 'comment comment--without-parentheses';
}
+ return " <span class=\"$classNames\">$formatted</span>";
}
/**
if ( !$rev->userCan( Revision::DELETED_RESTRICTED, $user ) ) {
return self::revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
+ }
+ if ( $rev->getId() ) {
+ // RevDelete links using revision ID are stable across
+ // page deletion and undeletion; use when possible.
+ $query = [
+ 'type' => 'revision',
+ 'target' => $title->getPrefixedDBkey(),
+ 'ids' => $rev->getId()
+ ];
} else {
- if ( $rev->getId() ) {
- // RevDelete links using revision ID are stable across
- // page deletion and undeletion; use when possible.
- $query = [
- 'type' => 'revision',
- 'target' => $title->getPrefixedDBkey(),
- 'ids' => $rev->getId()
- ];
- } else {
- // Older deleted entries didn't save a revision ID.
- // We have to refer to these by timestamp, ick!
- $query = [
- 'type' => 'archive',
- 'target' => $title->getPrefixedDBkey(),
- 'ids' => $rev->getTimestamp()
- ];
- }
- return self::revDeleteLink( $query,
- $rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide );
+ // Older deleted entries didn't save a revision ID.
+ // We have to refer to these by timestamp, ick!
+ $query = [
+ 'type' => 'archive',
+ 'target' => $title->getPrefixedDBkey(),
+ 'ids' => $rev->getTimestamp()
+ ];
}
+ return self::revDeleteLink( $query,
+ $rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide );
}
/**