--- loncom/homework/grades.pm 2003/09/30 06:35:20 1.130.2.1.2.7
+++ loncom/homework/grades.pm 2003/09/22 20:48:21 1.142
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.130.2.1.2.7 2003/09/30 06:35:20 albertel Exp $
+# $Id: grades.pm,v 1.142 2003/09/22 20:48:21 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -218,7 +218,8 @@ sub commonJSfunctions {
}
}
} else {
- if (selectOne.selected) return selectOne.value;
+ // only one value it must be the selected one
+ return selectOne.value;
}
}
@@ -517,8 +518,8 @@ LISTJAVASCRIPT
my $saveStatus = $ENV{'form.Status'} eq '' ? 'Active' : $ENV{'form.Status'};
$ENV{'form.Status'} = $saveStatus;
- $gradeTable.=' last sub only'."\n".
- ' last sub & parts info'."\n".
+ $gradeTable.=' last submission only'."\n".
+ ' last submission & parts info'."\n".
' by dates and submissions'."\n".
' all details'."\n".
''."\n".
@@ -544,7 +545,7 @@ LISTJAVASCRIPT
$gradeTable.='" />'."\n";
-
+ $gradeTable.='Check For Plagiarism';
my (undef, undef, $fullname) = &getclasslist($getsec,'1');
$gradeTable.='
'.
'
';
@@ -1461,13 +1462,20 @@ KEYWORDS
my ($ressub,$subval) = split(/:/,$_,2);
# Similarity check
my $similar='';
- my ($oname,$odom,$ocrsid,$oessay,$osim)=&most_similar($uname,$udom,$subval);
- if ($osim) {
- $osim=int($osim*100.0);
- $similar='
Essay is '.$osim.
- '% similar to an essay by '.&Apache::loncommon::plainname($oname,$odom).
- '
'.
- &keywords_highlight($oessay).'
';
+ my $oname;
+ my $odom;
+ my $ocrsid;
+ my $oessay;
+ my $osim;
+ if($ENV{'form.checkPlag'}){
+ ($oname,$odom,$ocrsid,$oessay,$osim)=&most_similar($uname,$udom,$subval);
+ if ($osim) {
+ $osim=int($osim*100.0);
+ $similar='
Essay is '.$osim.
+ '% similar to an essay by '.&Apache::loncommon::plainname($oname,$odom).
+ '
'.
+ &keywords_highlight($oessay).'
';
+ }
}
$lastsubonly.='
Part '.
$partid.' ( ID '.$respid.
@@ -1480,7 +1488,7 @@ KEYWORDS
'this file may contain virusses ':'').
'Submitted Answer: '.
&cleanRecord($subval,$responsetype,$symb).
- '
');
+ }
if (length($array[0]) eq $$scantron_config{'Qlength'}) {
$record{"scantron.$questnum.answer"}='';
- if (!&scan_data($scan_data,"$whichline.no_bubble.$questnum")) {
- push(@{$record{"scantron.missingerror"}},$questnum);
- }
} else {
$record{"scantron.$questnum.answer"}=$alphabet[length($array[0])];
}
- if (scalar(@array) gt 2) {
- Apache->request->print("snippet is
$currentquest
");
- push(@{$record{'scantron.doubleerror'}},$questnum);
- my @ans=@array;
- my $i=length($ans[0]);shift(@ans);
- while ($#ans) {
- $i+=length($ans[0])+1;
- $record{"scantron.$questnum.answer"}.=$alphabet[$i];
- shift(@ans);
- }
- }
}
$record{'scantron.maxquest'}=$questnum;
return \%record;
@@ -3386,11 +3310,8 @@ sub scantron_add_delay {
}
sub scantron_find_student {
- my ($scantron_record,$scan_data,$idmap,$line)=@_;
+ my ($scantron_record,$idmap)=@_;
my $scanID=$$scantron_record{'scantron.ID'};
- if ($scanID =~ /^\s*$/) {
- return &scan_data($scan_data,"$line.user");
- }
foreach my $id (keys(%$idmap)) {
#Apache->request->print('
checking studnet -'.$id.'- againt -'.$scanID.'-
');
if (lc($id) eq lc($scanID)) {
@@ -3409,403 +3330,31 @@ sub scantron_filter {
return 0;
}
-sub scantron_process_corrections {
- my ($r) = @_;
- my %scantron_config=&get_scantron_config($ENV{'form.scantron_format'});
- my ($scanlines,$scan_data)=&scantron_getfile();
- my $classlist=&Apache::loncoursedata::get_classlist();
- my $which=$ENV{'form.scantron_line'};
- my $line=&scantron_get_line($scanlines,$which);
- my ($skip,$err,$errmsg);
- if ($ENV{'form.scantron_skip_record'}) {
- $skip=1;
- } elsif ($ENV{'form.scantron_corrections'} =~ /^(duplicate|incorrect)ID$/) {
- my $newstudent=$ENV{'form.scantron_username'}.':'.
- $ENV{'form.scantron_domain'};
- my $newid=$classlist->{$newstudent}->[&Apache::loncoursedata::CL_ID];
- ($line,$err,$errmsg)=
- &scantron_fixup_scanline(\%scantron_config,$scan_data,$line,$which,
- 'ID',{'newid'=>$newid,
- 'username'=>$ENV{'form.scantron_username'},
- 'domain'=>$ENV{'form.scantron_domain'}});
- } elsif ($ENV{'form.scantron_corrections'} =~ /^(missing|double)bubble$/) {
- foreach my $question (split(',',$ENV{'form.scantron_questions'})) {
- ($line,$err,$errmsg)=
- &scantron_fixup_scanline(\%scantron_config,$scan_data,$line,
- $which,'answer',
- { 'question'=>$question,
- 'response'=>$ENV{"form.scantron_correct_Q_$question"}});
- if ($err) { last; }
- }
- }
- if ($err) {
- $r->print("Unable to accept last correction, an error occurred :$errmsg:");
- } else {
- &scantron_put_line($scanlines,$which,$line,$skip);
- &scantron_putfile($scanlines,$scan_data);
- }
-}
-
+#FIXME I think I am doing this in the wrong order, I think it would be
+#better to make a several passes analyzing all of the lines in the
+#file for common errors wrong/invalid PID/username duplicated
+#PID/username, missing bubbles, double bubbles, missing/invalid CODE
+#and then get the instructor to fix all of these errors, then grade
+#the corrected one, I'll still need to catch error conditions, but
+#maybe most will taken care even before we start
sub scantron_validate_file {
my ($r) = @_;
- my ($symb,$url)=&get_symb_and_url($r);
- if (!$symb) {return '';}
- my $default_form_data=&defaultFormData($symb,$url);
-
- if ($ENV{'form.scantron_corrections'}) {
- &scantron_process_corrections($r);
- }
- #get the student pick code ready
- $r->print(&Apache::loncommon::studentbrowser_javascript());
- my $result= <
-
-
-
-
- $default_form_data
-SCANTRONFORM
- $r->print($result);
-
- my @validate_phases=( 'ID',
- 'CODE',
- 'doublebubble',
- 'missingbubbles');
- if (!$ENV{'form.validatepass'}) {
- $ENV{'form.valiadatepass'} = 0;
- }
- my $currentphase=$ENV{'form.valiadatepass'};
-
- if ($ENV{'form.scantron_selectfile'}=~m-^/-) {
- #first pass copy file to classdir
-
- }
- my $stop=0;
- while (!$stop && $currentphase < scalar(@validate_phases)) {
- $r->print("
Validating ".$validate_phases[$currentphase]."
");
- $r->rflush();
- my $which="scantron_validate_".$validate_phases[$currentphase];
- {
- no strict 'refs';
- ($stop,$currentphase)=&$which($r,$currentphase);
- }
- }
- if (!$stop) {
- $r->print("Validation process complete, click 'Submit' to start proccssing");
- $r->print('');
- } else {
- $r->print('');
- $r->print("");
- }
- $r->print('