--- loncom/interface/lonplacementtest.pm 2016/04/14 15:43:45 1.4 +++ loncom/interface/lonplacementtest.pm 2016/05/30 03:16:28 1.5 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA -# Handler for a Placement Test course container +# Handler for a Placement Test course container # -# $Id: lonplacementtest.pm,v 1.4 2016/04/14 15:43:45 raeburn Exp $ +# $Id: lonplacementtest.pm,v 1.5 2016/05/30 03:16:28 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -19,7 +19,7 @@ # # You should have received a copy of the GNU General Public License # along with LON-CAPA; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # /home/httpd/html/adm/gpl.txt # @@ -120,13 +120,16 @@ sub check_completion { my $incomplete; if (@resources) { my $firstsymb = $resources[0]->symb(); - my %bytitle; + my (%bytitle,%bysymb); foreach my $res (@resources) { my $currsymb = $res->symb(); my $title = $res->compTitle; unless (exists($bytitle{$title})) { $bytitle{$title} = 0; } + unless (exists($bysymb{$currsymb})) { + $bysymb{$currsymb} = 0; + } my $notdone = 0; my $done = 0; my %storetries; @@ -171,6 +174,7 @@ sub check_completion { $totaldone += $done; } $bytitle{$title} += $points; + $bysymb{$currsymb} += $points; $totalpoints += $points; } if ($makenew) { @@ -180,16 +184,53 @@ sub check_completion { 4,$newmax,'int_pos', $env{'user.name'}, $env{'user.domain'}); - my %grades = ( - uname => $env{'user.name'}, - domain => $env{'user.domain'}, - total => $totalpoints, - bytitle => \%bytitle, - ); - my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; - my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; - if (($cnum ne '') && ($cdom ne '')) { - &Apache::lonnet::auto_export_grades($cnum,$cdom,\%grades); + my $user = $env{'user.name'}.':'.$env{'user.domain'}; + if ($user) { + my %grades = ( + $user => { + role => $env{'request.role'}, + id => $env{'environment.id'}, + status => $env{'environment.inststatus'}, + lastname => $env{'environment.lastname'}, + firstname => $env{'environment.firstname'}, + permanentemail => $env{'environment.permanentemail'}, + section => $env{'request.course.sec'}, + total => $totalpoints, + category => '', + gradebookcolumn => '', + context => $map, + }, + ); + $grades{$user}{bytitle} = \%bytitle; + $grades{$user}{bysymb} = \%bysymb; + my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + my $scope = 'map'; + my $instcode = $env{'course.'.$env{'request.course.id'}.'.internal.coursecode'}; + my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'}; + my $context = 'completion'; + if (($cnum ne '') && ($cdom ne '')) { + my %info = ( + scope => $scope, + instcode => $instcode, + crstype => $crstype, + context => $context, + ); + my $response = &Apache::lonnet::auto_export_grades($cdom,$cnum,\%info,\%grades); + my $outcome; + if (ref($response) eq 'HASH') { + if ($response->{$user}) { + $outcome = 'ok'; + } else { + $outcome = 'fail'; + } + } else { + $outcome = $response; + } + unless ($outcome eq 'ok') { + &Apache::lonnet::logthis("Placement Test grade export for $env{'user.name'}:$env{'user.domain'} in $env{'request.course.id'} was: $outcome"); + } + } } } }