--- loncom/homework/grades.pm 2007/06/22 23:45:19 1.418 +++ loncom/homework/grades.pm 2007/07/04 18:37:30 1.419 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Grading handler # -# $Id: grades.pm,v 1.418 2007/06/22 23:45:19 albertel Exp $ +# $Id: grades.pm,v 1.419 2007/07/04 18:37:30 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -6211,7 +6211,8 @@ sub process_clicker { my $pcorrect=&mt("Percentage points for correct solution"); my $pincorrect=&mt("Percentage points for incorrect solution"); my $selectform=&Apache::loncommon::select_form($env{'form.upfiletype'},'upfiletype', - ('iclicker' => 'i>clicker')); + ('iclicker' => 'i>clicker', + 'interwrite' => 'interwrite PRS')); $symb = &Apache::lonenc::check_encrypt($symb); $result.=< @@ -6359,6 +6360,9 @@ ENDHEADER if ($env{'form.upfiletype'} eq 'iclicker') { ($errormsg,$number)=&iclicker_eval(\@questiontitles,\%responses); } + if ($env{'form.upfiletype'} eq 'interwrite') { + ($errormsg,$number)=&interwrite_eval(\@questiontitles,\%responses); + } $result.='
'.&mt('Found [_1] question(s)',$number).'
'. ''. &mt('Awarding [_1] percent for correct and [_2] percent for incorrect responses', @@ -6437,6 +6441,33 @@ sub iclicker_eval { } return ($errormsg,$number); } + +sub interwrite_eval { + my ($questiontitles,$responses)=@_; + my $number=0; + my $errormsg=''; + foreach my $line (split(/[\n\r]/,$env{'form.upfile'})) { + my %components=&Apache::loncommon::record_sep($line); + my @entries=map {$components{$_}} (sort(keys(%components))); + if ($entries[0] eq 'Question') { + for (my $i=3;$i<$#entries;$i+=6) { + $$questiontitles[$number]=$entries[$i]; + $number++; + } + } + if ($entries[0]=~/^\#/) { + my $id=$entries[0]; + my @idresponses; + $id=~s/^[\#0]+//; + for (my $i=0;$i<$number;$i++) { + my $idx=3+$i*6; + push(@idresponses,$entries[$idx]); + } + $$responses{$id}=join(',',@idresponses); + } + } + return ($errormsg,$number); +} sub assign_clicker_grades { my ($r)=@_;