Merge "(bug 24437) Add nofollow to image link"
authorCatrope <roan.kattouw@gmail.com>
Wed, 15 Aug 2012 01:37:24 +0000 (01:37 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 15 Aug 2012 01:37:24 +0000 (01:37 +0000)
1  2 
includes/Linker.php
tests/parser/parserTests.txt

diff --combined includes/Linker.php
@@@ -198,12 -198,6 +198,12 @@@ class Linker 
                        wfProfileOut( __METHOD__ );
                        return "<!-- ERROR -->$html";
                }
 +
 +              if( is_string( $query ) ) {
 +                      // some functions withing core using this still hand over query strings
 +                      wfDeprecated( __METHOD__ . ' with parameter $query as string (should be array)', '1.20' );
 +                      $query = wfCgiToArray( $query );
 +              }
                $options = (array)$options;
  
                $dummy = new DummyLinker; // dummy linker instance for bc on the hooks
                                '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 );
                }
         * @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'] ) ) {
  
                        if ( $redir ) {
                                wfProfileOut( __METHOD__ );
 -                              return self::linkKnown( $title, "$prefix$html$inside", array(), $query ) . $trail;
 +                              return self::linkKnown( $title, "$prefix$html$inside", array(), wfCgiToArray( $query ) ) . $trail;
                        }
  
                        $href = self::getUploadUrl( $title, $query );
                                "$prefix$html$inside</a>$trail";
                } else {
                        wfProfileOut( __METHOD__ );
 -                      return self::linkKnown( $title, "$prefix$html$inside", array(), $query ) . $trail;
 +                      return self::linkKnown( $title, "$prefix$html$inside", array(), wfCgiToArray( $query ) ) . $trail;
                }
        }
  
@@@ -4680,7 -4680,7 +4680,7 @@@ Image with link parameter, URL targe
  !! input
  [[Image:foobar.jpg|link=http://example.com/]]
  !! result
- <p><a href="http://example.com/"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+ <p><a href="http://example.com/" rel="nofollow"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
  </p>
  !! end
  
@@@ -4691,7 -4691,29 +4691,29 @@@ Image with link parameter, wgExternalLi
  !! config
  wgExternalLinkTarget='foobar'
  !! result
- <p><a href="http://example.com/" target="foobar"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+ <p><a href="http://example.com/" target="foobar" rel="nofollow"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+ </p>
+ !! end
+ !! test
+ Image with link parameter, wgNoFollowLinks set to false
+ !! input
+ [[Image:foobar.jpg|link=http://example.com/]]
+ !! config
+ wgNoFollowLinks=false
+ !! result
+ <p><a href="http://example.com/"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+ </p>
+ !! end
+ !! test
+ Image with link parameter, wgNoFollowDomainExceptions
+ !! input
+ [[Image:foobar.jpg|link=http://example.com/]]
+ !! config
+ wgNoFollowDomainExceptions='example.com'
+ !! result
+ <p><a href="http://example.com/"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
  </p>
  !! end
  
@@@ -4702,7 -4724,7 +4724,7 @@@ Image with link parameter, wgExternalLi
  !! config
  wgExternalLinkTarget='foobar'
  !! result
- <p><a href="http://example.com/" title="Title" target="foobar"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+ <p><a href="http://example.com/" title="Title" target="foobar" rel="nofollow"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
  </p>
  !! end
  
@@@ -4729,7 -4751,7 +4751,7 @@@ Image with link parameter (URL target) 
  !! input
  [[Image:foobar.jpg|link=http://example.com/|Title]]
  !! result
- <p><a href="http://example.com/" title="Title"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+ <p><a href="http://example.com/" title="Title" rel="nofollow"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
  </p>
  !! end
  
@@@ -5469,30 -5491,6 +5491,30 @@@ section 
  </p>
  !! end
  
 +!! test
 +Headers with excess '=' characters
 +(Are similar tests necessary beyond the 1st level?)
 +!! input
 +=foo==
 +==foo=
 +=''italic'' heading==
 +==''italic'' heading=
 +!! result
 +<table id="toc" class="toc"><tr><td><div id="toctitle"><h2>Contents</h2></div>
 +<ul>
 +<li class="toclevel-1 tocsection-1"><a href="#foo.3D"><span class="tocnumber">1</span> <span class="toctext">foo=</span></a></li>
 +<li class="toclevel-1 tocsection-2"><a href="#.3Dfoo"><span class="tocnumber">2</span> <span class="toctext">=foo</span></a></li>
 +<li class="toclevel-1 tocsection-3"><a href="#italic_heading.3D"><span class="tocnumber">3</span> <span class="toctext"><i>italic</i> heading=</span></a></li>
 +<li class="toclevel-1 tocsection-4"><a href="#.3Ditalic_heading"><span class="tocnumber">4</span> <span class="toctext">=<i>italic</i> heading</span></a></li>
 +</ul>
 +</td></tr></table>
 +<h1><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: foo=">edit</a>]</span> <span class="mw-headline" id="foo.3D">foo=</span></h1>
 +<h1><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: =foo">edit</a>]</span> <span class="mw-headline" id=".3Dfoo">=foo</span></h1>
 +<h1><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=3" title="Edit section: italic heading=">edit</a>]</span> <span class="mw-headline" id="italic_heading.3D"><i>italic</i> heading=</span></h1>
 +<h1><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=4" title="Edit section: =italic heading">edit</a>]</span> <span class="mw-headline" id=".3Ditalic_heading">=<i>italic</i> heading</span></h1>
 +
 +!! end
 +
  !! test
  BUG 1219 URL next to image (broken)
  !! input