Diff for /loncom/homework/grades.pm between versions 1.288 and 1.296

version 1.288, 2005/09/23 15:19:05 version 1.296, 2005/11/22 19:10:16
Line 334  COMMONJSFUNCTIONS Line 334  COMMONJSFUNCTIONS
 #--- section, ids and fullnames for each user.  #--- section, ids and fullnames for each user.
 sub getclasslist {  sub getclasslist {
     my ($getsec,$filterlist) = @_;      my ($getsec,$filterlist) = @_;
     $getsec = $getsec eq '' ? 'all' : $getsec;      my @getsec;
       if (!ref($getsec)) {
    if ($getsec ne '' && $getsec ne 'all') {
       @getsec=($getsec);
    }
       } else {
    @getsec=@{$getsec};
       }
       if (grep(/^all$/,@getsec)) { undef(@getsec); }
   
     my $classlist=&Apache::loncoursedata::get_classlist();      my $classlist=&Apache::loncoursedata::get_classlist();
     # Bail out if we were unable to get the classlist      # Bail out if we were unable to get the classlist
     return if (! defined($classlist));      return if (! defined($classlist));
Line 363  sub getclasslist { Line 372  sub getclasslist {
  }   }
  $section = ($section ne '' ? $section : 'none');   $section = ($section ne '' ? $section : 'none');
  if (&canview($section)) {   if (&canview($section)) {
     if ($getsec eq 'all' || $getsec eq $section) {      if (!@getsec || grep(/^\Q$section\E$/,@getsec)) {
  $sections{$section}++;   $sections{$section}++;
  $fullnames{$student}=$fullname;   $fullnames{$student}=$fullname;
     } else {      } else {
Line 536  sub verifyreceipt { Line 545  sub verifyreceipt {
     if ($env{"course.$courseid.receiptalg"} eq 'receipt2') { $receiptparts=1; }      if ($env{"course.$courseid.receiptalg"} eq 'receipt2') { $receiptparts=1; }
     my $parts=['0'];      my $parts=['0'];
     if ($receiptparts) { ($parts)=&response_type($url,$symb); }      if ($receiptparts) { ($parts)=&response_type($url,$symb); }
     foreach (sort {lc($$fullname{$a}) cmp lc($$fullname{$b}) } keys %$fullname) {      foreach (sort 
        {
    if (lc($$fullname{$a}) ne lc($$fullname{$b})) {
        return (lc($$fullname{$a}) cmp lc($$fullname{$b}));
    }
    return $a cmp $b;
        } (keys(%$fullname))) {
  my ($uname,$udom)=split(/\:/);   my ($uname,$udom)=split(/\:/);
  foreach my $part (@$parts) {   foreach my $part (@$parts) {
     if ($receipt eq &Apache::lonnet::ireceipt($uname,$udom,$courseid,$symb,$part)) {      if ($receipt eq &Apache::lonnet::ireceipt($uname,$udom,$courseid,$symb,$part)) {
Line 702  LISTJAVASCRIPT Line 717  LISTJAVASCRIPT
     $gradeTable.='</tr>'."\n";      $gradeTable.='</tr>'."\n";
   
     my $ctr = 0;      my $ctr = 0;
     foreach my $student (sort {lc($$fullname{$a}) cmp lc($$fullname{$b}) } keys %$fullname) {      foreach my $student (sort 
    {
        if (lc($$fullname{$a}) ne lc($$fullname{$b})) {
    return (lc($$fullname{$a}) cmp lc($$fullname{$b}));
        }
        return $a cmp $b;
    }
    (keys(%$fullname))) {
  my ($uname,$udom) = split(/:/,$student);   my ($uname,$udom) = split(/:/,$student);
  my %status = ();   my %status = ();
  if ($env{'form.showgrading'} eq 'yes' && $submitonly ne 'all') {   if ($env{'form.showgrading'} eq 'yes' && $submitonly ne 'all') {
Line 1857  KEYWORDS Line 1879  KEYWORDS
   
     # print end of form      # print end of form
     if ($counter == $total) {      if ($counter == $total) {
  my $endform='<table border="0"><tr><td>'."\n";   my $endform='';
    if (&Apache::lonnet::allowed('vgr',$env{'request.course.id'})) {
       $endform.='<br />'.
    &Apache::loncommon::track_student_link(&mt('View recent activity'),$uname,$udom,'check');
    }
    if (&Apache::lonnet::allowed('opa',$env{'request.course.id'})) {
       $endform.='<br />'.
    &Apache::loncommon::pprmlink(&mt('Set/Change parameters'),$uname,$udom,$symb,'check');
    }
           $endform.='<table border="0"><tr><td>'."\n";
  $endform.='<input type="button" value="Save & Next" '.   $endform.='<input type="button" value="Save & Next" '.
     'onClick="javascript:checksubmit(this.form,\'Save & Next\','.      'onClick="javascript:checksubmit(this.form,\'Save & Next\','.
     $total.','.scalar(@partlist).');" TARGET=_self> &nbsp;'."\n";      $total.','.scalar(@partlist).');" TARGET=_self> &nbsp;'."\n";
Line 1945  sub processHandGrade { Line 1976  sub processHandGrade {
     my ($subject,$message,$msgstatus) = ('','','');      my ($subject,$message,$msgstatus) = ('','','');
     if ($includemsg =~ /savemsg|newmsg\Q$ctr\E/) {      if ($includemsg =~ /savemsg|newmsg\Q$ctr\E/) {
  $subject = $env{'form.msgsub'} if ($includemsg =~ /^msgsub/);   $subject = $env{'form.msgsub'} if ($includemsg =~ /^msgsub/);
    unless ($subject=~/\w/) { $subject=&mt('Grading Feedback'); }
  my (@msgnum) = split(/,/,$includemsg);   my (@msgnum) = split(/,/,$includemsg);
  foreach (@msgnum) {   foreach (@msgnum) {
     $message.=$env{'form.'.$_} if ($_ =~ /savemsg|newmsg/ && $_ ne '');      $message.=$env{'form.'.$_} if ($_ =~ /savemsg|newmsg/ && $_ ne '');
Line 1955  sub processHandGrade { Line 1987  sub processHandGrade {
     &Apache::lonnet::clutter($url).      &Apache::lonnet::clutter($url).
     "?symb=$symb\">$env{'form.probTitle'}</a>";      "?symb=$symb\">$env{'form.probTitle'}</a>";
  $msgstatus = &Apache::lonmsg::user_normal_msg ($uname,$udom,   $msgstatus = &Apache::lonmsg::user_normal_msg ($uname,$udom,
        $env{'form.msgsub'},$message);         $env{'form.msgsub'}.' ['.
          &Apache::lonnet::declutter($url).']',$message);
    $request->print('<br />'.&mt('Sending message to [_1]@[_2]',$uname,$udom).': '.
    $msgstatus);
     }      }
     if ($env{'form.collaborator'.$ctr}) {      if ($env{'form.collaborator'.$ctr}) {
  my @collabstrs=&Apache::loncommon::get_env_multiple("form.collaborator$ctr");   my @collabstrs=&Apache::loncommon::get_env_multiple("form.collaborator$ctr");
Line 2064  sub processHandGrade { Line 2099  sub processHandGrade {
   
     my (@parsedlist,@nextlist);      my (@parsedlist,@nextlist);
     my ($nextflg) = 0;      my ($nextflg) = 0;
     foreach (sort {lc($$fullname{$a}) cmp lc($$fullname{$b}) } keys %$fullname) {      foreach (sort 
        {
    if (lc($$fullname{$a}) ne lc($$fullname{$b})) {
        return (lc($$fullname{$a}) cmp lc($$fullname{$b}));
    }
    return $a cmp $b;
        } (keys(%$fullname))) {
  if ($nextflg == 1 && $button =~ /Next$/) {   if ($nextflg == 1 && $button =~ /Next$/) {
     push @parsedlist,$_;      push @parsedlist,$_;
  }   }
Line 2394  sub viewgrades_js { Line 2435  sub viewgrades_js {
  }   }
  for (i=0;i<document.classgrade.total.value;i++) {   for (i=0;i<document.classgrade.total.value;i++) {
     var user = document.classgrade["ctr"+i].value;      var user = document.classgrade["ctr"+i].value;
       user = user.replace(new RegExp(':', 'g'),"_");
     var scorename = document.classgrade["GD_"+user+"_"+partid+"_awarded"];      var scorename = document.classgrade["GD_"+user+"_"+partid+"_awarded"];
     var saveval   = document.classgrade["GD_"+user+"_"+partid+"_solved_s"].value;      var saveval   = document.classgrade["GD_"+user+"_"+partid+"_solved_s"].value;
     var selname   = document.classgrade["GD_"+user+"_"+partid+"_solved"];      var selname   = document.classgrade["GD_"+user+"_"+partid+"_solved"];
Line 2421  sub viewgrades_js { Line 2463  sub viewgrades_js {
   
     for (i=0;i<document.classgrade.total.value;i++) {      for (i=0;i<document.classgrade.total.value;i++) {
  var user = document.classgrade["ctr"+i].value;   var user = document.classgrade["ctr"+i].value;
    user = user.replace(new RegExp(':', 'g'),"_");
  var scorename = document.classgrade["GD_"+user+"_"+partid+"_awarded"];   var scorename = document.classgrade["GD_"+user+"_"+partid+"_awarded"];
  var saveval   = document.classgrade["GD_"+user+"_"+partid+"_solved_s"].value;   var saveval   = document.classgrade["GD_"+user+"_"+partid+"_solved_s"].value;
  var selname   = document.classgrade["GD_"+user+"_"+partid+"_solved"];   var selname   = document.classgrade["GD_"+user+"_"+partid+"_solved"];
Line 2438  sub viewgrades_js { Line 2481  sub viewgrades_js {
  } else {   } else {
     for (i=0;i<document.classgrade.total.value;i++) {      for (i=0;i<document.classgrade.total.value;i++) {
  var user = document.classgrade["ctr"+i].value;   var user = document.classgrade["ctr"+i].value;
    user = user.replace(new RegExp(':', 'g'),"_");
  var scorename = document.classgrade["GD_"+user+"_"+partid+"_awarded"];   var scorename = document.classgrade["GD_"+user+"_"+partid+"_awarded"];
  var saveval   = document.classgrade["GD_"+user+"_"+partid+"_solved_s"].value;   var saveval   = document.classgrade["GD_"+user+"_"+partid+"_solved_s"].value;
  var selname   = document.classgrade["GD_"+user+"_"+partid+"_solved"];   var selname   = document.classgrade["GD_"+user+"_"+partid+"_solved"];
Line 2496  sub viewgrades_js { Line 2540  sub viewgrades_js {
   
     for (i=0;i<document.classgrade.total.value;i++) {      for (i=0;i<document.classgrade.total.value;i++) {
  var user = document.classgrade["ctr"+i].value;   var user = document.classgrade["ctr"+i].value;
    user = user.replace(new RegExp(':', 'g'),"_");
  var resetscore = document.classgrade["GD_"+user+"_"+partid+"_awarded"];   var resetscore = document.classgrade["GD_"+user+"_"+partid+"_awarded"];
  resetscore.value = document.classgrade["GD_"+user+"_"+partid+"_awarded_s"].value;   resetscore.value = document.classgrade["GD_"+user+"_"+partid+"_awarded_s"].value;
  var resettries = document.classgrade["GD_"+user+"_"+partid+"_tries"];   var resettries = document.classgrade["GD_"+user+"_"+partid+"_tries"];
Line 2638  sub viewgrades { Line 2683  sub viewgrades {
     #list all the students - with points and grade status      #list all the students - with points and grade status
     my (undef,undef,$fullname) = &getclasslist($env{'form.section'},'1');      my (undef,undef,$fullname) = &getclasslist($env{'form.section'},'1');
     my $ctr = 0;      my $ctr = 0;
     foreach (sort {lc($$fullname{$a}) cmp lc($$fullname{$b}) } keys %$fullname) {      foreach (sort 
        {
    if (lc($$fullname{$a}) ne lc($$fullname{$b})) {
        return (lc($$fullname{$a}) cmp lc($$fullname{$b}));
    }
    return $a cmp $b;
        } (keys(%$fullname))) {
  $ctr++;   $ctr++;
  $result.=&viewstudentgrade($url,$symb,$env{'request.course.id'},   $result.=&viewstudentgrade($url,$symb,$env{'request.course.id'},
    $_,$$fullname{$_},\@parts,\%weight,$ctr,\%last_resets);     $_,$$fullname{$_},\@parts,\%weight,$ctr,\%last_resets);
Line 2822  sub editgrades { Line 2873  sub editgrades {
     my $dropMenu = $env{'form.GD_'.$user.'_'.$_.'_solved'};      my $dropMenu = $env{'form.GD_'.$user.'_'.$_.'_solved'};
     $score = 'excused' if (($dropMenu eq 'excused') && ($score ne 'excused'));      $score = 'excused' if (($dropMenu eq 'excused') && ($score ne 'excused'));
   
       $newrecord{'resource.'.$_.'.regrader'}=
    "$env{'user.name'}:$env{'user.domain'}";
     if ($dropMenu eq 'reset status' &&      if ($dropMenu eq 'reset status' &&
  $old_score ne '') { # ignore if no previous attempts => nothing to reset   $old_score ne '') { # ignore if no previous attempts => nothing to reset
  $newrecord{'resource.'.$_.'.tries'} = 0;   $newrecord{'resource.'.$_.'.tries'} = 0;
  $newrecord{'resource.'.$_.'.solved'} = '';   $newrecord{'resource.'.$_.'.solved'} = '';
  $newrecord{'resource.'.$_.'.award'} = '';   $newrecord{'resource.'.$_.'.award'} = '';
  $newrecord{'resource.'.$_.'.awarded'} = 0;   $newrecord{'resource.'.$_.'.awarded'} = 0;
  $newrecord{'resource.'.$_.'.regrader'}="$env{'user.name'}:$env{'user.domain'}";  
  $updateflag = 1;   $updateflag = 1;
                 if ($env{'form.GD_'.$user.'_'.$_.'_aggtries'} > 0) {                  if ($env{'form.GD_'.$user.'_'.$_.'_aggtries'} > 0) {
                     my $aggtries = $env{'form.GD_'.$user.'_'.$_.'_aggtries'};                      my $aggtries = $env{'form.GD_'.$user.'_'.$_.'_aggtries'};
Line 3162  sub csvuploadoptions { Line 3214  sub csvuploadoptions {
 <form method="post" enctype="multipart/form-data" action="/adm/grades" name="gradesupload">  <form method="post" enctype="multipart/form-data" action="/adm/grades" name="gradesupload">
 <h3><font color="#339933">Uploading Class Grade Options</font></h3>  <h3><font color="#339933">Uploading Class Grade Options</font></h3>
 <input type="hidden" name="command"    value="csvuploadassign" />  <input type="hidden" name="command"    value="csvuploadassign" />
 <input type="submit" value="Assign Grades" /><br />  
 <p>  <p>
 <label>  <label>
    <input type="checkbox" name="show_full_results" />     <input type="checkbox" name="show_full_results" />
Line 3190  ENDPICK Line 3241  ENDPICK
     }      }
     # FIXME do a check for any duplicated user ids...      # FIXME do a check for any duplicated user ids...
     # FIXME do a check for any invalid user ids?...      # FIXME do a check for any invalid user ids?...
     $request->print("<hr /></form>\n");      $request->print('<input type="submit" value="Assign Grades" /><br />
   <hr /></form>'."\n");
     $request->print(&show_grading_menu_form($symb,$url));      $request->print(&show_grading_menu_form($symb,$url));
     return '';      return '';
 }  }
Line 3395  LISTJAVASCRIPT Line 3447  LISTJAVASCRIPT
     
     my (undef,undef,$fullname) = &getclasslist($getsec,'1');      my (undef,undef,$fullname) = &getclasslist($getsec,'1');
     my $ptr = 1;      my $ptr = 1;
     foreach my $student (sort {lc($$fullname{$a}) cmp lc($$fullname{$b}) } keys %$fullname) {      foreach my $student (sort 
    {
        if (lc($$fullname{$a}) ne lc($$fullname{$b})) {
    return (lc($$fullname{$a}) cmp lc($$fullname{$b}));
        }
        return $a cmp $b;
    } (keys(%$fullname))) {
  my ($uname,$udom) = split(/:/,$student);   my ($uname,$udom) = split(/:/,$student);
  $studentTable.=($ptr%2 == 1 ? '<tr bgcolor="#ffffe6">' : '</td>');   $studentTable.=($ptr%2 == 1 ? '<tr bgcolor="#ffffe6">' : '</td>');
  $studentTable.='<td align="right">'.$ptr.'&nbsp;</td>';   $studentTable.='<td align="right">'.$ptr.'&nbsp;</td>';
Line 4027  SCANTRONFORM Line 4085  SCANTRONFORM
             </tr>              </tr>
             <tr bgcolor="#ffffe6">              <tr bgcolor="#ffffe6">
               <td colspan="2">                <td colspan="2">
                 <input type="submit" value="Show List of Files" />                  <input type="submit" value="Download: Show List of Associated Files" />
               </td>                </td>
             </tr>              </tr>
           </table>            </table>

Removed from v.1.288  
changed lines
  Added in v.1.296


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