From: <de...@de...> - 2007-04-11 04:16:53
|
Author: ThomasWeigert Date: 2007-04-10 23:16:53 -0500 (Tue, 10 Apr 2007) New Revision: 13358 Modified: twiki/branches/MAIN/twikiplugins/MultiEditPlugin/data/TWiki/MultiEditPlugin.txt twiki/branches/MAIN/twikiplugins/MultiEditPlugin/lib/TWiki/Plugins/MultiEditPlugin.pm Log: Item2870: Properly handle pre and verbatim sections in MultiEditPlugin. Modified: twiki/branches/MAIN/twikiplugins/MultiEditPlugin/data/TWiki/MultiEditPlugin.txt =================================================================== --- twiki/branches/MAIN/twikiplugins/MultiEditPlugin/data/TWiki/MultiEditPlugin.txt 2007-04-11 04:12:55 UTC (rev 13357) +++ twiki/branches/MAIN/twikiplugins/MultiEditPlugin/data/TWiki/MultiEditPlugin.txt 2007-04-11 04:16:53 UTC (rev 13358) @@ -44,7 +44,7 @@ * Edit label (may also be an <img> tag): * #Set LABEL = Edit - * Set LABEL = <div class="multiEditLabel">%ICON{edittopic}% Edit</div> + * Set LABEL = <div align="right" class="multiEditLabel">%ICON{edittopic}% Edit</div> * A comma separated list of skins *NOT* to allow editing (you'll probably want the =viewprint= template here as well): * Set SKIPSKIN = viewprint, print, plain @@ -61,7 +61,7 @@ It is not possible based on the current TWiki rendering model to make this feature work when only part of a topic is included. If there are sections identified in an included topic which are before the %<nop>STARTINCLUDE% marker, then the sections in the included topic cannot be properly edited. -Text within <pre> tags placed in sections is not correctly rendered, albeit the text is in the topic and is not lost. +A patch is included below to support sectional editing of included topics. ---++ Plugin Installation Instructions @@ -101,9 +101,10 @@ ---++ Plugin Info | Plugin Author: | TWiki:Main/ThomasWeigert | -| Plugin Version: | 08 Apr 2007 | +| Plugin Version: | 10 Apr 2007 | | Change History: | <!-- versions below in reverse order --> | -| 08 Apr 2006: | Update by TWiki:Main.MichaelDaum. Fix for Bugs:Item3847. Handle verbatim in sections. | +| 10 Apr 2007: | Support pre in sections. | +| 08 Apr 2007: | Update by TWiki:Main.MichaelDaum. Fix for Bugs:Item3847. Handle verbatim in sections. | | 10 Dec 2006: | Fix for unnamed sections. | | 19 Nov 2006: | Support editing of sections from included topics. Use =strict=. | | 09 Sep 2006: | Bug (disabled SectionalEditPlugin) fixed. | Modified: twiki/branches/MAIN/twikiplugins/MultiEditPlugin/lib/TWiki/Plugins/MultiEditPlugin.pm =================================================================== --- twiki/branches/MAIN/twikiplugins/MultiEditPlugin/lib/TWiki/Plugins/MultiEditPlugin.pm 2007-04-11 04:12:55 UTC (rev 13357) +++ twiki/branches/MAIN/twikiplugins/MultiEditPlugin/lib/TWiki/Plugins/MultiEditPlugin.pm 2007-04-11 04:16:53 UTC (rev 13358) @@ -131,7 +131,7 @@ # This handler is called by getRenderedVersion just before the line loop # Only bother with this plugin if viewing (i.e. not searching, etc) - my $cgiAction = getCgiAction(); + my $cgiAction = TWiki::Contrib::EditContrib::getCgiAction(); return unless ($cgiAction =~ m/view|viewauth|render/o); my $ctmpl = $session->{cgiQuery}->param('template') || ''; @@ -143,6 +143,7 @@ } } +# return if $skipit; ## SMELL: Why has this been removed by MD? my $ret = ''; my $eurl = TWiki::Func::getScriptUrlPath() . '/editonesection'; @@ -176,6 +177,12 @@ # restore verbatim markers $tmp =~ s/\<\!\-\-\!([a-z0-9]+)\!\-\-\>/\<\!\-\-$TWiki::TranslationToken$1$TWiki::TranslationToken\-\-\>/gio; my $rText = ( $dontedit )? $tmp : &editRow("$eurl/$web/$topic", $pos, $tmp); + # now restore pre +##SMELL: This should work also for verbatim, etc., but that information +##is (contrary to the documentation) not passed into a handler. Need to +##continue to rely on the deprecated endRenderingHandler. + putBackBlocks( \$rText, $_[1], 'pre' ); + $renderedText{"$pos$web$topic"} = $rText; $lastsec = ''; $ret .= "$prefix$pos$web$topic$prefix"; @@ -190,12 +197,24 @@ } } +sub putBackBlocks { + my( $text, $map, $tag ) = @_; + + foreach my $placeholder ( keys %$map ) { + if( $placeholder =~ /^$tag\d+$/ ) { + my $params = $map->{$placeholder}{params} || ''; + my $val = $map->{$placeholder}{text}; + $$text =~ s(<!--$TWiki::TranslationToken$placeholder$TWiki::TranslationToken-->)(<$tag$params>$val</$tag>); + } + } +} + # ========================= sub editLink { my ($eurl,$pos,$title) = @_; my $session = $TWiki::Plugins::SESSION; - return "<a class=\"multiEditLink\" href=\"$eurl\?t=" . time() . "&sec=$pos&origurl=" . $session->{webName}.'.'.$session->{topicName} . "#SECEDITBOX\">$title</a>"; + return "<a class=\"multiEditLink\" href=\"$eurl\?t=" . time() . "&sec=$pos&redirectto=" . $session->{webName}.'.'.$session->{topicName} . "#SECEDITBOX\">$title</a>"; } # ========================= @@ -273,21 +292,4 @@ } -############################################################################### -# take the REQUEST_URI, strip off the PATH_INFO from the end, the last word -# is the action; this is done that complicated as there may be different -# paths for the same action depending on the apache configuration (rewrites, aliases) -sub getCgiAction { - - my $pathInfo = $ENV{'PATH_INFO'} || ''; - my $theAction = $ENV{'REQUEST_URI'} || ''; - if ($theAction =~ /^.*?\/([^\/]+)$pathInfo.*$/) { - $theAction = $1; - } else { - $theAction = 'view'; - } - - return $theAction; -} - 1; |