--- loncom/homework/grades.pm 2007/06/14 21:36:12 1.404 +++ loncom/homework/grades.pm 2007/06/15 21:21:16 1.405 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Grading handler # -# $Id: grades.pm,v 1.404 2007/06/14 21:36:12 www Exp $ +# $Id: grades.pm,v 1.405 2007/06/15 21:21:16 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -6145,6 +6145,7 @@ sub gather_clicker_ids { my $clickers = (&Apache::lonnet::userenvironment($domain,$username,'clickers'))[1]; foreach my $id (split(/\,/,$clickers)) { + $id=~s/^0+//; if (exists($clickerids{$id})) { $clickerids{$id}.=','.$username.':'.$domain; } else { @@ -6165,13 +6166,14 @@ sub gather_adv_clicker_ids { my ($puname,$pudom)=split(/\:/,$person); my $clickers = (&Apache::lonnet::userenvironment($pudom,$puname,'clickers'))[1]; - foreach my $id (split(/\,/,$clickers)) { + foreach my $id (split(/\,/,$clickers)) { + $id=~s/^0+//; if (exists($clickerids{$id})) { $clickerids{$id}.=','.$puname.':'.$pudom; } else { $clickerids{$id}=$puname.':'.$pudom; } - } + } } } return %clickerids; @@ -6198,7 +6200,7 @@ sub process_clicker { my $pcorrect=&mt("Percentage points for correct solution"); my $pincorrect=&mt("Percentage points for incorrect solution"); my $selectform=&Apache::loncommon::select_form('iclicker','upfiletype', - ('iclicker' => 'iClicker')); + ('iclicker' => 'i>clicker')); $result.=< @@ -6281,6 +6283,7 @@ sub process_clicker_file { my $correctid=$env{'form.specificid'}; $correctid=~tr/a-z/A-Z/; $correctid=~s/\s//gs; + $correctid=~s/^0+//; $correctids{$correctid}='specified'; } if ($env{'form.gradingmechanism'} eq 'attendance') { @@ -6304,9 +6307,42 @@ sub process_clicker_file { return $result.&show_grading_menu_form($symb); } } + if (length($env{'form.upfile'}) < 2) { + $result.="Error: The file you attempted to upload, ".&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"').", contained no information. Please check that you entered the correct filename."; + return $result.&show_grading_menu_form($symb); + } + my %contents=(); + my $errormsg=''; + my $number=0; + if ($env{'form.upfiletype'} eq 'iclicker') { + ($errormsg,$number,%contents)=&iclicker_eval(); + $result.=$errormsg; + } return $result.&show_grading_menu_form($symb); } +sub iclicker_eval { + my $number=0; + my $errormsg=''; + foreach my $line (split(/[\n\r]/,$env{'form.upfile'})) { + chomp($line); + foreach my $quoted ($line=~/\,\s*\"([^\"]*)\"\s*\,/g) { + my $replace=$quoted; + $replace=~s/\,//g; + &Apache::lonnet::logthis($quoted.' - '.$replace.'
'); + $line=~s/\,\s*\"\Q$quoted\E\"\s*\,/,$replace,/gs; + } + my @entries=split(/\,/,$line); + if ($entries[0] eq 'Question') { + for (my $i=3;$i<$#entries;$i+=6) { + $number++; + $errormsg.='
'.$entries[$i]; + } + } + } + return ($errormsg,$number); +} + sub handler { my $request=$_[0];