Diff for /loncom/xml/lonxml.pm between versions 1.113 and 1.123

version 1.113, 2001/08/15 14:22:07 version 1.123, 2001/08/22 19:21:36
Line 13 Line 13
 # 6/12,6/13 H. K. Ng  # 6/12,6/13 H. K. Ng
 # 6/16 Gerd Kortemeyer  # 6/16 Gerd Kortemeyer
 # 7/27 H. K. Ng  # 7/27 H. K. Ng
 # 8/7,8/9,8/10,8/11,8/15 Gerd Kortemeyer  # 8/7,8/9,8/10,8/11,8/15,8/16,8/17,8/18,8/20 Gerd Kortemeyer
   
 package Apache::lonxml;   package Apache::lonxml; 
 use vars   use vars 
Line 152  sub xmlend { Line 152  sub xmlend {
     return $discussion.'</html>';      return $discussion.'</html>';
 }  }
   
 sub checkout {  sub tokeninputfield {
     my ($target,$symb,$tuname,$tudom,$tcrsid)=@_;      my $defhost=$Apache::lonnet::perlvar{'lonHostID'};
       $defhost=~tr/a-z/A-Z/;
       return (<<ENDINPUTFIELD)
   <script>
       function updatetoken() {
    var comp=new Array;
           var barcode=unescape(document.tokeninput.barcode.value);
           comp=barcode.split('*');
           if (typeof(comp[0])!="undefined") {
       document.tokeninput.codeone.value=comp[0];
    }
           if (typeof(comp[1])!="undefined") {
       document.tokeninput.codetwo.value=comp[1];
    }
           if (typeof(comp[2])!="undefined") {
               comp[2]=comp[2].toUpperCase();
       document.tokeninput.codethree.value=comp[2];
    }
           document.tokeninput.barcode.value='';
       }  
   </script>
   <form method="post" name="tokeninput">
   <table border="2" bgcolor="#FFFFBB">
   <tr><th>DocID Checkin</th></tr>
   <tr><td>
   <table>
   <tr>
   <td>Scan in Barcode</td>
   <td><input type="text" size="22" name="barcode" 
   onChange="updatetoken()"/></td>
   </tr>
   <tr><td><i>or</i> Type in DocID</td>
   <td>
   <input type="text" size="5" name="codeone" />
   <b><font size="+2">*</font></b>
   <input type="text" size="5" name="codetwo" />
   <b><font size="+2">*</font></b>
   <input type="text" size="10" name="codethree" value="$defhost" 
   onChange="this.value=this.value.toUpperCase()" />
   </td></tr>
   </table>
   </td></tr>
   <tr><td><input type="submit" value="Check in DocID" /></td></tr>
   </table>
   </form>
   ENDINPUTFIELD
   }
   
   sub maketoken {
       my ($symb,$tuname,$tudom,$tcrsid)=@_;
     unless ($symb) {      unless ($symb) {
  $symb=&Apache::lonnet::symbread();   $symb=&Apache::lonnet::symbread();
     }      }
Line 162  sub checkout { Line 211  sub checkout {
         $tudom=$ENV{'user.domain'};          $tudom=$ENV{'user.domain'};
         $tcrsid=$ENV{'request.course.id'};          $tcrsid=$ENV{'request.course.id'};
     }      }
     my $lonhost = $Apache::lonnet::perlvar{'lonHostID'};  
     my $infostr=&Apache::lonnet::escape(      return &Apache::lonnet::checkout($symb,$tuname,$tudom,$tcrsid);
                  $tuname.'&'.  }
                  $tudom.'&'.  
                  $tcrsid.'&'.  sub printtokenheader {
                  $symb.'&'.      my ($target,$token,$symb,$tuname,$tudom,$tcrsid)=@_;
  time.'&'.$ENV{'REMOTE_ADDR'});      unless ($token) { return ''; }
     my $token=Apache::lonnet::reply('tmpput:'.$infostr,$lonhost);  
     if ($token=~/^error\:/) { return ''; }      unless ($symb) {
     $token=~s/^(\d+)\_.*\_(\d+)$/$1\*$2\*$lonhost/;   $symb=&Apache::lonnet::symbread();
     $token=~tr/a-z/A-Z/;      }
     if (&Apache::lonnet::log($tudom,$tuname,      unless ($tuname) {
                          &Apache::lonnet::homeserver($tuname,$tudom),   $tuname=$ENV{'user.name'};
                          &Apache::lonnet::escape('Checkout '.$infostr.' - '.          $tudom=$ENV{'user.domain'};
                                                  $token)) ne 'ok') {          $tcrsid=$ENV{'request.course.id'};
  return '';  
     }      }
   
       my %reply=&Apache::lonnet::get('environment',
                 ['firstname','middlename','lastname','generation'],
                 $tudom,$tuname);
       my $plainname=$reply{'firstname'}.' '. 
                     $reply{'middlename'}.' '.
                     $reply{'lastname'}.' '.
     $reply{'generation'};
   
     if ($target eq 'web') {      if ($target eq 'web') {
  return '<img src="/cgi-bin/barcode.gif?encode='.$token.'" />';   return 
    '<img align="right" src="/cgi-bin/barcode.gif?encode='.$token.'" />'.
                  'Checked out for '.$plainname.
                  '<br />User: '.$tuname.' at '.$tudom.
          '<br />CourseID: '.$tcrsid.
                  '<br />DocID: '.$token.
                  '<br />Time: '.localtime().'<hr />';
     } else {      } else {
         return $token;                                   return $token;
     }      }
 }  }
   
Line 372  sub htmlclean { Line 435  sub htmlclean {
   
 sub inner_xmlparse {  sub inner_xmlparse {
   my ($target,$stack,$parstack,$pars,$safeeval,$style_for_target)=@_;    my ($target,$stack,$parstack,$pars,$safeeval,$style_for_target)=@_;
   &Apache::lonxml::debug('Reentrant parser starting, again?');  
   my $finaloutput = '';    my $finaloutput = '';
   my $result;    my $result;
   my $token;    my $token;
Line 675  sub init_safespace { Line 737  sub init_safespace {
 #need to inspect this class of ops  #need to inspect this class of ops
 # $safeeval->deny(":base_orig");  # $safeeval->deny(":base_orig");
   $safeinit .= ';$external::target="'.$target.'";';    $safeinit .= ';$external::target="'.$target.'";';
   $safeinit .= ';$external::randomseed='.&Apache::lonnet::rndseed().';';    my $rndseed;
     my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();
     $rndseed=&Apache::lonnet::rndseed($symb,$courseid,$domain,$name);
     $safeinit .= ';$external::randomseed='.$rndseed.';';
   &Apache::run::run($safeinit,$safeeval);    &Apache::run::run($safeinit,$safeeval);
 }  }
   
Line 1056  sub description { Line 1121  sub description {
   my ($token)=@_;    my ($token)=@_;
   return $insertlist{$insertlist{"$token->[1].num"}.'.description'};    return $insertlist{$insertlist{"$token->[1].num"}.'.description'};
 }  }
   
   # ----------------------------------------------------------------- whichuser
   # returns a list of $symb, $courseid, $domain, $name that is correct for
   # calls to lonnet functions for this setup.
   # - looks for form.grade_ parameters
   sub whichuser {
     my $symb=&Apache::lonnet::symbread();
     my $courseid=$ENV{'request.course.id'};
     my $domain=$ENV{'user.domain'};
     my $name=$ENV{'user.name'};
     if (defined($ENV{'form.grade_symb'})) {
       my $tmp_courseid=$ENV{'form.grade_courseid'};
       my $allowed=&Apache::lonnet::allowed('mgr',$tmp_courseid);
       if ($allowed) {
         $symb=$ENV{'form.grade_symb'};
         $courseid=$ENV{'form.grade_courseid'};
         $domain=$ENV{'form.grade_domain'};
         $name=$ENV{'form.grade_username'};
       }
     }
     return ($symb,$courseid,$domain,$name);
   }
   
 1;  1;
 __END__  __END__
   

Removed from v.1.113  
changed lines
  Added in v.1.123


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