--- loncom/homework/grades.pm 2002/05/21 02:29:22 1.26 +++ loncom/homework/grades.pm 2002/06/20 21:21:16 1.28 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Grading handler # -# $Id: grades.pm,v 1.26 2002/05/21 02:29:22 albertel Exp $ +# $Id: grades.pm,v 1.28 2002/06/20 21:21:16 ng Exp $ # # Copyright Michigan State University Board of Trustees # @@ -94,7 +94,7 @@ sub listStudents { my $cnum=$ENV{"course.$ENV{'request.course.id'}.num"}; my $hostver=unpack("%32C*",$Apache::lonnet::perlvar{'lonHostID'}); $request->print(<Verify a Submission Receipt Issued by this Server +

Verify a Submission Receipt Issued by this Server

$hostver- @@ -110,9 +110,11 @@ ENDHEADER } $request->print(< -

Show Student Submissions on Assessment

- - +

Show Student Submissions on Assessment

+ +
UsernameDomainName 
+ + ENDTABLEST my (%classlist) = &getclasslist($cdom,$cnum,'0'); foreach my $student ( sort(@{ $classlist{'allids'} }) ) { @@ -125,11 +127,11 @@ ENDTABLEST my ($tmp) = keys(%name); if ($tmp !~ /^(con_lost|error|no_such_host)/i) { $fullname=$name{'lastname'}.$name{'generation'}; - if ($fullname =~ /[^\s]+/) { $fullname.=','; } + if ($fullname =~ /[^\s]+/) { $fullname.=', '; } $fullname.=$name{'firstname'}.' '.$name{'middlename'}; } if ( $Apache::grades::viewgrades eq 'F' ) { - $request->print("\n".''."'."'); + $request->print(''); +# $request->print(''); } } - $request->print('
UsernameNameDomain 
$sname$sdom$fullname". + $request->print("\n".'
$sname$fullname$sdom". ''); if ($ENV{'form.url'}) { $request->print( @@ -144,13 +146,16 @@ ENDTABLEST $request->print( ''); $request->print( + ''); + $request->print( ''); $request->print( ''); - $request->print('
'); + $request->print('
'); } @@ -207,23 +212,28 @@ sub viewstudentgrade { my ($url,$symb,$courseid,$student,@parts) = @_; my $result =''; my $cellclr = '"#ffffdd"'; - my ($stuname,$domain) = split(/:/,$student); + my ($username,$domain) = split(/:/,$student); - my %record=&Apache::lonnet::restore($symb,$courseid,$domain,$stuname); + my (@requests) = ('lastname','firstname','middlename','generation'); + my (%name) = &Apache::lonnet::get('environment',\@requests,$domain,$username); + my %record=&Apache::lonnet::restore($symb,$courseid,$domain,$username); + my $fullname=$name{'lastname'}.$name{'generation'}; + if ($fullname =~ /[^\s]+/) { $fullname.=', '; } + $fullname.=$name{'firstname'}.' '.$name{'middlename'}; - $result.="$stuname$domain\n"; + $result.="$username$fullname$domain\n"; foreach my $part (@parts) { my ($temp,$part,$type)=split(/_/,$part); #print "resource.$part.$type = ".$record{"resource.$part.$type"}."
\n"; if ($type eq 'awarded') { my $score=$record{"resource.$part.$type"}; - $result.="\n"; + $result.="\n"; } elsif ($type eq 'tries') { my $score=$record{"resource.$part.$type"}; - $result.="\n" + $result.="\n" } elsif ($type eq 'solved') { my $score=$record{"resource.$part.$type"}; - $result.="\n"; if ($score =~ /^correct/) { $result.="\n\n\n\n\n"; } elsif ($score =~ /^incorrect/) { @@ -311,7 +321,8 @@ sub submission { if ($symb eq '') { $request->print("Unable to handle ambiguous references:$url:."); return ''; } my $answer=&Apache::loncommon::get_previous_attempt($symb,$uname,$udom, $ENV{'request.course.id'}); - my $result="

Submission Record

$uname:$udom for $url
".$answer; + my $result='

Submission Record

'; + $result.='Username : '.$uname.'
Fullname : '.$ENV{'form.fullname'}.'
Domain : '.$udom.'
Resource : '.$url.'
'.$answer; my $rendered=&Apache::loncommon::get_student_view($symb,$uname,$udom, $ENV{'request.course.id'}); $result.="Student's view of the problem:
$rendered
Correct answer:
"; @@ -336,25 +347,32 @@ sub gradingmenu { my ($request) = @_; my ($symb,$url)=&get_symb_and_url($request); if (!$symb) {return '';} - my $result='

Select a grading method


'; + + my $result='

 Select a Grading Method


'; + $result.='
'."\n"; + $result.=''."\n"; + $result.='
'."\n"; + $result.=' Resource : '.$url.'
'."\n"; $result.='
'."\n". ''."\n". ''."\n". ''."\n". ''."\n". - '
'; + ''."\n"; $result.='
'."\n". ''."\n". ''."\n". ''."\n". ''."\n". - '
'; + ''."\n"; $result.='
'."\n". ''."\n". ''."\n". ''."\n". ''."\n". - '
'; + ''."\n"; + $result.='
'."\n"; + $result.='
'."\n"; return $result; } @@ -375,7 +393,7 @@ sub viewgrades { #get list of parts for this problem my (@parts) = &getpartlist($url); - $request->print ("

Manual Grading

"); + $request->print ("

Manual Grading

"); #start the form $result = '
'."\n". @@ -383,15 +401,15 @@ sub viewgrades { ''."\n". ''."\n". ''."\n". - '
'."\n". + '
'."\n". ''."\n". - ''."\n"; - foreach my $part (@parts) { + ''."\n"; + foreach my $part (sort(@parts)) { my $display=&Apache::lonnet::metadata($url,$part.'.display'); if (!$display) { $display = &Apache::lonnet::metadata($url,$part.'.name'); } - $result.=''."\n"; + $result.=''."\n"; } - $result.=""; + $result.=''; #get info for each student foreach my $student ( sort(@{ $classlist{'allids'} }) ) { $result.=&viewstudentgrade($url,$symb,$ENV{'request.course.id'},$student,@parts); @@ -449,16 +467,88 @@ ENDUPFORM return $result; } +sub csvupload_javascript_reverse_associate { + return(<2) { foundsomething=1; } + } + if (founduname==0 || founddomain==0) { + alert('You need to specify at both the username and domain'); + return; + } + if (foundsomething==0) { + alert('You need to specify at least one grading field'); + return; + } + vf.submit(); + } + function flip(vf,tf) { + var nw=eval('vf.f'+tf+'.selectedIndex'); + var i; + //can not pick the same destination field twice + for (i=0;i<=vf.nfields.value;i++) { + if ((i!=tf) && (eval('vf.f'+i+'.selectedIndex')==nw)) { + eval('vf.f'+i+'.selectedIndex=0;') + } + } + } +ENDPICK +} + sub csvuploadmap_header { my ($request,$symb,$url,$datatoken,$distotal)= @_; my $result; my $javascript; if ($ENV{'form.upfile_associate'} eq 'reverse') { -# $javascript=&csv_upload_javascript_reverse_associate(); + $javascript=&csvupload_javascript_reverse_associate(); } else { -# $javascript=&csv_upload_javascript_forward_associate(); + $javascript=&csvupload_javascript_forward_associate(); } - my $javascript_validations;#=&javascript_validations($krbdefdom); $request->print(<

Uploading Class Grades for resource $url

@@ -481,7 +571,6 @@ to this page if the data selected is ins
ENDPICK return ''; @@ -491,11 +580,11 @@ ENDPICK sub csvupload_fields { my ($url) = @_; my (@parts) = &getpartlist($url); - my @fields; - foreach my $part (@parts) { + my @fields=(['username','Student Username'],['domain','Student Domain']); + foreach my $part (sort(@parts)) { my @datum; my $display=&Apache::lonnet::metadata($url,$part.'.display'); - my $name=&Apache::lonnet::metadata($url,$part.'.name'); + my $name=$part; if (!$display) { $display = $name; } @datum=($name,$display); push(@fields,\@datum); @@ -549,6 +638,43 @@ sub csvuploadmap { return ''; } +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(); + my @keyfields = split(/\,/,$ENV{'form.keyfields'}); + my %fields=(); + for (my $i=0; $i<=$ENV{'form.nfields'}; $i++) { + if ($ENV{'form.upfile_associate'} eq 'reverse') { + if ($ENV{'form.f'.$i} ne 'none') { + $fields{$keyfields[$i]}=$ENV{'form.f'.$i}; + } + } else { + if ($ENV{'form.f'.$i} ne 'none') { + $fields{$ENV{'form.f'.$i}}=$keyfields[$i]; + } + } + } + $request->print('

Assigning Grades

'); + &Apache::lonhomework::showhash(('1'=>\@keyfields)); + &Apache::lonhomework::showhash(%fields); + my $courseid=$ENV{'request.course.id'}; + my $cdom=$ENV{"course.$courseid.domain"}; + my $cnum=$ENV{"course.$courseid.num"}; + my (%classlist) = &getclasslist($cdom,$cnum,'1'); + foreach my $student ( sort(@{ $classlist{'allids'} }) ) { + my %newhash; + foreach my $grade (@gradedata) { + my %entries=&Apache::loncommon::record_sep($grade); + foreach my $dest (keys(%fields)) { + + } + } + } +} + sub send_header { my ($request)= @_; $request->print(&Apache::lontexconvert::header());
UserIdDomain
UsernameNameDomain'.$display.''.$display.'