Diff for /loncom/xml/londefdef.pm between versions 1.410 and 1.424

version 1.410, 2009/06/02 13:10:29 version 1.424, 2010/10/19 19:33:21
Line 43  use Apache::lonnet; Line 43  use Apache::lonnet;
 use strict;  use strict;
 use Apache::lonxml;  use Apache::lonxml;
 use Apache::lontable;  use Apache::lontable;
 use Apache::File();  
 use Image::Magick;  use Image::Magick;
 use Apache::lonmenu();  use Apache::lonmenu();
 use Apache::lonmeta();  use Apache::lonmeta();
Line 549  sub start_body { Line 548  sub start_body {
             'text'  => 'HTML Editor',              'text'  => 'HTML Editor',
             'href'  => '',              'href'  => '',
         });          });
           # breadcrumbs (and tools) will be created 
           # in start_page->bodytag->innerregister
     } else {      } else {
         # FIXME Where are we?          # FIXME Where are we?
     }      }
Line 561  sub start_body { Line 562  sub start_body {
 #    'no_title'       => 1,  #    'no_title'       => 1,
     'force_register' => 1});      'force_register' => 1});
   
     $currentstring .= &Apache::lonhtmlcommon::breadcrumbs();  
   
         my $header = '';          my $header = '';
           if ($env{'request.state'} ne 'published' &&
               $env{'request.state'} ne 'construct') {
               $header=&Apache::lonmenu::constspaceform();
           }
         if ($env{'request.state'} ne 'published') {          if ($env{'request.state'} ne 'published') {
             $header=&Apache::lonmenu::constspaceform()              $header.=&Apache::londefdef::edit_controls();
                    .&Apache::londefdef::edit_controls();  
         }          }
         if ($env{'request.state'} eq 'construct') {          if ($env{'request.state'} eq 'construct') {
             $currentstring.=&Apache::loncommon::head_subbox(              $currentstring.=&Apache::loncommon::head_subbox(
                                 &Apache::loncommon::CSTR_pageheader()                                  &Apache::loncommon::CSTR_pageheader()
                                .$header);                                 .$header);
           } elsif ($env{'request.state'} eq 'edit') {
               $currentstring.=&Apache::loncommon::head_subbox($header);
         }          }
         $currentstring.=&Apache::lonxml::message_location();          $currentstring.=&Apache::lonxml::message_location();
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
Line 594  sub edit_controls { Line 598  sub edit_controls {
 </div>';  </div>';
     }      }
     $result .= '      $result .= '
 <div><input type="submit" name="editmode" accesskey="e" value="'.&mt('Edit').'" /></div>  <div><input type="submit" name="editmode" accesskey="e" value="'.&mt('Edit').'" />';
       if (($env{'request.course.id'}) && ($env{'form.forceedit'})) {
           $result .= ('&nbsp;' x 3).'<input type="button" value="'.&mt('Course View').'" onclick="javascript:location.href=currentURL" />';
       }
       $result .= '</div>
 </div>  </div>
 </form>  </form>
 ';  ';
Line 2039  sub start_table { Line 2047  sub start_table {
  my $width  = &Apache::lonxml::get_param('TeXwidth', $parstack, $safeeval, undef, 0);   my $width  = &Apache::lonxml::get_param('TeXwidth', $parstack, $safeeval, undef, 0);
  my $theme  = &Apache::lonxml::get_param('TeXtheme', $parstack, $safeeval, undef, 0);   my $theme  = &Apache::lonxml::get_param('TeXtheme', $parstack, $safeeval, undef, 0);
  my $align  = &Apache::lonxml::get_param('align', $parstack, $safeeval, undef, 0);   my $align  = &Apache::lonxml::get_param('align', $parstack, $safeeval, undef, 0);
    my $cell_border = &Apache::lonxml::get_param('rules', $parstack, $safeeval, undef, 0);
   
  # The only thing that needs any figuring out is the width.. and then only if it is   # The only thing that needs any figuring out is the width.. and then only if it is
  # a percent. If not it's assumed to be some valid TeX measurement unit e.g. 3.0cm   # a percent. If not it's assumed to be some valid TeX measurement unit e.g. 3.0cm
  #   #
   
  my $table = new Apache::lontable();   my $table = new Apache::lontable();
  if ($border ne '') {   if ((defined $border) && ($border > 0)) {
    #    &Apache::lonnet::logthis("Turning on table borders: $border");
     $table->table_border(1);      $table->table_border(1);
       if ($cell_border ne 'none') {
    $table->cell_border(1); # html specs that border turns on both...unless rules='none'.
       }
    }
    # Only all or nothing for cell borders for now:
   
    if ((defined $cell_border) && ($cell_border ne 'none')) {
    #    &Apache::lonnet::logthis("Turning on cell borders: $cell_border");
     $table->cell_border(1);      $table->cell_border(1);
  }   }
  if ($theme ne '') {   if (defined $theme) {
     $table->theme($theme);      $table->theme($theme);
  }   }
  if ($align ne '') {   if (defined $align) {
     $table->alignment($align);      $table->alignment($align);
  }   }
   
  # Missing width is most of page width   # Missing width is most of page width
   
  if ($width eq "") {   if (!(defined $width)) {
     $width = '70%';      $width = '70%';
  }   }
   
  # If a percentage, need to calculate what this means in terms of   # If a percentage, need to calculate what this means in terms of
  # page width:   # page width:
   
Line 2174  sub end_table { Line 2192  sub end_table {
   
  my $table = pop(@Apache::londefdef::table);   my $table = pop(@Apache::londefdef::table);
  my $t     = $table->generate();   my $t     = $table->generate();
    # &Apache::lonnet::logthis("Generating string");
  $currentstring = $t->generate_string();   $currentstring = $t->generate_string();
    # &Apache::lonnet::logthis("Generated: $currentstring");
  &enable_para();   &enable_para();
  #--------------------------------------------------------------   #--------------------------------------------------------------
  #  Old table code:   #  Old table code:
Line 3150  sub start_img { Line 3170  sub start_img {
    # Render unto browsers that which are the browser's...     # Render unto browsers that which are the browser's...
   
     if ($target eq 'web' || $target eq 'webgrade') {      if ($target eq 'web' || $target eq 'webgrade') {
  if ($env{'browser.imagesuppress'} ne 'on') {          my $enc = ('yes' eq 
     my $enc = ('yes' eq                      lc(&Apache::lonxml::get_param('encrypturl',$parstack,
        lc(&Apache::lonxml::get_param('encrypturl',$parstack,                        $safeeval)));
      $safeeval)));          $currentstring.=&Apache::lonenc::encrypt_ref($token,{'src'=>$src},
     $currentstring.=&Apache::lonenc::encrypt_ref($token,{'src'=>$src},                           $enc);
  $enc);  
  } else {  
     my $alttag = &Apache::lonxml::get_param('alt',$parstack,$safeeval,  
     undef,1);  
     if (!$alttag) {  
  $alttag = &Apache::lonmeta::alttag($Apache::lonxml::pwd[-1],  
    $src);  
     }  
     $currentstring.='[IMAGE: '.$alttag.']';  
  }  
   
  # and render unto TeX that which is LaTeX  
   
       # and render unto TeX that which is LaTeX
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  #   #
  #  The alignment will require some superstructure to be put around   #  The alignment will require some superstructure to be put around
Line 3266  sub start_img { Line 3275  sub start_img {
    ['','bottom','middle','top','left','right'],$token,5);     ['','bottom','middle','top','left','right'],$token,5);
  $currentstring .=&Apache::edit::select_arg('TeXwrap:', 'TeXwrap',   $currentstring .=&Apache::edit::select_arg('TeXwrap:', 'TeXwrap',
    ['', 'none','parbox', 'parpic', 'wrapfigure'], $token, 2);     ['', 'none','parbox', 'parpic', 'wrapfigure'], $token, 2);
           my $alt=    &Apache::lonxml::get_param('alt',$parstack,$safeeval);
           my $enc=    &Apache::lonxml::get_param('encrypturl',$parstack,$safeeval);
    
  $currentstring .=&Apache::edit::select_arg('Encrypt URL:','encrypturl',   $currentstring .=&Apache::edit::select_arg('Encrypt URL:','encrypturl',
    ['no','yes'], $token, 2);     ['no','yes'], $token, 2);
           if (($alt=~/\S/) && (lc($enc) eq 'yes')) {
              $currentstring.='<br /><span class="LC_warning">'.&mt('Warning: the description "[_1]" will be available, even for encrypted URL',$alt).'</span><br />';
           }
  $currentstring .=&Apache::edit::end_row().&Apache::edit::start_spanning_row();   $currentstring .=&Apache::edit::end_row().&Apache::edit::start_spanning_row();
  my $src=    &Apache::lonxml::get_param('src',$parstack,$safeeval);   my $src=    &Apache::lonxml::get_param('src',$parstack,$safeeval);
  my $alt=    &Apache::lonxml::get_param('alt',$parstack,$safeeval);  
  my $width=  &Apache::lonxml::get_param('width',$parstack,$safeeval);   my $width=  &Apache::lonxml::get_param('width',$parstack,$safeeval);
  my $height= &Apache::lonxml::get_param('height',$parstack,$safeeval);   my $height= &Apache::lonxml::get_param('height',$parstack,$safeeval);
   
         if ($token->[2]{'src'}=~/\$/) {          if ($token->[2]{'src'}=~/\$/) {
            $currentstring.='Variable image source';             $currentstring.=&mt('Variable image source');
         } else {          } elsif ($token->[2]{'src'}=~/\S/) {
    $currentstring .= '<img src="'.$src.'" alt="'.$alt.'" ';     $currentstring .= '<img src="'.$src.'" alt="'.$alt.'" ';
    if ($width) { $currentstring.=' width="'.$width.'" '; }     if ($width) { $currentstring.=' width="'.$width.'" '; }
    if ($height) { $currentstring.=' height="'.$height.'" '; }     if ($height) { $currentstring.=' height="'.$height.'" '; }
    $currentstring .= ' />';     $currentstring .= ' />';
           } else {
              $currentstring.=&mt("No image source specified");
         }          }
     } elsif ($target eq 'modified') {      } elsif ($target eq 'modified') {
  my ($osrc,$owidth,$oheight)=   my ($osrc,$owidth,$oheight)=
Line 3349  sub start_applet { Line 3365  sub start_applet {
     &Apache::lonxml::extlink($archive);      &Apache::lonxml::extlink($archive);
     my $currentstring = '';      my $currentstring = '';
     if ($target eq 'web' || $target eq 'webgrade') {      if ($target eq 'web' || $target eq 'webgrade') {
  if ($env{'browser.appletsuppress'} ne 'on') {          $currentstring = &Apache::lonenc::encrypt_ref($token,
     $currentstring = &Apache::lonenc::encrypt_ref($token,                                                        {'code'=>$code,
   {'code'=>$code,                                                         'archive'=>$archive}
    'archive'=>$archive}                                                       );
   );  
  } else {  
     my $alttag= &Apache::lonxml::get_param('alt',$parstack,  
    $safeeval,undef,1);  
     unless ($alttag) {  
  $alttag=&Apache::lonmeta::alttag($Apache::lonxml::pwd[-1],  
  $code);  
     }  
     $currentstring='[APPLET: '.$alttag.']';  
  }  
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  # Turn off some stuff we can't be inside thank you LaTeX          # Turn off some stuff we can't be inside thank you LaTeX
   
   
  my $restart_sub = 0;   my $restart_sub = 0;
  my $restart_sup = 0;   my $restart_sup = 0;
Line 3429  sub start_embed { Line 3434  sub start_embed {
     &Apache::lonxml::extlink($src);      &Apache::lonxml::extlink($src);
     my $currentstring = '';      my $currentstring = '';
     if ($target eq 'web' || $target eq 'webgrade') {      if ($target eq 'web' || $target eq 'webgrade') {
  if ($env{'browser.embedsuppress'} ne 'on') {      $currentstring=&Apache::lonenc::encrypt_ref($token,{'src'=>$src}); 
     $currentstring=&Apache::lonenc::encrypt_ref($token,{'src'=>$src});  
  } else {  
     my $alttag=&Apache::lonxml::get_param  
  ('alt',$parstack,$safeeval,undef,1);  
     unless ($alttag) {  
  $alttag=&Apache::lonmeta::alttag($Apache::lonxml::pwd[-1],$src);  
     }  
     $currentstring='[EMBED: '.$alttag.']';  
  }  
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
     }       } 
     return $currentstring;      return $currentstring;
Line 3448  sub end_embed { Line 3444  sub end_embed {
     my ($target,$token) = @_;      my ($target,$token) = @_;
     my $currentstring = '';      my $currentstring = '';
     if ($target eq 'web' || $target eq 'webgrade') {      if ($target eq 'web' || $target eq 'webgrade') {
  $currentstring = $token->[2];               $currentstring = $token->[2];
     } elsif ($target eq 'tex') {        } elsif ($target eq 'tex') {
     }           # ./.
       }
     return $currentstring;      return $currentstring;
 }  }
   
Line 3888  sub end_colgroup { Line 3885  sub end_colgroup {
     return $currentstring;      return $currentstring;
 }  }
   
   
 #-- <del> tag (end tag required)  #-- <del> tag (end tag required)
 sub start_del {  sub start_del {
     my ($target,$token) = @_;      my ($target,$token) = @_;
     my $currentstring = '';      my $currentstring = '';
     if ($target eq 'web' || $target eq 'webgrade') {      if ($target eq 'web' || $target eq 'webgrade') {
  $currentstring = $token->[4];        $currentstring = $token->[4];     
       } elsif ($target eq 'tex') {
    &disable_para();
    $currentstring .= '\st{';  
     }       } 
     return $currentstring;      return $currentstring;
 }  }
Line 3902  sub end_del { Line 3903  sub end_del {
     my ($target,$token) = @_;      my ($target,$token) = @_;
     my $currentstring = '';      my $currentstring = '';
     if ($target eq 'web' || $target eq 'webgrade') {      if ($target eq 'web' || $target eq 'webgrade') {
  $currentstring = $token->[2];       $currentstring = $token->[2];     
       } elsif ($target eq 'tex') {
    &enable_para();
    $currentstring = '}';
     }       } 
     return $currentstring;      return $currentstring;
 }  }
Line 4611  sub get_eps_image { Line 4615  sub get_eps_image {
   
  #if replication failed try to produce eps file dynamically   #if replication failed try to produce eps file dynamically
  $src=~s/\.ps$/\.eps/;   $src=~s/\.ps$/\.eps/;
  my $temp_file;   if (open(FILE,">>/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout.dat")) {
  open(FILE,">>/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout.dat");      my $newsrc=$orig_src;
  my $newsrc=$orig_src;      $newsrc =~ s|(.*)/res/|/home/httpd/html/res/|;
  $newsrc =~ s|(.*)/res/|/home/httpd/html/res/|;      &Apache::lonxml::debug("queueing $newsrc for dynamic eps production.");
  &Apache::lonxml::debug("queueing $newsrc for dynamic eps production.");      print FILE ("$newsrc\n");
  print FILE ("$newsrc\n");      close(FILE);
  close(FILE);                  }
  $src=~s|/home/httpd/html/res|/home/httpd/prtspool|;   $src=~s|/home/httpd/html/res|/home/httpd/prtspool|;
  $src=~s|/home/([^/]*)/public_html/|/home/httpd/prtspool/$1/|;   $src=~s|/home/([^/]*)/public_html/|/home/httpd/prtspool/$1/|;
  if ($sext ne "") { # Put the ext. back in to uniquify.   if ($sext ne "") { # Put the ext. back in to uniquify.
Line 4650  sub get_eps_image { Line 4654  sub get_eps_image {
 sub eps_generation {  sub eps_generation {
     my ($src,$file,$width_param) = @_;           my ($src,$file,$width_param) = @_;     
     my $filename = "/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout.dat";      my $filename = "/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout.dat";
     my $temp_file = Apache::File->new('>>'.$filename);       if (open(my $tmpfile,">>$filename")) { 
     print $temp_file "$src\n";          print $tmpfile "$src\n";
           close($tmpfile);
       }
     my $newsrc = $src;      my $newsrc = $src;
     $newsrc =~ s/(\.bmp|\.gif|\.jpg|\.jpeg)$/\.eps/i;      $newsrc =~ s/(\.bmp|\.gif|\.jpg|\.jpeg)$/\.eps/i;
     $newsrc=~s{/home/httpd/html/res}{};      $newsrc=~s{/home/httpd/html/res}{};
Line 4742  sub align_latex_image { Line 4748  sub align_latex_image {
     #    Even though we set a default alignment value, the user      #    Even though we set a default alignment value, the user
     #    could have given us an illegal value.  In that case we      #    could have given us an illegal value.  In that case we
     #    just use the default alignment of bottom..      #    just use the default alignment of bottom..
     $currentstring = "\n% figurewrapping \n";      $currentstring = '';
     if      ($align eq "top")    {      if      ($align eq "top")    {
  $currentstring .= '\raisebox{-'.$height.'mm}{'.$image;   $currentstring .= '\raisebox{-'.$height.'mm}{'.$image;
  $closure = '}';   $closure = '}';
Line 4785  sub align_latex_image { Line 4791  sub align_latex_image {
  $currentstring .= "{$image";   $currentstring .= "{$image";
  $closure       = '}';   $closure       = '}';
     }      }
     $currentstring .= "\n% end wrappage\n";  
     $closure        = "\n% Begin closure\n".$closure."\n% End closure\n";  
     return ($currentstring, $closure);      return ($currentstring, $closure);
 }  }
   
Line 4806  sub is_inside_of { Line 4810  sub is_inside_of {
 #  #
 #   This sub provides the typical LaTeX prefix matter for tex output:  #   This sub provides the typical LaTeX prefix matter for tex output:
 #  #
 sub latex_header  sub latex_header {
 {  
     my ($mode) = @_;      my ($mode) = @_;
     my $currentstring = '';      my $currentstring = '';
   
Line 4841  sub latex_header Line 4844  sub latex_header
  "\\usepackage{xcolor}\n".   "\\usepackage{xcolor}\n".
  '\usepackage{calc}'.   '\usepackage{calc}'.
  '\usepackage{amsmath}'.   '\usepackage{amsmath}'.
       '\usepackage{soul}',
  '\usepackage{amssymb}'.   '\usepackage{amssymb}'.
  '\usepackage{amsfonts}'.   '\usepackage{amsfonts}'.
  '\usepackage{amsthm}'.   '\usepackage{amsthm}'.

Removed from v.1.410  
changed lines
  Added in v.1.424


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