--- loncom/homework/grades.pm 2002/06/24 21:05:12 1.30 +++ loncom/homework/grades.pm 2002/06/25 21:07:56 1.31 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Grading handler # -# $Id: grades.pm,v 1.30 2002/06/24 21:05:12 ng Exp $ +# $Id: grades.pm,v 1.31 2002/06/25 21:07:56 ng Exp $ # # Copyright Michigan State University Board of Trustees # @@ -244,44 +244,33 @@ sub viewstudentgrade { $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"; - } elsif ($type eq 'tries') { - my $score=$record{"resource.$part.$type"}; - $result.="\n" + my $score=$record{"resource.$part.$type"}; + if ($type eq 'awarded' || $type eq 'tries') { + $result.=''."\n"; } elsif ($type eq 'solved') { - my $score=$record{"resource.$part.$type"}; + my ($status,$foo)=split(/_/,$score,2); $result.="\n"; } } $result.=''; return $result; } -#FIXME need to look at the meatdata spec on what type of data to accept and provide an + +#FIXME need to look at the metadata spec on what type of data to accept and provide an #interface based on that, also do that to above function. sub setstudentgrade { my ($url,$symb,$courseid,$student,@parts) = @_; my $result =''; - my ($stuname,$domain) = split(/:/,$student); - my %record=&Apache::lonnet::restore($symb,$courseid,$domain,$stuname); - my %newrecord; foreach my $part (@parts) { @@ -324,12 +313,19 @@ sub setstudentgrade { return $result; } +# -- show submissions of a student, option to grade +# sub submission { my ($request) = @_; + $request->print(< + function changeRadio(title,url) { + } + +JAVASCRIPT my $url=$ENV{'form.url'}; $url=~s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--; if ($ENV{'form.student'} eq '') { &moreinfo($request,"Need student login id"); return ''; } -# if ($ENV{'form.student'} eq '') { &listStudents($request); return ''; } my ($uname,$udom) = &finduser($ENV{'form.student'}); if ($uname eq '') { &moreinfo($request,"Unable to find student"); return ''; } my $symb; @@ -339,10 +335,13 @@ sub submission { $symb=&Apache::lonnet::symbread($url); } if ($symb eq '') { $request->print("Unable to handle ambiguous references:$url:."); return ''; } - +# +# header info my $result='

Submission Record

'; $result.=''; $result.='
Username: '.$uname.'Fullname: '.$ENV{'form.fullname'}.'Domain: '.$udom.'
Resource: '.$url.'
'; +# +# option to display problem if ($ENV{'form.vProb'} eq 'yes') { my $rendered=&Apache::loncommon::get_student_view($symb,$uname,$udom, $ENV{'request.course.id'}); @@ -350,7 +349,7 @@ sub submission { $ENV{'request.course.id'}); $result.='
'; $result.='
'; - $result.='Student\'s view of the problem:
'.$rendered.'
'; + $result.='Student\'s view of the problem
'.$rendered.'
'; $result.='Correct answer:
'.$companswer; $result.='
'; $result.='

'; @@ -359,24 +358,47 @@ sub submission { $last = 'last' if ($ENV{'form.submission'} eq 'last'); my $answer=&Apache::loncommon::get_previous_attempt($symb,$uname,$udom, $ENV{'request.course.id'},$last); - $result.=$answer.'
Needs an interface for inputting scores'; + $result.=$answer; - my (@parts) = sort(&getpartlist($url)); + my $maxpt = &Apache::lonnet::EXT('resource.partid.weight',$symb,$udom,$uname); + my %record= &Apache::lonnet::restore($symb,$ENV{'request.course.id'},$udom,$uname); + my $score = $record{'resource.0.awarded'}*$maxpt; - #start the form - $result.= '
'."\n". + $result.= ''."\n". ''."\n". ''."\n". ''."\n". - '
'."\n". - ''."\n". - ''; - #get info for each student - $result.=&viewstudentgrade($url,$symb,$ENV{'request.course.id'},$uname,@parts); + '
'."\n"; - - $result.='
'; + $result.=''."\n"; + $result.='
Points'; + my $ctr = 0; + while ($ctr<=$maxpt) { + $result.= ' '.$ctr."\n"; + $ctr++; + } + $result.=' or /'.$maxpt.' (max pts)'; - $result.='
'; + foreach my $part (&getpartlist($url)) { + my ($temp,$part,$type)=split(/_/,$part); + if ($type eq 'solved') { + my ($status,$foo)=split(/_/,$record{"resource.$part.$type"},2); + $result.="\n"; + } + } + $result.='The buttons do not work yet. '; + $result.=' '; + $result.=' '; + $result.=''; return $result; } @@ -477,14 +499,18 @@ sub viewgrades { foreach my $part (@parts) { my $display=&Apache::lonnet::metadata($url,$part.'.display'); if (!$display) { $display = &Apache::lonnet::metadata($url,$part.'.name'); } + print "Manual grading:$url:$part:$display:
"; $result.=''.$display.''."\n"; } $result.=''; #get info for each student foreach my $student ( sort(@{ $classlist{'allids'} }) ) { + my $display=&viewstudentgrade($url,$symb,$ENV{'request.course.id'},$student,@parts); +# print "ID=$ENV{'request.course.id'}:STU=$student:DIS=$display:
\n"; $result.=&viewstudentgrade($url,$symb,$ENV{'request.course.id'},$student,@parts); } - $result.=''; + $result.=''; + $result.=''; $result.=&show_grading_menu_form($symb,$url); return $result; }