From: <de...@de...> - 2007-03-15 14:42:55
|
Author: CrawfordCurrie Date: 2007-03-15 09:42:51 -0500 (Thu, 15 Mar 2007) New Revision: 13144 Modified: twiki/branches/MAIN/twikiplugins/EditRowPlugin/data/TWiki/EditRowPlugin.txt twiki/branches/MAIN/twikiplugins/EditRowPlugin/lib/TWiki/Plugins/EditRowPlugin.pm twiki/branches/MAIN/twikiplugins/EditRowPlugin/lib/TWiki/Plugins/EditRowPlugin/Table.pm Log: Item3770: fixed reported problems, and another one which is that verbatim and literal tables were getting saved to Modified: twiki/branches/MAIN/twikiplugins/EditRowPlugin/data/TWiki/EditRowPlugin.txt =================================================================== --- twiki/branches/MAIN/twikiplugins/EditRowPlugin/data/TWiki/EditRowPlugin.txt 2007-03-15 01:05:28 UTC (rev 13143) +++ twiki/branches/MAIN/twikiplugins/EditRowPlugin/data/TWiki/EditRowPlugin.txt 2007-03-15 14:42:51 UTC (rev 13144) @@ -23,7 +23,8 @@ are: * the =helptopic= and =editbutton= switches, which are ignored, * the =EDITCELL= feature, which is not supported, - * access controls, which are only checked on topic save. + * access controls on edit; with this plugin, access is only checked on topic save, + * The "Initial values" feature, which is incompatible with the way thi splugin adds new rows. The plugin doesn't use !JavaScript (except for the calendar) so it should work with all browsers. @@ -48,7 +49,7 @@ in a topic or !WebPreferences. It is enabled in this topic, so if it is working then the following examples will be editable. ---+++ Example 1 -%EDITTABLE{ format="| row, -1 | text, 20, init | select, 1, one, two, three, four | radio, 3,:-),:-I,:-( | label, 20, %SERVERTIME{"$day $mon $year $hour:$min"}% |" changerows="on" quietsave="on" }% +%EDITTABLE{ format="| row, -1 | text, 20, init | select, 1, one, two, three, four | radio, 3,:-),:-I,:-( | label, 20 |" changerows="on" quietsave="on" }% |*Nr*|*Text field*|*Drop down*|*Mood*|*Timestamp*| | 1 | hello table | one | :-) | 26 Jun 2002 12:30 | | 2 | | two | :-( | 27 Jun 2002 12:40 | @@ -77,6 +78,7 @@ | Copyright: | © 2007 Wind<nop>River Inc. | | License: | [[http://www.gnu.org/licenses/gpl.html][GPL (Gnu General Public License)]] | | Change History: | <!-- versions below in reverse order --> | +| 13144 | Bugs:Item3770: Bugfixes | | Dependencies: | %$DEPENDENCIES% | | Plugin Home: | http://twiki.org/cgi-bin/view/Plugins/EditRowPlugin | | Feedback: | http://twiki.org/cgi-bin/view/Plugins/EditRowPluginDev | Modified: twiki/branches/MAIN/twikiplugins/EditRowPlugin/lib/TWiki/Plugins/EditRowPlugin/Table.pm =================================================================== --- twiki/branches/MAIN/twikiplugins/EditRowPlugin/lib/TWiki/Plugins/EditRowPlugin/Table.pm 2007-03-15 01:05:28 UTC (rev 13143) +++ twiki/branches/MAIN/twikiplugins/EditRowPlugin/lib/TWiki/Plugins/EditRowPlugin/Table.pm 2007-03-15 14:42:51 UTC (rev 13144) @@ -12,9 +12,16 @@ my $active_table = undef; my @tables; my $nTables = 0; + my $disable = 0; foreach my $line (split(/\r?\n/, $_[0])) { - if ($line =~ /%EDITTABLE{(.*?)}%/) { + if ($line =~ /<(verbatim|literal)>/) { + $disable++; + } + if ($line =~ m#</(verbatim|literal)>#) { + $disable-- if $disable; + } + if (!$disable && $line =~ /%EDITTABLE{([^\n]*)}%/) { my $attrs = new TWiki::Attrs($1); if ($attrs->{include}) { @@ -28,11 +35,18 @@ } my ($meta, $text) = TWiki::Func::readTopic($iw, $it); $text =~ m/%EDITTABLE{([^\n]*)}%/s; - $attrs = new TWiki::Attrs($1); + my $params = $1; + if ($params) { + unless ($iw eq $_[2] && $it eq $_[1]) { + $params = TWiki::Func::expandCommonVariables( + $params, $iw, $it); + } + $attrs = new TWiki::Attrs($params); + } } $active_table = new TWiki::Plugins::EditRowPlugin::Table( - ++$nTables, $attrs, $_[2], $_[1]); + ++$nTables, $line, $attrs, $_[2], $_[1]); push(@tables, $active_table); next; } @@ -56,19 +70,21 @@ } sub new { - my ($class, $tno, $attrs, $web, $topic) = @_; + my ($class, $tno, $spec, $attrs, $web, $topic) = @_; my $this = bless({}, $class); $this->{number} = $tno; + $this->{spec} = $spec; $this->{rows} = []; $this->{attrs} = $attrs; + $this->{topic} = $topic; + $this->{web} = $web; + if ($attrs->{format}) { - $this->{colTypes} = _parseFormat($attrs->{format}); + $this->{colTypes} = $this->_parseFormat($attrs->{format}); } else { $this->{colTypes} = []; } - $this->{topic} = $topic; - $this->{web} = $web; return $this; } @@ -82,7 +98,7 @@ sub stringify { my $this = shift; - my $s = '%EDITTABLE{'.$this->{attrs}->stringify()."}%\n"; + my $s = "$this->{spec}\n"; foreach my $row (@{$this->{rows}}) { $s .= $row->stringify()."\n"; } @@ -147,12 +163,20 @@ # Private method that parses a column type specification sub _parseFormat { - my $format = shift; + my ($this, $format) = @_; my @cols; $format =~ s/^\s*\|//; $format =~ s/\|\s*$//; + $format =~ s/\$nop(\(\))?//gs; + $format =~ s/\$quot(\(\))?/\"/gs; + $format =~ s/\$percnt(\(\))?/\%/gs; + $format =~ s/\$dollar(\(\))?/\$/gs; + $format =~ s/<nop>//gos; + $format = TWiki::Func::expandCommonVariables( + $format, $this->{topic}, $this->{web}); + foreach my $column (split ( /\|/, $format )) { my ($type, $size, @values) = map { s/^\s*(.*?)\s*$/$1/; $_; } split(/,/, $column); Modified: twiki/branches/MAIN/twikiplugins/EditRowPlugin/lib/TWiki/Plugins/EditRowPlugin.pm =================================================================== --- twiki/branches/MAIN/twikiplugins/EditRowPlugin/lib/TWiki/Plugins/EditRowPlugin.pm 2007-03-15 01:05:28 UTC (rev 13143) +++ twiki/branches/MAIN/twikiplugins/EditRowPlugin/lib/TWiki/Plugins/EditRowPlugin.pm 2007-03-15 14:42:51 UTC (rev 13144) @@ -135,12 +135,13 @@ $active_table++; if ($active_table == $urps->{active_table}) { $line = $table->$action($urps); + } else { + $line = $table->stringify(); } $table->finish(); } $nlines .= "$line\n"; } - TWiki::Func::saveTopic($web, $topic, $meta, $nlines, { minor => 1 }); |