--- lib/TWiki/Plugins/InterwikiPlugin.pm.2010 2010-07-13 00:01:27.000000000 -0400 +++ lib/TWiki/Plugins/InterwikiPlugin.pm 2011-05-24 05:45:50.000000000 -0400 @@ -49,11 +49,11 @@ $pagePattern %interSiteTable ); $VERSION = '$Rev: 19216 (2010-07-12) $'; -$RELEASE = '2010-07-12'; +$RELEASE = '2010-07-12-T2'; BEGIN { # 'Use locale' for internationalisation of Perl sorting and searching - if( $TWiki::cfg{UseLocale} ) { require locale; @@ -75,11 +75,11 @@ # Regexes for the Site:page format InterWiki reference my $man = TWiki::Func::getRegularExpression('mixedAlphaNum'); my $ua = TWiki::Func::getRegularExpression('upperAlpha'); $sitePattern = "([$ua][$man]+)"; - $pagePattern = "([${man}\_\~\%\/][$man" . '\.\/\+\_\~\,\&\;\:\=\!\?\%\#\@\-]*?)'; + $pagePattern = "((?:'[^']*')|(?:\"[^\"]*\")|(?:[${man}\_\~\%\/][$man" . '\.\/\+\_\~\,\&\;\:\=\!\?\%\#\@\-]*?))'; # Get plugin preferences from InterwikiPlugin topic $interLinkFormat = TWiki::Func::getPreferencesValue( 'INTERWIKIPLUGIN_INTERLINKFORMAT' ) || '$label'; @@ -124,21 +124,31 @@ $prefix ||= ''; $site ||= ''; $page ||= ''; $postfix ||= ''; + my $upage = $page; + if( $page =~ /^['"](.*)["']$/ ) { + $page = $1; + $upage = TWiki::urlEncode( $1 ); + } + my $text = $prefix; if( defined( $interSiteTable{$site} ) ) { my $tooltip = $interSiteTable{$site}{tooltip}; my $url = $interSiteTable{$site}{url}; my $label = "$site:$page"; if( $site eq 'TWiki' ) { $tooltip =~ s/\$page/$page/g; # TWikibug:Item6503 - hack to prettify TWiki.org link URL $page =~ s/^([A-Za-z0-9]+)\./$1\//; # change first '.' to '/' } - $url .= $page unless( $url =~ /\$page/ ); + if( $url =~ /\$page/ ) { + $url =~ s/\$page/$upage/g; + } else { + $url .= $upage; + } if( $postfix ) { # [[...]] or [[...][...]] interwiki link $text = ''; if( $postfix =~ /^\]\[([^\]]+)/ ) {