Revert revert r41406 of r41333, and removed one space between attributes.
This commit is contained in:
parent
b74cc54810
commit
110c0bb72f
6 changed files with 57 additions and 10 deletions
|
|
@ -140,6 +140,8 @@ The following extensions are migrated into MediaWiki 1.14:
|
|||
restriction types on the protection form.
|
||||
* (bug 8440) Allow preventing blocked users from editing their talk pages
|
||||
* Improved upload file type detection for OpenDocument formats
|
||||
* Added the ability to set the target attribute on external links with
|
||||
$wgExternalLinkTarget
|
||||
|
||||
|
||||
=== Bug fixes in 1.14 ===
|
||||
|
|
|
|||
|
|
@ -2890,6 +2890,11 @@ $wgDisableInternalSearch = false;
|
|||
*/
|
||||
$wgSearchForwardUrl = null;
|
||||
|
||||
/**
|
||||
* Set a default target for external links, e.g. _blank to pop up a new window
|
||||
*/
|
||||
$wgExternalLinkTarget = false;
|
||||
|
||||
/**
|
||||
* If true, external URL links in wiki text will be given the
|
||||
* rel="nofollow" attribute as a hint to search engines that
|
||||
|
|
|
|||
|
|
@ -990,11 +990,10 @@ class Linker {
|
|||
}
|
||||
|
||||
/** @todo document */
|
||||
function makeExternalLink( $url, $text, $escape = true, $linktype = '', $ns = null ) {
|
||||
$style = $this->getExternalLinkAttributes( $url, $text, 'external ' . $linktype );
|
||||
global $wgNoFollowLinks, $wgNoFollowNsExceptions;
|
||||
if( $wgNoFollowLinks && !(isset($ns) && in_array($ns, $wgNoFollowNsExceptions)) ) {
|
||||
$style .= ' rel="nofollow"';
|
||||
function makeExternalLink( $url, $text, $escape = true, $linktype = '', $attribs = array() ) {
|
||||
$attribsText = $this->getExternalLinkAttributes( $url, $text, 'external ' . $linktype );
|
||||
if ( $attribs ) {
|
||||
$attribsText .= Xml::expandAttributes( $attribs );
|
||||
}
|
||||
$url = htmlspecialchars( $url );
|
||||
if( $escape ) {
|
||||
|
|
@ -1006,7 +1005,7 @@ class Linker {
|
|||
wfDebug("Hook LinkerMakeExternalLink changed the output of link with url {$url} and text {$text} to {$link}", true);
|
||||
return $link;
|
||||
}
|
||||
return '<a href="'.$url.'"'.$style.'>'.$text.'</a>';
|
||||
return '<a href="'.$url.'"'.$attribsText.'>'.$text.'</a>';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1118,7 +1118,8 @@ class Parser
|
|||
$text = $this->maybeMakeExternalImage( $url );
|
||||
if ( $text === false ) {
|
||||
# Not an image, make a link
|
||||
$text = $sk->makeExternalLink( $url, $wgContLang->markNoConversion($url), true, 'free', $this->mTitle->getNamespace() );
|
||||
$text = $sk->makeExternalLink( $url, $wgContLang->markNoConversion($url), true, 'free',
|
||||
$this->getExternalLinkAttribs() );
|
||||
# Register it in the output object...
|
||||
# Replace unnecessary URL escape codes with their equivalent characters
|
||||
$pasteurized = self::replaceUnusualEscapes( $url );
|
||||
|
|
@ -1394,11 +1395,18 @@ class Parser
|
|||
|
||||
$url = Sanitizer::cleanUrl( $url );
|
||||
|
||||
if ( $this->mOptions->mExternalLinkTarget ) {
|
||||
$attribs = array( 'target' => $this->mOptions->mExternalLinkTarget );
|
||||
} else {
|
||||
$attribs = array();
|
||||
}
|
||||
|
||||
# Use the encoded URL
|
||||
# This means that users can paste URLs directly into the text
|
||||
# Funny characters like ö aren't valid in URLs anyway
|
||||
# This was changed in August 2004
|
||||
$s .= $sk->makeExternalLink( $url, $text, false, $linktype, $this->mTitle->getNamespace() ) . $dtrail . $trail;
|
||||
$s .= $sk->makeExternalLink( $url, $text, false, $linktype, $this->getExternalLinkAttribs() )
|
||||
. $dtrail . $trail;
|
||||
|
||||
# Register link in the output object.
|
||||
# Replace unnecessary URL escape codes with the referenced character
|
||||
|
|
@ -1411,6 +1419,20 @@ class Parser
|
|||
return $s;
|
||||
}
|
||||
|
||||
function getExternalLinkAttribs() {
|
||||
$attribs = array();
|
||||
global $wgNoFollowLinks, $wgNoFollowNsExceptions;
|
||||
$ns = $this->mTitle->getNamespace();
|
||||
if( $wgNoFollowLinks && !in_array($ns, $wgNoFollowNsExceptions) ) {
|
||||
$attribs['rel'] = 'nofollow';
|
||||
}
|
||||
if ( $this->mOptions->getExternalLinkTarget() ) {
|
||||
$attribs['target'] = $this->mOptions->getExternalLinkTarget();
|
||||
}
|
||||
return $attribs;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Replace unusual URL escape codes with their equivalent characters
|
||||
* @param string
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ class ParserOptions
|
|||
var $mTemplateCallback; # Callback for template fetching
|
||||
var $mEnableLimitReport; # Enable limit report in an HTML comment on output
|
||||
var $mTimestamp; # Timestamp used for {{CURRENTDAY}} etc.
|
||||
var $mExternalLinkTarget; # Target attribute for external links
|
||||
|
||||
var $mUser; # Stored user object, just used to initialise the skin
|
||||
|
||||
|
|
@ -52,6 +53,7 @@ class ParserOptions
|
|||
function getTemplateCallback() { return $this->mTemplateCallback; }
|
||||
function getEnableLimitReport() { return $this->mEnableLimitReport; }
|
||||
function getCleanSignatures() { return $this->mCleanSignatures; }
|
||||
function getExternalLinkTarget() { return $this->mExternalLinkTarget; }
|
||||
|
||||
function getSkin() {
|
||||
if ( !isset( $this->mSkin ) ) {
|
||||
|
|
@ -96,6 +98,7 @@ class ParserOptions
|
|||
function enableLimitReport( $x = true ) { return wfSetVar( $this->mEnableLimitReport, $x ); }
|
||||
function setTimestamp( $x ) { return wfSetVar( $this->mTimestamp, $x ); }
|
||||
function setCleanSignatures( $x ) { return wfSetVar( $this->mCleanSignatures, $x ); }
|
||||
function setExternalLinkTarget( $x ) { return wfSetVar( $this->mExternalLinkTarget, $x ); }
|
||||
|
||||
function __construct( $user = null ) {
|
||||
$this->initialiseFromUser( $user );
|
||||
|
|
@ -114,6 +117,7 @@ class ParserOptions
|
|||
global $wgUseTeX, $wgUseDynamicDates, $wgInterwikiMagic, $wgAllowExternalImages;
|
||||
global $wgAllowExternalImagesFrom, $wgEnableImageWhitelist, $wgAllowSpecialInclusion, $wgMaxArticleSize;
|
||||
global $wgMaxPPNodeCount, $wgMaxTemplateDepth, $wgMaxPPExpandDepth, $wgCleanSignatures;
|
||||
global $wgExternalLinkTarget;
|
||||
$fname = 'ParserOptions::initialiseFromUser';
|
||||
wfProfileIn( $fname );
|
||||
if ( !$userInput ) {
|
||||
|
|
@ -151,6 +155,7 @@ class ParserOptions
|
|||
$this->mTemplateCallback = array( 'Parser', 'statelessFetchTemplate' );
|
||||
$this->mEnableLimitReport = false;
|
||||
$this->mCleanSignatures = $wgCleanSignatures;
|
||||
$this->mExternalLinkTarget = $wgExternalLinkTarget;
|
||||
wfProfileOut( $fname );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1353,7 +1353,7 @@ class Parser_OldPP
|
|||
# This means that users can paste URLs directly into the text
|
||||
# Funny characters like ö aren't valid in URLs anyway
|
||||
# This was changed in August 2004
|
||||
$s .= $sk->makeExternalLink( $url, $text, false, $linktype, $this->mTitle->getNamespace() ) . $dtrail . $trail;
|
||||
$s .= $sk->makeExternalLink( $url, $text, false, $linktype, $this->getExternalLinkAttribs() ) . $dtrail . $trail;
|
||||
|
||||
# Register link in the output object.
|
||||
# Replace unnecessary URL escape codes with the referenced character
|
||||
|
|
@ -1366,6 +1366,19 @@ class Parser_OldPP
|
|||
return $s;
|
||||
}
|
||||
|
||||
function getExternalLinkAttribs() {
|
||||
$attribs = array();
|
||||
global $wgNoFollowLinks, $wgNoFollowNsExceptions;
|
||||
$ns = $this->mTitle->getNamespace();
|
||||
if( $wgNoFollowLinks && !in_array($ns, $wgNoFollowNsExceptions) ) {
|
||||
$attribs['rel'] = 'nofollow';
|
||||
}
|
||||
if ( $this->mOptions->getExternalLinkTarget() ) {
|
||||
$attribs['target'] = $this->mOptions->getExternalLinkTarget();
|
||||
}
|
||||
return $attribs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Replace anything that looks like a URL with a link
|
||||
* @private
|
||||
|
|
@ -1432,7 +1445,8 @@ class Parser_OldPP
|
|||
$text = $this->maybeMakeExternalImage( $url );
|
||||
if ( $text === false ) {
|
||||
# Not an image, make a link
|
||||
$text = $sk->makeExternalLink( $url, $wgContLang->markNoConversion($url), true, 'free', $this->mTitle->getNamespace() );
|
||||
$text = $sk->makeExternalLink( $url, $wgContLang->markNoConversion($url), true, 'free',
|
||||
$this->getExternalLinkAttribs() );
|
||||
# Register it in the output object...
|
||||
# Replace unnecessary URL escape codes with their equivalent characters
|
||||
$pasteurized = self::replaceUnusualEscapes( $url );
|
||||
|
|
|
|||
Loading…
Reference in a new issue