Diff for /loncom/homework/lonhomework.pm between versions 1.71 and 1.78

version 1.71, 2002/02/27 20:23:26 version 1.78, 2002/05/23 21:12:44
Line 31 Line 31
   
 package Apache::lonhomework;  package Apache::lonhomework;
 use strict;  use strict;
 use Apache::style;  use Apache::style();
 use Apache::lonxml;  use Apache::lonxml();
 use Apache::lonnet;  use Apache::lonnet();
 use Apache::lonplot;  use Apache::lonplot();
 use Apache::inputtags;  use Apache::inputtags();
 use Apache::structuretags;  use Apache::structuretags();
 use Apache::randomlabel;  use Apache::randomlabel();
 use Apache::response;  use Apache::response();
 use Apache::hint;  use Apache::hint();
 use Apache::outputtags;  use Apache::outputtags();
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
   use HTML::Entities();
 #use Time::HiRes qw( gettimeofday tv_interval );  #use Time::HiRes qw( gettimeofday tv_interval );
   
 BEGIN {  BEGIN {
Line 60  sub get_target { Line 61  sub get_target {
       return ('web');        return ('web');
     }      }
   } elsif ($ENV{'request.state'} eq "construct") {    } elsif ($ENV{'request.state'} eq "construct") {
       if ( defined($ENV{'form.grade_target'}) ) {
         return ($ENV{'form.grade_target'});
       }
     if ( defined($ENV{'form.preview'})) {      if ( defined($ENV{'form.preview'})) {
       if ( defined($ENV{'form.submitted'})) {        if ( defined($ENV{'form.submitted'})) {
  return ('grade', 'web');   return ('grade', 'web');
Line 128  sub check_access { Line 132  sub check_access {
   my $type;    my $type;
   my $passed;    my $passed;
   &Apache::lonxml::debug("checking for part :$id:");    &Apache::lonxml::debug("checking for part :$id:");
     &Apache::lonxml::debug("time:".time);
   foreach $temp ("opendate","duedate","answerdate") {    foreach $temp ("opendate","duedate","answerdate") {
     $lastdate = $date;      $lastdate = $date;
     $date = &Apache::lonnet::EXT("resource.$id.$temp");      $date = &Apache::lonnet::EXT("resource.$id.$temp");
Line 189  sub showhash { Line 194  sub showhash {
   my (%hash) = @_;    my (%hash) = @_;
   my $resultkey;    my $resultkey;
   foreach $resultkey (sort keys %hash) {    foreach $resultkey (sort keys %hash) {
     &Apache::lonxml::debug("$resultkey ---- $hash{$resultkey}");      if (ref($hash{$resultkey})) {
         if ($hash{$resultkey} =~ /ARRAY/ ) {
    my $string="$resultkey ---- (";
    foreach my $elm (@{ $hash{$resultkey} }) {
     $string.="$elm,";
    }
    chop($string);
    &Apache::lonxml::debug("$string)");
         } else {
    &Apache::lonxml::debug("$resultkey ---- $hash{$resultkey}");
         }
       } else {
         &Apache::lonxml::debug("$resultkey ---- $hash{$resultkey}");
       }
   }    }
   &Apache::lonxml::debug("\n<br />restored values^</br>\n");    &Apache::lonxml::debug("\n<br />restored values^</br>\n");
   return '';    return '';
Line 255  sub handle_save_or_undo { Line 273  sub handle_save_or_undo {
   return $error;    return $error;
 }  }
   
   sub analyze {
     my ($request,$file) = @_;
     &Apache::lonxml::debug("Analyze");
     my $result=&Apache::lonnet::ssi($request->uri,('grade_target' => 'analyze'));
     &Apache::lonxml::debug(":$result:");
     (my $garbage,$result)=split(/_HASH_REF__/,$result,2);
     &showhash(&Apache::lonnet::str2hash($result));
     return $result;
   }
   
 sub editxmlmode {  sub editxmlmode {
   my ($request,$file) = @_;    my ($request,$file) = @_;
   my $result;    my $result;
Line 281  sub editxmlmode { Line 309  sub editxmlmode {
             <input type="submit" name="Undo" value="undo" />              <input type="submit" name="Undo" value="undo" />
             <hr />              <hr />
             <textarea rows="'.$rows.'" cols="'.$cols.'" name="editxmltext">'.              <textarea rows="'.$rows.'" cols="'.$cols.'" name="editxmltext">'.
       $problem.'</textarea>        &HTML::Entities::encode($problem).'</textarea>
             </form></body></html>';              </form></body></html>';
   $request->print($result);    $request->print($result);
   return '';    return '';
Line 304  sub renderpage { Line 332  sub renderpage {
     my $result = '';      my $result = '';
     &Apache::inputtags::initialize_inputtags;      &Apache::inputtags::initialize_inputtags;
     &Apache::edit::initialize_edit;      &Apache::edit::initialize_edit;
       if ($target eq 'analyze') { %Apache::lonhomework::anaylze=(); }
     if ($target eq 'web') {      if ($target eq 'web') {
       if (&Apache::lonnet::symbread() eq '') {        my ($symb)=&Apache::lonxml::whichuser();
         if ($symb eq '') {
  if ($ENV{'request.state'} eq "construct") {   if ($ENV{'request.state'} eq "construct") {
  } else {   } else {
   $request->print("Browsing or <a href=\"/adm/ambiguous\">ambiguous</a> reference, submissions ignored<br />");    $request->print("Browsing or <a href=\"/adm/ambiguous\">ambiguous</a> reference, submissions ignored<br />");
Line 321  sub renderpage { Line 351  sub renderpage {
       $default='';        $default='';
     }      }
     &Apache::lonxml::debug("Should be parsing now");      &Apache::lonxml::debug("Should be parsing now");
     $result = &Apache::lonxml::xmlparse($target, $problem,      $result = &Apache::lonxml::xmlparse($request, $target, $problem,
  $default.&setup_vars($target),%mystyle);   $default.&setup_vars($target),%mystyle);
   
     #$request->print("Result follows:");      #$request->print("Result follows:");
     if ($target eq 'modified') {      if ($target eq 'modified') {
       &handle_save_or_undo($request,\$problem,\$result);        &handle_save_or_undo($request,\$problem,\$result);
     } else {      } else {
         if ($target eq 'analyze') {
    $result=&Apache::lonnet::hashref2str(\%Apache::lonhomework::analyze);
    undef(%Apache::lonhomework::analyze);
         }
       #my $td=&tv_interval($t0);        #my $td=&tv_interval($t0);
       #if ( $Apache::lonxml::debug) {        #if ( $Apache::lonxml::debug) {
  #$result =~ s:</body>::;   #$result =~ s:</body>::;
Line 437  sub handler { Line 471  sub handler {
   &Apache::lonxml::debug("Permissions:$Apache::lonhomework::browse:$Apache::lonhomework::viewgrades:");    &Apache::lonxml::debug("Permissions:$Apache::lonhomework::browse:$Apache::lonhomework::viewgrades:");
   # some times multiple problemmodes are submitted, need to select    # some times multiple problemmodes are submitted, need to select
   # the last one    # the last one
   if ( defined @{ $ENV{'form.problemmode'} } ) {    if ( defined($ENV{'form.problemmode'}) &&
     &Apache::lonxml::debug("Problem Modes ".join(':',@{ $ENV{'form.problemmode'} }));         ref($ENV{'form.problemmode'}) ) {
     my @modes=@{ $ENV{'form.problemmode'} };      my $mode=$ENV{'form.problemmode'}->[-1];
     undef $ENV{'form.problemmode'};      undef $ENV{'form.problemmode'};
     $ENV{'form.problemmode'}=$modes[-1];      $ENV{'form.problemmode'}=$mode;
   }    }
   &Apache::lonxml::debug("Problem Mode ".$ENV{'form.problemmode'});    &Apache::lonxml::debug("Problem Mode ".$ENV{'form.problemmode'});
   my $file=&Apache::lonnet::filelocation("",$request->uri);    my $file=&Apache::lonnet::filelocation("",$request->uri);
Line 468  sub handler { Line 502  sub handler {
  &renderpage($request,$file);   &renderpage($request,$file);
       } elsif ($ENV{'form.problemmode'} eq 'EditXML') {        } elsif ($ENV{'form.problemmode'} eq 'EditXML') {
  &editxmlmode($request,$file);   &editxmlmode($request,$file);
         } elsif ($ENV{'form.problemmode'} eq 'Answer Distribution') {
    &analyze($request,$file);
       } else {        } else {
  &renderpage($request,$file);   &renderpage($request,$file);
       }        }
Line 477  sub handler { Line 513  sub handler {
     }      }
   } else {    } else {
     # just render the page normally outside of construction space      # just render the page normally outside of construction space
       &Apache::lonxml::debug("not construct");
     &renderpage($request,$file);      &renderpage($request,$file);
   }    }
   #my $td=&tv_interval($t0);    #my $td=&tv_interval($t0);

Removed from v.1.71  
changed lines
  Added in v.1.78


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