From: Kenneth L. <ke...@la...> - 2007-05-27 09:32:21
|
This very annoying bug is still open. This is blocking a lot of testing of edit table plugin which has gone though large changes. We need this fixed ASAP so the rest of us can work. Sven please. Kenneth Kenneth Lavrsen wrote: > This checkin has broken the EditTablePlugin when editing and you have a > headline. > > See Item4029 > > Kenneth > > de...@de... wrote: > >> Author: SvenDowideit >> Date: 2007-03-26 10:29:40 -0500 (Mon, 26 Mar 2007) >> New Revision: 13225 >> >> Added: >> twiki/branches/MAIN/test/unit/TableRenderingTests.pm >> Modified: >> twiki/branches/MAIN/lib/TWiki/Render.pm >> twiki/branches/MAIN/twikiplugins/TablePlugin/lib/TWiki/Plugins/TablePlugin/Core.pm >> Log: >> Item3741: add tfoot and thead to TablePlugin, and first row of core table renderer can go into a thead too >> >> Modified: twiki/branches/MAIN/lib/TWiki/Render.pm >> =================================================================== >> --- twiki/branches/MAIN/lib/TWiki/Render.pm 2007-03-26 14:09:39 UTC (rev 13224) >> +++ twiki/branches/MAIN/lib/TWiki/Render.pm 2007-03-26 15:29:40 UTC (rev 13225) >> @@ -294,6 +294,7 @@ >> $theRow =~ s/\s*$//; # remove trailing spaces >> $theRow =~ s/(\|\|+)/$TWiki::TranslationToken.length($1).'|'/ge; # calc COLSPAN >> my $cells = ''; >> + my $containsTableHeader; >> foreach( split( /\|/, $theRow ) ) { >> my @attr; >> >> @@ -317,11 +318,19 @@ >> if( /^\s*\*(.*)\*\s*$/ ) { >> push( @attr, bgcolor => '#99CCCC' ); >> $cells .= CGI::th( { @attr }, CGI::strong( " $1 " ))."\n"; >> + $containsTableHeader = 1; >> } else { >> $cells .= CGI::td( { @attr }, " $_ " )."\n"; >> } >> } >> - return $thePre.CGI::Tr( $cells ); >> + my $tableRow = CGI::Tr( $cells ); >> + unless ($insideTABLE) { #first row in table _is_ a header >> + if ($containsTableHeader) { >> + $tableRow = CGI::thead($tableRow); >> + } >> + } >> + >> + return $thePre.$tableRow; >> } >> >> sub _fixedFontText { >> >> Added: twiki/branches/MAIN/test/unit/TableRenderingTests.pm >> =================================================================== >> --- twiki/branches/MAIN/test/unit/TableRenderingTests.pm (rev 0) >> +++ twiki/branches/MAIN/test/unit/TableRenderingTests.pm 2007-03-26 15:29:40 UTC (rev 13225) >> @@ -0,0 +1,189 @@ >> +use strict; >> + >> +# tests for basic formatting >> + >> +package TableFormattingTests; >> + >> +use base qw( TWikiFnTestCase ); >> + >> +use TWiki; >> +use Error qw( :try ); >> + >> +sub new { >> + my $self = shift()->SUPER::new('TableFormatting', @_); >> + return $self; >> +} >> + >> +sub set_up { >> + my $this = shift; >> + >> + $this->SUPER::set_up(); >> +# $this->{sup} = $this->{twiki}->getScriptUrl(0, 'view'); >> + $TWiki::cfg{AntiSpam}{RobotsAreWelcome} = 1; >> + $TWiki::cfg{AntiSpam}{EmailPadding} = 'STUFFED'; >> + $TWiki::cfg{AllowInlineScript} = 1; >> +} >> + >> +# This formats the text up to immediately before <nop>s are removed, so we >> +# can see the nops. >> +sub do_test { >> + my ($this, $expected, $actual) = @_; >> + my $session = $this->{twiki}; >> + my $webName = $this->{test_web}; >> + my $topicName = $this->{test_topic}; >> + >> + $actual = $session->handleCommonTags( $actual, $webName, $topicName ); >> + $actual = $session->{renderer}->getRenderedVersion( $actual, $webName, $topicName ); >> + >> + $this->assert_html_equals($expected, $actual); >> +} >> + >> +sub test_simpleTableusingTablePlugin { >> + my $this = shift; >> + my $expected = <<EXPECTED; >> +<nop> >> +<nop> >> +<nop> >> +<table style="border-width:1px;" cellspacing="0" cellpadding="0" class="twikiTable" border="1"> >> + <tr class="twikiTableEven"> >> + <td bgcolor="#ffffff" valign="top" style="vertical-align:top;" class="twikiFirstCol"> a </td><td bgcolor="#ffffff" valign="top" style="vertical-align:top;"> b </td> >> + </tr> >> + <tr class="twikiTableOdd"> >> + <td bgcolor="#edf4f9" valign="top" style="vertical-align:top;" class="twikiFirstCol"> 2 </td><td bgcolor="#edf4f9" valign="top" style="vertical-align:top;"> 3 </td> >> + </tr> >> + <tr class="twikiTableEven"> >> + <td bgcolor="#ffffff" valign="top" style="vertical-align:top;" class="twikiFirstCol twikiLast"> ok </td><td bgcolor="#ffffff" valign="top" style="vertical-align:top;" class="twikiLast"> bad </td> >> + </tr> >> +</table> >> +EXPECTED >> + my $actual = <<ACTUAL; >> +| a | b | >> +| 2 | 3 | >> +| ok | bad | >> +ACTUAL >> + $this->do_test($expected, $actual); >> +} >> + >> + >> +sub test_simpleTheadTableusingTablePlugin { >> + my $this = shift; >> + my $expected = <<EXPECTED; >> +<nop> >> +<nop> >> +<nop> >> +<table style="border-width:1px;" cellspacing="0" cellpadding="0" class="twikiTable" border="1"> >> + <thead> >> + <tr class="twikiTableEven"> >> + <th bgcolor="#6b7f93" valign="top" style="vertical-align:top;" class="twikiFirstCol" maxcols="0"> <a rel="nofollow" href="http://localhost/TemporaryTableFormattingTestWebTableFormatting/TestTopicTableFormatting?sortcol=0;table=1;up=0#sorted_table" style="color:#ffffff" title="Sort by this column">a</a> </th><th bgcolor="#6b7f93" valign="top" style="vertical-align:top;" maxcols="0"> <a rel="nofollow" href="http://localhost/TemporaryTableFormattingTestWebTableFormatting/TestTopicTableFormatting?sortcol=1;table=1;up=0#sorted_table" style="color:#ffffff" title="Sort by this column">b</a> </th> >> + </tr> >> + </thead> >> + <tr class="twikiTableOdd"> >> + <td bgcolor="#ffffff" valign="top" style="vertical-align:top;" class="twikiFirstCol"> 2 </td><td bgcolor="#ffffff" valign="top" style="vertical-align:top;"> 3 </td> >> + </tr> >> + <tr class="twikiTableEven"> >> + <td bgcolor="#edf4f9" valign="top" style="vertical-align:top;" class="twikiFirstCol twikiLast"> ok </td><td bgcolor="#edf4f9" valign="top" style="vertical-align:top;" class="twikiLast"> bad </td> >> + </tr> >> +</table> >> +EXPECTED >> + my $actual = <<ACTUAL; >> +| *a* | *b* | >> +| 2 | 3 | >> +| ok | bad | >> +ACTUAL >> + $this->do_test($expected, $actual); >> +} >> + >> +sub test_simpleTfootTableusingTablePlugin { >> + my $this = shift; >> + my $expected = <<EXPECTED; >> +<nop> >> +<nop> >> +<nop> >> +<nop> >> +<table style="border-width:1px;" cellspacing="0" cellpadding="0" class="twikiTable" border="1"> >> + <tr class="twikiTableEven"> >> + <td bgcolor="#ffffff" valign="top" style="vertical-align:top;" class="twikiFirstCol"> a </td><td bgcolor="#ffffff" valign="top" style="vertical-align:top;"> b </td> >> + </tr> >> + <tr class="twikiTableOdd"> >> + <td bgcolor="#edf4f9" valign="top" style="vertical-align:top;" class="twikiFirstCol"> 2 </td><td bgcolor="#edf4f9" valign="top" style="vertical-align:top;"> 3 </td> >> + </tr> >> + <tfoot> >> + <tr class="twikiTableEven"> >> + <th bgcolor="#6b7f93" valign="top" style="vertical-align:top;" class="twikiFirstCol twikiLast" maxcols="0"> <span style="color:#ffffff"> <strong> ok </strong> </span> </th><th bgcolor="#6b7f93" valign="top" style="vertical-align:top;" class="twikiLast" maxcols="0"> <span style="color:#ffffff"> <strong> bad </strong> </span> </th> >> + </tr> >> + </tfoot> >> +</table> >> +EXPECTED >> + my $actual = <<ACTUAL; >> +%TABLE{headerrows="0" footerrows="1"}% >> +| a | b | >> +| 2 | 3 | >> +| *ok* | *bad* | >> +ACTUAL >> + $this->do_test($expected, $actual); >> +} >> + >> +sub test_doubleTheadTableusingTablePlugin { >> + my $this = shift; >> + my $expected = <<EXPECTED; >> +<nop> >> +<nop> >> +<nop> >> +<nop> >> +<table style="border-width:1px;" cellspacing="0" cellpadding="0" class="twikiTable" border="1"><thead><tr class="twikiTableEven"><th bgcolor="#6b7f93" valign="top" style="vertical-align:top;" class="twikiFirstCol" maxcols="0"> <a rel="nofollow" href="http://localhost/TemporaryTableFormattingTestWebTableFormatting/TestTopicTableFormatting?sortcol=0;table=1;up=0#sorted_table" style="color:#ffffff" title="Sort by this column">a</a> </th><th bgcolor="#6b7f93" valign="top" style="vertical-align:top;" maxcols="0"> <a rel="nofollow" href="http://localhost/TemporaryTableFormattingTestWebTableFormatting/TestTopicTableFormatting?sortcol=1;table=1;up=0#sorted_table" style="color:#ffffff" title="Sort by this column">b</a> </th></tr></thead> >> +<thead><tr class="twikiTableOdd"><th bgcolor="#6b7f93" valign="top" style="vertical-align:top;" class="twikiFirstCol" maxcols="0"> <span style="color:#ffffff"> <strong> c </strong> </span> </th><th bgcolor="#6b7f93" valign="top" style="vertical-align:top;" maxcols="0"> <span style="color:#ffffff"> <strong> c </strong> </span> </th></tr></thead> >> +<tr class="twikiTableEven"><td bgcolor="#ffffff" valign="top" style="vertical-align:top;" class="twikiFirstCol"> 2 </td><td bgcolor="#ffffff" valign="top" style="vertical-align:top;"> 3 </td></tr> >> +<tr class="twikiTableOdd"><td bgcolor="#edf4f9" valign="top" style="vertical-align:top;" class="twikiFirstCol twikiLast"> ok </td><td bgcolor="#edf4f9" valign="top" style="vertical-align:top;" class="twikiLast"> bad </td></tr> >> +</table> >> +EXPECTED >> + my $actual = <<ACTUAL; >> +| *a* | *b* | >> +| *c* | *c* | >> +| 2 | 3 | >> +| ok | bad | >> +ACTUAL >> + $this->do_test($expected, $actual); >> +} >> + >> +sub test_doubleTheadandTfootTableusingTablePlugin { >> + my $this = shift; >> + my $expected = <<EXPECTED; >> +<nop> >> +<nop> >> +<nop> >> +<nop> >> +<nop> >> +<table style="border-width:1px;" cellspacing="0" cellpadding="0" class="twikiTable" border="1"> >> + <thead> >> + <tr class="twikiTableEven"> >> + <th bgcolor="#6b7f93" valign="top" style="vertical-align:top;" class="twikiFirstCol" maxcols="0"> <span style="color:#ffffff"> <strong> a </strong> </span> </th><th bgcolor="#6b7f93" valign="top" style="vertical-align:top;" maxcols="0"> <span style="color:#ffffff"> <strong> b </strong> </span> </th> >> + </tr> >> + </thead> >> + <thead> >> + <tr class="twikiTableOdd"> >> + <th bgcolor="#6b7f93" valign="top" style="vertical-align:top;" class="twikiFirstCol" maxcols="0"> <a rel="nofollow" href="http://localhost/TemporaryTableFormattingTestWebTableFormatting/TestTopicTableFormatting?sortcol=0;table=1;up=0#sorted_table" style="color:#ffffff" title="Sort by this column">c</a> </th><th bgcolor="#6b7f93" valign="top" style="vertical-align:top;" maxcols="0"> <a rel="nofollow" href="http://localhost/TemporaryTableFormattingTestWebTableFormatting/TestTopicTableFormatting?sortcol=1;table=1;up=0#sorted_table" style="color:#ffffff" title="Sort by this column">c</a> </th> >> + </tr> >> + </thead> >> + <tr class="twikiTableEven"> >> + <td bgcolor="#ffffff" valign="top" style="vertical-align:top;" class="twikiFirstCol"> 2 </td><td bgcolor="#ffffff" valign="top" style="vertical-align:top;"> 3 </td> >> + </tr> >> + <tfoot> >> + <tr class="twikiTableOdd"> >> + <th bgcolor="#6b7f93" valign="top" style="vertical-align:top;" class="twikiFirstCol twikiLast" maxcols="0"> <span style="color:#ffffff"> <strong> ok </strong> </span> </th><th bgcolor="#6b7f93" valign="top" style="vertical-align:top;" class="twikiLast" maxcols="0"> <span style="color:#ffffff"> <strong> bad </strong> </span> </th> >> + </tr> >> + </tfoot> >> +</table> >> +EXPECTED >> + my $actual = <<ACTUAL; >> +%TABLE{headerrows="2" footerrows="1"}% >> +| *a* | *b* | >> +| *c* | *c* | >> +| 2 | 3 | >> +| *ok* | *bad* | >> +ACTUAL >> + $this->do_test($expected, $actual); >> +} >> + >> + >> + >> +1; >> >> >> Property changes on: twiki/branches/MAIN/test/unit/TableRenderingTests.pm >> ___________________________________________________________________ >> Name: svn:executable >> + * >> >> Modified: twiki/branches/MAIN/twikiplugins/TablePlugin/lib/TWiki/Plugins/TablePlugin/Core.pm >> =================================================================== >> --- twiki/branches/MAIN/twikiplugins/TablePlugin/lib/TWiki/Plugins/TablePlugin/Core.pm 2007-03-26 14:09:39 UTC (rev 13224) >> +++ twiki/branches/MAIN/twikiplugins/TablePlugin/lib/TWiki/Plugins/TablePlugin/Core.pm 2007-03-26 15:29:40 UTC (rev 13225) >> @@ -880,15 +880,21 @@ >> use strict 'refs'; >> } # foreach my $fcell ( @$row ) >> >> - $text .= $currTablePre >> - . CGI::Tr( >> + >> + my $rowHTML =CGI::Tr( >> { class => ( $rowCount % 2 ) ? 'twikiTableOdd' : 'twikiTableEven' }, >> - $rowtext >> - ) . "\n"; >> - $rowCount++; >> - $isHeaderRow = 1 if ( $headerCellCount == $colCount ); >> - if ($isHeaderRow) { >> + $rowtext ) ; >> >> + $isHeaderRow = ( $headerCellCount == $colCount ); >> + my $isFooterRow = (($numberOfRows - $rowCount) <= $footerRows); >> + >> + if ($isFooterRow) { >> + #this makes one tfoot element per header row due to the line by line nature of this parser - which might be a good thing.. >> + $rowHTML = CGI::tfoot($rowHTML); >> + } elsif ($isHeaderRow) { >> + #this makes one thead element per header row due to the line by line nature of this parser - which might be a good thing.. >> + $rowHTML = CGI::thead($rowHTML); >> + >> # reset data color count to start with first color after >> # each table heading >> $dataColorCount = 0; >> @@ -896,6 +902,8 @@ >> else { >> $dataColorCount++; >> } >> + $text .= $currTablePre . $rowHTML . "\n"; >> + $rowCount++; >> } # foreach my $row ( @curTable ) >> >> $text .= $currTablePre . CGI::end_table() . "\n"; >> >> >> ------------------------------------------------------------------------- >> Take Surveys. Earn Cash. Influence the Future of IT >> Join SourceForge.net's Techsay panel and you'll get the chance to share your >> opinions on IT & business topics through brief surveys-and earn cash >> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >> _______________________________________________ >> TWiki-Dev mailing list >> TWi...@li... >> https://lists.sourceforge.net/lists/listinfo/twiki-dev >> >> >> >> > > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > TWiki-Dev mailing list > TWi...@li... > https://lists.sourceforge.net/lists/listinfo/twiki-dev > > > |