Diff for /loncom/homework/outputtags.pm between versions 1.48 and 1.61

version 1.48, 2006/05/12 03:46:54 version 1.61, 2017/11/12 23:11:09
Line 26 Line 26
 # http://www.lon-capa.org/  # http://www.lon-capa.org/
 #  #
   
   
   
 package Apache::outputtags;   package Apache::outputtags; 
   
 use strict;  use strict;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonnet;  use Apache::lonnet;
   use LONCAPA::LWPReq;
 use POSIX qw(strftime);  use POSIX qw(strftime);
   
 BEGIN {  BEGIN {
     &Apache::lonxml::register('Apache::outputtags',('displayduedate','displaytitle','displayweight','displaystudentphoto'));      &Apache::lonxml::register('Apache::outputtags',('displayduedate','displaytitle','displayweight','displaystudentphoto'));
 }  }
 #  Empties the hash of tags that have already been displayed  
 #  that should only be displayed once.  ################################ utilities ###########################
   
   # 
   #  Does a simple substitution of a tab when the opening tag can
   #  be replaced by a fixed string.. and same for the closing tag.
   #  Parameters:
   #    $input   - String in in which to do the substitutions.
   #    $tag     - name of tag without the <>'s e.g. sub for <sub></sub>
   #    $opening - What to replace <$tag> with
   #    $closing - What to replace </$tag> with.
   #  Returns:
   #    Input string appropriately substituted.
   #
   sub substitute_tag {
       my ($input,
    $tag,
    $opening,
    $closing) = @_;
   
       $input =~ s/<$tag>/$opening/gi;
       $input =~ s/<\/$tag>/$closing/gi;
   
       return $input;
   }  
   
   #
   #  Substitutes the simple formatting tags in a string
   #  Parameters:
   #    $string - input string.
   #  Returns
   #    Result of string after simple substitutions
   #  Tags we handle are:
   #    <sub>, <sup> <em>
 #  #
   sub substitute_simple_tags_latex {
       my ($string)  = @_;
   
       # restore the <>'s:
   
       $string =~ s/\\ensuremath\{<}/</g;
       $string =~ s/\\ensuremath\{>}/>/g;
   
   
       # Substitute the tags:
   
       $string = &substitute_tag($string, "sub", '\ensuremath{_', '}');
       $string = &substitute_tag($string, 'sup', '\ensuremath{^', '}');
       $string = &substitute_tag($string, 'em', '\em{', '}');
   
   
       # Escape the remaining <>'s again:
   
       $string =~ s/</\\ensuremath{<}/g;
       $string =~ s/>/\\ensuremath{>}/g;
   
   
   
       return $string;
   }
   
   ################################ The parser ##########################
   
 sub initialize_outputtags {  sub initialize_outputtags {
     %Apache::outputtags::showonce=();      %Apache::outputtags::showonce=();
 }  }
   
   
   
 sub start_displayduedate {  sub start_displayduedate {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my $result;      my $result;
Line 105  sub start_displayduedate { Line 169  sub start_displayduedate {
  my $duetext = &Apache::lonnavmaps::timeToHumanString($date, '', $format);   my $duetext = &Apache::lonnavmaps::timeToHumanString($date, '', $format);
  if (lc($style) !~ 'plain') {   if (lc($style) !~ 'plain') {
     # The due date will be put in a box.      # The due date will be put in a box.
           # at the start of the line to ensure it won't overlap
     $result = '\framebox{'      # the 1 col boundary.
   
       $result = '\vspace{1.0 ex} \framebox{'
           .&mt('Due').' '.$duetext.'}';            .&mt('Due').' '.$duetext.'}';
  } else {   } else {
     $result = &mt('Due') . ' '.$duetext;      $result = &mt('Due') . ' '.$duetext;
Line 150  sub start_displaytitle { Line 216  sub start_displaytitle {
  $result.=&Apache::edit::end_table();   $result.=&Apache::edit::end_table();
     } elsif ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') {      } elsif ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') {
  $name=&Apache::lonxml::latex_special_symbols($name);   $name=&Apache::lonxml::latex_special_symbols($name);
    $name = &substitute_simple_tags_latex($name);
  if (lc($style) !~ 'plain') {    if (lc($style) !~ 'plain') { 
     $result='\vskip 0 mm\noindent\textbf{'.$name.'}\vskip 0 mm';      $result='\vskip 0 mm\noindent\textbf{'.$name.'}\vskip 0 mm';
  } else {   } else {
Line 169  sub end_displaytitle { Line 236  sub end_displaytitle {
 sub multipart {  sub multipart {
     my ($uri)=@_;      my ($uri)=@_;
     if (!defined($uri)) { $uri=$env{'request.uri'}; }      if (!defined($uri)) { $uri=$env{'request.uri'}; }
     my ($symb)=&Apache::lonxml::whichuser();      my ($symb)=&Apache::lonnet::whichuser();
   
     my @parts;      my @parts;
     my $metadata = &Apache::lonnet::metadata($uri,'packages');      my $metadata = &Apache::lonnet::metadata($uri,'packages');
Line 236  sub end_displayweight { Line 303  sub end_displayweight {
 sub start_displaystudentphoto {  sub start_displaystudentphoto {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my $result;      my $result;
     my (undef,undef,$domain,$user) = &Apache::lonxml::whichuser();      my (undef,undef,$domain,$user) = &Apache::lonnet::whichuser();
     if ($target eq 'web' && $user eq $env{'user.name'}) {      if ($target eq 'web' && $user eq $env{'user.name'}) {
  my $url=&Apache::lonnet::studentphoto($domain,$user,"gif");   my $url=&Apache::lonnet::studentphoto($domain,$user,"gif");
  my $args;   my $args;
Line 250  sub start_displaystudentphoto { Line 317  sub start_displaystudentphoto {
     }      }
     if ($target eq 'tex' && $env{'request.role'} =~ /^cc/) {      if ($target eq 'tex' && $env{'request.role'} =~ /^cc/) {
  my $url=&Apache::lonnet::studentphoto($domain,$user,"eps");   my $url=&Apache::lonnet::studentphoto($domain,$user,"eps");
  my $ua=new LWP::UserAgent;          my $uhome=&Apache::lonnet::homeserver($user,$domain);
  my $request=new HTTP::Request('GET',$url);   my $request=new HTTP::Request('GET',$url);
  my $response=$ua->request($request);          my $response=&LONCAPA::LWPReq::makerequest($uhome,$request,'','','',1);
  if ($response->is_success) {   if ($response->is_success) {
     my $file=$user."_".$domain."_studentphoto.eps";      my $file=$user."_".$domain."_studentphoto.eps";
     open(FILE,">".$Apache::lonnet::perlvar{'lonPrtDir'}."/$file");      open(FILE,">",$Apache::lonnet::perlvar{'lonPrtDir'}."/$file");
     print FILE $response->content;      print FILE $response->content;
     close(FILE);      close(FILE);
     my $width_param=&Apache::londefdef::image_size($Apache::lonnet::perlvar{'lonPrtDir'}."/$file",'0.3',$parstack,$safeeval);      my $width_param=&Apache::londefdef::image_size($Apache::lonnet::perlvar{'lonPrtDir'}."/$file",'0.3',$parstack,$safeeval);
Line 277  sub end_displaystudentphoto { Line 344  sub end_displaystudentphoto {
   
 1;  1;
 __END__  __END__
   
   
   =head1 NAME
   
   Apache::outputtags;
   
   =head1 SYNOPSIS
   
   Handles tags associated with output. Seems to
   relate to due dates of the assignment.
   
   This is part of the LearningOnline Network with CAPA project
   described at http://www.lon-capa.org.
   
   =head1 SUBROUTINES
   
   =over
   
   =item start_displayduedate()
   
   =item initialize_outputtags()
   
   Empties the hash of tags that have already been displayed that should only be displayed once.
   
   =item end_displayduedate()
   
   =item start_displaytitle()
   
   =item end_displaytitle()
   
   =item multipart()
   
   =item start_displayweight()
   
   =item end_displayweight()
   
   =item start_displaystudentphoto()
   
   =item end_displaystudentphoto()
   
   
   =back
   
   =cut

Removed from v.1.48  
changed lines
  Added in v.1.61


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.