--- loncom/homework/grades.pm 2003/02/27 22:39:11 1.69 +++ loncom/homework/grades.pm 2003/02/28 21:06:28 1.70 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Grading handler # -# $Id: grades.pm,v 1.69 2003/02/27 22:39:11 albertel Exp $ +# $Id: grades.pm,v 1.70 2003/02/28 21:06:28 ng Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1080,53 +1080,9 @@ KEYWORDS $seen{$partid}++; next if ($$handgrade{$_} =~ /:no$/); push @partlist,$partid; - my $wgt = &Apache::lonnet::EXT('resource.'.$partid.'.weight',$symb,$udom,$uname); - my $wgtmsg = ($wgt > 0 ? '(problem weight)' : - 'problem weight assigned by computer'); - $wgt = ($wgt > 0 ? $wgt : '1'); - my $score = ($record{'resource.'.$partid.'.awarded'} eq '' ? - '' : $record{'resource.'.$partid.'.awarded'}*$wgt); - $result=''; - $result.=''; - $result.=''."\n"; - $result.='
Part '.$partid.' Points: '; - my $ctr = 0; - $result.=''; # display radio buttons in a nice table 10 across - while ($ctr<=$wgt) { - $result.= '\n"; - $result.=(($ctr+1)%10 == 0 ? '' : ''); - $ctr++; - } - $result.='
'.$ctr."
'; + $result=&gradeBox($symb,$uname,$udom,$counter,$partid,\%record); - $result.='
 or /'.$wgt.' '.$wgtmsg.' '; - - $result.=''; - } else { - $result.=''. - ''; - } - $result.="  \n"; - $result.=''; - $result.='
'."\n"; $request->print($result); } $result=' function checkPickOne(formname) { - var user = radioSelection(formname.pickOne); + var user = radioSelection(formname.student); if (user == null) { alert("Please select the student you wish to grade."); return; } + var ptr = pullDownSelection(formname.selectpage); + formname.page.value = formname.eval("page"+ptr).value; + formname.title.value = formname.eval("title"+ptr).value; formname.submit(); } @@ -2364,6 +2323,16 @@ function radioSelection(radioButton) { } return selection; } + +function pullDownSelection(selectOne) { + var selection=null; + for (var i=0; i LISTJAVASCRIPT @@ -2379,15 +2348,26 @@ LISTJAVASCRIPT my $curtitle = &Apache::lonnet::metadata($pagepath.$pagename,'title'); $result.='
'."
\n"; - $result.=' Problems from: '."\n"; my ($titles,$symbx) = &getSymbMap(); # shift @$titles; # skip the top level sequence + my $ctr=0; foreach (@$titles) { my ($minder,$showtitle) = ($_ =~ /(\d+)\.(.*)/); - my $check_select = ($showtitle eq $curtitle ? 'selected="on"' : ''); - $result.=''."\n"; + $result.=''."\n"; + $ctr++; } $result.= ''."
\n"; + $ctr=0; + foreach (@$titles) { + my ($minder,$showtitle) = ($_ =~ /(\d+)\.(.*)/); + $result.=''."\n"; + $result.=''."\n"; + $ctr++; + } + $result.=''."\n"; + $result.=''."\n"; # $result.=' View Problems: no '."\n". # ' yes '."
\n"; @@ -2413,7 +2393,7 @@ LISTJAVASCRIPT foreach my $student (sort {lc($$fullname{$a}) cmp lc($$fullname{$b}) } keys %$fullname) { my ($uname,$udom) = split(/:/,$student); $studentTable.=($ptr%4 == 1 ? '' : ''); - $studentTable.=' '.$$fullname{$student}. + $studentTable.=' '.$$fullname{$student}. ' ('.$uname.($udom eq $cdom ? '':':'.$udom).')'."\n"; $studentTable.=($ptr%4 == 0 ? '' : ''); $ptr++; @@ -2422,7 +2402,8 @@ LISTJAVASCRIPT $studentTable.='  ' if ($ptr%4 == 3); $studentTable.=' ' if ($ptr%4 == 0); $studentTable.=''."\n"; - $studentTable.='
 
'."\n"; + $studentTable.='
 '."\n"; $studentTable.=&show_grading_menu_form($symb,$url); $request->print($studentTable); @@ -2473,20 +2454,17 @@ sub displayPage { my $getsec = $ENV{'form.section'} eq '' ? 'all' : $ENV{'form.section'}; my $pageTitle = $ENV{'form.page'}; my (undef,undef,$fullname) = &getclasslist($getsec,'0'); - my ($uname,$udom) = split(/:/,$ENV{'form.pickOne'}); + my ($uname,$udom) = split(/:/,$ENV{'form.student'}); my ($idx,$showtitle) = ($pageTitle =~ /(\d+)\.(.*)/); - my $result='

 '.$showtitle.'

'; - $result.='

 Student: '.$$fullname{$ENV{'form.pickOne'}}. + my $result='

 '.$ENV{'form.title'}.'

'; + $result.='

 Student: '.$$fullname{$ENV{'form.student'}}. ' ('.$uname.($udom eq $cdom ? '':':'.$udom).')

'."\n"; - my ($pg_titles,$pg_symbx) = &getSymbMap(); - my $navmap = Apache::lonnavmaps::navmap-> new( $ENV{'request.course.fn'}.'.db', $ENV{'request.course.fn'}.'_parms.db',1, 1); - - my ($mapUrl, $id, $resUrl) = split(/___/, $$pg_symbx{$ENV{'form.page'}}); + my ($mapUrl, $id, $resUrl) = split(/___/, $ENV{'form.page'}); my $map = $navmap->getResourceByUrl($resUrl); # add to navmaps my $iterator = $navmap->getIterator($map->map_start(), @@ -2509,11 +2487,7 @@ sub displayPage { my $title = $curRes->compTitle(); push @titles,$minder.'.'.$title; # minder, just in case two titles are identical if (scalar(@{$parts}) > 1) { shift @{$parts}; } - for my $part (@$parts) { - $result.='title='.$title.'part='.$part.':
'; - } - $parts{$minder.'.'.$title} = join '::',@$parts; - + $parts{$minder.'.'.$title} = join '::',@{$parts}; $symbx{$minder.'.'.$title} = $curRes->symb(); $minder++; @@ -2522,54 +2496,103 @@ sub displayPage { $ctr++; } + $navmap->init(); $request->print($result); + &sub_page_js($request); - my $studentTable.= + my $studentTable='
'."\n". + ''."\n". + ''."\n". + ''."\n". + ''."\n"; + + $studentTable.= '
'. ''. - ''. + ''. ''. ''. ''; my $question=1; foreach (@titles) { my ($minder,$showtitle) = ($_ =~ /(\d+)\.(.*)/); - $studentTable.=''; + my @parts = split(/::/,$parts{$_}); + $studentTable.=''; $studentTable.=''; $studentTable.=''; - my (undef,undef,$requesturl)=split(/___/,$symbx{$_}); - $requesturl=&Apache::lonnet::clutter($requesturl); - my $subresult=&Apache::lonnet::ssi($requesturl, - ('grade_target' => 'analyze'), - ('grade_domain' => $udom), - ('grade_user' => $uname), - ('grade_symb' => $symbx{$_}), - ('grade_courseid' => $ENV{'request.course.id'})); - (undef,$subresult)=split(/_HASH_REF__/,$subresult,2); - my %analyze=&Apache::lonnet::str2hash($subresult); - + my %record = &Apache::lonnet::restore($symbx{$_},$ENV{'request.course.id'},$udom,$uname); $studentTable.=''; - $question++; } $studentTable.='
 No  No  Title Answer Grade
'.$question.'
'.$question. + (scalar(@parts) == 1 ? '' : '
('.scalar(@parts).' parts)').'
 '.$showtitle.'  '. &Apache::loncommon::get_student_answers($symbx{$_},$uname,$udom,$ENV{'request.course.id'}).' '; - while (my($key,$value) = each (%analyze)){ - $studentTable.='key='.$key.'->value='.$value.'
'; + foreach my $partid (@parts) { + $studentTable.=&gradeBox($symbx{$_},$uname,$udom,$question,$partid,\%record); + $question++; } $studentTable.='
'; -# $result.=''."
\n"; -# $result.='
'."\n"; + $studentTable.=''; $request->print($studentTable); - return ''; } +sub gradeBox { + my ($symb,$uname,$udom,$counter,$partid,$record) = @_; + my $wgt = &Apache::lonnet::EXT('resource.'.$partid.'.weight',$symb,$udom,$uname); + my $wgtmsg = ($wgt > 0 ? '(problem weight)' : + 'problem weight assigned by computer'); + $wgt = ($wgt > 0 ? $wgt : '1'); + my $score = ($$record{'resource.'.$partid.'.awarded'} eq '' ? + '' : $$record{'resource.'.$partid.'.awarded'}*$wgt); + my $result=''; + $result.=''; + $result.=''."\n"; + $result.='
Part '.$partid.' Points: '; + + my $ctr = 0; + $result.=''; # display radio buttons in a nice table 10 across + while ($ctr<=$wgt) { + $result.= '\n"; + $result.=(($ctr+1)%10 == 0 ? '' : ''); + $ctr++; + } + $result.='
'.$ctr."
'; + $result.='
 or /'.$wgt.' '.$wgtmsg.' '; + + $result.=''; + } else { + $result.=''. + ''; + } + $result.="  \n"; + $result.=''; + $result.='
'."\n"; + return $result; +} + #--- Form to input a receipt number --- sub verifyReceipt_form { my ($symb,$url) = @_;