From: csteipp Date: Mon, 6 Aug 2012 17:04:07 +0000 (-0700) Subject: (bug 24437) Add nofollow to image link X-Git-Tag: 1.31.0-rc.0~22730^2 X-Git-Url: http://git.cyclocoop.org/%22%20.%20generer_url_ecrire%28%22lang_raccourcis%22%2C%22module=%24nom_module%22%29%20.%20%22?a=commitdiff_plain;h=79b4f7943459e2630e9286f6438f8d3aed5c46df;p=lhc%2Fweb%2Fwiklou.git (bug 24437) Add nofollow to image link Add Parser's extLinkAttribs attributes when an image has a link parameter, when generating the html. Currently, these may include rel="nofollow" and the target attribute. This will correctly add rel="nofollow", respecting $wgNoFollowLinks, $wgNoFollowDomainExceptions, and $wgNoFollowNsExceptions settings. Updated parser tests for expected results, added new tests for $wgNoFollowLinks and $wgNoFollowDomainExceptions exceptions. Change-Id: Ib4677760ec78a3f0c4ba781d893e0484cc8db3ed --- diff --git a/includes/Linker.php b/includes/Linker.php index db144f79dc..ef77e63774 100644 --- a/includes/Linker.php +++ b/includes/Linker.php @@ -659,7 +659,7 @@ class Linker { 'title' => $fp['title'], 'valign' => isset( $fp['valign'] ) ? $fp['valign'] : false , 'img-class' => isset( $fp['border'] ) ? 'thumbborder' : false ); - $params = self::getImageLinkMTOParams( $fp, $query ) + $params; + $params = self::getImageLinkMTOParams( $fp, $query, $parser ) + $params; $s = $thumb->toHtml( $params ); } @@ -687,13 +687,20 @@ class Linker { * @param $query string An optional query string to add to description page links * @return array */ - private static function getImageLinkMTOParams( $frameParams, $query = '' ) { + private static function getImageLinkMTOParams( $frameParams, $query = '', $parser = null ) { $mtoParams = array(); if ( isset( $frameParams['link-url'] ) && $frameParams['link-url'] !== '' ) { $mtoParams['custom-url-link'] = $frameParams['link-url']; if ( isset( $frameParams['link-target'] ) ) { $mtoParams['custom-target-link'] = $frameParams['link-target']; } + if ( $parser ) { + $extLinkAttrs = $parser->getExternalLinkAttribs( $frameParams['link-url'] ); + foreach ( $extLinkAttrs as $name => $val ) { + // Currently could include 'rel' and 'target' + $mtoParams['parser-extlink-'.$name] = $val; + } + } } elseif ( isset( $frameParams['link-title'] ) && $frameParams['link-title'] !== '' ) { $mtoParams['custom-title-link'] = self::normaliseSpecialPage( $frameParams['link-title'] ); } elseif ( !empty( $frameParams['no-link'] ) ) { diff --git a/includes/media/MediaTransformOutput.php b/includes/media/MediaTransformOutput.php index d0a7339e51..00d12bb29f 100644 --- a/includes/media/MediaTransformOutput.php +++ b/includes/media/MediaTransformOutput.php @@ -246,6 +246,9 @@ class ThumbnailImage extends MediaTransformOutput { * custom-url-link Custom URL to link to * custom-title-link Custom Title object to link to * custom target-link Value of the target attribute, for custom-target-link + * parser-extlink-* Attributes added by parser for external links: + * parser-extlink-rel: add rel="nofollow" + * parser-extlink-target: link target, but overridden by custom-target-link * * For images, desc-link and file-link are implemented as a click-through. For * sounds and videos, they may be displayed in other ways. @@ -268,6 +271,11 @@ class ThumbnailImage extends MediaTransformOutput { } if ( !empty( $options['custom-target-link'] ) ) { $linkAttribs['target'] = $options['custom-target-link']; + } elseif ( !empty( $options['parser-extlink-target'] ) ) { + $linkAttribs['target'] = $options['parser-extlink-target']; + } + if ( !empty( $options['parser-extlink-rel'] ) ) { + $linkAttribs['rel'] = $options['parser-extlink-rel']; } } elseif ( !empty( $options['custom-title-link'] ) ) { $title = $options['custom-title-link']; diff --git a/tests/parser/parserTests.txt b/tests/parser/parserTests.txt index 48e1d7cbb3..2bdb1ae91f 100644 --- a/tests/parser/parserTests.txt +++ b/tests/parser/parserTests.txt @@ -4680,7 +4680,7 @@ Image with link parameter, URL target !! input [[Image:foobar.jpg|link=http://example.com/]] !! result -

Foobar.jpg +

Foobar.jpg

!! end @@ -4691,7 +4691,29 @@ Image with link parameter, wgExternalLinkTarget !! config wgExternalLinkTarget='foobar' !! result -

Foobar.jpg +

Foobar.jpg +

+!! end + +!! test +Image with link parameter, wgNoFollowLinks set to false +!! input +[[Image:foobar.jpg|link=http://example.com/]] +!! config +wgNoFollowLinks=false +!! result +

Foobar.jpg +

+!! end + +!! test +Image with link parameter, wgNoFollowDomainExceptions +!! input +[[Image:foobar.jpg|link=http://example.com/]] +!! config +wgNoFollowDomainExceptions='example.com' +!! result +

Foobar.jpg

!! end @@ -4702,7 +4724,7 @@ Image with link parameter, wgExternalLinkTarget, unnamed parameter !! config wgExternalLinkTarget='foobar' !! result -

Title +

Title

!! end @@ -4729,7 +4751,7 @@ Image with link parameter (URL target) and unnamed parameter !! input [[Image:foobar.jpg|link=http://example.com/|Title]] !! result -

Title +

Title

!! end