[LON-CAPA-cvs] cvs: loncom /xml londefdef.pm
foxr
lon-capa-cvs@mail.lon-capa.org
Tue, 20 Dec 2005 23:12:06 -0000
foxr Tue Dec 20 18:12:06 2005 EDT
Modified files:
/loncom/xml londefdef.pm
Log:
Bug 4494 - Implement colspan attribute of the <td> tag note this bug remains
open as rowspan needs implementation too.
Index: loncom/xml/londefdef.pm
diff -u loncom/xml/londefdef.pm:1.303 loncom/xml/londefdef.pm:1.304
--- loncom/xml/londefdef.pm:1.303 Mon Dec 19 18:27:33 2005
+++ loncom/xml/londefdef.pm Tue Dec 20 18:12:03 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Tags Default Definition Module
#
-# $Id: londefdef.pm,v 1.303 2005/12/19 23:27:33 foxr Exp $
+# $Id: londefdef.pm,v 1.304 2005/12/20 23:12:03 foxr Exp $
#
#
# Copyright Michigan State University Board of Trustees
@@ -2187,6 +2187,15 @@
#fill the table
for (my $in=0;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) {
for (my $jn=0;$jn<=$#fwidth;$jn++) {
+ #
+ # Do the appropriate magic if this has a colspan
+ #
+ my $colspan = $Apache::londefdef::table[-1]{'colspan'}[$in][$jn];
+ if ($colspan > 1) {
+ $output .= '\multicolumn{'.
+ $colspan
+ .'}{|l|}{';
+ }
if ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'c') {
# $output.='\vspace*{-6 mm}\begin{center}';
$output.='\begin{center}';
@@ -2200,6 +2209,12 @@
} elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') {
$output.='} ';
}
+ # Close off the colspan...
+ #
+ if ($colspan > 1) {
+ $output .= '}';
+ $jn += $colspan-1; # Adjust for number of rows really left.
+ }
if ($jn!=$#fwidth) {$output.=' '.$Apache::londefdef::table[-1]{'vinc'};}
}
$output.=' \\\\ '.$Apache::londefdef::table[-1]{'hinc'}.' ';
@@ -2346,16 +2361,13 @@
sub end_td_tex {
my ($parstack,$parser,$safeeval) = @_;
- my $current_row = $Apache::londefdef::table[-1]{'row_number'};
+ my $current_row = $Apache::londefdef::table[-1]{'row_number'};
+ my $current_column = $Apache::londefdef::table[-1]{'counter_columns'};
my $data = &Apache::lonxml::endredirection();
- # Get the column and row spans.
- # Colspan can be done via \multicolumn if I can figure out the data structs.
- # Rowspan, can be done using the multirow package which adds similar stuff to rowspanning.
- my $colspan = &Apache::lonxml::get_param('colspan', $parstack, $safeeval, undef, 0);
- my $rowspan = &Apache::lonxml::get_param('rowspan', $parstack, $safeeval, undef, 0);
+
my $TeXwidth=&Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval,undef,0);
if (defined $TeXwidth) {
push @ {$Apache::londefdef::table[-1]{'objectlen'}[$Apache::londefdef::table[-1]{'row_number'}] },'0';
@@ -2445,6 +2457,33 @@
}
# Should be be killing off the 'include' elements as they're used up?
push @ {$Apache::londefdef::table[-1]{'content'}[-1] },$data;
+ # Get the column and row spans.
+ # Colspan can be done via \multicolumn if I can figure out the data structs.
+ # Rowspan, can be done using the multirow package which adds similar stuff to rowspanning.
+
+ my $colspan = &Apache::lonxml::get_param('colspan', $parstack, $safeeval, undef, 0);
+ if (!$colspan) {
+ $colspan = 1;
+ }
+ my $rowspan = &Apache::lonxml::get_param('rowspan', $parstack, $safeeval, undef, 0);
+
+
+ # the colspan array will indicate how many columns will be spanned by this
+ # cell..this requires that counter_columns also be adjusted accordingly
+ # so that the next bunch of text goes in the right cell. Note that since
+ # counter_columns is incremented in the start_td_tex, we adjust by colspan-1.
+ #
+
+ $Apache::londefdef::table[-1]{'colspan'}[$current_row][$current_column] = $colspan;
+ $Apache::londefdef::table[-1]{'counter_columns'} += $colspan -1;
+
+ # Put empty text in spanned cols.
+
+ for (my $i = 0; $i < ($colspan -1); $i++) {
+ push @ {$Apache::londefdef::table[-1]{'content'}[-1] },'';
+ }
+
+
return '';
}