if ( !$title ) {
$title = $wgTitle;
}
- $attribs['rel'] = Parser::getExternalLinkRel( $url, $title );
+ $newRel = Parser::getExternalLinkRel( $url, $title );
+ if ( !isset( $attribs['rel'] ) || $attribs['rel'] === '' ) {
+ $attribs['rel'] = $newRel;
+ } elseif ( $newRel !== '' ) {
+ // Merge the rel attributes.
+ $newRels = explode( ' ', $newRel );
+ $oldRels = explode( ' ', $attribs['rel'] );
+ $combined = array_unique( array_merge( $newRels, $oldRels ) );
+ $attribs['rel'] = implode( ' ', $combined );
+ }
$link = '';
$success = Hooks::run( 'LinkerMakeExternalLink',
[ &$url, &$text, &$link, &$attribs, $linktype ] );
* work if $wgShowRollbackEditCount is disabled, so this can only function
* as an additional check.
*
- * If the option noBrackets is set the rollback link wont be enclosed in []
+ * If the option noBrackets is set the rollback link wont be enclosed in "[]".
+ *
+ * See the "mediawiki.page.rollback" module for the client-side handling of this link.
*
* @since 1.16.3. $context added in 1.20. $options added in 1.21
*
$inner = $context->msg( 'brackets' )->rawParams( $inner )->escaped();
}
+ $context->getOutput()->addModules( 'mediawiki.page.rollback' );
+
return '<span class="mw-rollback-link">' . $inner . '</span>';
}
$query = [
'action' => 'rollback',
'from' => $rev->getUserText(),
- 'token' => $context->getUser()->getEditToken( [
- $title->getPrefixedText(),
- $rev->getUserText()
- ] ),
];
+ $attrs = [
+ 'data-mw' => 'interface',
+ 'title' => $context->msg( 'tooltip-rollback' )->text(),
+ ];
+ $options = [ 'known', 'noclasses' ];
+
if ( $context->getRequest()->getBool( 'bot' ) ) {
$query['bot'] = '1';
$query['hidediff'] = '1'; // bug 15999
}
if ( $editCount > $wgShowRollbackEditCount ) {
- $editCount_output = $context->msg( 'rollbacklinkcount-morethan' )
+ $html = $context->msg( 'rollbacklinkcount-morethan' )
->numParams( $wgShowRollbackEditCount )->parse();
} else {
- $editCount_output = $context->msg( 'rollbacklinkcount' )->numParams( $editCount )->parse();
+ $html = $context->msg( 'rollbacklinkcount' )->numParams( $editCount )->parse();
}
- return self::link(
- $title,
- $editCount_output,
- [ 'title' => $context->msg( 'tooltip-rollback' )->text() ],
- $query,
- [ 'known', 'noclasses' ]
- );
+ return self::link( $title, $html, $attrs, $query, $options );
} else {
- return self::link(
- $title,
- $context->msg( 'rollbacklink' )->escaped(),
- [ 'title' => $context->msg( 'tooltip-rollback' )->text() ],
- $query,
- [ 'known', 'noclasses' ]
- );
+ $html = $context->msg( 'rollbacklink' )->escaped();
+ return self::link( $title, $html, $attrs, $query, $options );
}
}