Index: trunk/phase3/maintenance/parserTests.txt |
— | — | @@ -276,7 +276,7 @@ |
277 | 277 | !! input |
278 | 278 | ; http://example.com/ : definition |
279 | 279 | !! result |
280 | | -<dl><dt> <a href="http://example.com/" class='external free'>http://example.com/</a> </dt><dd> definition |
| 280 | +<dl><dt> <a href="http://example.com/" class='external free' rel="nofollow">http://example.com/</a> </dt><dd> definition |
281 | 281 | </dd></dl> |
282 | 282 | |
283 | 283 | !! end |
— | — | @@ -286,7 +286,7 @@ |
287 | 287 | !! input |
288 | 288 | ;[http://www.google.com/ Google]:Number one search engine |
289 | 289 | !! result |
290 | | -<dl><dt><a href="http://www.google.com/" class='external text' title="http://www.google.com/">Google</a></dt><dd>Number one search engine |
| 290 | +<dl><dt><a href="http://www.google.com/" class='external text' title="http://www.google.com/" rel="nofollow">Google</a></dt><dd>Number one search engine |
291 | 291 | </dd></dl> |
292 | 292 | |
293 | 293 | !! end |
— | — | @@ -307,7 +307,7 @@ |
308 | 308 | !! input |
309 | 309 | ; news:alt.wikipedia.rox: This isn't even a real newsgroup! |
310 | 310 | !! result |
311 | | -<dl><dt> <a href="news:alt.wikipedia.rox" class='external free'>news:alt.wikipedia.rox</a></dt><dd> This isn't even a real newsgroup! |
| 311 | +<dl><dt> <a href="news:alt.wikipedia.rox" class='external free' rel="nofollow">news:alt.wikipedia.rox</a></dt><dd> This isn't even a real newsgroup! |
312 | 312 | </dd></dl> |
313 | 313 | |
314 | 314 | !! end |
— | — | @@ -317,7 +317,7 @@ |
318 | 318 | !! input |
319 | 319 | ; news:alt.wikipedia.rox -- don't crash or enter an infinite loop |
320 | 320 | !! result |
321 | | -<dl><dt> <a href="news:alt.wikipedia.rox" class='external free'>news:alt.wikipedia.rox</a> -- don't crash or enter an infinite loop |
| 321 | +<dl><dt> <a href="news:alt.wikipedia.rox" class='external free' rel="nofollow">news:alt.wikipedia.rox</a> -- don't crash or enter an infinite loop |
322 | 322 | </dt></dl> |
323 | 323 | |
324 | 324 | !! end |
— | — | @@ -327,7 +327,7 @@ |
328 | 328 | !! input |
329 | 329 | ; [http://www.wikipedia2.org/ Wikipedia : The Next Generation]: OK, I made that up |
330 | 330 | !! result |
331 | | -<dl><dt> <a href="http://www.wikipedia2.org/" class='external text' title="http://www.wikipedia2.org/">Wikipedia : The Next Generation</a></dt><dd> OK, I made that up |
| 331 | +<dl><dt> <a href="http://www.wikipedia2.org/" class='external text' title="http://www.wikipedia2.org/" rel="nofollow">Wikipedia : The Next Generation</a></dt><dd> OK, I made that up |
332 | 332 | </dd></dl> |
333 | 333 | |
334 | 334 | !! end |
— | — | @@ -341,7 +341,7 @@ |
342 | 342 | !! input |
343 | 343 | Non-bracketed: http://example.com |
344 | 344 | !! result |
345 | | -<p>Non-bracketed: <a href="http://example.com" class='external free'>http://example.com</a> |
| 345 | +<p>Non-bracketed: <a href="http://example.com" class='external free' rel="nofollow">http://example.com</a> |
346 | 346 | </p> |
347 | 347 | !! end |
348 | 348 | |
— | — | @@ -350,7 +350,7 @@ |
351 | 351 | !! input |
352 | 352 | Numbered: [http://example.com] |
353 | 353 | !! result |
354 | | -<p>Numbered: <a href="http://example.com" class='external autonumber' title="http://example.com">[1]</a> |
| 354 | +<p>Numbered: <a href="http://example.com" class='external autonumber' title="http://example.com" rel="nofollow">[1]</a> |
355 | 355 | </p> |
356 | 356 | !!end |
357 | 357 | |
— | — | @@ -359,7 +359,7 @@ |
360 | 360 | !! input |
361 | 361 | Specified text: [http://example.com link] |
362 | 362 | !! result |
363 | | -<p>Specified text: <a href="http://example.com" class='external text' title="http://example.com">link</a> |
| 363 | +<p>Specified text: <a href="http://example.com" class='external text' title="http://example.com" rel="nofollow">link</a> |
364 | 364 | </p> |
365 | 365 | !!end |
366 | 366 | |
— | — | @@ -368,7 +368,7 @@ |
369 | 369 | !! input |
370 | 370 | Trail (not sure if this is meant to work): [http://example.com link]s |
371 | 371 | !! result |
372 | | -<p>Trail (not sure if this is meant to work): <a href="http://example.com" class='external text' title="http://example.com">link</a>s |
| 372 | +<p>Trail (not sure if this is meant to work): <a href="http://example.com" class='external text' title="http://example.com" rel="nofollow">link</a>s |
373 | 373 | </p> |
374 | 374 | !! end |
375 | 375 | |
— | — | @@ -377,7 +377,7 @@ |
378 | 378 | !! input |
379 | 379 | http://example.com/1$2345 |
380 | 380 | !! result |
381 | | -<p><a href="http://example.com/1$2345" class='external free'>http://example.com/1$2345</a> |
| 381 | +<p><a href="http://example.com/1$2345" class='external free' rel="nofollow">http://example.com/1$2345</a> |
382 | 382 | </p> |
383 | 383 | !! end |
384 | 384 | |
— | — | @@ -386,7 +386,7 @@ |
387 | 387 | !! input |
388 | 388 | [http://example.com/1$2345] |
389 | 389 | !! result |
390 | | -<p><a href="http://example.com/1$2345" class='external autonumber' title="http://example.com/1$2345">[1]</a> |
| 390 | +<p><a href="http://example.com/1$2345" class='external autonumber' title="http://example.com/1$2345" rel="nofollow">[1]</a> |
391 | 391 | </p> |
392 | 392 | !!end |
393 | 393 | |
— | — | @@ -413,7 +413,7 @@ |
414 | 414 | !! input |
415 | 415 | Link to non-http image, no img tag: ftp://example.com/test.jpg |
416 | 416 | !! result |
417 | | -<p>Link to non-http image, no img tag: <a href="ftp://example.com/test.jpg" class='external free'>ftp://example.com/test.jpg</a> |
| 417 | +<p>Link to non-http image, no img tag: <a href="ftp://example.com/test.jpg" class='external free' rel="nofollow">ftp://example.com/test.jpg</a> |
418 | 418 | </p> |
419 | 419 | !! end |
420 | 420 | |
— | — | @@ -422,7 +422,7 @@ |
423 | 423 | !! input |
424 | 424 | Terminating separator: http://example.com/thing, |
425 | 425 | !! result |
426 | | -<p>Terminating separator: <a href="http://example.com/thing" class='external free'>http://example.com/thing</a>, |
| 426 | +<p>Terminating separator: <a href="http://example.com/thing" class='external free' rel="nofollow">http://example.com/thing</a>, |
427 | 427 | </p> |
428 | 428 | !! end |
429 | 429 | |
— | — | @@ -431,7 +431,7 @@ |
432 | 432 | !! input |
433 | 433 | Intervening separator: http://example.com/1,2,3 |
434 | 434 | !! result |
435 | | -<p>Intervening separator: <a href="http://example.com/1,2,3" class='external free'>http://example.com/1,2,3</a> |
| 435 | +<p>Intervening separator: <a href="http://example.com/1,2,3" class='external free' rel="nofollow">http://example.com/1,2,3</a> |
436 | 436 | </p> |
437 | 437 | !! end |
438 | 438 | |
— | — | @@ -440,7 +440,7 @@ |
441 | 441 | !! input |
442 | 442 | Old bug with URL in query: [http://example.com/thing?url=http://example.com link] |
443 | 443 | !! result |
444 | | -<p>Old bug with URL in query: <a href="http://example.com/thing?url=http://example.com" class='external text' title="http://example.com/thing?url=http://example.com">link</a> |
| 444 | +<p>Old bug with URL in query: <a href="http://example.com/thing?url=http://example.com" class='external text' title="http://example.com/thing?url=http://example.com" rel="nofollow">link</a> |
445 | 445 | </p> |
446 | 446 | !! end |
447 | 447 | |
— | — | @@ -449,7 +449,7 @@ |
450 | 450 | !! input |
451 | 451 | And again with mixed protocols: [ftp://example.com?url=http://example.com link] |
452 | 452 | !! result |
453 | | -<p>And again with mixed protocols: <a href="ftp://example.com?url=http://example.com" class='external text' title="ftp://example.com?url=http://example.com">link</a> |
| 453 | +<p>And again with mixed protocols: <a href="ftp://example.com?url=http://example.com" class='external text' title="ftp://example.com?url=http://example.com" rel="nofollow">link</a> |
454 | 454 | </p> |
455 | 455 | !!end |
456 | 456 | |
— | — | @@ -458,7 +458,7 @@ |
459 | 459 | !! input |
460 | 460 | URL in text: [http://example.com http://example.com] |
461 | 461 | !! result |
462 | | -<p>URL in text: <a href="http://example.com" class='external free'>http://example.com</a> |
| 462 | +<p>URL in text: <a href="http://example.com" class='external free' rel="nofollow">http://example.com</a> |
463 | 463 | </p> |
464 | 464 | !! end |
465 | 465 | |
— | — | @@ -467,7 +467,7 @@ |
468 | 468 | !! input |
469 | 469 | ja-style clickable images: [http://example.com http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png] |
470 | 470 | !! result |
471 | | -<p>ja-style clickable images: <a href="http://example.com" class='external text' title="http://example.com"><img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" /></a> |
| 471 | +<p>ja-style clickable images: <a href="http://example.com" class='external text' title="http://example.com" rel="nofollow"><img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" /></a> |
472 | 472 | </p> |
473 | 473 | !!end |
474 | 474 | |
— | — | @@ -476,7 +476,7 @@ |
477 | 477 | !! input |
478 | 478 | Old & use: http://x&y |
479 | 479 | !! result |
480 | | -<p>Old & use: <a href="http://x&y" class='external free'>http://x&y</a> |
| 480 | +<p>Old & use: <a href="http://x&y" class='external free' rel="nofollow">http://x&y</a> |
481 | 481 | </p> |
482 | 482 | !! end |
483 | 483 | |
— | — | @@ -485,7 +485,7 @@ |
486 | 486 | !! input |
487 | 487 | http://www.jpeg.org |
488 | 488 | !!result |
489 | | -<p><a href="http://www.jpeg.org" class='external free'>http://www.jpeg.org</a> |
| 489 | +<p><a href="http://www.jpeg.org" class='external free' rel="nofollow">http://www.jpeg.org</a> |
490 | 490 | </p> |
491 | 491 | !! end |
492 | 492 | |
— | — | @@ -494,7 +494,7 @@ |
495 | 495 | !! input |
496 | 496 | [http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp] |
497 | 497 | !! result |
498 | | -<p><a href="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp" class='external autonumber' title="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp">[1]</a> |
| 498 | +<p><a href="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp" class='external autonumber' title="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp" rel="nofollow">[1]</a> |
499 | 499 | </p> |
500 | 500 | !! end |
501 | 501 | |
— | — | @@ -503,7 +503,7 @@ |
504 | 504 | !! input |
505 | 505 | [http://www.example.com/foo http://www.example.com/bar] |
506 | 506 | !! result |
507 | | -<p><a href="http://www.example.com/foo" class='external text' title="http://www.example.com/foo">http://www.example.com/bar</a> |
| 507 | +<p><a href="http://www.example.com/foo" class='external text' title="http://www.example.com/foo" rel="nofollow">http://www.example.com/bar</a> |
508 | 508 | </p> |
509 | 509 | !! end |
510 | 510 | |
— | — | @@ -512,7 +512,7 @@ |
513 | 513 | !! input |
514 | 514 | http://www.example.com/<hello> |
515 | 515 | !! result |
516 | | -<p><a href="http://www.example.com/" class='external free'>http://www.example.com/</a><hello> |
| 516 | +<p><a href="http://www.example.com/" class='external free' rel="nofollow">http://www.example.com/</a><hello> |
517 | 517 | </p> |
518 | 518 | !!end |
519 | 519 | |
— | — | @@ -521,7 +521,7 @@ |
522 | 522 | !! input |
523 | 523 | http://www.example.com/<b>html</b> |
524 | 524 | !! result |
525 | | -<p><a href="http://www.example.com/" class='external free'>http://www.example.com/</a><b >html</b > |
| 525 | +<p><a href="http://www.example.com/" class='external free' rel="nofollow">http://www.example.com/</a><b >html</b > |
526 | 526 | </p> |
527 | 527 | !!end |
528 | 528 | |
— | — | @@ -530,7 +530,7 @@ |
531 | 531 | !! input |
532 | 532 | [http://www.example.com/<hello> stuff] |
533 | 533 | !! result |
534 | | -<p><a href="http://www.example.com/" class='external text' title="http://www.example.com/"><hello> stuff</a> |
| 534 | +<p><a href="http://www.example.com/" class='external text' title="http://www.example.com/" rel="nofollow"><hello> stuff</a> |
535 | 535 | </p> |
536 | 536 | !!end |
537 | 537 | |
— | — | @@ -539,7 +539,7 @@ |
540 | 540 | !! input |
541 | 541 | [http://www.example.com/<b>html</b> stuff] |
542 | 542 | !! result |
543 | | -<p><a href="http://www.example.com/" class='external text' title="http://www.example.com/"><b >html</b > stuff</a> |
| 543 | +<p><a href="http://www.example.com/" class='external text' title="http://www.example.com/" rel="nofollow"><b >html</b > stuff</a> |
544 | 544 | </p> |
545 | 545 | !!end |
546 | 546 | |
— | — | @@ -548,7 +548,7 @@ |
549 | 549 | !! input |
550 | 550 | http://www.example.com/"hello" |
551 | 551 | !! result |
552 | | -<p><a href="http://www.example.com/" class='external free'>http://www.example.com/</a>"hello" |
| 552 | +<p><a href="http://www.example.com/" class='external free' rel="nofollow">http://www.example.com/</a>"hello" |
553 | 553 | </p> |
554 | 554 | !!end |
555 | 555 | |
— | — | @@ -557,7 +557,7 @@ |
558 | 558 | !! input |
559 | 559 | [http://www.example.com/"hello" stuff] |
560 | 560 | !! result |
561 | | -<p><a href="http://www.example.com/" class='external text' title="http://www.example.com/">"hello" stuff</a> |
| 561 | +<p><a href="http://www.example.com/" class='external text' title="http://www.example.com/" rel="nofollow">"hello" stuff</a> |
562 | 562 | </p> |
563 | 563 | !!end |
564 | 564 | |
— | — | @@ -566,7 +566,7 @@ |
567 | 567 | !! input |
568 | 568 | [http://www.example.com test] |
569 | 569 | !! result |
570 | | -<p>[<a href="http://www.example.com" class='external free'>http://www.example.com</a> test] |
| 570 | +<p>[<a href="http://www.example.com" class='external free' rel="nofollow">http://www.example.com</a> test] |
571 | 571 | </p> |
572 | 572 | !! end |
573 | 573 | |
— | — | @@ -887,7 +887,7 @@ |
888 | 888 | !! input |
889 | 889 | [[http://www.example.org]] |
890 | 890 | !! result |
891 | | -<p>[<a href="http://www.example.org" class='external autonumber' title="http://www.example.org">[1]</a>] |
| 891 | +<p>[<a href="http://www.example.org" class='external autonumber' title="http://www.example.org" rel="nofollow">[1]</a>] |
892 | 892 | </p> |
893 | 893 | !! end |
894 | 894 | |
— | — | @@ -907,7 +907,7 @@ |
908 | 908 | !! input |
909 | 909 | Piped link to URL: [[http://www.example.org|an example URL]] |
910 | 910 | !! result |
911 | | -<p>Piped link to URL: [<a href="http://www.example.org|an" class='external text' title="http://www.example.org|an">example URL</a>] |
| 911 | +<p>Piped link to URL: [<a href="http://www.example.org|an" class='external text' title="http://www.example.org|an" rel="nofollow">example URL</a>] |
912 | 912 | </p> |
913 | 913 | !! end |
914 | 914 | |
— | — | @@ -1488,7 +1488,7 @@ |
1489 | 1489 | !! input |
1490 | 1490 | [[Image:foobar.jpg|thumb|http://example.com]] |
1491 | 1491 | !! result |
1492 | | -<div class="thumb tright"><div style="width:182px;"><a href="https://www.mediawiki.org/wiki/Image:Foobar.jpg" class="internal" title="http://example.com"><img src="/images/3/3a/Foobar.jpg" alt="http://example.com" width="180" height="180" longdesc="/wiki/Image:Foobar.jpg" /></a> <div class="thumbcaption" ><div class="magnify" style="float:right"><a href="https://www.mediawiki.org/wiki/Image:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="Enlarge" /></a></div><a href="http://example.com" class='external free'>http://example.com</a></div></div></div> |
| 1492 | +<div class="thumb tright"><div style="width:182px;"><a href="https://www.mediawiki.org/wiki/Image:Foobar.jpg" class="internal" title="http://example.com"><img src="/images/3/3a/Foobar.jpg" alt="http://example.com" width="180" height="180" longdesc="/wiki/Image:Foobar.jpg" /></a> <div class="thumbcaption" ><div class="magnify" style="float:right"><a href="https://www.mediawiki.org/wiki/Image:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="Enlarge" /></a></div><a href="http://example.com" class='external free' rel="nofollow">http://example.com</a></div></div></div> |
1493 | 1493 | |
1494 | 1494 | !! end |
1495 | 1495 | |
— | — | @@ -1774,7 +1774,7 @@ |
1775 | 1775 | !! input |
1776 | 1776 | http://example.com [[Image:foobar.jpg]] |
1777 | 1777 | !! result |
1778 | | -<p><a href="http://example.com" class='external free'>http://example.com</a> <a href="https://www.mediawiki.org/wiki/Image:Foobar.jpg" class="image" title="Image:foobar.jpg"><img src="/images/3/3a/Foobar.jpg" alt="Image:foobar.jpg" longdesc="/wiki/Image:Foobar.jpg" /></a> |
| 1778 | +<p><a href="http://example.com" class='external free' rel="nofollow">http://example.com</a> <a href="https://www.mediawiki.org/wiki/Image:Foobar.jpg" class="image" title="Image:foobar.jpg"><img src="/images/3/3a/Foobar.jpg" alt="Image:foobar.jpg" longdesc="/wiki/Image:Foobar.jpg" /></a> |
1779 | 1779 | </p> |
1780 | 1780 | !!end |
1781 | 1781 | |
— | — | @@ -1783,7 +1783,7 @@ |
1784 | 1784 | !! input |
1785 | 1785 | http://example.com[[Image:foobar.jpg]] |
1786 | 1786 | !! result |
1787 | | -<p><a href="http://example.com" class='external free'>http://example.com</a><a href="https://www.mediawiki.org/wiki/Image:Foobar.jpg" class="image" title="Image:foobar.jpg"><img src="/images/3/3a/Foobar.jpg" alt="Image:foobar.jpg" longdesc="/wiki/Image:Foobar.jpg" /></a> |
| 1787 | +<p><a href="http://example.com" class='external free' rel="nofollow">http://example.com</a><a href="https://www.mediawiki.org/wiki/Image:Foobar.jpg" class="image" title="Image:foobar.jpg"><img src="/images/3/3a/Foobar.jpg" alt="Image:foobar.jpg" longdesc="/wiki/Image:Foobar.jpg" /></a> |
1788 | 1788 | </p> |
1789 | 1789 | !!end |
1790 | 1790 | |
— | — | @@ -1792,7 +1792,7 @@ |
1793 | 1793 | !! input |
1794 | 1794 | http://en.wikinews.org/wiki/Wikinews:Workplace |
1795 | 1795 | !! result |
1796 | | -<p><a href="http://en.wikinews.org/wiki/Wikinews:Workplace" class='external free'>http://en.wikinews.org/wiki/Wikinews:Workplace</a> |
| 1796 | +<p><a href="http://en.wikinews.org/wiki/Wikinews:Workplace" class='external free' rel="nofollow">http://en.wikinews.org/wiki/Wikinews:Workplace</a> |
1797 | 1797 | </p> |
1798 | 1798 | !!end |
1799 | 1799 | |
Index: trunk/phase3/maintenance/parserTests.php |
— | — | @@ -299,6 +299,7 @@ |
300 | 300 | 'wgMaxTocLevel' => 999, |
301 | 301 | 'wgCapitalLinks' => true, |
302 | 302 | 'wgDefaultUserOptions' => array(), |
| 303 | + 'wgNoFollowLinks' => true, |
303 | 304 | ); |
304 | 305 | $this->savedGlobals = array(); |
305 | 306 | foreach( $settings as $var => $val ) { |
Index: trunk/phase3/includes/Linker.php |
— | — | @@ -649,6 +649,10 @@ |
650 | 650 | |
651 | 651 | function makeExternalLink( $url, $text, $escape = true, $linktype = '' ) { |
652 | 652 | $style = $this->getExternalLinkAttributes( $url, $text, 'external ' . $linktype ); |
| 653 | + global $wgNoFollowLinks; |
| 654 | + if( $wgNoFollowLinks ) { |
| 655 | + $style .= ' rel="nofollow"'; |
| 656 | + } |
653 | 657 | $url = htmlspecialchars( $url ); |
654 | 658 | if( $escape ) { |
655 | 659 | $text = htmlspecialchars( $text ); |
Index: trunk/phase3/includes/DefaultSettings.php |
— | — | @@ -1017,6 +1017,14 @@ |
1018 | 1018 | */ |
1019 | 1019 | $wgSearchForwardUrl = null; |
1020 | 1020 | |
| 1021 | +/** |
| 1022 | + * If true, external URL links in wiki text will be given the |
| 1023 | + * rel="nofollow" attribute as a hint to search engines that |
| 1024 | + * they should not be followed for ranking purposes as they |
| 1025 | + * are user-supplied and thus subject to spamming. |
| 1026 | + */ |
| 1027 | +$wgNoFollowLinks = true; |
| 1028 | + |
1021 | 1029 | } else { |
1022 | 1030 | die(); |
1023 | 1031 | } |