--- loncom/homework/grades.pm 2013/07/15 16:13:12 1.694
+++ loncom/homework/grades.pm 2014/01/14 17:49:30 1.711
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.694 2013/07/15 16:13:12 bisitz Exp $
+# $Id: grades.pm,v 1.711 2014/01/14 17:49:30 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -908,17 +908,17 @@ LISTJAVASCRIPT
$submission_options.=
''.
' '.
- &mt('last submission only').' '."\n".
+ &mt('last submission').' '."\n".
''.
' '.
- &mt('last submission & parts info').' '."\n".
+ &mt('last submission with details').' '."\n".
''.
' '.
- &mt('by dates and submissions').' '."\n".
+ &mt('all submissions').''."\n".
''.
' '.
- &mt('all details').' ';
- $gradeTable .= &Apache::lonhtmlcommon::row_title(&mt('Submissions'))
+ &mt('all submissions with details').'';
+ $gradeTable .= &Apache::lonhtmlcommon::row_title(&mt('View Submissions'))
.$submission_options
.&Apache::lonhtmlcommon::row_closure();
@@ -1084,7 +1084,7 @@ LISTJAVASCRIPT
if ($submitonly eq 'graded' ) { $submissions = 'ungraded submissions'; }
if ($submitonly eq 'queued' ) { $submissions = 'queued submissions'; }
$gradeTable=' '.
- &mt('No '.$submissions.' found for this resource for any students. ([_1] students checked for '.$submissions.')',
+ &mt('No '.$submissions.' found for this resource for any students. ([quant,_1,student] checked for '.$submissions.')',
$num_students).
' ';
}
@@ -1702,7 +1702,7 @@ sub gradeBox {
$wgt = ($wgt > 0 ? $wgt : '1');
my $score = ($$record{'resource.'.$partid.'.awarded'} eq '' ?
'' : &compute_points($$record{'resource.'.$partid.'.awarded'},$wgt));
- my $result=' '."\n";
+ my $data_WGT=' '."\n";
my $display_part= &get_display_part($partid,$symb);
my %last_resets = &get_last_resets($symb,$env{'request.course.id'},
[$partid]);
@@ -1710,7 +1710,7 @@ sub gradeBox {
if ($last_resets{$partid}) {
$aggtries = &get_num_tries($record,$last_resets{$partid},$partid);
}
- $result.=&Apache::loncommon::start_data_table_row();
+ my $result=&Apache::loncommon::start_data_table_row();
my $ctr = 0;
my $thisweight = 0;
my $increment = &get_increment();
@@ -1747,8 +1747,9 @@ sub gradeBox {
$result .=
- '
'
- .'
'.&mt('Date Submitted:').' '.$$timestamp."\n";
-
- my %seenparts;
- my @part_response_id = &flatten_responseType($responseType);
- foreach my $part (@part_response_id) {
- next if ($env{'form.lastSub'} eq 'hdgrade'
+ if ($$timestamp eq '') {
+ $lastsubonly.='
'.$$string[0].'
';
+ } else {
+ $lastsubonly =
+ '
'
+ .'
'.&mt('Date Submitted:').' '.$$timestamp."\n";
+
+ my %seenparts;
+ my @part_response_id = &flatten_responseType($responseType);
+ foreach my $part (@part_response_id) {
+ next if ($env{'form.lastSub'} eq 'hdgrade'
&& $$handgrade{$$part[0].'_'.$$part[1]} ne 'yes');
- my ($partid,$respid) = @{ $part };
- my $display_part=&get_display_part($partid,$symb);
- if ($env{"form.$uname:$udom:$partid:submitted_by"}) {
- if (exists($seenparts{$partid})) { next; }
- $seenparts{$partid}=1;
- my $submitby='
Part: '.$display_part.
- '
Collaborative submission by: '.
- '
'.
- $$fullname{$env{"form.$uname:$udom:$partid:submitted_by"}}.' ';
- $request->print($submitby);
- next;
- }
- my $responsetype = $responseType->{$partid}->{$respid};
- if (!exists($record{"resource.$partid.$respid.submission"})) {
- $lastsubonly.="\n".'
'.
- ''.&mt('Part: [_1]',$display_part).' '.
- ' '.
- '('.&mt('Response ID: [_1]',$respid).')'.
- ' '.
- ''.&mt('Nothing submitted - no attempts.').'
';
- next;
- }
- foreach my $submission (@$string) {
- my ($partid,$respid) = ($submission =~ /^resource\.([^\.]*)\.([^\.]*)\.submission/);
- if (join('_',@{$part}) ne ($partid.'_'.$respid)) { next; }
- my ($ressub,$hide,$subval) = split(/:/,$submission,3);
- # Similarity check
- my $similar='';
- my ($type,$trial,$rndseed);
- if ($hide eq 'rand') {
- $type = 'randomizetry';
- $trial = $record{"resource.$partid.tries"};
- $rndseed = $record{"resource.$partid.rndseed"};
- }
- if($env{'form.checkPlag'}){
- my ($oname,$odom,$ocrsid,$oessay,$osim)=
- &most_similar($uname,$udom,$symb,$subval);
- if ($osim) {
- $osim=int($osim*100.0);
- my %old_course_desc =
- &Apache::lonnet::coursedescription($ocrsid,
- {'one_time' => 1});
-
- if ($hide eq 'anon') {
- $similar='
'.&mt("Essay was found to be similar to another essay submitted for this assignment.").' '.
- &mt('As the current submission is for an anonymous survey, no other details are available.').' ';
- } else {
- $similar="
".
- &mt('Essay is [_1]% similar to an essay by [_2] in course [_3] (course id [_4]:[_5])',
- $osim,
- &Apache::loncommon::plainname($oname,$odom).' ('.$oname.':'.$odom.')',
+ my ($partid,$respid) = @{ $part };
+ my $display_part=&get_display_part($partid,$symb);
+ if ($env{"form.$uname:$udom:$partid:submitted_by"}) {
+ if (exists($seenparts{$partid})) { next; }
+ $seenparts{$partid}=1;
+ $request->print(
+ ''.&mt('Part: [_1]',$display_part).' '.
+ ' '.&mt('Collaborative submission by: [_1]',
+ ''.
+ $$fullname{$env{"form.$uname:$udom:$partid:submitted_by"}}.' ').
+ ' ');
+ next;
+ }
+ my $responsetype = $responseType->{$partid}->{$respid};
+ if (!exists($record{"resource.$partid.$respid.submission"})) {
+ $lastsubonly.="\n".' '.
+ ''.&mt('Part: [_1]',$display_part).' '.
+ ' '.
+ '('.&mt('Response ID: [_1]',$respid).')'.
+ ' '.
+ ''.&mt('Nothing submitted - no attempts.').'
';
+ next;
+ }
+ foreach my $submission (@$string) {
+ my ($partid,$respid) = ($submission =~ /^resource\.([^\.]*)\.([^\.]*)\.submission/);
+ if (join('_',@{$part}) ne ($partid.'_'.$respid)) { next; }
+ my ($ressub,$hide,$subval) = split(/:/,$submission,3);
+ # Similarity check
+ my $similar='';
+ my ($type,$trial,$rndseed);
+ if ($hide eq 'rand') {
+ $type = 'randomizetry';
+ $trial = $record{"resource.$partid.tries"};
+ $rndseed = $record{"resource.$partid.rndseed"};
+ }
+ if ($env{'form.checkPlag'}) {
+ my ($oname,$odom,$ocrsid,$oessay,$osim)=
+ &most_similar($uname,$udom,$symb,$subval);
+ if ($osim) {
+ $osim=int($osim*100.0);
+ my %old_course_desc =
+ &Apache::lonnet::coursedescription($ocrsid,
+ {'one_time' => 1});
+
+ if ($hide eq 'anon') {
+ $similar=''.&mt("Essay was found to be similar to another essay submitted for this assignment.").' '.
+ &mt('As the current submission is for an anonymous survey, no other details are available.').' ';
+ } else {
+ $similar="".
+ &mt('Essay is [_1]% similar to an essay by [_2] in course [_3] (course id [_4]:[_5])',
+ $osim,
+ &Apache::loncommon::plainname($oname,$odom).' ('.$oname.':'.$odom.')',
$old_course_desc{'description'},
$old_course_desc{'num'},
$old_course_desc{'domain'}).
' '.
&keywords_highlight($oessay).
' ';
- }
- }
- }
- my $order=&get_order($partid,$respid,$symb,$uname,$udom,
- undef,$type,$trial,$rndseed);
- if ($env{'form.lastSub'} eq 'lastonly' ||
- ($env{'form.lastSub'} eq 'hdgrade' &&
+ }
+ }
+ }
+ my $order=&get_order($partid,$respid,$symb,$uname,$udom,
+ undef,$type,$trial,$rndseed);
+ if ($env{'form.lastSub'} eq 'lastonly' || $env{'form.lastSub'} eq 'datesub' || $env{'form.lastSub'} =~ /^(last|all)$/ || ($env{'form.lastSub'} eq 'hdgrade' &&
$$handgrade{$$part[0].'_'.$$part[1]} eq 'yes')) {
- my $display_part=&get_display_part($partid,$symb);
- $lastsubonly.=''.
- '
'.&mt('Part: [_1]',$display_part).' '.
- '
'.
- '('.&mt('Response ID: [_1]',$respid).')'.
- ' ';
- my $files=&get_submitted_files($udom,$uname,$partid,$respid,\%record);
- if (@$files) {
- if ($hide eq 'anon') {
- $lastsubonly.='
'.&mt('[quant,_1,file] uploaded to this anonymous survey',scalar(@{$files}));
- } else {
- $lastsubonly.='
'.&mt('Like all files provided by users, this file may contain viruses').' ';
- foreach my $file (@$files) {
- &Apache::lonnet::allowuploaded('/adm/grades',$file);
- $lastsubonly.='
'.$file.'';
- }
- }
- $lastsubonly.='
';
- }
+ my $display_part=&get_display_part($partid,$symb);
+ $lastsubonly.='
'.
+ '
'.&mt('Part: [_1]',$display_part).' '.
+ '
'.
+ '('.&mt('Response ID: [_1]',$respid).')'.
+ ' ';
+ my $files=&get_submitted_files($udom,$uname,$partid,$respid,\%record);
+
+ if (@$files) {
if ($hide eq 'anon') {
- $lastsubonly.='
'.&mt('Anonymous Survey').' ';
+ $lastsubonly.='
'.&mt('[quant,_1,file] uploaded to this anonymous survey',scalar(@{$files}));
} else {
- $lastsubonly.='
'.&mt('Submitted Answer:').' '.
- &cleanRecord($subval,$responsetype,$symb,$partid,
- $respid,\%record,$order,undef,$uname,$udom,$type,$trial,$rndseed);
+ $lastsubonly.='
'.'
'.&mt('Submitted Files:').' '
+ .'
';
+ if(@$files == 1) {
+ $lastsubonly .= &mt('Like all files provided by users, this file may contain viruses!');
+ } else {
+ $lastsubonly .= &mt('Like all files provided by users, these files may contain viruses!');
+ }
+ $lastsubonly .= ' ';
+ foreach my $file (@$files) {
+ &Apache::lonnet::allowuploaded('/adm/grades',$file);
+ $lastsubonly.='
'.$file.'';
+ }
}
- if ($similar) {$lastsubonly.="
$similar\n";}
- $lastsubonly.='
';
- }
+ $lastsubonly.='
';
+ }
+ if ($hide eq 'anon') {
+ $lastsubonly.='
'.&mt('Anonymous Survey').' ';
+ } else {
+ $lastsubonly.='
'.&mt('Submitted Answer:').' '.
+ &cleanRecord($subval,$responsetype,$symb,$partid,
+ $respid,\%record,$order,undef,$uname,$udom,$type,$trial,$rndseed);
+ }
+ if ($similar) {$lastsubonly.="
$similar\n";}
+ $lastsubonly.='
';
}
- }
- $lastsubonly.=' '."\n"; # End: LC_grade_submissions_body
+ }
}
- $request->print($lastsubonly);
- } elsif ($env{'form.lastSub'} eq 'datesub') {
+ $lastsubonly.='
'."\n"; # End: LC_grade_submissions_body
+ }
+ $request->print($lastsubonly);
+ if ($env{'form.lastSub'} eq 'datesub') {
my ($parts,$handgrade,$responseType) = &response_type($symb,\$res_error);
$request->print(&displaySubByDates($symb,\%record,$parts,$responseType,$checkIcon,$uname,$udom));
- } elsif ($env{'form.lastSub'} =~ /^(last|all)$/) {
- $request->print(&Apache::loncommon::get_previous_attempt($symb,$uname,$udom,
+ }
+ if ($env{'form.lastSub'} =~ /^(last|all)$/) {
+ $request->print(&Apache::loncommon::get_previous_attempt($symb,$uname,$udom,
$env{'request.course.id'},
$last,'.submission',
'Apache::grades::keywords_highlight'));
@@ -2300,10 +2311,10 @@ KEYWORDS
' ('.
+ &mt('Compose message to student'.(scalar(@$col_fullnames) >= 1 ? 's' : '')).' ('.
&mt('incl. grades').' )'.
- ' '."\n".
+ ' '."\n".
' ('.
&mt('Message will be sent when you click on Save & Next below.').")\n";
$result.='';
@@ -3584,9 +3595,10 @@ sub viewgrades {
$partid.'" size="4" '.'onchange="javascript:writePoint(\''.
$partid.'\','.$weight{$partid}.',\'textval\')" /> /'.
$weight{$partid}.' '.&mt('(problem weight)').''."\n";
- $line.= ''.&mt('Grade Status').': '.
+ $line.= ''.&mt('Grade Status').': '.
+ ' '.
' '.
''.&mt('excused').' '.
''.&mt('reset status').' '.
@@ -3635,8 +3647,8 @@ sub viewgrades {
my $display_part=&get_display_part($partid,$symb);
if ($display =~ /^Partial Credit Factor/) {
$result.=''.
- &mt('Score Part: [_1] (weight = [_2])',
- $display_part,$weight{$partid}).' '."\n";
+ &mt('Score Part: [_1][_2](weight = [_3])',
+ $display_part,' ',$weight{$partid}).''."\n";
next;
} else {
@@ -4131,11 +4143,12 @@ sub csvupload_fields {
sub csvuploadmap_footer {
my ($request,$i,$keyfields) =@_;
+ my $buttontext = &mt('Assign Grades');
$request->print(<
-
+
ENDPICK
}
@@ -4256,7 +4269,7 @@ ENDPICK
}
# FIXME do a check for any duplicated user ids...
# FIXME do a check for any invalid user ids?...
- $request->print('
+ $request->print('
'."\n");
return '';
}
@@ -4444,48 +4457,68 @@ LISTJAVASCRIPT
my ($curpage) =&Apache::lonnet::decode_symb($symb);
# my ($curpage,$mapId) =&Apache::lonnet::decode_symb($symb);
# my $type=($curpage =~ /\.(page|sequence)/);
- my $select = ''."\n";
+
+ # Collection of hidden fields
my $ctr=0;
foreach (@$titles) {
- my ($minder,$showtitle) = ($_ =~ /(\d+)\.(.*)/);
- $select.=''.$showtitle.' '."\n";
- $ctr++;
+ my ($minder,$showtitle) = ($_ =~ /(\d+)\.(.*)/);
+ $result.=' '."\n";
+ $result.=' '."\n";
+ $ctr++;
}
- $select.= ' ';
- $result.=' '.&mt('Problems from').': '.$select." \n";
+ $result.=' '."\n".
+ ' '."\n";
+ $result.=&build_section_inputs();
+ my $stu_status = join(':',&Apache::loncommon::get_env_multiple('form.Status'));
+ $result.=' '."\n".
+ ' '."\n".
+ ' '."\n";
+
+ # Show grading options
+ $result.=&Apache::lonhtmlcommon::start_pick_box();
+ my $select = ''."\n";
$ctr=0;
foreach (@$titles) {
my ($minder,$showtitle) = ($_ =~ /(\d+)\.(.*)/);
- $result.=' '."\n";
- $result.=' '."\n";
+ $select.=''.$showtitle.' '."\n";
$ctr++;
}
- $result.=' '."\n".
- ' '."\n";
+ $select.= ' ';
- my $options =
- ' '.&mt('no').' '."\n".
- ' '.&mt('yes').' '." \n";
- $result.=' '.&mt('View Problem Text').': '.$options;
-
- $options =
- ' '.&mt('none').' '."\n".
- ' '.&mt('by dates and submissions').' '."\n".
- ' '.&mt('all details').' '."\n";
- $result.=' '.&mt('Submissions').': '.$options;
+ $result.=
+ &Apache::lonhtmlcommon::row_title(&mt('Problems from'))
+ .$select
+ .&Apache::lonhtmlcommon::row_closure();
+
+ $result.=
+ &Apache::lonhtmlcommon::row_title(&mt('View Problem Text'))
+ .' '.&mt('no').' '."\n"
+ .' '
+ .&mt('yes').' '."\n"
+ .&Apache::lonhtmlcommon::row_closure();
+
+ $result.=
+ &Apache::lonhtmlcommon::row_title(&mt('View Submissions'))
+ .' '
+ .&mt('none').' '."\n"
+ .' '.&mt('all submissions').' '."\n"
+ .' '
+ .&mt('all submissions with details').' '
+ .&Apache::lonhtmlcommon::row_closure();
- $result.=&build_section_inputs();
- my $stu_status = join(':',&Apache::loncommon::get_env_multiple('form.Status'));
- $result.=' '."\n".
- ' '."\n".
- ' '." \n";
-
- $result.=' '.&mt('Use CODE').': '."\n";
+ $result.=
+ &Apache::lonhtmlcommon::row_title(&mt('Use CODE'))
+ .' '
+ .&Apache::lonhtmlcommon::row_closure(1)
+ .&Apache::lonhtmlcommon::end_pick_box();
- $result.=' '."\n";
$request->print($result);
@@ -4630,7 +4663,7 @@ sub displayPage {
''."\n".
&Apache::loncommon::start_data_table().
&Apache::loncommon::start_data_table_header_row().
- ' Prob. '.
+ ''.&mt('Prob.').' '.
' '.($env{'form.vProb'} eq 'no' ? &mt('Title') : &mt('Problem Text')).'/'.&mt('Grade').' '.
&Apache::loncommon::end_data_table_header_row();
@@ -5054,7 +5087,7 @@ like.
Next each scanline is checked for any errors of either 'missing
bubbles' (it's an error because it may have been mis-scanned
because too light bubbling), 'double bubble' (each bubble line should
-have no more that one letter picked), invalid or duplicated CODE,
+have no more than one letter picked), invalid or duplicated CODE,
invalid student/employee ID
If the CODE option is used that determines the randomization of the
@@ -5552,7 +5585,7 @@ sub scantron_selectphase {
=item get_scantron_config
- Parse and return the scantron configuration line selected as a
+ Parse and return the bubblesheet configuration line selected as a
hash of configuration file fields.
Arguments:
@@ -5836,12 +5869,12 @@ sub digits_to_letters {
=item scantron_parse_scanline
- Decodes a scanline from the selected scantron file
+ Decodes a scanline from the selected bubblesheet file
Arguments:
- line - The text of the scantron file line to process
+ line - The text of the bubblesheet file line to process
whichline - Line number
- scantron_config - Hash describing the format of the scantron lines.
+ scantron_config - Hash describing the format of the bubblesheet lines.
scan_data - Hash of extra information about the scanline
(see scantron_getfile for more information)
just_header - True if should not process question answers but only
@@ -6408,7 +6441,11 @@ sub scantron_process_corrections {
}
}
if ($err) {
- $r->print("Unable to accept last correction, an error occurred :$errmsg: ");
+ $r->print(
+ ''
+ .&mt('Unable to accept last correction, an error occurred: [_1]',
+ $errmsg)
+ .'
');
} else {
&scantron_put_line($scanlines,$scan_data,$which,$line,$skip);
&scantron_putfile($scanlines,$scan_data);
@@ -6544,7 +6581,7 @@ sub scantron_warning_screen {
return ('
-'.&mt('Please double check the information below before clicking on \'[_1]\'',&mt($button_text)).'
+'.&mt("Please double check the information below before clicking on '[_1]'",&mt($button_text)).'
'.&mt('Sequence to be Graded:').' '.$title.'
@@ -6656,7 +6693,7 @@ sub scantron_validate_file {
if (!$symb) {return '';}
my $default_form_data=&defaultFormData($symb);
- # do the detection of only doing skipped records first befroe we delete
+ # do the detection of only doing skipped records first before we delete
# them when doing the corrections reset
if ($env{'form.scantron_options_redo'} ne 'redo_skipped_ready') {
&reset_skipping_status();
@@ -8412,11 +8449,11 @@ SCANTRONFORM
&Apache::loncommon::end_data_table_header_row()."\n".
&Apache::loncommon::start_data_table_row().
''.&mt('Bubblesheet').' '.
- ''.$studentdata.' '.
+ ''.$studentdata.' '.
&Apache::loncommon::end_data_table_row().
&Apache::loncommon::start_data_table_row().
''.&mt('Stored submissions').' '.
- ''.$studentrecord.' '."\n".
+ ''.$studentrecord.' '."\n".
&Apache::loncommon::end_data_table_row().
&Apache::loncommon::end_data_table().'');
} else {
@@ -8651,23 +8688,30 @@ sub scantron_upload_scantron_data_save {
}
my %coursedata=&Apache::lonnet::coursedescription($env{'form.domainid'}.'_'.$env{'form.courseid'});
my $uploadedfile;
- $r->print(''.&mt("Uploading file to [_1]",$coursedata{'description'}).' ');
+ $r->print(''.&mt('Uploading file to [_1]','"'.$coursedata{'description'}.'"').'
');
if (length($env{'form.upfile'}) < 2) {
- $r->print(&mt('[_1]Error:[_2] The file you attempted to upload, [_3] contained no information. Please check that you entered the correct filename.','',' ',''.&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"').' '));
+ $r->print(
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('The file: [_1] you attempted to upload contained no information. Please check that you entered the correct filename.',
+ ''.&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"').' '),1));
} else {
my $result =
&Apache::lonnet::userfileupload('upfile','','scantron','','','',
$env{'form.courseid'},$env{'form.domainid'});
- if ($result =~ m{^/uploaded/}) {
- $r->print(&mt('[_1]Success:[_2] Successfully uploaded [_3] bytes of data into location: [_4]',
- '',' ',(length($env{'form.upfile'})-1),
- ''.$result.' '));
+ if ($result =~ m{^/uploaded/}) {
+ $r->print(
+ &Apache::lonhtmlcommon::confirm_success(&mt('Upload successful')).' '.
+ &mt('Uploaded [_1] bytes of data into location: [_2]',
+ (length($env{'form.upfile'})-1),
+ ''.$result.' '));
($uploadedfile) = ($result =~ m{/([^/]+)$});
$r->print(&validate_uploaded_scantron_file($env{'form.domainid'},
$env{'form.courseid'},$uploadedfile));
- } else {
- $r->print(&mt('[_1]Error:[_2] An error ([_3]) occurred when attempting to upload the file, [_4]',
- '',' ',$result,
+ } else {
+ $r->print(
+ &Apache::lonhtmlcommon::confirm_success(&mt('Upload failed'),1).' '.
+ &mt('An error ([_1]) occurred when attempting to upload the file: [_2]',
+ $result,
''.&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"').' '));
}
}
@@ -8689,7 +8733,7 @@ sub validate_uploaded_scantron_file {
my $output;
if (@lines) {
my (%counts,$max_match_format);
- my ($max_match_count,$max_match_pct) = (0,0);
+ my ($found_match_count,$max_match_count,$max_match_pct) = (0,0,0);
my $classlist = &Apache::loncoursedata::get_classlist($cdom,$cname);
my %idmap = &username_to_idmap($classlist);
foreach my $key (keys(%idmap)) {
@@ -8732,6 +8776,7 @@ sub validate_uploaded_scantron_file {
if (($max_match_format eq '') || ($percent_match > $max_match_pct)) {
$max_match_pct = $percent_match;
$max_match_format = $key;
+ $found_match_count = $counts{$key}{'found'};
$max_match_count = $counts{$key}{'total'};
}
}
@@ -8750,17 +8795,40 @@ sub validate_uploaded_scantron_file {
}
}
my $showpct = sprintf("%.0f",$max_match_pct).'%';
- $output .= ' '.&mt('Comparison of student IDs in the uploaded file with the course roster found matches for [_1] of the [_2] entries in the file (for the format defined for [_3]).',''.$showpct.' ',''.$max_match_count.' ',$format_descs).
- ' '.&mt('A low percentage of matches results from one of the following:').''.
- ''.&mt('The file was uploaded to the wrong course').' '.
- ''.&mt('The data are not in the format expected for the domain: [_1]',
- ''.$cdom.' ').' '.
- ''.&mt('Students did not bubble their IDs, or mis-bubbled them').' '.
- ''.&mt('The course roster is not up to date').' '.
- ' ';
+ $output .= ' ';
+ if ($found_match_count == $max_match_count) {
+ # 100% matching entries
+ $output .= &Apache::lonhtmlcommon::confirm_success(
+ &mt('Comparison of student IDs: [_1] matching ([quant,_2,entry,entries])',
+ ''.$showpct.' ',$found_match_count)).' '.
+ &mt('Comparison of student IDs in the uploaded file with'.
+ ' the course roster found matches for [_1] of the [_2] entries'.
+ ' in the file (for the format defined for [_3]).',
+ ''.$showpct.' ',''.$max_match_count.' ',$format_descs);
+ } else {
+ # Not all entries matching? -> Show warning and additional info
+ $output .=
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('Comparison of student IDs: [_1] matching ([_2]/[quant,_3,entry,entries])',
+ ''.$showpct.' ',$found_match_count,$max_match_count).' '.
+ &mt('Not all entries could be matched!'),1).' '.
+ &mt('Comparison of student IDs in the uploaded file with'.
+ ' the course roster found matches for [_1] of the [_2] entries'.
+ ' in the file (for the format defined for [_3]).',
+ ''.$showpct.' ',''.$max_match_count.' ',$format_descs).
+ ''.
+ &mt('A low percentage of matches results from one of the following:').
+ '
'.
+ ''.&mt('The file was uploaded to the wrong course.').' '.
+ ''.&mt('The data is not in the format expected for the domain: [_1]',
+ ''.$cdom.' ').' '.
+ ''.&mt('Students did not bubble their IDs, or mis-bubbled them').' '.
+ ''.&mt('The course roster is not up to date.').' '.
+ ' ';
+ }
}
} else {
- $output = ''.&mt('Uploaded file contained no data').' ';
+ $output = ''.&mt('Uploaded file contained no data').'
';
}
return $output;
}
@@ -8795,7 +8863,7 @@ sub scantron_download_scantron_data {
&Apache::lonnet::allowuploaded('/adm/grades',$skipped);
$r->print('
- '.&mt('[_1]Original[_2] file as uploaded by the scantron office.',
+ '.&mt('[_1]Original[_2] file as uploaded by the bubblesheet office.',
'',' ').'
@@ -8856,7 +8924,7 @@ sub checkscantron_results {
my $count=&get_todo_count($scanlines,$scan_data);
my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,$count);
- my ($username,$domain,$started,%ordered);
+ my ($username,$domain,$started);
&scantron_get_maxbubble(\$nav_error,\%scantron_config); # Need the bubble lines array to parse.
if ($nav_error) {
$r->print(&navmap_errormsg());
@@ -9675,16 +9743,18 @@ sub process_clicker_file {
$number++;
}
$result.="
\n";
- if ($number==0) {
- $result.=''.&mt('No IDs found to determine correct answer').' ';
- return $result;
- }
+ if ($number==0) {
+ $result .=
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('No IDs found to determine correct answer'),1);
+ return $result;
+ }
}
if (length($env{'form.upfile'}) < 2) {
- $result.=&mt('[_1] Error: [_2] The file you attempted to upload, [_3] contained no information. Please check that you entered the correct filename.',
- '',
- ' ',
- ''.&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"').' ');
+ $result .=
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('The file: [_1] you attempted to upload contained no information. Please check that you entered the correct filename.',
+ ''.&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"').' '),1);
return $result;
}
@@ -9779,7 +9849,7 @@ ENDHEADER
&mt('Found [_1] registered and [_2] unregistered clickers.',$student_count,$unknown_count);
if (($env{'form.gradingmechanism'} ne 'attendance') && ($env{'form.gradingmechanism'} ne 'given')) {
if ($correct_count==0) {
- $errormsg.="Found no correct answers answers for grading!";
+ $errormsg.="Found no correct answers for grading!";
} elsif ($correct_count>1) {
$result.=''.&mt("Found [_1] entries for grading!",$correct_count).' ';
}
@@ -9951,7 +10021,7 @@ sub assign_clicker_grades {
if ($user) {
if ($users{$user}) {
$result.=''.
- &mt("More than one entry found for [_1] !",$user).
+ &mt('More than one entry found for [_1]!',''.$user.' ').
' ';
}
$users{$user}=1;