Diff for /loncom/xml/londefdef.pm between versions 1.294 and 1.300

version 1.294, 2005/11/27 23:54:00 version 1.300, 2005/12/05 23:22:49
Line 48  use Apache::lonmenu(); Line 48  use Apache::lonmenu();
 use Apache::lonmeta();  use Apache::lonmeta();
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use File::Basename;  use File::Basename;
 use Data::Dumper;  #use Data::Dumper;
   
 BEGIN {  BEGIN {
   
Line 61  BEGIN { Line 61  BEGIN {
 #   Need this 'cause evidently when given an array, Data::Dumper only seems  #   Need this 'cause evidently when given an array, Data::Dumper only seems
 #   to dump element 0.  #   to dump element 0.
 #  #
 sub debug_dump_table {  #sub debug_dump_table {
     my $lastrow = $#Apache::londefdef::table;  #    my $lastrow = $#Apache::londefdef::table;
     &Apache::lonnet::logthis("Dumping table:  Last row index: $lastrow");  #    &Apache::lonnet::logthis("Dumping table:  Last row index: $lastrow");
     my $row;  #    my $row;
     for ($row =0; $row <= $lastrow; $row++ ) {  #    for ($row =0; $row <= $lastrow; $row++ ) {
  my $text = Dumper($Apache::londefdef::table[$row]);  # my $text = Dumper($Apache::londefdef::table[$row]);
  &Apache::lonnet::logthis("table [ $row ]".$text);  # &Apache::lonnet::logthis("table [ $row ]".$text);
   #
     }  #    }
 }  #}
   
 sub initialize_londefdef {  sub initialize_londefdef {
     $Apache::londefdef::TD_redirection=0;      $Apache::londefdef::TD_redirection=0;
Line 145  sub end_m { Line 145  sub end_m {
 }  }
   
 sub start_tthoption {  sub start_tthoption {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style) = @_;
     my $result;      my $result;
     if ($target eq 'web') {      if ($target eq 'web') {
  my $inside = &Apache::lonxml::get_all_text("/tthoption",$parser);   my $inside = &Apache::lonxml::get_all_text("/tthoption",$parser,
      $style);
  $inside=~s/^\s*//;   $inside=~s/^\s*//;
  if ($env{'browser.mathml'}) {   if ($env{'browser.mathml'}) {
     &tth::ttmoptions($inside);      &tth::ttmoptions($inside);
Line 385  sub end_title { Line 386  sub end_title {
   
 #-- <meta> tag (end tag forbidden)  #-- <meta> tag (end tag forbidden)
 sub start_meta {  sub start_meta {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style) = @_;
     my $currentstring = '';      my $currentstring = '';
     if ($target eq 'web') {      if ($target eq 'web') {
  my $args='';   my $args='';
  if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; }   if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; }
  if ($args eq '') {   if ($args eq '') {
     &Apache::lonxml::get_all_text("/meta",$parser);      &Apache::lonxml::get_all_text("/meta",$parser,$style);
  } else {   } else {
     $currentstring = $token->[4];      $currentstring = $token->[4];
  }   }
Line 454  sub end_meta { Line 455  sub end_meta {
   
 # accessrule  # accessrule
 sub start_accessrule {  sub start_accessrule {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style) = @_;
     my $currentstring = '';      my $currentstring = '';
     my $eff=&Apache::lonxml::get_param      my $eff=&Apache::lonxml::get_param
  ('effect',$parstack,$safeeval,undef,1);   ('effect',$parstack,$safeeval,undef,1);
Line 473  sub start_accessrule { Line 474  sub start_accessrule {
  my $args='';   my $args='';
  if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; }   if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; }
  if ($args eq '') {   if ($args eq '') {
     &Apache::lonxml::get_all_text("/accessrule",$parser);      &Apache::lonxml::get_all_text("/accessrule",$parser,$style);
  } else {   } else {
     $currentstring = $token->[4];      $currentstring = $token->[4];
  }   }
Line 1987  sub start_table { Line 1988  sub start_table {
         $Apache::londefdef::table[-1]{'content'}=[];          $Apache::londefdef::table[-1]{'content'}=[];
         $Apache::londefdef::table[-1]{'align'}=[];          $Apache::londefdef::table[-1]{'align'}=[];
         $currentstring.='\keephidden{NEW TABLE ENTRY}';          $currentstring.='\keephidden{NEW TABLE ENTRY}';
  &Apache::lonnet::logthis("------ start-table------");  
  &debug_dump_table;  
  &Apache::lonnet::logthis("-------start-table------");  
   
     }      }
     return $currentstring;      return $currentstring;
Line 2005  sub end_table { Line 2004  sub end_table {
  my $output = '';   my $output = '';
  my $WARNING='';   my $WARNING='';
         #width of columns from TeXwidth attributes          #width of columns from TeXwidth attributes
  &Apache::lonnet::logthis("----------------end_table-----------------");  
  &debug_dump_table;  
   
  for (my $in=0;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) {   for (my $in=0;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) {
     for (my $jn=0;$jn<=$Apache::londefdef::table[-1]{'counter_columns'};$jn++) {      for (my $jn=0;$jn<=$Apache::londefdef::table[-1]{'counter_columns'};$jn++) {
Line 2213  sub end_table { Line 2210  sub end_table {
  $Apache::londefdef::table[-1]{'output'} .= $header_of_table.$Apache::londefdef::table[-1]{'hinc'}.$output.'\end{tabular}\strut'.'\\\\'."\n".'\strut ';   $Apache::londefdef::table[-1]{'output'} .= $header_of_table.$Apache::londefdef::table[-1]{'hinc'}.$output.'\end{tabular}\strut'.'\\\\'."\n".'\strut ';
  if ($#Apache::londefdef::table > 0) {       if ($#Apache::londefdef::table > 0) {    
     my $inmemory = $Apache::londefdef::table[-1]{'output'};      my $inmemory = $Apache::londefdef::table[-1]{'output'};
     &Apache::lonnet::logthis("--- popping nested table --");  
     # Figure out max/and min width  by summing us and then      # Figure out max/and min width  by summing us and then
     # apply that to the current column of the table we nest in      # apply that to the current column of the table we nest in
     # if it's larger than the current width or the current width      # if it's larger than the current width or the current width
Line 2222  sub end_table { Line 2218  sub end_table {
     my $min_nested_width = 0;      my $min_nested_width = 0;
     my $max_nested_width = 0;      my $max_nested_width = 0;
     for (my $col = 0; $col <= $Apache::londefdef::table[-1]{'counter_columns'}; $col++) {      for (my $col = 0; $col <= $Apache::londefdef::table[-1]{'counter_columns'}; $col++) {
   
  $min_nested_width +=  $min_len[$col];   $min_nested_width +=  $min_len[$col];
  $max_nested_width +=  $max_len[$col];   $max_nested_width +=  $max_len[$col];
   
     }      }
     # Fudge in an extra 5 mm for borders etc:      # Fudge in an extra 5 mm for borders etc:
           
     $min_nested_width += 5;      $min_nested_width += 5;
     $max_nested_width += 5;      $max_nested_width += 5;
   
     &Apache::lonnet::logthis("Nested min: $min_nested_width");  
     &Apache::lonnet::logthis("Nested max: $max_nested_width");  
     my $outer_column = $Apache::londefdef::table[-2]{'counter_columns'};      my $outer_column = $Apache::londefdef::table[-2]{'counter_columns'};
     my $outer_row    = $Apache::londefdef::table[-2]{'row_number'};      my $outer_row    = $Apache::londefdef::table[-2]{'row_number'};
     &Apache::lonnet::logthis("Outer row/column: $outer_row : $outer_column");  
     if ($min_nested_width > $Apache::londefdef::table[-2]{'minlen'}[$outer_row][$outer_column]) {      if ($min_nested_width > $Apache::londefdef::table[-2]{'minlen'}[$outer_row][$outer_column]) {
  $Apache::londefdef::table[-2]{'minlen'}[$outer_row][$outer_column] = $min_nested_width;   $Apache::londefdef::table[-2]{'minlen'}[$outer_row][$outer_column] = $min_nested_width;
     }      }
Line 2250  sub end_table { Line 2243  sub end_table {
     pop @Apache::londefdef::table;      pop @Apache::londefdef::table;
     undef @Apache::londefdef::table;      undef @Apache::londefdef::table;
  }   }
  &debug_dump_table;  
  &Apache::lonnet::logthis("---------end table------");  
   
     }      }
     return $currentstring;      return $currentstring;
 }  }
Line 2264  sub start_tr { Line 2254  sub start_tr {
     if ($target eq 'web') {      if ($target eq 'web') {
  $currentstring = $token->[4];        $currentstring = $token->[4];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  &Apache::lonnet::logthis("--------------start-tr----------");  
  $Apache::londefdef::table[-1]{'row_number'}++;   $Apache::londefdef::table[-1]{'row_number'}++;
  my $alignchar=&Apache::lonxml::get_param('align',$parstack,$safeeval,undef,1);   my $alignchar=&Apache::lonxml::get_param('align',$parstack,$safeeval,undef,1);
  if ($alignchar ne '') {   if ($alignchar ne '') {
Line 2273  sub start_tr { Line 2262  sub start_tr {
     push @ {$Apache::londefdef::table[-1]{'rows'} }, 'l';      push @ {$Apache::londefdef::table[-1]{'rows'} }, 'l';
  }   }
  push ( @{ $Apache::londefdef::table[-1]{'rowdata'} }, $Apache::londefdef::table[-1]{'hinc'});   push ( @{ $Apache::londefdef::table[-1]{'rowdata'} }, $Apache::londefdef::table[-1]{'hinc'});
    #
    #  Need to save the number of table columns to preserve the max # columns.
    #
    $Apache::londefdef::table[-1]{'prior_columns'}   = $Apache::londefdef::table[-1]{'counter_columns'};
  $Apache::londefdef::table[-1]{'counter_columns'} = -1;   $Apache::londefdef::table[-1]{'counter_columns'} = -1;
  push @ {$Apache::londefdef::table[-1]{'TeXlen'}}, [];   push @ {$Apache::londefdef::table[-1]{'TeXlen'}}, [];
  push @ {$Apache::londefdef::table[-1]{'objectlen'}}, [];   push @ {$Apache::londefdef::table[-1]{'objectlen'}}, [];
  push @ {$Apache::londefdef::table[-1]{'minlen'}}, [];   push @ {$Apache::londefdef::table[-1]{'minlen'}}, [];
  push @ {$Apache::londefdef::table[-1]{'maxlen'}}, [];   push @ {$Apache::londefdef::table[-1]{'maxlen'}}, [];
  push @ {$Apache::londefdef::table[-1]{'content'}}, [];   push @ {$Apache::londefdef::table[-1]{'content'}}, [];
  &debug_dump_table;  
  &Apache::lonnet::logthis("------------start-tr-----------");  
     }       } 
     return $currentstring;      return $currentstring;
 }  }
Line 2291  sub end_tr { Line 2282  sub end_tr {
     if ($target eq 'web') {      if ($target eq 'web') {
  $currentstring .= $token->[2];        $currentstring .= $token->[2];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  &Apache::lonnet::logthis("-------end-tr-----");  
  if ($Apache::londefdef::TD_redirection) {   if ($Apache::londefdef::TD_redirection) {
     &end_td_tex($parstack,$parser,$safeeval);          &end_td_tex($parstack,$parser,$safeeval);    
  }   }
  &debug_dump_table;   # Counter columns must be the maximum number of columns seen
  &Apache::lonnet::logthis("------end-tr------");   # in the table so far so:
    if ($Apache::londefdef::table[-1]{'prior_columns'} > $Apache::londefdef::table[-1]{'counter_columns'}) {
       $Apache::londefdef::table[-1]{'counter_columns'} = $Apache::londefdef::table[-1]{'prior_columns'};
    }
   
   
   
     }      }
     return $currentstring;      return $currentstring;
Line 2309  sub start_td { Line 2304  sub start_td {
     if ($target eq 'web') {      if ($target eq 'web') {
  $currentstring = $token->[4];        $currentstring = $token->[4];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  &Apache::lonnet::logthis("------start-td----");  
  $Apache::londefdef::TD_redirection = 1;   $Apache::londefdef::TD_redirection = 1;
  &tag_check('tr','td',$tagstack,$parstack,$parser,$safeeval);   &tag_check('tr','td',$tagstack,$parstack,$parser,$safeeval);
  &debug_dump_table;  
  &Apache::lonnet::logthis("-----start-td-----");  
     }       } 
     return $currentstring;      return $currentstring;
 }     }   
Line 2433  sub end_td_tex { Line 2425  sub end_td_tex {
     push @ {$Apache::londefdef::table[-1]{'minlen'}[$Apache::londefdef::table[-1]{'row_number'}] },$min_length;      push @ {$Apache::londefdef::table[-1]{'minlen'}[$Apache::londefdef::table[-1]{'row_number'}] },$min_length;
  }           }        
     }      }
  for (my $in=0; $in<=$#{$Apache::londefdef::table[-1]{'include'}};$in++) {            for (my $in=0; $in<=$#{$Apache::londefdef::table[-1]{'include'}};$in++) {    
     $data=~s/\\keephidden\{NEW TABLE ENTRY\}/$Apache::londefdef::table[-1]{'include'}[$in] \&/;      my $nested = $Apache::londefdef::table[-1]{'include'}[$in];
       $nested =~ s/\\end\{tabular\}\\strut\\\\/\\end\{tabular\}/;
      # $data=~s/\\keephidden\{NEW TABLE ENTRY\}/$Apache::londefdef::table[-1]{'include'}[$in]/;
       $data =~ s/\\keephidden\{NEW TABLE ENTRY\}/$nested/;
  }   }
     push @ {$Apache::londefdef::table[-1]{'content'}[-1] },$data;      push @ {$Apache::londefdef::table[-1]{'content'}[-1] },$data;
     return'';      return'';
Line 2446  sub end_td { Line 2441  sub end_td {
     if ($target eq 'web') {      if ($target eq 'web') {
  $currentstring = $token->[2];        $currentstring = $token->[2];     
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  &Apache::lonnet::logthis("--------end_td-----");  
         $Apache::londefdef::TD_redirection =0;          $Apache::londefdef::TD_redirection =0;
  &end_td_tex($parstack,$parser,$safeeval);   &end_td_tex($parstack,$parser,$safeeval);
  &debug_dump_table;  
  &Apache::lonnet::logthis("--------end-td----");  
     }      }
     return $currentstring;      return $currentstring;
 }  }
Line 2596  sub end_th { Line 2588  sub end_th {
 #         (Note there seems to also be support for this as a % of page size)  #         (Note there seems to also be support for this as a % of page size)
 #        #      
 sub start_img {  sub start_img {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style) = @_;
     my $src = &Apache::lonxml::get_param('src',$parstack,$safeeval,      my $src = &Apache::lonxml::get_param('src',$parstack,$safeeval,
  undef,1);   undef,1);
     if (not $src and ($target eq 'web' or $target eq 'tex')) {       if (not $src and ($target eq 'web' or $target eq 'tex')) { 
  my $inside = &Apache::lonxml::get_all_text("/img",$parser);   my $inside = &Apache::lonxml::get_all_text("/img",$parser,$style);
  return '';   return '';
     }      }
     &Apache::lonxml::extlink($src);      &Apache::lonxml::extlink($src);

Removed from v.1.294  
changed lines
  Added in v.1.300


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>