version 1.245, 2005/02/12 03:43:06
|
version 1.252, 2005/04/01 23:56:52
|
Line 96 sub get_symb_and_url {
|
Line 96 sub get_symb_and_url {
|
sub nameUserString { |
sub nameUserString { |
my ($type,$fullname,$uname,$udom) = @_; |
my ($type,$fullname,$uname,$udom) = @_; |
if ($type eq 'header') { |
if ($type eq 'header') { |
return '<b> Fullname </b><font color="#999999">(Username)</font> '; |
return '<b> Fullname </b><font color="#999999">(Username)</font>'; |
} else { |
} else { |
return ' '.$fullname.'<font color="#999999"> ('.$uname. |
return ' '.$fullname.'<font color="#999999"> ('.$uname. |
($ENV{'user.domain'} eq $udom ? '' : ' ('.$udom.')').')</font>'; |
($ENV{'user.domain'} eq $udom ? '' : ' ('.$udom.')').')</font>'; |
Line 664 LISTJAVASCRIPT
|
Line 664 LISTJAVASCRIPT
|
$gradeTable.='To '.lc($viewgrade).' a submission or a group of submissions, click on the check box(es) '. |
$gradeTable.='To '.lc($viewgrade).' a submission or a group of submissions, click on the check box(es) '. |
'next to the student\'s name(s). Then click on the Next button.<br />'."\n". |
'next to the student\'s name(s). Then click on the Next button.<br />'."\n". |
'<input type="hidden" name="command" value="processGroup" />'."\n"; |
'<input type="hidden" name="command" value="processGroup" />'."\n"; |
|
|
|
# checkall buttons |
|
$gradeTable.=&check_script('gradesub', 'stuinfo'); |
$gradeTable.='<input type="button" '."\n". |
$gradeTable.='<input type="button" '."\n". |
'onClick="javascript:checkSelect(this.form.stuinfo);" '."\n". |
'onClick="javascript:checkSelect(this.form.stuinfo);" '."\n". |
'value="Next->" />'."\n"; |
'value="Next->" /> <br />'."\n"; |
|
$gradeTable.=&check_buttons(); |
$gradeTable.='<input type="checkbox" name="checkPlag" checked="on">Check For Plagiarism</input>'; |
$gradeTable.='<input type="checkbox" name="checkPlag" checked="on">Check For Plagiarism</input>'; |
my (undef, undef, $fullname) = &getclasslist($getsec,'1'); |
my ($classlist, undef, $fullname) = &getclasslist($getsec,'1'); |
$gradeTable.='<table border="0"><tr><td bgcolor="#777777">'. |
$gradeTable.='<table border="0"><tr><td bgcolor="#777777">'. |
'<table border="0"><tr bgcolor="#e6ffff">'; |
'<table border="0"><tr bgcolor="#e6ffff">'; |
my $loop = 0; |
my $loop = 0; |
while ($loop < 2) { |
while ($loop < 2) { |
$gradeTable.='<td><b> No.</b> </td><td><b> Select </b></td>'. |
$gradeTable.='<td><b> No.</b> </td><td><b> Select </b></td>'. |
'<td>'.&nameUserString('header').'</td>'; |
'<td>'.&nameUserString('header').' Section/Group</td>'; |
if ($ENV{'form.showgrading'} eq 'yes' && $submitonly ne 'all') { |
if ($ENV{'form.showgrading'} eq 'yes' && $submitonly ne 'all') { |
foreach (sort(@$partlist)) { |
foreach (sort(@$partlist)) { |
my $display_part=&get_display_part((split(/_/))[0],$url,$symb); |
my $display_part=&get_display_part((split(/_/))[0],$url,$symb); |
Line 695 LISTJAVASCRIPT
|
Line 699 LISTJAVASCRIPT
|
(%status) =&student_gradeStatus($url,$symb,$udom,$uname,$partlist); |
(%status) =&student_gradeStatus($url,$symb,$udom,$uname,$partlist); |
my $submitted = 0; |
my $submitted = 0; |
my $graded = 0; |
my $graded = 0; |
|
my $incorrect = 0; |
foreach (keys(%status)) { |
foreach (keys(%status)) { |
$submitted = 1 if ($status{$_} ne 'nothing'); |
$submitted = 1 if ($status{$_} ne 'nothing'); |
$graded = 1 if ($status{$_} !~ /^correct/); |
$graded = 1 if ($status{$_} =~ /^ungraded/); |
|
$incorrect = 1 if ($status{$_} =~ /^incorrect/); |
|
|
my ($foo,$partid,$foo1) = split(/\./,$_); |
my ($foo,$partid,$foo1) = split(/\./,$_); |
if ($status{'resource.'.$partid.'.submitted_by'} ne '') { |
if ($status{'resource.'.$partid.'.submitted_by'} ne '') { |
$submitted = 0; |
$submitted = 0; |
Line 708 LISTJAVASCRIPT
|
Line 714 LISTJAVASCRIPT
|
$status{'resource.'.$partid.'.submitted_by'}.'" />'; |
$status{'resource.'.$partid.'.submitted_by'}.'" />'; |
} |
} |
} |
} |
|
|
next if (!$submitted && ($submitonly eq 'yes' || |
next if (!$submitted && ($submitonly eq 'yes' || |
$submitonly eq 'incorrect' || |
$submitonly eq 'incorrect' || |
$submitonly eq 'graded')); |
$submitonly eq 'graded')); |
next if (!$graded && ($submitonly eq 'graded' || |
next if (!$graded && ($submitonly eq 'graded')); |
$submitonly eq 'incorrect')); |
next if (!$incorrect && $submitonly eq 'incorrect'); |
} |
} |
|
|
$ctr++; |
$ctr++; |
|
my $section = $classlist->{$student}->[&Apache::loncoursedata::CL_SECTION()]; |
|
|
if ( $perm{'vgr'} eq 'F' ) { |
if ( $perm{'vgr'} eq 'F' ) { |
$gradeTable.='<tr bgcolor="#ffffe6">' if ($ctr%2 ==1); |
$gradeTable.='<tr bgcolor="#ffffe6">' if ($ctr%2 ==1); |
$gradeTable.='<td align="right">'.$ctr.' </td>'. |
$gradeTable.='<td align="right">'.$ctr.' </td>'. |
'<td align="center"><input type=checkbox name="stuinfo" value="'. |
'<td align="center"><label><input type=checkbox name="stuinfo" value="'. |
$student.':'.$$fullname{$student}.' "></td>'."\n". |
$student.':'.$$fullname{$student}.':::SECTION'.$section. |
'<td>'.&nameUserString(undef,$$fullname{$student},$uname,$udom).'</td>'."\n"; |
') " /> </label></td>'."\n".'<td>'. |
|
&nameUserString(undef,$$fullname{$student},$uname,$udom). |
|
' '.$section.'</td>'."\n"; |
|
|
if ($ENV{'form.showgrading'} eq 'yes' && $submitonly ne 'all') { |
if ($ENV{'form.showgrading'} eq 'yes' && $submitonly ne 'all') { |
foreach (sort keys(%status)) { |
foreach (sort keys(%status)) { |
Line 743 LISTJAVASCRIPT
|
Line 754 LISTJAVASCRIPT
|
$gradeTable.='</tr>'; |
$gradeTable.='</tr>'; |
} |
} |
|
|
$gradeTable.='</table></td></tr></table>'. |
$gradeTable.='</table></td></tr></table>'."\n". |
'<input type="button" '. |
'<input type="button" '. |
'onClick="javascript:checkSelect(this.form.stuinfo);" '. |
'onClick="javascript:checkSelect(this.form.stuinfo);" '. |
'value="Next->" /></form>'."\n"; |
'value="Next->" /></form>'."\n"; |
Line 768 LISTJAVASCRIPT
|
Line 779 LISTJAVASCRIPT
|
} |
} |
|
|
#---- Called from the listStudents routine |
#---- Called from the listStudents routine |
|
|
|
sub check_script { |
|
my ($form, $type)=@_; |
|
my $chkallscript='<script type="text/javascript"> |
|
function checkall() { |
|
for (i=0; i<document.forms.'.$form.'.elements.length; i++) { |
|
ele = document.forms.'.$form.'.elements[i]; |
|
if (ele.name == "'.$type.'") { |
|
document.forms.'.$form.'.elements[i].checked=true; |
|
} |
|
} |
|
} |
|
|
|
function checksec() { |
|
for (i=0; i<document.forms.'.$form.'.elements.length; i++) { |
|
ele = document.forms.'.$form.'.elements[i]; |
|
string = document.forms.'.$form.'.chksec.value; |
|
if |
|
(ele.value.indexOf(":::SECTION"+string)>0) { |
|
document.forms.'.$form.'.elements[i].checked=true; |
|
} |
|
} |
|
} |
|
|
|
|
|
function uncheckall() { |
|
for (i=0; i<document.forms.'.$form.'.elements.length; i++) { |
|
ele = document.forms.'.$form.'.elements[i]; |
|
if (ele.name == "'.$type.'") { |
|
document.forms.'.$form.'.elements[i].checked=false; |
|
} |
|
} |
|
} |
|
|
|
</script>'."\n"; |
|
return $chkallscript; |
|
} |
|
|
|
sub check_buttons { |
|
my $buttons.='<input type="button" onclick="checkall()" value="Check All" />'; |
|
$buttons.='<input type="button" onclick="uncheckall()" value="Uncheck All" /> '; |
|
$buttons.='<input type="button" onclick="checksec()" value="Check Section/Group" />'; |
|
$buttons.='<input type="text" size="5" name="chksec" /> '; |
|
return $buttons; |
|
} |
|
|
# Displays the submissions for one student or a group of students |
# Displays the submissions for one student or a group of students |
sub processGroup { |
sub processGroup { |
my ($request) = shift; |
my ($request) = shift; |
Line 2006 sub processHandGrade {
|
Line 2063 sub processHandGrade {
|
# 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 %status=&student_gradeStatus($url,$symb,$udom,$uname,$partlist); |
my %status=&student_gradeStatus($url,$symb,$udom,$uname,$partlist); |
my $submitted = 0; |
my $submitted = 0; |
my $graded = 1; |
my $ungraded = 0; |
|
my $incorrect = 0; |
foreach (keys(%status)) { |
foreach (keys(%status)) { |
$submitted = 1 if ($status{$_} ne 'nothing'); |
$submitted = 1 if ($status{$_} ne 'nothing'); |
$graded = 0 if ($status{$_} =~ /^correct/); |
$ungraded = 1 if ($status{$_} =~ /^ungraded/); |
|
$incorrect = 1 if ($status{$_} =~ /^incorrect/); |
my ($foo,$partid,$foo1) = split(/\./,$_); |
my ($foo,$partid,$foo1) = split(/\./,$_); |
if ($status{'resource.'.$partid.'.submitted_by'} ne '') { |
if ($status{'resource.'.$partid.'.submitted_by'} ne '') { |
$submitted = 0; |
$submitted = 0; |
Line 2018 sub processHandGrade {
|
Line 2077 sub processHandGrade {
|
next if (!$submitted && ($submitonly eq 'yes' || |
next if (!$submitted && ($submitonly eq 'yes' || |
$submitonly eq 'incorrect' || |
$submitonly eq 'incorrect' || |
$submitonly eq 'graded')); |
$submitonly eq 'graded')); |
next if (!$graded && ($submitonly eq 'graded' || |
next if (!$ungraded && ($submitonly eq 'graded')); |
$submitonly eq 'incorrect')); |
next if (!$incorrect && $submitonly eq 'incorrect'); |
} |
} |
push @nextlist,$student if ($ctr < $ntstu); |
push @nextlist,$student if ($ctr < $ntstu); |
last if ($ctr == $ntstu); |
last if ($ctr == $ntstu); |
Line 2054 sub saveHandGrade {
|
Line 2113 sub saveHandGrade {
|
$ENV{'request.course.id'}); |
$ENV{'request.course.id'}); |
if (!&canmodify($usec)) { return('not_allowed'); } |
if (!&canmodify($usec)) { return('not_allowed'); } |
my %record = &Apache::lonnet::restore($symb,$ENV{'request.course.id'},$domain,$stuname); |
my %record = &Apache::lonnet::restore($symb,$ENV{'request.course.id'},$domain,$stuname); |
|
my @parts_graded; |
my %newrecord = (); |
my %newrecord = (); |
my ($pts,$wgt) = ('',''); |
my ($pts,$wgt) = ('',''); |
foreach (split(/:/,$ENV{'form.partlist'.$newflg})) { |
foreach (split(/:/,$ENV{'form.partlist'.$newflg})) { |
Line 2088 sub saveHandGrade {
|
Line 2148 sub saveHandGrade {
|
if ($partial eq $record{'resource.'.$_.'.awarded'}) { |
if ($partial eq $record{'resource.'.$_.'.awarded'}) { |
#do not update score for part if not changed. |
#do not update score for part if not changed. |
next; |
next; |
|
} else { |
|
push @parts_graded, $_; |
} |
} |
if ($record{'resource.'.$_.'.awarded'} ne $partial) { |
if ($record{'resource.'.$_.'.awarded'} ne $partial) { |
$newrecord{'resource.'.$_.'.awarded'} = $partial; |
$newrecord{'resource.'.$_.'.awarded'} = $partial; |
Line 2111 sub saveHandGrade {
|
Line 2173 sub saveHandGrade {
|
} |
} |
} |
} |
if (scalar(keys(%newrecord)) > 0) { |
if (scalar(keys(%newrecord)) > 0) { |
|
&version_portfiles(\%record, \@parts_graded, $ENV{'request.course.id'}, $symb, $domain, $stuname); |
&Apache::lonnet::cstore(\%newrecord,$symb, |
&Apache::lonnet::cstore(\%newrecord,$symb, |
$ENV{'request.course.id'},$domain,$stuname); |
$ENV{'request.course.id'},$domain,$stuname); |
} |
} |
return '',$pts,$wgt; |
return '',$pts,$wgt; |
} |
} |
|
|
|
# ----------- Handles creating versions for portfolio files as answers |
|
sub version_portfiles { |
|
my ($record, $parts_graded, $courseid, $symb, $domain, $stuname) = @_; |
|
my $parts = join '|', @$parts_graded; |
|
my $portfolio_root = &Apache::loncommon::propath($domain, |
|
$stuname). |
|
'/userfiles/portfolio'; |
|
foreach my $key (keys %$record) { |
|
if ($key =~ /^resource\.($parts)\./ && $key =~ /\.portfiles$/) { |
|
my @portfiles = split /,/,$$record{$key}; |
|
foreach my $file (@portfiles) { |
|
$file =~ /^(.*?)([^\/]*$)/; |
|
my $directory = $1; |
|
my $version = 0; |
|
my $answer_file = $2; |
|
my @answer_file_parts = split /\./, $answer_file; |
|
my @dir_list = &Apache::lonnet::dirlist($directory,$domain,$stuname,$portfolio_root); |
|
my @file_names; |
|
my @file_name_parts; |
|
foreach ( @dir_list) { |
|
@file_names = split /\&/,$_,2; |
|
@file_name_parts = split /\./, $file_names[0]; |
|
# ($file_name_parts[scalar @file_name_parts] eq $answer_file_parts[scalar @answer_file_parts]) |
|
if (($file_name_parts[0] eq $answer_file_parts[0]) && |
|
($file_name_parts[(scalar @file_name_parts)-1] eq $answer_file_parts[(scalar @answer_file_parts)-1])) { |
|
# gets here if filename and extension match, regardless of version |
|
if (scalar @file_name_parts == 3) { # a versioned file is found |
|
# so save it for later |
|
if ($file_name_parts[1] > $version) {$version = $file_name_parts[1]}; |
|
} |
|
} |
|
} |
|
$version += 1; |
|
&Apache::lonnet::logthis('answer file is '.$answer_file. |
|
' becomes '.$answer_file_parts[0].'.'.$version.'.'.$answer_file_parts[(scalar @answer_file_parts)-1]); |
|
&Apache::lonnet::logthis('from dir list is '.$file_names[0].' has '.@file_name_parts.' parts'); |
|
} |
|
&Apache::lonnet::logthis('found key portfiles '.$key); |
|
&Apache::lonnet::logthis('found value portfiles '.$$record{$key}); |
|
} |
|
} |
|
|
|
|
|
} |
|
|
#-------------------------------------------------------------------------------------- |
#-------------------------------------------------------------------------------------- |
# |
# |
#-------------------------- Next few routines handles grading by section or whole class |
#-------------------------- Next few routines handles grading by section or whole class |
Line 2651 sub split_part_type {
|
Line 2759 sub split_part_type {
|
# |
# |
#--- Javascript to handle csv upload |
#--- Javascript to handle csv upload |
sub csvupload_javascript_reverse_associate { |
sub csvupload_javascript_reverse_associate { |
|
my $error1=&mt('You need to specify the username or ID'); |
|
my $error2=&mt('You need to specify at least one grading field'); |
return(<<ENDPICK); |
return(<<ENDPICK); |
function verify(vf) { |
function verify(vf) { |
var foundsomething=0; |
var foundsomething=0; |
var founduname=0; |
var founduname=0; |
var foundID=0; |
var foundID=0; |
var founddomain=0; |
|
for (i=0;i<=vf.nfields.value;i++) { |
for (i=0;i<=vf.nfields.value;i++) { |
tw=eval('vf.f'+i+'.selectedIndex'); |
tw=eval('vf.f'+i+'.selectedIndex'); |
if (i==0 && tw!=0) { foundID=1; } |
if (i==0 && tw!=0) { foundID=1; } |
if (i==1 && tw!=0) { founduname=1; } |
if (i==1 && tw!=0) { founduname=1; } |
if (i==2 && tw!=0) { founddomain=1; } |
|
if (i!=0 && i!=1 && i!=2 && tw!=0) { foundsomething=1; } |
if (i!=0 && i!=1 && i!=2 && tw!=0) { foundsomething=1; } |
} |
} |
if ((founduname==0 && foundID==0) || founddomain==0) { |
if (founduname==0 && foundID==0) { |
alert('You need to specify the domain and either the username or ID'); |
alert('$error1'); |
return; |
return; |
} |
} |
if (foundsomething==0) { |
if (foundsomething==0) { |
alert('You need to specify at least one grading field'); |
alert('$error2'); |
return; |
return; |
} |
} |
vf.submit(); |
vf.submit(); |
} |
} |
Line 2691 ENDPICK
|
Line 2799 ENDPICK
|
} |
} |
|
|
sub csvupload_javascript_forward_associate { |
sub csvupload_javascript_forward_associate { |
|
my $error1=&mt('You need to specify the username or ID'); |
|
my $error2=&mt('You need to specify at least one grading field'); |
return(<<ENDPICK); |
return(<<ENDPICK); |
function verify(vf) { |
function verify(vf) { |
var foundsomething=0; |
var foundsomething=0; |
var founduname=0; |
var founduname=0; |
var foundID=0; |
var foundID=0; |
var founddomain=0; |
|
for (i=0;i<=vf.nfields.value;i++) { |
for (i=0;i<=vf.nfields.value;i++) { |
tw=eval('vf.f'+i+'.selectedIndex'); |
tw=eval('vf.f'+i+'.selectedIndex'); |
if (tw==1) { foundID=1; } |
if (tw==1) { foundID=1; } |
if (tw==2) { founduname=1; } |
if (tw==2) { founduname=1; } |
if (tw==3) { founddomain=1; } |
|
if (tw>3) { foundsomething=1; } |
if (tw>3) { foundsomething=1; } |
} |
} |
if ((founduname==0 && foundID==0) || founddomain==0) { |
if (founduname==0 && foundID==0) { |
alert('You need to specify the domain and either the username or ID'); |
alert('$error1'); |
return; |
return; |
} |
} |
if (foundsomething==0) { |
if (foundsomething==0) { |
alert('You need to specify at least one grading field'); |
alert('$error2'); |
return; |
return; |
} |
} |
vf.submit(); |
vf.submit(); |
} |
} |
Line 2761 to this page if the data selected is ins
|
Line 2869 to this page if the data selected is ins
|
<input type="hidden" name="url" value="$url" /> |
<input type="hidden" name="url" value="$url" /> |
<input type="hidden" name="saveState" value="$ENV{'form.saveState'}" /> |
<input type="hidden" name="saveState" value="$ENV{'form.saveState'}" /> |
<input type="hidden" name="probTitle" value="$ENV{'form.probTitle'}" /> |
<input type="hidden" name="probTitle" value="$ENV{'form.probTitle'}" /> |
<input type="hidden" name="command" value="csvuploadassign" /> |
<input type="hidden" name="command" value="csvuploadoptions" /> |
<hr /> |
<hr /> |
<script type="text/javascript" language="Javascript"> |
<script type="text/javascript" language="Javascript"> |
$javascript |
$javascript |
Line 2885 sub csvuploadmap {
|
Line 2993 sub csvuploadmap {
|
return ''; |
return ''; |
} |
} |
|
|
sub csvuploadassign { |
sub csvuploadoptions { |
my ($request)= @_; |
my ($request)= @_; |
my ($symb,$url)=&get_symb_and_url($request); |
my ($symb,$url)=&get_symb_and_url($request); |
if (!$symb) {return '';} |
my $checked=(($ENV{'form.noFirstLine'})?'1':'0'); |
&Apache::loncommon::load_tmp_file($request); |
my $ignore=&mt('Ignore First Line'); |
my @gradedata = &Apache::loncommon::upfile_record_sep(); |
$request->print(<<ENDPICK); |
if ($ENV{'form.noFirstLine'}) { shift(@gradedata); } |
<form method="post" enctype="multipart/form-data" action="/adm/grades" name="gradesupload"> |
|
<h3><font color="#339933">Uploading Class Grade Options</font></h3> |
|
<input type="hidden" name="command" value="csvuploadassign" /> |
|
<input type="submit" value="Assign Grades" /><br /> |
|
<p> |
|
<label> |
|
<input type="checkbox" name="show_full_results" /> |
|
Show a table of all changes |
|
</label> |
|
</p> |
|
<p> |
|
<label> |
|
<input type="checkbox" name="overwite_scores" checked="checked" /> |
|
Overwrite any existing score |
|
</label> |
|
</p> |
|
ENDPICK |
|
my %fields=&get_fields(); |
|
if (!defined($fields{'domain'})) { |
|
my $domform = &Apache::loncommon::select_dom_form($ENV{'request.role.domain'},'default_domain'); |
|
$request->print("\n<p> Users are in domain: ".$domform."</p>\n"); |
|
} |
|
foreach my $key (sort(keys(%ENV))) { |
|
if ($key !~ /^form\.(.*)$/) { next; } |
|
my $cleankey=$1; |
|
if ($cleankey eq 'command') { next; } |
|
$request->print('<input type="hidden" name="'.$cleankey. |
|
'" value="'.$ENV{$key}.'" />'."\n"); |
|
} |
|
# FIXME do a check for any duplicated user ids... |
|
# FIXME do a check for any invalid user ids?... |
|
$request->print("<hr /></form>\n"); |
|
$request->print(&show_grading_menu_form($symb,$url)); |
|
return ''; |
|
} |
|
|
|
sub get_fields { |
|
my %fields; |
my @keyfields = split(/\,/,$ENV{'form.keyfields'}); |
my @keyfields = split(/\,/,$ENV{'form.keyfields'}); |
my %fields=(); |
|
for (my $i=0; $i<=$ENV{'form.nfields'}; $i++) { |
for (my $i=0; $i<=$ENV{'form.nfields'}; $i++) { |
if ($ENV{'form.upfile_associate'} eq 'reverse') { |
if ($ENV{'form.upfile_associate'} eq 'reverse') { |
if ($ENV{'form.f'.$i} ne 'none') { |
if ($ENV{'form.f'.$i} ne 'none') { |
Line 2905 sub csvuploadassign {
|
Line 3049 sub csvuploadassign {
|
} |
} |
} |
} |
} |
} |
|
return %fields; |
|
} |
|
|
|
sub csvuploadassign { |
|
my ($request)= @_; |
|
my ($symb,$url)=&get_symb_and_url($request); |
|
if (!$symb) {return '';} |
|
&Apache::loncommon::load_tmp_file($request); |
|
my @gradedata = &Apache::loncommon::upfile_record_sep(); |
|
if ($ENV{'form.noFirstLine'}) { shift(@gradedata); } |
|
my %fields=&get_fields(); |
$request->print('<h3>Assigning Grades</h3>'); |
$request->print('<h3>Assigning Grades</h3>'); |
my $courseid=$ENV{'request.course.id'}; |
my $courseid=$ENV{'request.course.id'}; |
my ($classlist) = &getclasslist('all',0); |
my ($classlist) = &getclasslist('all',0); |
Line 2913 sub csvuploadassign {
|
Line 3068 sub csvuploadassign {
|
my $countdone=0; |
my $countdone=0; |
foreach my $grade (@gradedata) { |
foreach my $grade (@gradedata) { |
my %entries=&Apache::loncommon::record_sep($grade); |
my %entries=&Apache::loncommon::record_sep($grade); |
my $domain=$entries{$fields{'domain'}}; |
my $domain; |
|
if ($entries{$fields{'domain'}}) { |
|
$domain=$entries{$fields{'domain'}}; |
|
} else { |
|
$domain=$ENV{'form.default_domain'}; |
|
} |
$domain=~s/\s//g; |
$domain=~s/\s//g; |
my $username=$entries{$fields{'username'}}; |
my $username=$entries{$fields{'username'}}; |
$username=~s/\s//g; |
$username=~s/\s//g; |
if (!$username) { |
if (!$username) { |
my $id=$entries{$fields{'ID'}}; |
my $id=$entries{$fields{'ID'}}; |
|
$id=~s/\s//g; |
my %ids=&Apache::lonnet::idget($domain,$id); |
my %ids=&Apache::lonnet::idget($domain,$id); |
$username=$ids{$id}; |
$username=$ids{$id}; |
} |
} |
if (!exists($$classlist{"$username:$domain"})) { |
if (!exists($$classlist{"$username:$domain"})) { |
push(@skipped,"$username:$domain"); |
my $id=$entries{$fields{'ID'}}; |
|
$id=~s/\s//g; |
|
if ($id) { |
|
push(@skipped,"$id:$domain"); |
|
} else { |
|
push(@skipped,"$username:$domain"); |
|
} |
next; |
next; |
} |
} |
my $usec=$classlist->{"$username:$domain"}[5]; |
my $usec=$classlist->{"$username:$domain"}[5]; |
Line 2941 sub csvuploadassign {
|
Line 3108 sub csvuploadassign {
|
my $part=$1; |
my $part=$1; |
my $wgt =&Apache::lonnet::EXT('resource.'.$part.'.weight', |
my $wgt =&Apache::lonnet::EXT('resource.'.$part.'.weight', |
$symb,$domain,$username); |
$symb,$domain,$username); |
|
$entries{$fields{$dest}}=~s/\s//g; |
my $pcr=$entries{$fields{$dest}} / $wgt; |
my $pcr=$entries{$fields{$dest}} / $wgt; |
my $award='correct_by_override'; |
my $award='correct_by_override'; |
$grades{"resource.$part.awarded"}=$pcr; |
$grades{"resource.$part.awarded"}=$pcr; |
Line 5144 sub handler {
|
Line 5312 sub handler {
|
$request->print(&csvupload($request)); |
$request->print(&csvupload($request)); |
} elsif ($command eq 'csvuploadmap' && $perm{'mgr'} ) { |
} elsif ($command eq 'csvuploadmap' && $perm{'mgr'} ) { |
$request->print(&csvuploadmap($request)); |
$request->print(&csvuploadmap($request)); |
} elsif ($command eq 'csvuploadassign' && $perm{'mgr'}) { |
} elsif ($command eq 'csvuploadoptions' && $perm{'mgr'}) { |
if ($ENV{'form.associate'} ne 'Reverse Association') { |
if ($ENV{'form.associate'} ne 'Reverse Association') { |
$request->print(&csvuploadassign($request)); |
$request->print(&csvuploadoptions($request)); |
} else { |
} else { |
if ( $ENV{'form.upfile_associate'} ne 'reverse' ) { |
if ( $ENV{'form.upfile_associate'} ne 'reverse' ) { |
$ENV{'form.upfile_associate'} = 'reverse'; |
$ENV{'form.upfile_associate'} = 'reverse'; |
Line 5155 sub handler {
|
Line 5323 sub handler {
|
} |
} |
$request->print(&csvuploadmap($request)); |
$request->print(&csvuploadmap($request)); |
} |
} |
|
} elsif ($command eq 'csvuploadassign' && $perm{'mgr'} ) { |
|
$request->print(&csvuploadassign($request)); |
} elsif ($command eq 'scantron_selectphase' && $perm{'mgr'}) { |
} elsif ($command eq 'scantron_selectphase' && $perm{'mgr'}) { |
$request->print(&scantron_selectphase($request)); |
$request->print(&scantron_selectphase($request)); |
} elsif ($command eq 'scantron_warning' && $perm{'mgr'}) { |
} elsif ($command eq 'scantron_warning' && $perm{'mgr'}) { |