Diff for /loncom/homework/randomlabel.pm between versions 1.34 and 1.39

version 1.34, 2002/08/07 21:49:35 version 1.39, 2002/11/07 19:48:51
Line 60  package Apache::randomlabel; Line 60  package Apache::randomlabel;
 use Apache::lonnet;  use Apache::lonnet;
 use strict;  use strict;
 use Apache::edit;  use Apache::edit;
   use Apache::File();
   use Apache::Constants qw(:common :http);
   
 BEGIN {  BEGIN {
   &Apache::lonxml::register('Apache::randomlabel',('randomlabel','labelgroup','location','label'));    &Apache::lonxml::register('Apache::randomlabel',('randomlabel','labelgroup','location','label'));
Line 80  sub check_int { Line 82  sub check_int {
 sub start_randomlabel {  sub start_randomlabel {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;    my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
   my $result='';    my $result='';
     &Apache::lonxml::startredirection();
   push (@Apache::lonxml::extlinks, '/res/adm/includes/GLabel.class');    push (@Apache::lonxml::extlinks, '/res/adm/includes/GLabel.class');
   push (@Apache::lonxml::namespace,'randomlabel');    push (@Apache::lonxml::namespace,'randomlabel');
   my $bgimg= &Apache::lonxml::get_param('bgimg',$parstack,$safeeval);    my $bgimg= &Apache::lonxml::get_param('bgimg',$parstack,$safeeval);
Line 91  sub start_randomlabel { Line 94  sub start_randomlabel {
     } elsif ($bgimg =~ m:^/home/.*/public_html:) {      } elsif ($bgimg =~ m:^/home/.*/public_html:) {
       $bgimg =~ s:^/home/(.*)/public_html:/~$1:;        $bgimg =~ s:^/home/(.*)/public_html:/~$1:;
     }      }
     $bgimg='http://'.$ENV{'SERVER_NAME'}.$bgimg;  #    $bgimg='http://'.$ENV{'SERVER_NAME'}.$bgimg;
   }    }
   my $code = &Apache::lonxml::get_param('code',$parstack,$safeeval);    my $code = &Apache::lonxml::get_param('code',$parstack,$safeeval);
   my $codebase = &Apache::lonxml::get_param('codebase',$parstack,$safeeval);    my $codebase = &Apache::lonxml::get_param('codebase',$parstack,$safeeval);
Line 103  sub start_randomlabel { Line 106  sub start_randomlabel {
   $Apache::randomlabel::tlabel_cnt=0;    $Apache::randomlabel::tlabel_cnt=0;
   $Apache::randomlabel::ilabel_cnt=0;    $Apache::randomlabel::ilabel_cnt=0;
   if ($target eq 'web') {    if ($target eq 'web') {
     $result.="<applet code=\"$code\" codebase=\"$codebase\" width=\"$w\" height=\"$h\">\n";      $result.='<img src="/cgi-bin/randomlabel.png?';
     $result.="<param name=\"bgimg\" value=\"$bgimg\">\n";      $result.="BGIMG=".&Apache::lonnet::escape('/home/httpd/html/'.$bgimg);
   } elsif ($target eq 'tex') {    } elsif ($target eq 'tex') {
       my $newbgimg = $bgimg;
     $bgimg=~s/(.gif|.jpg)$/.eps/;      $bgimg=~s/(.gif|.jpg)$/.eps/;
     $bgimg= &Apache::lonnet::filelocation($bgimg);      $bgimg= &Apache::lonnet::filelocation($bgimg);
     if (not $ENV{'request.role'}=~/^au\./) {      if (not $ENV{'request.role'}=~/^au\./) {
  $bgimg=~s/http:\/[^\/]*/\/home\/httpd\/html/;   $bgimg=~s/http:\/[^\/]*/\/home\/httpd\/html/;
    $bgimg=~s/\/$//;
           #if no eps file try to replicate it
    if (not-e $bgimg) {
       if (&Apache::lonnet::repcopy($bgimg) ne OK ) {
    #if replication failed try to find ps file
    $bgimg=~s/\.eps$/\.ps/;
    #if no ps file try to replicate it
    if (not-e $bgimg &&
       &Apache::lonnet::repcopy($bgimg) ne OK) {
                       #if replication failed try to produce eps file dynamically
       $bgimg=~s/\.ps$/\.eps/;
       my $temp_file;
       my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat";
       $temp_file = Apache::File->new('>>'.$filename);
       $newbgimg =~ s/(.*)\/res\//\/home\/httpd\/html\/res\//;
       print $temp_file "$newbgimg\n";
       $bgimg =~ m/\/([^\/]+)$/;
       $bgimg = '/home/httpd/prtspool/'.$1;
    }
       }
    }
     } else {      } else {
  $bgimg=~s/http:\/[^\/]*\/~([^\/]+)/\/home\/$1\/public_html/;   $bgimg=~s/http:\/[^\/]*\/~([^\/]+)/\/home\/$1\/public_html/;
   
     }      }
     $bgimg=~s/\/$//;      $bgimg=~s/\/$//;
     my $dirtywidth=$texwidth+5;      my $dirtywidth=$texwidth+5;
Line 148  sub end_randomlabel { Line 172  sub end_randomlabel {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;    my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
   my $result='';    my $result='';
   my $count;    my $count;
     $result=&Apache::lonxml::endredirection();
     $result=~s/\s*&/&/g;
     $result=~s/\s*$//;
   pop @Apache::lonxml::namespace;    pop @Apache::lonxml::namespace;
   if ($target eq 'web') {    if ($target eq 'web') {
     $count = $Apache::randomlabel::tlabel_cnt;      $count = $Apache::randomlabel::tlabel_cnt;
     if( $count != 0) { $result.= "<param name=\"COUNT\" value=\"$count\">\n"; }      if( $count != 0) { $result.= "&COUNT=$count"; }
     $count = $Apache::randomlabel::ilabel_cnt;      $count = $Apache::randomlabel::ilabel_cnt;
     if( $count != 0) { $result.= "<param name=\"ICOUNT\" value=\"$count\">\n"; }      if( $count != 0) { $result.= "&ICOUNT=$count"; }
     $result .= "</applet>\n<BR />";      $result.='" /><br />'."\n";
   } elsif ($target eq 'tex') {    } elsif ($target eq 'tex') {
       $result='\end{picture}\\\\}';        $result='\end{picture}\\\\';
   @$parstack[-1]=~/\$height\s*=\s*?"(.+)?"/;    @$parstack[-1]=~/\$height\s*=\s*?"(.+)?"/;
       my $one=$1;        my $one=$1;
   @$parstack[-1]=~/\$width\s*=\s*?"(.+)?"/;    @$parstack[-1]=~/\$width\s*=\s*?"(.+)?"/;
Line 164  sub end_randomlabel { Line 191  sub end_randomlabel {
   @$parstack[-1]=~/\$texwidth\s*=\s*?"(.+)?"/;    @$parstack[-1]=~/\$texwidth\s*=\s*?"(.+)?"/;
       my $three=$1;        my $three=$1;
       my $howtoskipback = $three*$one/$two;        my $howtoskipback = $three*$one/$two;
       $result.=' \vskip -'.$howtoskipback.' mm ';        $result.=' \vskip -'.$howtoskipback.' mm }';
   } elsif ($target eq 'edit') {    } elsif ($target eq 'edit') {
     $result.=&Apache::edit::end_table;      $result.=&Apache::edit::end_table;
   }    }
Line 177  sub start_labelgroup { Line 204  sub start_labelgroup {
   my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval);    my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval);
   my $type = &Apache::lonxml::get_param('type',$parstack,$safeeval);    my $type = &Apache::lonxml::get_param('type',$parstack,$safeeval);
   $type =~tr/A-Z/a-z/;    $type =~tr/A-Z/a-z/;
   if ($target eq 'web' || $target eq 'tex' ||     if ($target eq 'web' || $target eq 'tex' ||
       $target eq 'grade' || $target eq 'answer') {        $target eq 'grade' || $target eq 'answer' || $target eq 'analyze') {
     $Apache::randomlabel::groupname=$name;      $Apache::randomlabel::groupname=$name;
     $Apache::randomlabel::type=$type;      $Apache::randomlabel::type=$type;
     @Apache::randomlabel::xcoord = ();      @Apache::randomlabel::xcoord = ();
Line 226  sub end_labelgroup { Line 253  sub end_labelgroup {
   my $gname = $Apache::randomlabel::groupname;    my $gname = $Apache::randomlabel::groupname;
   my $type  = $Apache::randomlabel::type;    my $type  = $Apache::randomlabel::type;
   my $result='';    my $result='';
   if ($target eq 'web' || $target eq 'answer' || $target eq 'grade') {    if ($target eq 'web' || $target eq 'answer' || $target eq 'grade' ||
         $target eq 'analyze') {
     my @idx_arr = (0 .. $#Apache::randomlabel::label_arr);      my @idx_arr = (0 .. $#Apache::randomlabel::label_arr);
     &Apache::structuretags::shuffle(\@idx_arr);      &Apache::structuretags::shuffle(\@idx_arr);
     for(0 .. $#Apache::randomlabel::label_arr) {      for(0 .. $#Apache::randomlabel::label_arr) {
Line 255  sub end_labelgroup { Line 283  sub end_labelgroup {
  &Apache::lonxml::error('Unknown type of label :'.$type.':');   &Apache::lonxml::error('Unknown type of label :'.$type.':');
       }        }
       if ($target eq 'web') {        if ($target eq 'web') {
  $result .= '<param name="' . $str  . '" value="'.$label.'">';   $result .= '&'. $str  .'='.$label;
  $result .= '<param name="' . $xstr . '" value="'.$x.'">';   $result .= '&'. $xstr .'='.$x;
  $result .= '<param name="' . $ystr . '" value="'.$y.'">'."\n";   $result .= '&'. $ystr .'='.$y;
       }        }
     }      }
   } elsif ($target eq 'tex') {    } elsif ($target eq 'tex') {
Line 350  sub start_label { Line 378  sub start_label {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;    my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
   my $result='';    my $result='';
   my $type = &Apache::lonxml::get_param('type',$parstack,$safeeval,-2);    my $type = &Apache::lonxml::get_param('type',$parstack,$safeeval,-2);
   if ($target eq 'web' || $target eq 'tex' ||     if ($target eq 'web' || $target eq 'tex' ||
       $target eq 'grade' || $target eq 'answer') {        $target eq 'grade' || $target eq 'answer' || $target eq 'analyze') {
     my $ltext=&Apache::lonxml::get_all_text("/label",$$parser[-1]);      my $ltext=&Apache::lonxml::get_all_text("/label",$$parser[-1]);
     $ltext=&Apache::run::evaluate($ltext,$safeeval,$$parstack[-1]);      $ltext=&Apache::run::evaluate($ltext,$safeeval,$$parstack[-1]);
     if ($type eq 'image') {      if ($type eq 'image') {

Removed from v.1.34  
changed lines
  Added in v.1.39


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