Diff for /loncom/homework/grades.pm between versions 1.407 and 1.408

version 1.407, 2007/06/15 22:10:15 version 1.408, 2007/06/15 22:12:49
Line 6129  sub init_perm { Line 6129  sub init_perm {
 }  }
   
 sub gather_clicker_ids {  sub gather_clicker_ids {
     my %clicker_ids=();      my %clicker_ids;
   
     my $classlist = &Apache::loncoursedata::get_classlist();      my $classlist = &Apache::loncoursedata::get_classlist();
   
Line 6142  sub gather_clicker_ids { Line 6142  sub gather_clicker_ids {
         my $username = $classlist->{$student}->[$username_idx];          my $username = $classlist->{$student}->[$username_idx];
         my $domain   = $classlist->{$student}->[$domain_idx];          my $domain   = $classlist->{$student}->[$domain_idx];
         my $clickers =          my $clickers =
    (&Apache::lonnet::userenvironment($domain,$username,'clickers'))[1];      (&Apache::lonnet::userenvironment($domain,$username,'clickers'))[1];
         foreach my $id (split(/\,/,$clickers)) {          foreach my $id (split(/\,/,$clickers)) {
             $id=~s/^0+//;              $id=~s/^0+//;
             if (exists($clicker_ids{$id})) {              if (exists($clicker_ids{$id})) {
                $clicker_ids{$id}.=','.$username.':'.$domain;   $clicker_ids{$id}.=','.$username.':'.$domain;
             } else {              } else {
                $clicker_ids{$id}=$username.':'.$domain;   $clicker_ids{$id}=$username.':'.$domain;
             }              }
         }          }
     }      }
Line 6156  sub gather_clicker_ids { Line 6156  sub gather_clicker_ids {
 }  }
   
 sub gather_adv_clicker_ids {  sub gather_adv_clicker_ids {
     my %clicker_ids=();      my %clicker_ids;
     my $cnum=$env{'course.'.$env{'request.course.id'}.'.num'};      my $cnum=$env{'course.'.$env{'request.course.id'}.'.num'};
     my $cdom=$env{'course.'.$env{'request.course.id'}.'.domain'};      my $cdom=$env{'course.'.$env{'request.course.id'}.'.domain'};
     my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum);      my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum);
Line 6164  sub gather_adv_clicker_ids { Line 6164  sub gather_adv_clicker_ids {
         foreach my $person (split(/\,/,$coursepersonnel{$element})) {          foreach my $person (split(/\,/,$coursepersonnel{$element})) {
             my ($puname,$pudom)=split(/\:/,$person);              my ($puname,$pudom)=split(/\:/,$person);
             my $clickers =              my $clickers =
                (&Apache::lonnet::userenvironment($pudom,$puname,'clickers'))[1];   (&Apache::lonnet::userenvironment($pudom,$puname,'clickers'))[1];
             foreach my $id (split(/\,/,$clickers)) {              foreach my $id (split(/\,/,$clickers)) {
                $id=~s/^0+//;   $id=~s/^0+//;
                if (exists($clicker_ids{$id})) {   if (exists($clicker_ids{$id})) {
                   $clicker_ids{$id}.=','.$puname.':'.$pudom;      $clicker_ids{$id}.=','.$puname.':'.$pudom;
                } else {   } else {
                   $clicker_ids{$id}=$puname.':'.$pudom;      $clicker_ids{$id}=$puname.':'.$pudom;
                }   }
             }              }
         }          }
     }      }
Line 6199  sub process_clicker { Line 6199  sub process_clicker {
     my $pcorrect=&mt("Percentage points for correct solution");      my $pcorrect=&mt("Percentage points for correct solution");
     my $pincorrect=&mt("Percentage points for incorrect solution");      my $pincorrect=&mt("Percentage points for incorrect solution");
     my $selectform=&Apache::loncommon::select_form('iclicker','upfiletype',      my $selectform=&Apache::loncommon::select_form('iclicker','upfiletype',
                                   ('iclicker' => 'i>clicker'));     ('iclicker' => 'i>clicker'));
   
     $result.=<<ENDUPFORM;      $result.=<<ENDUPFORM;
 <script type="text/javascript">  <script type="text/javascript">
Line 6270  sub process_clicker_file { Line 6270  sub process_clicker_file {
     if (!$symb) {return '';}      if (!$symb) {return '';}
     my ($result) = &showResourceInfo($symb,$env{'form.probTitle'});      my ($result) = &showResourceInfo($symb,$env{'form.probTitle'});
     if (($env{'form.gradingmechanism'} eq 'specific') && ($env{'form.specificid'}!~/\w/)) {      if (($env{'form.gradingmechanism'} eq 'specific') && ($env{'form.specificid'}!~/\w/)) {
        $result.='<span class="LC_error">'.&mt('You need to specify a clicker ID for the correct answer').'</span>';   $result.='<span class="LC_error">'.&mt('You need to specify a clicker ID for the correct answer').'</span>';
        return $result.&show_grading_menu_form($symb);   return $result.&show_grading_menu_form($symb);
     }      }
     my %clicker_ids=&gather_clicker_ids();      my %clicker_ids=&gather_clicker_ids();
     my %correct_ids=();      my %correct_ids;
     if ($env{'form.gradingmechanism'} eq 'personnel') {      if ($env{'form.gradingmechanism'} eq 'personnel') {
        %correct_ids=&gather_adv_clicker_ids();   %correct_ids=&gather_adv_clicker_ids();
     }      }
     if ($env{'form.gradingmechanism'} eq 'specific') {      if ($env{'form.gradingmechanism'} eq 'specific') {
        my $correct_id=$env{'form.specificid'};   my $correct_id=$env{'form.specificid'};
        $correct_id=~tr/a-z/A-Z/;   $correct_id=~tr/a-z/A-Z/;
        $correct_id=~s/\s//gs;   $correct_id=~s/\s//gs;
        $correct_id=~s/^0+//;   $correct_id=~s/^0+//;
        $correct_ids{$correct_id}='specified';   $correct_ids{$correct_id}='specified';
     }      }
     if ($env{'form.gradingmechanism'} eq 'attendance') {      if ($env{'form.gradingmechanism'} eq 'attendance') {
        $result.=&mt('Score based on attendance only');   $result.=&mt('Score based on attendance only');
     } else {      } else {
        my $number=0;   my $number=0;
        $result.='<h3>'.&mt('Correctness determined by the following IDs').'</h3>';   $result.='<h3>'.&mt('Correctness determined by the following IDs').'</h3>';
        foreach my $id (sort(keys(%correct_ids))) {   foreach my $id (sort(keys(%correct_ids))) {
           $result.='<tt>'.$id.'</tt> - ';      $result.='<tt>'.$id.'</tt> - ';
           if ($correct_ids{$id} eq 'specified') {      if ($correct_ids{$id} eq 'specified') {
              $result.=&mt('specified');   $result.=&mt('specified');
           } else {      } else {
              my ($uname,$udom)=split(/\:/,$correct_ids{$id});   my ($uname,$udom)=split(/\:/,$correct_ids{$id});
              $result.=&Apache::loncommon::plainname($uname,$udom);   $result.=&Apache::loncommon::plainname($uname,$udom);
           }      }
           $result.='<br />';      $result.='<br />';
           $number++;      $number++;
        }   }
        if ($number==0) {   if ($number==0) {
           $result.='<span class="LC_error">'.&mt('No IDs found to determine correct answer').'</span>';      $result.='<span class="LC_error">'.&mt('No IDs found to determine correct answer').'</span>';
           return $result.&show_grading_menu_form($symb);      return $result.&show_grading_menu_form($symb);
        }   }
     }      }
     if (length($env{'form.upfile'}) < 2) {      if (length($env{'form.upfile'}) < 2) {
         $result.=&mt('[_1] Error: [_2] The file you attempted to upload, [_3] contained no information. Please check that you entered the correct filename.',          $result.=&mt('[_1] Error: [_2] The file you attempted to upload, [_3] contained no information. Please check that you entered the correct filename.',
Line 6313  sub process_clicker_file { Line 6313  sub process_clicker_file {
      '<span class="LC_filename">'.&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"').'</span>');       '<span class="LC_filename">'.&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"').'</span>');
         return $result.&show_grading_menu_form($symb);          return $result.&show_grading_menu_form($symb);
     }      }
     my %responses=();      my %responses;
     my @questiontitles=();      my @questiontitles;
     my $errormsg='';      my $errormsg='';
     my $number=0;      my $number=0;
     if ($env{'form.upfiletype'} eq 'iclicker') {      if ($env{'form.upfiletype'} eq 'iclicker') {
        ($errormsg,$number)=&iclicker_eval(\@questiontitles,\%responses);   ($errormsg,$number)=&iclicker_eval(\@questiontitles,\%responses);
     }      }
     $result.='<br />'.&mt('Found [_1] questions',$number).'<br />';      $result.='<br />'.&mt('Found [_1] questions',$number).'<br />';
     foreach my $id (keys %responses) {      foreach my $id (keys %responses) {
        $result.='<br />'.$id.' - '.$responses{$id};   $result.='<br />'.$id.' - '.$responses{$id};
     }      }
     return $result.&show_grading_menu_form($symb);      return $result.&show_grading_menu_form($symb);
 }  }
Line 6332  sub iclicker_eval { Line 6332  sub iclicker_eval {
     my $number=0;      my $number=0;
     my $errormsg='';      my $errormsg='';
     foreach my $line (split(/[\n\r]/,$env{'form.upfile'})) {      foreach my $line (split(/[\n\r]/,$env{'form.upfile'})) {
        chomp($line);   chomp($line);
        foreach my $quoted ($line=~/\,\s*\"([^\"]*)\"\s*\,/g) {   foreach my $quoted ($line=~/\,\s*\"([^\"]*)\"\s*\,/g) {
           my $replace=$quoted;      my $replace=$quoted;
           $replace=~s/\,//g;      $replace=~s/\,//g;
           &Apache::lonnet::logthis($quoted.' - '.$replace.'<br />');      &Apache::lonnet::logthis($quoted.' - '.$replace.'<br />');
           $line=~s/\,\s*\"\Q$quoted\E\"\s*\,/,$replace,/gs;      $line=~s/\,\s*\"\Q$quoted\E\"\s*\,/,$replace,/gs;
        }   }
        my @entries=split(/\,/,$line);   my @entries=split(/\,/,$line);
        if ($entries[0] eq 'Question') {   if ($entries[0] eq 'Question') {
           for (my $i=3;$i<$#entries;$i+=6) {      for (my $i=3;$i<$#entries;$i+=6) {
               $$questiontitles[$number]=$entries[$i];   $$questiontitles[$number]=$entries[$i];
               $number++;   $number++;
           }      }
        }   }
        if ($entries[0]=~/^\#/) {   if ($entries[0]=~/^\#/) {
           my $id=$entries[0];      my $id=$entries[0];
           my @idresponses=();      my @idresponses;
           $id=~s/^[\#0]+//;      $id=~s/^[\#0]+//;
           for (my $i=0;$i<$number;$i++) {      for (my $i=0;$i<$number;$i++) {
              my $idx=3+$i*6;   my $idx=3+$i*6;
              push(@idresponses,$entries[$idx]);   push(@idresponses,$entries[$idx]);
           }      }
           $$responses{$id}=join(',',@idresponses);      $$responses{$id}=join(',',@idresponses);
        }   }
     }      }
     return ($errormsg,$number);      return ($errormsg,$number);
 }  }

Removed from v.1.407  
changed lines
  Added in v.1.408


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>