From: <Mic...@nt...> - 2006-03-14 18:29:10
|
Author: MichaelDaum Date: 2006-03-14 10:26:12 -0800 (Tue, 14 Mar 2006) New Revision: 9284 Modified: twiki/branches/TWikiRelease04x00/twikiplugins/FindElsewherePlugin/data/TWiki/FindElsewherePlugin.txt twiki/branches/TWikiRelease04x00/twikiplugins/FindElsewherePlugin/lib/TWiki/Plugins/FindElsewherePlugin.pm Log: Item1874: repsects <noautolink> ... </noautolink> blocks as well as the NOAUTOLINK preference flag Modified: twiki/branches/TWikiRelease04x00/twikiplugins/FindElsewherePlugin/data/TWiki/FindElsewherePlugin.txt =================================================================== --- twiki/branches/TWikiRelease04x00/twikiplugins/FindElsewherePlugin/data/TWiki/FindElsewherePlugin.txt 2006-03-14 17:56:51 UTC (rev 9283) +++ twiki/branches/TWikiRelease04x00/twikiplugins/FindElsewherePlugin/data/TWiki/FindElsewherePlugin.txt 2006-03-14 18:26:12 UTC (rev 9284) @@ -27,6 +27,7 @@ | Found singular elsewhere | <nop>TWikiAdminGroups | TWikiAdminGroups | [[%MAINWEB%.TWikiAdminGroup][TWikiAdminGroups]] | | Found elsewhere, spaced wiki word | [<nop/>[TWiki admin group]] | [[TWiki admin group]] | [[%MAINWEB%.TWikiAdminGroup][TWiki admin group]] | | Found elsewhere, abbrev | <nop/>ACRONYM | ACRONYM | (If <nop/>ACRONYM is a topic defined in one of the LOOKELSEWHERE webs, a link to it should show up) | +| Not found, not linked | <noautolink> <nop>TWikiAdminGroup </noautolink> | <noautolink> TWikiAdminGroup </noautolink> | <nop>TWikiAdminGroup | __New functionality, multiple hits__ @@ -98,6 +99,7 @@ | Plugin Author: | TWiki:Main.MikeBarton | | Version: | %$VERSION% | | Change History: | <!-- versions below in reverse order --> | +| 14 Mar 2006: | repsects <noautolink> ... </noautolink> blocks as well as the NOAUTOLINK preference flag | | 08 Apr 2005: | (v1.7) - Negated vars =DISABLELOOKELSEWHERE= and =DISABLEPLURALTOSINGULAR= can now be set per web (!WebPreferences) or per topic. | | 05 Apr 2005: | (v1.6) - Bugfix: Preambles for ACRONYMS were doubled. | | 04 Apr 2005: | (v1.5) - Plugin less greedy - now leaves linktext in [<nop/>[WikiWord][long links with <nop/>ACRONYMS or <nop/>WikiWords]] alone | Modified: twiki/branches/TWikiRelease04x00/twikiplugins/FindElsewherePlugin/lib/TWiki/Plugins/FindElsewherePlugin.pm =================================================================== --- twiki/branches/TWikiRelease04x00/twikiplugins/FindElsewherePlugin/lib/TWiki/Plugins/FindElsewherePlugin.pm 2006-03-14 17:56:51 UTC (rev 9283) +++ twiki/branches/TWikiRelease04x00/twikiplugins/FindElsewherePlugin/lib/TWiki/Plugins/FindElsewherePlugin.pm 2006-03-14 18:26:12 UTC (rev 9284) @@ -43,6 +43,9 @@ # 15-Dec-2005 - SteffenPoulsen # - improved handling of the special case [[Main.ABBR][Some desc with a found ABBRTWO]] # - is now ignored correctly, instead of breaking the link +# 14-Mar-2006 - MichaeDaum +# - repsects <noautolink> ... </noautolink> blocks as well as the +# NOAUTOLINK preference flag package TWiki::Plugins::FindElsewherePlugin; @@ -53,6 +56,7 @@ $wwre $manre $abbre + $noAutolink ); use vars qw( %TWikiCompatibility ); @@ -93,6 +97,7 @@ $manre = TWiki::Func::getRegularExpression('mixedAlphaNum'); $abbre = TWiki::Func::getRegularExpression('abbrevRegex'); + $noAutolink = TWiki::Func::getPreferencesFlag('NOAUTOLINK'); # Plugin correctly initialized return 1; } @@ -106,11 +111,12 @@ $TWikiCompatibility{startRenderingHandler} = 1.1; sub startRenderingHandler { #my ( $text, \%map ) = @_; + # SMELL: why is there another call th _handle() here _handle( @_ ); } sub _handle { - return if $lookElsewhereDisabled; + return if $lookElsewhereDisabled && $noAutolink; # Find instances of WikiWords not in this web, but in the otherWeb(s) # If the WikiWord is found in theWeb, put the word back unchanged @@ -118,9 +124,19 @@ # [[otherWeb.WikiWord]] # If it isn't found there either, put the word back unchnaged + my $text = $_[0]; + my $removed = {}; + + # SMELL: taking out blocks should be in Func.pm + my $renderer = $TWiki::Plugins::SESSION->{renderer}; + $text = $renderer->takeOutBlocks( $text, 'noautolink', $removed ); + # Match WikiWordAsWebName.WikiWord, WikiWords, [[wiki words]] and # WIK IWO RDS - $_[0] =~ s/(^|[\s\(])(\[\[$wnre\.($wwre|$abbre)\]\[[$manre\s]+\]\]|\[\[[$manre\s]+\]\[[$manre\s]+\]\]|$wnre\.$wwre|$wwre|\[\[[$manre\s]+\]\]|$abbre)/$1._findTopicElsewhere($2)/geo; + $text =~ s/(^|[\s\(])(\[\[$wnre\.($wwre|$abbre)\]\[[$manre\s]+\]\]|\[\[[$manre\s]+\]\[[$manre\s]+\]\]|$wnre\.$wwre|$wwre|\[\[[$manre\s]+\]\]|$abbre)/$1._findTopicElsewhere($2)/geo; + + $renderer->putBackBlocks( \$text, $removed, 'noautolink' ); + $_[0] = $text; } sub _makeTopicLink { |