From: <de...@de...> - 2008-04-29 13:05:50
|
Author: MichaelDaum Date: 2008-04-29 08:05:49 -0500 (Tue, 29 Apr 2008) New Revision: 16746 Trac url: http://develop.twiki.org/trac/changeset/16746 Added: twiki/trunk/AliasPlugin/templates/body.alias.tmpl Modified: twiki/trunk/AliasPlugin/data/TWiki/AliasPlugin.txt twiki/trunk/AliasPlugin/lib/TWiki/Plugins/AliasPlugin.pm twiki/trunk/AliasPlugin/lib/TWiki/Plugins/AliasPlugin/MANIFEST Log: Item5573: fix the fix Modified: twiki/trunk/AliasPlugin/data/TWiki/AliasPlugin.txt =================================================================== --- twiki/trunk/AliasPlugin/data/TWiki/AliasPlugin.txt 2008-04-28 18:37:48 UTC (rev 16745) +++ twiki/trunk/AliasPlugin/data/TWiki/AliasPlugin.txt 2008-04-29 13:05:49 UTC (rev 16746) @@ -34,8 +34,8 @@ your aliases into a specific topic, the <nop>WebAliases. This topic is looked up in three places: 1 the current web - 1 the %MAINWEB% web - 1 if there's no <nop>WebAliases topic in the %MAINWEB% it will be looked up in the %TWIKIWEB% + 2 the %MAINWEB% web + 3 if there's no <nop>WebAliases topic in the %MAINWEB% it will be looked up in the %TWIKIWEB% The aliases defined in (1) are merged with those in (2) or (3). Thereby you can define site-wide aliases in <nop>%MAINWEB%.WebAliases and web specific aliases in the current's web <nop>WebAliases topic. @@ -43,6 +43,15 @@ effect on the current topic. Similarly, aliases can be disabled. See the Syntax section for more details. +By default no alias substitution is applied to a page. You can configure all of your TWiki +pages to get alias substitution by + 1 prepending =alias= to your =SKIN= variable in your <nop>TWikiPreferences/<nop>WebPreferences/topic preferenes + <verbatim>Set SKIN = alias, pattern</verbatim> + 2 appending =?cover=alias= to an url or + 3 by specifying so called "alias areas": + an alias area is specified using the =%<nop>STARTALIASAREA%= ... =%<nop>STOPALIASAREA%= + tags; these can occur multiple times on a page (note: nested alias areas aren't supported). + ---++ Syntax This is the list of TWiki tags defined by this plugin. | *Name* | *Description* | @@ -108,28 +117,28 @@ ---++ Test-Cases %STARTALIASAREA% -| * * | *Pattern* | *Substitution* | *Correctness* | -| 1 | TESTLINK | yes, this is a link to <nop>TWiki.WebHome | %Y% | -| 2 | TESTALIAS | yes | %Y% | -| 3 | _TESTLINK | no, =_= is no word boundary | %Y% | -| 4 | TESTLINK_TESTLINK | no, =_= is no word boundary | %Y% | -| 5 | <u>TESTLINK</u> | yes | %Y% | -| 6 | TESTLINKTESTLINK | no, this is _one_ word not being aliases | %Y% | -| 7 | rtfm | yes, but be more polite to your users | %Y% | -| 8 | <a href="%SCRIPTURL%/TESTALIAS%SCRIPTSUFFIX%" title="TESTALIAS">TESTALIAS</a> | this should be a green link to <nop>%SCRIPTURL%/<nop>TESTALIAS%SCRIPTSUFFIX% | %Y% | -| 9 | [[TWiki.WebHome][TESTALIAS]] | no, don't substitute inside a TWiki tag | %Y% | -| 10 | [[TESTALIAS]] | no, don't substitute inside a TWiki tag | %Y% | -| 11 | [<nop>[TESTALIAS]] | no, not even inside a _nopped_ TWiki tag | %Y% | -| 12 | <font color="red"> TESTALIAS </font> | yes, ignores =red= | %Y% | -| 13 | %RED% %TESTALIAS% %ENDCOLOR% | no, inside two =%= | %Y% | -| 14 | %RED%%TESTALIAS%%ENDCOLOR% | no, this is inside two =%= | %Y% | -| 15 | <font color="red"> %TESTALIAS% </font> | no. inside two =%= | %Y% | -| 16 | <font color="red">%TESTALIAS%</font> | no. inside two =%= | %Y% | -| 17 | %TESTALIAS | yes, no =perc= on the same line | %Y% | -| 18 | %TESTALIAS | yes, with a second =%= here | %Y% | -| 19 | %BLABLA TESTALIAS% | yes, this is no regular TWiki tag | %Y% | -| 20 | %BLABLA{TESTALIAS}% | no, this is a regular TWiki tag | %Y% | -| 21 | %<nop>BLABLA{TESTALIAS}% | no, albeit this is a _nopped_ TWiki tag | %Y% | +| * * | *Test* | *Should be* | *Comment* | +| 1 | TESTLINK | [[%TWIKIWEB%.WebHome][TESTLINK]] | yes, substitute: this is a link to <nop>TWiki.WebHome | +| 2 | TESTALIAS | yes | yes | +| 3 | _TESTLINK | _TESTLINK | no substitution: =_= is no word boundary | +| 4 | TESTLINK_TESTLINK | TESTLINK_TESTLINK | no: =_= is no word boundary | +| 5 | <u>TESTLINK</u> | <u>[[%TWIKIWEB%.WebHome][TESTLINK]]</u> | yes | +| 6 | TESTLINKTESTLINK | TESTLINKTESTLINK | no: this is _one_ word not being aliases | +| 7 | rtfm | read the fine manual | yes, but be more polite to your users | +| 8 | <a href="%SCRIPTURL{"view"}%/TESTALIAS" title="TESTALIAS">TESTALIAS</a> | <a href="%SCRIPTURL{"view"}%/yes" title="yes">yes</a> | yes | +| 9 | [[TWiki.WebHome][TESTALIAS]] | <a href="%SCRIPTURLPATH{"view"}%/%TWIKIWEB%.WebHome">T<nop>ESTALIAS</a> | no, don't substitute inside a TWiki tag | +| 10 | [[TESTALIAS]] | <a href="%SCRIPTURL{"edit"}%/%WEB%/TESTALIAS?topicparent=%WEB%.%TOPIC%" class="twikiNewLink" title="Create this topic">T<nop>ESTALIAS</a>| no, don't substitute inside a TWiki tag | +| 11 | [<nop>[TESTALIAS]] | [<nop>[T<nop>ESTALIAS]] | no, not even inside a _nopped_ TWiki tag | +| 12 | <font color="red"> TESTALIAS </font> | <font color="red"> yes </font> | yes, ignores =red= | +| 13 | %RED% %TESTALIAS% %ENDCOLOR% | %RED% %T<nop>ESTALIAS% %ENDCOLOR% | no, inside two =%= | +| 14 | %RED%%TESTALIAS%%ENDCOLOR% | %RED%%T<nop>ESTALIAS%%ENDCOLOR% | no, this is inside two =%= | +| 15 | <font color="red"> %TESTALIAS% </font> | <font color="red"> %T<nop>ESTALIAS% </font> | no, inside two =%= | +| 16 | <font color="red">%TESTALIAS%</font> | <font color="red">%T<nop>ESTALIAS%</font> | no, inside two =%= | +| 17 | %TESTALIAS | %yes | yes, no =perc= on the same line | +| 18 | %TESTALIAS | %yes | yes, with a second =%= here | +| 19 | %BLABLA TESTALIAS% | %BLABLA yes% | yes, this is no regular TWiki tag | +| 20 | %BLABLA{TESTALIAS}% | %BLABLA{T<nop>ESTALIAS}% | no, this is a regular TWiki tag | +| 21 | %<nop>BLABLA{TESTALIAS}% | %<nop>BLABLA{T<nop>ESTALIAS}% | no, albeit this is a _nopped_ TWiki tag | %STOPALIASAREA% ---++ Plugin Info @@ -137,9 +146,9 @@ * Set SHORTDESCRIPTION = Define aliases which will be replaced with arbitrary strings automatically --> | Plugin Author: | TWiki:Main/OthelloMaurer, TWiki:Main/MichaelDaum | -| Copyright ©: | 2003, Othello Maurer; 2003-2007, Michael Daum http://wikiring.de | +| Copyright ©: | 2003, Othello Maurer; 2003-2008, Michael Daum http://michaeldaumconsulting.com | | License: | GPL ([[http://www.gnu.org/copyleft/gpl.html][GNU General Public License]]) | -| Version: | v2.30 | +| Version: | v2.31 | | Change History: | | | 28 Apr 2008: | speed improvements | | 13 Nov 2007: | Item4959: disabled settings in plugin topic, \ Modified: twiki/trunk/AliasPlugin/lib/TWiki/Plugins/AliasPlugin/MANIFEST =================================================================== --- twiki/trunk/AliasPlugin/lib/TWiki/Plugins/AliasPlugin/MANIFEST 2008-04-28 18:37:48 UTC (rev 16745) +++ twiki/trunk/AliasPlugin/lib/TWiki/Plugins/AliasPlugin/MANIFEST 2008-04-29 13:05:49 UTC (rev 16746) @@ -2,4 +2,5 @@ data/TWiki/WebAliases.txt 0644 lib/TWiki/Plugins/AliasPlugin.pm 0644 pub/TWiki/AliasPlugin/wikiringlogo40x40.png 0644 +templates/body.alias.tmpl 0644 templates/view.alias.tmpl 0644 Modified: twiki/trunk/AliasPlugin/lib/TWiki/Plugins/AliasPlugin.pm =================================================================== --- twiki/trunk/AliasPlugin/lib/TWiki/Plugins/AliasPlugin.pm 2008-04-28 18:37:48 UTC (rev 16745) +++ twiki/trunk/AliasPlugin/lib/TWiki/Plugins/AliasPlugin.pm 2008-04-29 13:05:49 UTC (rev 16746) @@ -1,7 +1,7 @@ # Plugin for TWiki Collaboration Platform, http://TWiki.org/ # # Copyright (C) 2003 Othello Maurer <ma...@na...> -# Copyright (C) 2003-2007 Michael Daum http://wikiring.de +# Copyright (C) 2003-2007 Michael Daum http://michaeldaumconsulting.com # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -31,7 +31,7 @@ $VERSION = '$Rev$'; -$RELEASE = '2.30'; +$RELEASE = '2.31'; $SHORTDESCRIPTION = 'Define aliases which will be replaced with arbitrary strings automatically'; $NO_PREFS_IN_TOPIC = 1; @@ -114,65 +114,42 @@ } # ========================= -sub DIS_preRenderingHandler { +sub preRenderingHandler { doInit(); return unless $foundAliases; writeDebug("### preRenderingHandler()"); my $result = ''; - foreach my $line (split(/\r?\n/, $_[0])) { - $insideAliasArea = 1 if $line =~ /%STARTALIASAREA%/; - $insideAliasArea = 0 if $line =~ /%STOPALIASAREA%/; - writeDebug("line=$line, insideAliasArea=$insideAliasArea"); - $line = &handleAliasArea($line) if $insideAliasArea; - $result .= $line . "\n"; + my $text = $_[0]; + my @areas = split(/%(START|STOP)ALIASAREA%/, $text); + foreach my $area (@areas) { + if ($area eq 'START') { + $insideAliasArea = 1; + next; + } + if ($area eq 'STOP' ) { + $insideAliasArea = 0; + next; + } + #writeDebug("insideAliasArea=$insideAliasArea, area='$area'"); + $area = handleAliasArea($area) if $insideAliasArea; + $result .= $area; } $_[0] = $result; } # ========================= -sub DIS_postRenderingHandler { - writeDebug("### postRenderingHandler"); +sub postRenderingHandler { $_[0] =~ s/%(START|STOP)ALIASAREA%//go; - #$insideAliasArea = 0; } # ========================= -sub postRenderingHandler { - my $text = $_[0]; - - my $result = ''; - if ($text =~ /^(.*?)%STARTALIASAREA%(.*)$/so) { - doInit(); - writeDebug("found aliasara"); - $result .= $1; - $text = $2; - my $post = ''; - if ($text =~ /^(.*)%STOPALIASAREA%(.*?)$/so) { - $text = $1; - $post = $2; - } - $result .= handleAliasArea($text).$post; - } else { - #writeDebug("no alias area found in $text"); - } - - if ($result) { - $result =~ s/%(START|STOP)ALIASAREA%//go; - $_[0] = $result; - writeDebug("asserting result"); - } - - return 1; -} - -# ========================= sub handleAllAliasCmds { my ($web, $topic, $name, $args) = @_; - writeDebug("handleAllAliasCmds($name)"); + #writeDebug("handleAllAliasCmds($name)"); doInit(); # delayed initialization return handleAlias($web, $topic, $args) if $name eq 'ALIAS'; @@ -186,7 +163,7 @@ my ($web, $topic, $args) = @_; $args ||= ''; - writeDebug("handleAliases($args) called"); + #writeDebug("handleAliases($args) called"); require TWiki::Attrs; my $params = new TWiki::Attrs($args); @@ -225,7 +202,7 @@ sub handleAlias { my ($web, $topic, $args) = @_; - writeDebug("handleAlias() called"); + #writeDebug("handleAlias() called"); require TWiki::Attrs; my $params = new TWiki::Attrs($args); @@ -237,7 +214,7 @@ $theRegex =~ s/\$start/$START/go; $theRegex =~ s/\$stop/$STOP/go; addAliasPattern($theKey, $theValue, $theRegex); - writeDebug("handleAlias(): added alias '$theKey' -> '$theValue')"); + #writeDebug("handleAlias(): added alias '$theKey' -> '$theValue')"); return ""; } @@ -249,7 +226,7 @@ sub handleUnAlias { my ($web, $topic, $args) = @_; - writeDebug("handleUnAlias() called"); + #writeDebug("handleUnAlias() called"); if ($args) { require TWiki::Attrs; @@ -278,7 +255,7 @@ $regex ||= ''; - writeDebug("called addAliasPattern($key, $value, $regex)"); + #writeDebug("called addAliasPattern($key, $value, $regex)"); if ($regex) { $aliasRegex{$key} = $regex; @@ -291,7 +268,7 @@ } $foundAliases = 1; - writeDebug("aliasRegex{$key}=$aliasRegex{$key} aliasValue{$key}=$aliasValue{$key}"); + #writeDebug("aliasRegex{$key}=$aliasRegex{$key} aliasValue{$key}=$aliasValue{$key}"); } # ========================= @@ -306,7 +283,7 @@ return if defined $seenAliasWebTopics{"$web.$topic"}; $seenAliasWebTopics{"$web.$topic"} = 1; - writeDebug("getAliases($web, $topic)"); + #writeDebug("getAliases($web, $topic)"); # parse the plugin preferences lines unless (TWiki::Func::topicExists($web, $topic)) { @@ -333,14 +310,14 @@ sub getConvenientAlias { my ($key, $value) = @_; - writeDebug("getConvenientAlias($key, $value) called"); + #writeDebug("getConvenientAlias($key, $value) called"); # convenience for wiki-links if ($value =~ /^($webRegex\.|$defaultWebNameRegex\.|#)$topicRegex/) { $value = "\[\[$value\]\[$key\]\]"; } - writeDebug("returns '$value'"); + #writeDebug("returns '$value'"); return $value; } @@ -352,11 +329,11 @@ my @aliasKeys = keys %aliasRegex; if ($foundError) { - writeDebug("found error"); + #writeDebug("found error"); return $text; } if (!@aliasKeys) { - writeDebug("no alias keys"); + #writeDebug("no alias keys"); return $text; } @@ -365,10 +342,10 @@ my $result = ''; $text =~ s/<nop>/NOPTOKEN/g; - foreach my $line (split(/\n/, $text)) { +# foreach my $line (split(/\n/, $text)) { # escape html tags - while ($line =~ /([^<]*)((?:<[^>]*>)*|<)/g) { + while ($text =~ /([^<]*)((?:<[^>]*>)*|<)/go) { my $substr = $1; my $tail = $2; @@ -377,7 +354,7 @@ # escape twiki tags if ($substr) { - while ($substr =~ /([^%]*)(((%[A-Z][a-zA-Z_0-9]+({[^}]+})?%)*)|%)/g) { + while ($substr =~ /([^%]*)(((%[A-Z][a-zA-Z_0-9]+({[^}]+})?%)*)|%)/go) { my $substr = $1; my $tail = $2; @@ -386,7 +363,7 @@ # escape twiki links if ($substr) { - while ($substr =~ /([^\[]*)((?:\[[^\]]*\])*|\[)/g) { + while ($substr =~ /([^\[]*)((?:\[[^\]]*\])*|\[)/go) { my $substr = $1; my $tail = $2; @@ -417,7 +394,7 @@ } $result .= $tail if $tail; } - } +# } $result =~ s/NOPTOKEN/<nop>/g; #writeDebug("result is '$result'"); @@ -430,7 +407,7 @@ $$counter++; $substHash{$$counter} = $aliasValue{$key}; - writeDebug("set counter=$$counter for $key=$aliasValue{$key}"); + #writeDebug("set counter=$$counter for $key=$aliasValue{$key}"); return $TranslationToken."$$counter".$TranslationToken; } @@ -439,10 +416,10 @@ my $counter = shift; if (defined $substHash{$counter}) { - writeDebug("put counter=$counter for $substHash{$counter}"); + #writeDebug("put counter=$counter for $substHash{$counter}"); return $substHash{$counter}; } else { - writeDebug("oops, got no value for counter=$counter"); + #writeDebug("oops, got no value for counter=$counter"); return 'ERROR ERROR'; # never reach } } Added: twiki/trunk/AliasPlugin/templates/body.alias.tmpl =================================================================== --- twiki/trunk/AliasPlugin/templates/body.alias.tmpl (rev 0) +++ twiki/trunk/AliasPlugin/templates/body.alias.tmpl 2008-04-29 13:05:49 UTC (rev 16746) @@ -0,0 +1,2 @@ +%TMPL:INCLUDE{"body"}%<!-- template: body.alias.tmpl --> +%TMPL:DEF{"content_container"}%<div class="natMainContents" id="natMainContents">%STARTALIASAREA%%TMPL:P{"content"}%%STOPALIASAREA%</div>%TMPL:END% |