X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FLinker.php;h=fb446b494a4b031b333479c8b4d916b793f93456;hb=0535765366fc2bc72e84bacb0b14e5a2a790ee94;hp=c24ae417f188320a376f9b53b2692c0880358860;hpb=2cccf01c849b2ee94eb0cefcd63552d3ddc266b4;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Linker.php b/includes/Linker.php index c24ae417f1..fb446b494a 100644 --- a/includes/Linker.php +++ b/includes/Linker.php @@ -892,9 +892,13 @@ class Linker { */ public static function userLink( $userId, $userName, $altUserName = false ) { $classes = 'mw-userlink'; + $page = null; if ( $userId == 0 ) { - $page = SpecialPage::getTitleFor( 'Contributions', $userName ); - if ( $altUserName === false ) { + $page = ExternalUserNames::getUserLinkTitle( $userName ); + + if ( ExternalUserNames::isExternal( $userName ) ) { + $classes .= ' mw-extuserlink'; + } elseif ( $altUserName === false ) { $altUserName = IP::prettifyIP( $userName ); } $classes .= ' mw-anonuserlink'; // Separate link class for anons (T45179) @@ -903,11 +907,12 @@ class Linker { } // Wrap the output with tags for directionality isolation - return self::link( - $page, - '' . htmlspecialchars( $altUserName !== false ? $altUserName : $userName ) . '', - [ 'class' => $classes ] - ); + $linkText = + '' . htmlspecialchars( $altUserName !== false ? $altUserName : $userName ) . ''; + + return $page + ? self::link( $page, $linkText, [ 'class' => $classes ] ) + : Html::rawElement( 'span', [ 'class' => $classes ], $linkText ); } /** @@ -931,6 +936,11 @@ class Linker { $blockable = !( $flags & self::TOOL_LINKS_NOBLOCK ); $addEmailLink = $flags & self::TOOL_LINKS_EMAIL && $userId; + if ( $userId == 0 && ExternalUserNames::isExternal( $userText ) ) { + // No tools for an external user + return ''; + } + $items = []; if ( $talkable ) { $items[] = self::userTalkLink( $userId, $userText ); @@ -1001,7 +1011,7 @@ class Linker { /** * @since 1.16.3 - * @param int $userId Userid + * @param int $userId * @param string $userText User name in database. * @return string HTML fragment with block link */ @@ -1015,7 +1025,7 @@ class Linker { } /** - * @param int $userId Userid + * @param int $userId * @param string $userText User name in database. * @return string HTML fragment with e-mail user link */ @@ -1170,9 +1180,9 @@ class Linker { $section = str_replace( '[[', '', $section ); $section = str_replace( ']]', '', $section ); - $section = Sanitizer::normalizeSectionNameWhitespace( $section ); # T24784 + $section = substr( Parser::guessSectionNameFromStrippedText( $section ), 1 ); if ( $local ) { - $sectionTitle = Title::newFromText( '#' . $section ); + $sectionTitle = Title::makeTitleSafe( NS_MAIN, '', $section ); } else { $sectionTitle = Title::makeTitleSafe( $title->getNamespace(), $title->getDBkey(), $section ); @@ -1573,7 +1583,12 @@ class Linker { $title = wfMessage( 'toc' )->inLanguage( $lang )->escaped(); return '
' - . '

' . $title . "

\n" + . Html::openElement( 'div', [ + 'class' => 'toctitle', + 'lang' => $lang->getHtmlCode(), + 'dir' => $lang->getDir(), + ] ) + . '

' . $title . "

\n" . $toc . "\n\n"; } @@ -1941,8 +1956,9 @@ class Linker { * * @since 1.16.3 $msgParams added in 1.27 * @param string $name Id of the element, minus prefixes. - * @param string|null $options Null or the string 'withaccess' to add an access- - * key hint + * @param string|array|null $options Null, string or array with some of the following options: + * - 'withaccess' to add an access-key hint + * - 'nonexisting' to add an accessibility hint that page does not exist * @param array $msgParams Parameters to pass to the message * * @return string Contents of the title attribute (which you must HTML- @@ -1962,7 +1978,12 @@ class Linker { } } - if ( $options == 'withaccess' ) { + $options = (array)$options; + + if ( in_array( 'nonexisting', $options ) ) { + $tooltip = wfMessage( 'red-link-title', $tooltip ?: '' )->text(); + } + if ( in_array( 'withaccess', $options ) ) { $accesskey = self::accesskey( $name ); if ( $accesskey !== false ) { // Should be build the same as in jquery.accessKeyLabel.js @@ -2097,20 +2118,28 @@ class Linker { return Xml::tags( 'span', [ 'class' => 'mw-revdelundel-link' ], $htmlParentheses ); } - /* Deprecated methods */ - /** * Returns the attributes for the tooltip and access key. * * @since 1.16.3. $msgParams introduced in 1.27 * @param string $name * @param array $msgParams Params for constructing the message + * @param string|array|null $options Options to be passed to titleAttrib. + * + * @see Linker::titleAttrib for what options could be passed to $options. * * @return array */ - public static function tooltipAndAccesskeyAttribs( $name, array $msgParams = [] ) { + public static function tooltipAndAccesskeyAttribs( + $name, + array $msgParams = [], + $options = null + ) { + $options = (array)$options; + $options[] = 'withaccess'; + $attribs = [ - 'title' => self::titleAttrib( $name, 'withaccess', $msgParams ), + 'title' => self::titleAttrib( $name, $options, $msgParams ), 'accesskey' => self::accesskey( $name ) ]; if ( $attribs['title'] === false ) {