Diff for /loncom/xml/lontexconvert.pm between versions 1.98.2.1 and 1.101

version 1.98.2.1, 2011/02/10 20:07:00 version 1.101, 2010/01/26 01:16:30
Line 49  use lib '/home/httpd/lib/perl/'; Line 49  use lib '/home/httpd/lib/perl/';
 use LONCAPA;  use LONCAPA;
 use URI::Escape;  use URI::Escape;
 use IO::Socket::INET;  use IO::Socket::INET;
   use IO::Socket::SSL;
   
 # ====================================================================== Header  # ====================================================================== Header
   
Line 247  sub mimetex_valign { Line 248  sub mimetex_valign {
     my $valign = 0;      my $valign = 0;
     my $lonhost = $Apache::lonnet::perlvar{'lonHostID'};      my $lonhost = $Apache::lonnet::perlvar{'lonHostID'};
     my $hostname = &Apache::lonnet::hostname($lonhost);      my $hostname = &Apache::lonnet::hostname($lonhost);
       my $protocol = $Apache::lonnet::protocol{$lonhost};
     my $path = '/cgi-bin/mimetex.cgi?'.$esc_texstring;      my $path = '/cgi-bin/mimetex.cgi?'.$esc_texstring;
     my $socket;      my $socket;
     &Apache::lonxml::start_alarm();      &Apache::lonxml::start_alarm();
     my $socket = IO::Socket::INET->new(PeerAddr => $hostname,      if ($protocol eq 'https') {
                                        PeerPort => 'http(80)',          $socket = IO::Socket::SSL->new(PeerAddr => $hostname,
                                          PeerPort => 'https(443)',
                                        Proto    => 'tcp');                                         Proto    => 'tcp');
       } else {
           $socket = IO::Socket::INET->new(PeerAddr => $hostname,
                                           PeerPort => 'http(80)',
                                           Proto    => 'tcp');
       }
     if ($socket) {      if ($socket) {
         my $headreq = "HEAD $path HTTP/1.0\r\n\r\n";          my $headreq = "HEAD $path HTTP/1.0\r\n\r\n";
         print $socket $headreq;          print $socket $headreq;
Line 261  sub mimetex_valign { Line 269  sub mimetex_valign {
                 $valign = $1;                  $valign = $1;
             }              }
         }          }
         $socket->close();          if ($protocol eq 'https') {
               $socket->close(SSL_no_shutdown => 1,
                              SSL_ctx_free => 1);
           } else {
               $socket->close();
           }
     }      }
     &Apache::lonxml::end_alarm();      &Apache::lonxml::end_alarm();
     return $valign;      return $valign;
Line 322  sub to_convert { Line 335  sub to_convert {
 sub smiley {  sub smiley {
     my $expression=shift;      my $expression=shift;
     if ($env{'browser.imagesuppress'} eq 'on') { return $expression; }      if ($env{'browser.imagesuppress'} eq 'on') { return $expression; }
     my %smileys=('\:\-\)' => 'smiley',      my %smileys=(
  '8\-\)'  => 'coolsmile',      '\:\-*\)' => 'face-smile.png',
  '8\-(I|\|)'   => 'coolindiff',   '8\-\)'  => 'face-cool.png',
  ':\-(I|\|)'   => 'neutral',   '8\-(I|\|)'   => 'face-glasses.png',
  '\:\-(o|O|\(\))' => 'shocked',   '\:\-(I|\|)'   => 'face-plain.png',
  ':\-\('  => 'frowny',   '\:\-(o|O|\(\))' => 'face-surprise.png',
  '\;\-\)' => 'wink',   ':\-\('  => 'face-sad.png',
  '\:\-P'  => 'baeh',   '\;\-\)' => 'face-wink.png',
  '\:\-(\\\|\\/)' => 'hrrm',   '\:\-(P|p)'  => 'face-raspberry.png',
  '\:\-D'  => 'bigsmile',   '\:\-(\\\|\\/)' => 'face-uncertain.png',
  '\:\-C'  => 'angry',   '\:\-D'  => 'face-smile-big.png',
  '\:(\'|\`)\-\(' => 'cry',   '\:\-(C|\@)'  => 'face-angry.png',
  '\:\-(X|\#)' => 'lipsrsealed',   '\:(\'|\`)\-*\(' => 'face-crying.png',
  '\:\-S' => 'huh');   '\:\-(X|x|\#)' => 'face-quiet.png',
    '\:\-(s|S)' => 'face-uncertain.png',
    '\:\-\$' => 'face-embarrassed.png',
    '\:\-\*' => 'face-kiss.png',
    '\+O\(' => 'face-sick.png',
    '(\&lt\;3|\(heart\))' => 'heart.png',
    '\(rose\)' => 'rose.png',
    '\(pizza\)' => 'food-pizza.png',
    '\(cake\)' => 'food-cake.png',
    '\(ninja\)' => 'face-ninja.png',
    '\(pirate\)' => 'face-pirate.png',
    '\((agree|yes)\)' => 'opinion-agree.png',
    '\((disagree|nay)\)' => 'opinion-disagree.png',
    '(o|O)\-\)' => 'face-angel.png',
    );
     my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'};      my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'};
     foreach my $smiley (keys(%smileys)) {      foreach my $smiley (keys(%smileys)) {
  $expression=~s/$smiley/\<img src="$iconpath\/$smileys{$smiley}.gif" \/\>/gs;    $expression=~s/$smiley/\<img src="$iconpath\/$smileys{$smiley}" \/\>/gs; 
     }      }
     return $expression;      return $expression;
 }  }
Line 501  Header Line 528  Header
   
 =item init_math_support()  =item init_math_support()
   
 =item mimetex_valign()  
   
  Makes a HEAD call to /cgi-bin/mimetex.cgi via IO:: to retrieve the  
  vertical alignment, before the subsequent call to mimetex_converted()  
  which generates the <img> tag and the corresponding image.  
   
  Input: 1.  $esc_texstring (escaped TeX to be rendered by mimetex).  
  Output: 1. $valign - number of pixels: positive or negative integer  
             which will be included in <img> tag for mimetex image to  
             support vertical alignment of image within a line of text.  
   
  If a server is running SSL, and Apache rewrite rules are in place  
  to rewrite requests for http to https, modification will most likely  
  be needed for pass through for HEAD requests for /cgi-bin/mimetex.cgi.  
   
  Example rewrite rules which rewrite all http traffic to https,  
  except HEAD requests for /cgi-bin/mimetex.cgi are:  
   
  <IfModule mod_rewrite.c>  
      RewriteEngine On  
      RewriteLogLevel 0  
   
      RewriteCond %{HTTPS} off  
      RewriteCond %{HTTP:Host} (.*)  
      RewriteCond %{REQUEST_METHOD} !HEAD  
      RewriteRule ^/(.*) https://%1/$1 [R=301,L]  
   
      RewriteCond %{HTTPS} off  
      RewriteCond %{HTTP:Host} (.*)  
      RewriteCond %{REQUEST_METHOD} HEAD  
      RewriteCond %{REQUEST_URI} !^/cgi-bin/mimetex.cgi  
      RewriteRule ^/(.*) https://%1/$1 [R=301,L]  
  </IfModule>  
   
 =item mimetex_converted()  =item mimetex_converted()
   

Removed from v.1.98.2.1  
changed lines
  Added in v.1.101


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