version 1.144, 2003/10/21 21:46:15
|
version 1.146, 2003/11/04 19:38:09
|
Line 55 my %perm=();
|
Line 55 my %perm=();
|
|
|
# ----- These first few routines are general use routines.---- |
# ----- These first few routines are general use routines.---- |
# |
# |
# --- Retrieve the parts that matches stores_\d+ from the metadata file.--- |
# --- Retrieve the parts from the metadata file.--- |
sub getpartlist { |
sub getpartlist { |
my ($url) = @_; |
my ($url,$symb) = @_; |
my @parts =(); |
my $partorder = &Apache::lonnet::metadata($url, 'partorder'); |
my (@metakeys) = split(/,/,&Apache::lonnet::metadata($url,'keys')); |
my @parts; |
foreach my $key (@metakeys) { |
if ($partorder) { |
if ( $key =~ m/stores_(\w+)_.*/) { |
for my $part (split (/,/,$partorder)) { |
push(@parts,$key); |
if (!&Apache::loncommon::check_if_partid_hidden($part,$symb)) { |
|
push(@parts, $part); |
|
} |
|
} |
|
} else { |
|
my $metadata = &Apache::lonnet::metadata($url, 'packages'); |
|
foreach (split(/\,/,$metadata)) { |
|
if ($_ =~ /^part_(.*)$/) { |
|
if (!&Apache::loncommon::check_if_partid_hidden($1,$symb)) { |
|
push(@parts, $1); |
|
} |
|
} |
|
} |
|
} |
|
my @stores; |
|
foreach my $part (@parts) { |
|
my (@metakeys) = split(/,/,&Apache::lonnet::metadata($url,'keys')); |
|
foreach my $key (@metakeys) { |
|
if ($key =~ m/^stores_\Q$part\E_/) { push(@stores,$key); } |
} |
} |
} |
} |
return @parts; |
return @stores; |
} |
} |
|
|
# --- Get the symbolic name of a problem and the url |
# --- Get the symbolic name of a problem and the url |
Line 120 sub response_type {
|
Line 138 sub response_type {
|
if (/^\w+response_\w+.*/) { |
if (/^\w+response_\w+.*/) { |
my ($responsetype,$part) = split(/_/,$_,2); |
my ($responsetype,$part) = split(/_/,$_,2); |
my ($partid,$respid) = split(/_/,$part); |
my ($partid,$respid) = split(/_/,$part); |
|
if (&Apache::loncommon::check_if_partid_hidden($partid,$symb)) { |
|
next; |
|
} |
$responsetype =~ s/response$//; # make it compatible w/ navmaps - should move to that!! |
$responsetype =~ s/response$//; # make it compatible w/ navmaps - should move to that!! |
my ($value) = &Apache::lonnet::EXT('resource.'.$part.'.handgrade',$symb); |
my ($value) = &Apache::lonnet::EXT('resource.'.$part.'.handgrade',$symb); |
$handgrade{$part} = $responsetype.':'.($value eq 'yes' ? 'yes' : 'no'); |
$handgrade{$part} = $responsetype.':'.($value eq 'yes' ? 'yes' : 'no'); |
Line 572 LISTJAVASCRIPT
|
Line 593 LISTJAVASCRIPT
|
my %status = (); |
my %status = (); |
if ($ENV{'form.showgrading'} eq 'yes' && $submitonly ne 'all') { |
if ($ENV{'form.showgrading'} eq 'yes' && $submitonly ne 'all') { |
(%status) =&student_gradeStatus($url,$symb,$udom,$uname,$partlist); |
(%status) =&student_gradeStatus($url,$symb,$udom,$uname,$partlist); |
my $statusflg = ''; |
my $submitted = 0; |
|
my $graded = 1; |
foreach (keys(%status)) { |
foreach (keys(%status)) { |
$statusflg = 1 if ($status{$_} ne 'nothing'); |
$submitted = 1 if ($status{$_} ne 'nothing'); |
|
$graded = 0 if ($status{$_} =~ /^correct/); |
my ($foo,$partid,$foo1) = split(/\./,$_); |
my ($foo,$partid,$foo1) = split(/\./,$_); |
if ($status{'resource.'.$partid.'.submitted_by'} ne '') { |
if ($status{'resource.'.$partid.'.submitted_by'} ne '') { |
$statusflg = ''; |
$submitted = 0; |
$gradeTable.='<input type="hidden" name="'. |
$gradeTable.='<input type="hidden" name="'. |
$student.':submitted_by" value="'. |
$student.':submitted_by" value="'. |
$status{'resource.'.$partid.'.submitted_by'}.'" />'; |
$status{'resource.'.$partid.'.submitted_by'}.'" />'; |
} |
} |
} |
} |
next if ($statusflg eq '' && $submitonly eq 'yes'); |
next if (!$submitted && ($submitonly eq 'yes' || $submitonly eq 'graded')); |
|
next if (!$graded && $submitonly eq 'graded'); |
} |
} |
|
|
$ctr++; |
$ctr++; |
Line 625 LISTJAVASCRIPT
|
Line 649 LISTJAVASCRIPT
|
} else { |
} else { |
$gradeTable='<br /> <font color="red">'. |
$gradeTable='<br /> <font color="red">'. |
'No submissions found for this resource for any students. ('.$num_students. |
'No submissions found for this resource for any students. ('.$num_students. |
' checked for submissions</font><br />'; |
' checked for submissions)</font><br />'; |
} |
} |
} elsif ($ctr == 1) { |
} elsif ($ctr == 1) { |
$gradeTable =~ s/type=checkbox/type=checkbox checked/; |
$gradeTable =~ s/type=checkbox/type=checkbox checked/; |
Line 1830 sub processHandGrade {
|
Line 1854 sub processHandGrade {
|
} |
} |
$ctr = 0; |
$ctr = 0; |
@parsedlist = reverse @parsedlist if ($button eq 'Previous'); |
@parsedlist = reverse @parsedlist if ($button eq 'Previous'); |
|
my ($partlist) = &response_type($url); |
foreach my $student (@parsedlist) { |
foreach my $student (@parsedlist) { |
|
my $submitonly=$ENV{'form.submitonly'}; |
my ($uname,$udom) = split(/:/,$student); |
my ($uname,$udom) = split(/:/,$student); |
if ($ENV{'form.submitonly'} eq 'yes') { |
if ($submitonly =~ /^(yes|graded)$/) { |
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 $statusflg = ''; |
my %status=&student_gradeStatus($url,$symb,$udom,$uname,$partlist); |
foreach (split(/:/,$ENV{'form.gradePartRespid'})){ |
my $submitted = 0; |
$statusflg = 1 if (exists ($record{'resource.'.$_.'.submission'})); |
my $graded = 1; |
|
foreach (keys(%status)) { |
|
$submitted = 1 if ($status{$_} ne 'nothing'); |
|
$graded = 0 if ($status{$_} =~ /^correct/); |
|
my ($foo,$partid,$foo1) = split(/\./,$_); |
|
if ($status{'resource.'.$partid.'.submitted_by'} ne '') { |
|
$submitted = 0; |
|
} |
} |
} |
next if ($statusflg eq ''); |
next if (!$submitted && ($submitonly eq 'yes' || $submitonly eq 'graded')); |
|
next if (!$graded && $submitonly eq 'graded'); |
} |
} |
push @nextlist,$student if ($ctr < $ntstu); |
push @nextlist,$student if ($ctr < $ntstu); |
last if ($ctr == $ntstu); |
last if ($ctr == $ntstu); |
Line 2180 sub viewgrades {
|
Line 2214 sub viewgrades {
|
$result.= '<table border=0><tr><td bgcolor="#777777">'."\n". |
$result.= '<table border=0><tr><td bgcolor="#777777">'."\n". |
'<table border=0><tr bgcolor="#deffff"><td> <b>No.</b> </td>'. |
'<table border=0><tr bgcolor="#deffff"><td> <b>No.</b> </td>'. |
'<td>'.&nameUserString('header')."</td>\n"; |
'<td>'.&nameUserString('header')."</td>\n"; |
my (@parts) = sort(&getpartlist($url)); |
my (@parts) = sort(&getpartlist($url,$symb)); |
foreach my $part (@parts) { |
foreach my $part (@parts) { |
my $display=&Apache::lonnet::metadata($url,$part.'.display'); |
my $display=&Apache::lonnet::metadata($url,$part.'.display'); |
$display =~ s|^Number of Attempts|Tries<br />|; # makes the column narrower |
$display =~ s|^Number of Attempts|Tries<br />|; # makes the column narrower |
Line 2297 sub editgrades {
|
Line 2331 sub editgrades {
|
my %columns = (); |
my %columns = (); |
my ($i,$ctr,$count,$rec_update) = (0,0,0,0); |
my ($i,$ctr,$count,$rec_update) = (0,0,0,0); |
|
|
my (@parts) = sort(&getpartlist($url)); |
my (@parts) = sort(&getpartlist($url,$symb)); |
my $header; |
my $header; |
while ($ctr < $ENV{'form.totalparts'}) { |
while ($ctr < $ENV{'form.totalparts'}) { |
my $partid = $ENV{'form.partid_'.$ctr}; |
my $partid = $ENV{'form.partid_'.$ctr}; |
Line 2562 ENDPICK
|
Line 2596 ENDPICK
|
} |
} |
|
|
sub csvupload_fields { |
sub csvupload_fields { |
my ($url) = @_; |
my ($url,$symb) = @_; |
my (@parts) = &getpartlist($url); |
my (@parts) = &getpartlist($url,$symb); |
my @fields=(['username','Student Username'],['domain','Student Domain']); |
my @fields=(['username','Student Username'],['domain','Student Domain']); |
foreach my $part (sort(@parts)) { |
foreach my $part (sort(@parts)) { |
my @datum; |
my @datum; |
Line 2646 sub csvuploadmap {
|
Line 2680 sub csvuploadmap {
|
&csvuploadmap_header($request,$symb,$url,$datatoken,$#records+1); |
&csvuploadmap_header($request,$symb,$url,$datatoken,$#records+1); |
my ($i,$keyfields); |
my ($i,$keyfields); |
if (@records) { |
if (@records) { |
my @fields=&csvupload_fields($url); |
my @fields=&csvupload_fields($url,$symb); |
|
|
if ($ENV{'form.upfile_associate'} eq 'reverse') { |
if ($ENV{'form.upfile_associate'} eq 'reverse') { |
&Apache::loncommon::csv_print_samples($request,\@records); |
&Apache::loncommon::csv_print_samples($request,\@records); |
Line 3551 sub gradingmenu {
|
Line 3585 sub gradingmenu {
|
} |
} |
formname.command.value = cmd; |
formname.command.value = cmd; |
formname.saveState.value = "saveCmd="+cmdsave+":saveSec="+pullDownSelection(formname.section)+ |
formname.saveState.value = "saveCmd="+cmdsave+":saveSec="+pullDownSelection(formname.section)+ |
":saveSub="+radioSelection(formname.submitonly)+":saveStatus="+pullDownSelection(formname.Status); |
":saveSub="+pullDownSelection(formname.submitonly)+":saveStatus="+pullDownSelection(formname.Status); |
if (val < 5) formname.submit(); |
if (val < 5) formname.submit(); |
if (val == 5) { |
if (val == 5) { |
if (!checkReceiptNo(formname,'notOK')) { return false;} |
if (!checkReceiptNo(formname,'notOK')) { return false;} |
Line 3619 GRADINGMENUJS
|
Line 3653 GRADINGMENUJS
|
|
|
$result.='<tr bgcolor="#ffffe6"valign="top"><td>'. |
$result.='<tr bgcolor="#ffffe6"valign="top"><td>'. |
'<input type="radio" name="radioChoice" value="submission" '. |
'<input type="radio" name="radioChoice" value="submission" '. |
($saveCmd eq 'submission' ? 'checked' : '').'> '.'<b>Current Resource:</b> For one or more students'. |
($saveCmd eq 'submission' ? 'checked' : '').'> '.'<b>Current Resource:</b> For one or more students '. |
'<br /> -->For students with '. |
'<select name="submitonly">'. |
'<input type="radio" name="submitonly" value="yes" '. |
'<option value="yes" '. |
($saveSub eq 'yes' ? 'checked' : '').' /> submissions or '. |
($saveSub eq 'yes' ? 'selected="on"' : '').'>with submissions</option>'. |
'<input type="radio" name="submitonly" value="all" '. |
'<option value="graded" '. |
($saveSub eq 'all' ? 'checked' : '').' /> for all</td></tr>'."\n"; |
($saveSub eq 'graded' ? 'selected="on"' : '').'>with ungraded submissions</option>'. |
|
'<option value="all" '. |
|
($saveSub eq 'all' ? 'selected="on"' : '').'>with any status</option></select></td></tr>'."\n"; |
|
|
$result.='<tr bgcolor="#ffffe6"valign="top"><td>'. |
$result.='<tr bgcolor="#ffffe6"valign="top"><td>'. |
'<input type="radio" name="radioChoice" value="viewgrades" '. |
'<input type="radio" name="radioChoice" value="viewgrades" '. |