--- loncom/homework/externalresponse.pm 2013/08/22 10:13:34 1.21 +++ loncom/homework/externalresponse.pm 2013/08/22 13:58:21 1.23 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # external style responses # -# $Id: externalresponse.pm,v 1.21 2013/08/22 10:13:34 kruse Exp $ +# $Id: externalresponse.pm,v 1.23 2013/08/22 13:58:21 kruse Exp $ # # Copyright Michigan State University Board of Trustees # @@ -177,12 +177,6 @@ sub end_externalresponse { my $id = $Apache::inputtags::response['-1']; my $increment = 1; 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') ) { my $increment=&Apache::response::scored_response($part,$id); } elsif ( &Apache::response::submitted() ) { @@ -245,12 +239,31 @@ sub end_externalresponse { } } my $response = &Apache::response::getresponse(); - my $filestest; - my $fileshistory = $Apache::lonhomework::history{"resource.$part.$id.portfiles"}; - $fileshistory .= $Apache::lonhomework::history{"resource.$part.$id.uploadedurl"}; - my $filesresults = $Apache::lonhomework::results{"resource.$part.$id.portfiles"}; - $filesresults .= $Apache::lonhomework::results{"resource.$part.$id.uploadedurl"}; - if (( $response =~ /[^\s]/) || $filesresults || $fileshistory) { + + 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 $filelinks=join(',',map{$_}(keys(%currently_turned_in))); + &Apache::lonnet::logthis("Previously: ".join("\n",sort(keys(%previously_turned_in)))); + &Apache::lonnet::logthis("Currently: ".join("\n",sort(keys(%currently_turned_in)))); + &Apache::lonnet::logthis("File flag: ".$filesresults); + &Apache::lonnet::logthis("Links String: ".$filelinks); + if (( $response =~ /[^\s]/) || $filesresults ) { my $url = &Apache::lonxml::get_param('url',$parstack,$safeeval); my $answer = &Apache::lonxml::get_param('answer',$parstack,$safeeval); my %form = &Apache::lonxml::get_param_var('form',$parstack,$safeeval); @@ -258,8 +271,7 @@ sub end_externalresponse { $form{'LONCAPA_correct_answer'}=$answer; $form{'LONCAPA_language'}= &Apache::lonnet::metadata($ENV{'REQUEST_URI'},'language'); - $form{'LONCAPA_student_submitted_files_results'} = $filesresults; - $form{'LONCAPA_student_submitted_files_history'} = $fileshistory; + $form{'LONCAPA_student_submitted_files'} = $filelinks; &Apache::lonxml::debug("Asking $url, with:"); &Apache::lonhomework::showhash(%form); my $udom = &Apache::lonnet::EXT('user.domain'); @@ -268,8 +280,6 @@ sub end_externalresponse { my %record = &Apache::lonnet::restore($symb,$env{'request.course.id'},$udom,$uname); my $ua = LWP::UserAgent->new; my $res = $ua->request(POST $url, \%form); - my %previous = &Apache::response::check_for_previous($response, - $part,$id); %Apache::loncapagrade::results=(); $Apache::lonhomework::results{"resource.$part.$id.submission"}=$response; if ($res->is_error()) { @@ -286,8 +296,6 @@ sub end_externalresponse { $Apache::loncapagrade::results{$key}; } $Apache::externalresponse::message=$Apache::loncapagrade::results{'message'}; - &Apache::response::handle_previous(\%previous, - $Apache::loncapagrade::results{'awarddetail'}); if ($Apache::loncapagrade::results{'awarddetail'} eq 'ASSIGNED_SCORE') { $Apache::lonhomework::results{"resource.$part.$id.awarded"}= 1.*$Apache::loncapagrade::results{"awarded"};