--- loncom/homework/grades.pm	2007/06/14 21:36:12	1.404
+++ loncom/homework/grades.pm	2007/06/15 22:00:42	1.406
@@ -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.406 2007/06/15 22:00:42 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.=<<ENDUPFORM;
 <script type="text/javascript">
@@ -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,57 @@ sub process_clicker_file {
           return $result.&show_grading_menu_form($symb);
        }
     }
+    if (length($env{'form.upfile'}) < 2) {
+        $result.="<span class=\"LC_error\">Error:</span> The file you attempted to upload, <tt>".&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"')."</tt>, contained no information. Please check that you entered the correct filename.";
+        return $result.&show_grading_menu_form($symb);
+    }
+    my %responses=();
+    my @questiontitles=();
+    my $errormsg='';
+    my $number=0;
+    if ($env{'form.upfiletype'} eq 'iclicker') {
+       ($errormsg,$number)=&iclicker_eval(\@questiontitles,\%responses);
+    }
+    $result.='<br />'.&mt('Found [_1] questions',$number).'<br />';
+    foreach my $id (keys %responses) {
+       $result.='<br />'.$id.' - '.$responses{$id};
+    }
     return $result.&show_grading_menu_form($symb);
 }
 
+sub iclicker_eval {
+    my ($questiontitles,$responses)=@_;
+    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.'<br />');
+          $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) {
+              $$questiontitles[$number]=$entries[$i];
+              $number++;
+          }
+       }
+       if ($entries[0]=~/^\#/) {
+          my $id=$entries[0];
+          my @idresponses=();
+          $id=~s/^[\#0]+//;
+          for (my $i=0;$i<$number;$i++) {
+             my $idx=3+$i*6;
+             push(@idresponses,$entries[$idx]);
+          }
+          $$responses{$id}=join(',',@idresponses);
+       }
+    }
+    return ($errormsg,$number);
+}
+
 sub handler {
     my $request=$_[0];