Diff for /loncom/homework/externalresponse.pm between versions 1.21 and 1.26

version 1.21, 2013/08/22 10:13:34 version 1.26, 2014/01/13 15:29:10
Line 173  sub start_externalresponse { Line 173  sub start_externalresponse {
 sub end_externalresponse {  sub end_externalresponse {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $result;      my $result;
       my $response;
     my $part=$Apache::inputtags::part;      my $part=$Apache::inputtags::part;
     my $id = $Apache::inputtags::response['-1'];      my $id = $Apache::inputtags::response['-1'];
     my $increment     = 1;      my $increment     = 1;
     if ($target eq 'grade') {      if ($target eq 'grade') {
         my $collaborators = $env{'form.HWCOL'.$part.'_'.$id};  
         my $previous_list= &HTML::Entities::encode($Apache::lonhomework::history{"resource.$part.$id.collaborators"},'<>&"');  
         if ($collaborators ne $previous_list) {  
 #          &Apache::lonnet::logthis("New collaborators [$collaborators] [$previous_list]");  
            $Apache::lonhomework::results{"resource.$part.$id.collaborators"}=$collaborators;  
         }  
  if (  &Apache::response::submitted('scantron') ) {   if (  &Apache::response::submitted('scantron') ) {
     my $increment=&Apache::response::scored_response($part,$id);      my $increment=&Apache::response::scored_response($part,$id);
  } elsif ( &Apache::response::submitted() ) {   } elsif ( &Apache::response::submitted() ) {
             my $response      = $env{'form.HWVAL_'.$id};              $response      = $env{'form.HWVAL_'.$id};
             my $jspart=$part;              my $jspart=$part;
             $jspart=~s/\./_/g;              $jspart=~s/\./_/g;
             my $filename = $env{'form.HWFILE'.$jspart.'_'.$id.'.filename'} ||              my $filename = $env{'form.HWFILE'.$jspart.'_'.$id.'.filename'} ||
                            $env{'form.HWFILETOOBIG'.$part.'_'.$id};                             $env{'form.HWFILETOOBIG'.$part.'_'.$id};
             my $portfiles = $env{'form.HWPORT'.$jspart.'_'.$id};              my $portfiles = $env{'form.HWPORT'.$jspart.'_'.$id};
             my @deletions = &Apache::loncommon::get_env_multiple('form.HWFILE'.$jspart.'_'.$id.'_delete');              my @deletions = &Apache::loncommon::get_env_multiple('form.HWFILE'.$jspart.'_'.$id.'_delete');
             my ($is_submit,$was_draft);              my ($is_submit,$was_draft,$externalgrade);
             if ($env{'form.HWDRAFT'.$part.'_'.$id} eq 'yes') {              if ($env{'form.HWDRAFT'.$part.'_'.$id} eq 'yes') {
                  $is_submit = 1;                   $is_submit = 1;
             }              }
             if ($Apache::lonhomework::history{"resource.$part.award"} eq 'DRAFT') {              if ($Apache::lonhomework::history{"resource.$part.award"} eq 'DRAFT') {
                 $was_draft = 1;                  $was_draft = 1;
             }              }
             if (($response =~ /[^\s]/) || ($filename =~ /[^\s]/) || ($portfiles =~ /[^\s]/) ||              if (($filename =~ /[^\s]/) || ($portfiles =~ /[^\s]/) ||
                 (@deletions > 0) || ($was_draft && $is_submit)) {                  (@deletions > 0) || ($was_draft && $is_submit)) {
                 my $award='DRAFT';                  my $award='DRAFT';
                 if ($env{'form.HWDRAFT'.$part.'_'.$id} eq 'yes') {                  if ($env{'form.HWDRAFT'.$part.'_'.$id} eq 'yes') {
Line 243  sub end_externalresponse { Line 238  sub end_externalresponse {
                                          { $akey => $response },$adom,$aname);                                           { $akey => $response },$adom,$aname);
                     }                      }
                 }                  }
               ($award eq 'DRAFT') ? ($externalgrade = 0) : ($externalgrade =1);
               }
             if (&Apache::response::getresponse() =~ /[^\s]/) {
                  $response = &Apache::response::getresponse();
                  $externalgrade = 1;
             }  
   
             if ($externalgrade) {
               my $filesresults=0;
   # Previously turned in files
               my %previously_turned_in=();
               foreach my $file (split(/\,/,$Apache::lonhomework::history{"resource.$part.$id.portfiles"}.','.
                                            $Apache::lonhomework::history{"resource.$part.$id.uploadedurl"})) {
                  if ($file=~/\S/) {
                     $previously_turned_in{'/uploaded/'.$env{'user.domain'}.'/'.$env{'user.name'}.'/portfolio'.$file}=1;
                  }
               }
   # Currently turned in files
               my %currently_turned_in=();
              foreach my $file (split(/\,/,$Apache::lonhomework::results{"resource.$part.$id.portfiles"}.','.
                                            $Apache::lonhomework::results{"resource.$part.$id.uploadedurl"})) {
                 if ($file=~/\S/) {
                     $filesresults=1;
                     $currently_turned_in{'/uploaded/'.$env{'user.domain'}.'/'.$env{'user.name'}.'/portfolio'.$file}=1;
                  }
             }              }
     my $response = &Apache::response::getresponse();              my $filelinks=join(',',map{$_}(keys(%currently_turned_in)));
             my $filestest;              &Apache::lonnet::logthis("Previously: ".join("\n",sort(keys(%previously_turned_in))));
             my $fileshistory = $Apache::lonhomework::history{"resource.$part.$id.portfiles"};              &Apache::lonnet::logthis("Currently: ".join("\n",sort(keys(%currently_turned_in))));
             $fileshistory .=   $Apache::lonhomework::history{"resource.$part.$id.uploadedurl"};              &Apache::lonnet::logthis("File flag: ".$filesresults);
             my $filesresults = $Apache::lonhomework::results{"resource.$part.$id.portfiles"};              &Apache::lonnet::logthis("Links String: ".$filelinks);
             $filesresults .=   $Apache::lonhomework::results{"resource.$part.$id.uploadedurl"};      if ($filesresults || ( $response =~ /[^\s]/)  ) {
     if (( $response =~ /[^\s]/) ||  $filesresults || $fileshistory) {  
  my $url = &Apache::lonxml::get_param('url',$parstack,$safeeval);   my $url = &Apache::lonxml::get_param('url',$parstack,$safeeval);
  my $answer = &Apache::lonxml::get_param('answer',$parstack,$safeeval);   my $answer = &Apache::lonxml::get_param('answer',$parstack,$safeeval);
  my %form = &Apache::lonxml::get_param_var('form',$parstack,$safeeval);   my %form = &Apache::lonxml::get_param_var('form',$parstack,$safeeval);
Line 258  sub end_externalresponse { Line 277  sub end_externalresponse {
  $form{'LONCAPA_correct_answer'}=$answer;   $form{'LONCAPA_correct_answer'}=$answer;
  $form{'LONCAPA_language'}=   $form{'LONCAPA_language'}=
     &Apache::lonnet::metadata($ENV{'REQUEST_URI'},'language');      &Apache::lonnet::metadata($ENV{'REQUEST_URI'},'language');
                 $form{'LONCAPA_student_submitted_files_results'} = $filesresults;                  $form{'LONCAPA_student_submitted_files'} = $filelinks;
                 $form{'LONCAPA_student_submitted_files_history'} = $fileshistory;  
  &Apache::lonxml::debug("Asking $url, with:");   &Apache::lonxml::debug("Asking $url, with:");
  &Apache::lonhomework::showhash(%form);   &Apache::lonhomework::showhash(%form);
                 my $udom = &Apache::lonnet::EXT('user.domain');                  my $udom = &Apache::lonnet::EXT('user.domain');
Line 268  sub end_externalresponse { Line 286  sub end_externalresponse {
                 my %record = &Apache::lonnet::restore($symb,$env{'request.course.id'},$udom,$uname);                  my %record = &Apache::lonnet::restore($symb,$env{'request.course.id'},$udom,$uname);
  my $ua = LWP::UserAgent->new;   my $ua = LWP::UserAgent->new;
  my $res = $ua->request(POST $url, \%form);   my $res = $ua->request(POST $url, \%form);
  my %previous = &Apache::response::check_for_previous($response,  
      $part,$id);  
  %Apache::loncapagrade::results=();   %Apache::loncapagrade::results=();
  $Apache::lonhomework::results{"resource.$part.$id.submission"}=$response;   $Apache::lonhomework::results{"resource.$part.$id.submission"}=$response;
  if ($res->is_error()) {   if ($res->is_error()) {
Line 286  sub end_externalresponse { Line 302  sub end_externalresponse {
  $Apache::loncapagrade::results{$key};   $Apache::loncapagrade::results{$key};
  }   }
                 $Apache::externalresponse::message=$Apache::loncapagrade::results{'message'};                  $Apache::externalresponse::message=$Apache::loncapagrade::results{'message'};
  &Apache::response::handle_previous(\%previous,  
    $Apache::loncapagrade::results{'awarddetail'});  
                 if ($Apache::loncapagrade::results{'awarddetail'} eq 'ASSIGNED_SCORE') {                  if ($Apache::loncapagrade::results{'awarddetail'} eq 'ASSIGNED_SCORE') {
                    $Apache::lonhomework::results{"resource.$part.$id.awarded"}=                     $Apache::lonhomework::results{"resource.$part.$id.awarded"}=
                         1.*$Apache::loncapagrade::results{"awarded"};                          1.*$Apache::loncapagrade::results{"awarded"};
                 }                  }
                   my $handbackurl = $Apache::loncapagrade::results{'handbackurl'}
                   &Apache::lonnet::logthis("handbackurl: ". $Apache::loncapagrade::results{'handbackurl'});
  &Apache::lonxml::debug("response of");   &Apache::lonxml::debug("response of");
  &Apache::lonhomework::showhash(%$res);   &Apache::lonhomework::showhash(%$res);
  &Apache::lonxml::debug("capagrade of");   &Apache::lonxml::debug("capagrade of");
Line 300  sub end_externalresponse { Line 316  sub end_externalresponse {
  &Apache::lonhomework::showhash(%Apache::lonhomework::results);   &Apache::lonhomework::showhash(%Apache::lonhomework::results);
     }      }
         }          }
         }
     }      }
     if ($target eq 'web')  {      if ($target eq 'web')  {
         &Apache::response::setup_prior_tries_hash(\&Apache::essayresponse::format_prior_response,          &Apache::response::setup_prior_tries_hash(\&Apache::essayresponse::format_prior_response,
Line 307  sub end_externalresponse { Line 324  sub end_externalresponse {
                                                    'uploadedurl']);                                                     'uploadedurl']);
         if (&Apache::response::show_answer()) {          if (&Apache::response::show_answer()) {
            $result.='<table border="1"><tr><th>'.&mt('Your answer:').'</th></tr><tr><td><pre>'.             $result.='<table border="1"><tr><th>'.&mt('Your answer:').'</th></tr><tr><td><pre>'.
                     $Apache::lonhomework::history{"resource.$part.$id.submission"}.                      &HTML::Entities::encode(
                           $Apache::lonhomework::history{"resource.$part.$id.submission"},'"<>&').
                     '</pre></td></table><br />'.&Apache::lonxml::get_param('answerdisplay',$parstack,$safeeval).                      '</pre></td></table><br />'.&Apache::lonxml::get_param('answerdisplay',$parstack,$safeeval).
                     '<br />';                      '<br />';
         }          }

Removed from v.1.21  
changed lines
  Added in v.1.26


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