Diff for /loncom/homework/grades.pm between versions 1.148 and 1.151

version 1.148, 2003/11/07 08:56:52 version 1.151, 2003/11/07 19:23:56
Line 189  sub get_order { Line 189  sub get_order {
        ('grade_courseid' =>          ('grade_courseid' => 
         $ENV{'request.course.id'}),          $ENV{'request.course.id'}),
        ('grade_username' => $uname));         ('grade_username' => $uname));
     (my $debug,$subresult)=split(/_HASH_REF__/,$subresult,2);      (undef,$subresult)=split(/_HASH_REF__/,$subresult,2);
     Apache->request->print($debug);  
     my %analyze=&Apache::lonnet::str2hash($subresult);      my %analyze=&Apache::lonnet::str2hash($subresult);
     return ($analyze{"$partid.$respid.shown"});      return ($analyze{"$partid.$respid.shown"});
 }  }
Line 666  LISTJAVASCRIPT Line 665  LISTJAVASCRIPT
  my ($foo,$partid,$foo1) = split(/\./,$_);   my ($foo,$partid,$foo1) = split(/\./,$_);
  if ($status{'resource.'.$partid.'.submitted_by'} ne '') {   if ($status{'resource.'.$partid.'.submitted_by'} ne '') {
     $submitted = 0;      $submitted = 0;
       my ($part)=split(/\./,$partid);
     $gradeTable.='<input type="hidden" name="'.      $gradeTable.='<input type="hidden" name="'.
  $student.':submitted_by" value="'.   $student.':'.$part.':submitted_by" value="'.
  $status{'resource.'.$partid.'.submitted_by'}.'" />';   $status{'resource.'.$partid.'.submitted_by'}.'" />';
  }   }
     }      }
Line 1533  KEYWORDS Line 1533  KEYWORDS
     $result.=$$fullname{$_}.'&nbsp; &nbsp; &nbsp;';      $result.=$$fullname{$_}.'&nbsp; &nbsp; &nbsp;';
  }   }
                 $result.='<br />'."\n";                  $result.='<br />'."\n";
    my ($part)=split(/\./,$_);
  $result.='<input type="hidden" name="collaborator'.$counter.   $result.='<input type="hidden" name="collaborator'.$counter.
     '" value="'.(join ':',@goodcollaborators).'" />'."\n";      '" value="'.$part.':'.(join ':',@goodcollaborators).'" />'.
       "\n";
     }      }
     if (scalar(@badcollaborators) > 0) {      if (scalar(@badcollaborators) > 0) {
  $result.='<table border="0"><tr bgcolor="#ffbbbb"><td>';   $result.='<table border="0"><tr bgcolor="#ffbbbb"><td>';
Line 1560  KEYWORDS Line 1562  KEYWORDS
     #             (3) Last submission plus the parts info      #             (3) Last submission plus the parts info
     #             (4) The whole record for this student      #             (4) The whole record for this student
     if ($ENV{'form.lastSub'} =~ /^(lastonly|hdgrade)$/) {      if ($ENV{'form.lastSub'} =~ /^(lastonly|hdgrade)$/) {
  if ($ENV{'form.'.$uname.':'.$udom.':submitted_by'}) {   my ($string,$timestamp)= &get_last_submission(\%record);
     my $submitby=''.   my $lastsubonly=''.
  '<b>Collaborative submission by: </b>'.      ($$timestamp eq '' ? '' : '<b>Date Submitted:</b> '.
  '<a href="javascript:viewSubmitter(\''.       $$timestamp)."</td></tr>\n";
  $ENV{'form.'.$uname.':'.$udom.':submitted_by'}.   if ($$timestamp eq '') {
  '\')"; TARGET=_self>'.      $lastsubonly.='<tr><td bgcolor="#ffffe6">'.$$string[0]; 
  $$fullname{$ENV{'form.'.$uname.':'.$udom.':submitted_by'}}.'</a>';  
     $request->print($submitby);  
  } else {   } else {
     my ($string,$timestamp)= &get_last_submission(\%record);      my %seenparts;
     my $lastsubonly=''.      for my $part (sort keys(%$handgrade)) {
  ($$timestamp eq '' ? '' : '<b>Date Submitted:</b> '.   my ($partid,$respid) = split(/_/,$part);
  $$timestamp)."</td></tr>\n";   if ($ENV{"form.$uname:$udom:$partid:submitted_by"}) {
     if ($$timestamp eq '') {      if (exists($seenparts{$partid})) { next; }
  $lastsubonly.='<tr><td bgcolor="#ffffe6">'.$$string[0];       $seenparts{$partid}=1;
     } else {      my $submitby='<b>Part '.$partid.
  for my $part (sort keys(%$handgrade)) {   ' Collaborative submission by: </b>'.
     my ($partid,$respid) = split(/_/,$part);   '<a href="javascript:viewSubmitter(\''.
     my $responsetype = $responseType->{$partid}->{$respid};   $ENV{"form.$uname:$udom:$partid:submitted_by"}.
     if (!exists($record{'resource.'.$partid.'.'.$respid.'.submission'})) {   '\')"; TARGET=_self>'.
    $$fullname{$ENV{"form.$uname:$udom:$partid:submitted_by"}}.'</a><br />';
       $request->print($submitby);
       next;
    }
    my $responsetype = $responseType->{$partid}->{$respid};
    if (!exists($record{"resource.$partid.$respid.submission"})) {
       $lastsubonly.='<tr><td bgcolor="#ffffe6"><b>Part '.
    $partid.'</b> <font color="#999999">( ID '.$respid.
    ' )</font>&nbsp; &nbsp;'.
    '<font color="red">Nothing submitted - no attempts</font><br /><br />';
       next;
    }
    foreach (@$string) {
       my ($partid,$respid) = /^resource\.([^\.]*)\.([^\.]*)\.submission/;
       if ($part ne ($partid.'_'.$respid)) { next; }
       my ($ressub,$subval) = split(/:/,$_,2);
       # Similarity check
       my $similar='';
       if($ENV{'form.checkPlag'}){
    my ($oname,$odom,$ocrsid,$oessay,$osim)=
       &most_similar($uname,$udom,$subval);
    if ($osim) {
       $osim=int($osim*100.0);
       $similar="<hr /><h3><font color=\"#FF0000\">Essay".
    " is $osim% similar to an essay by ".
    &Apache::loncommon::plainname($oname,$odom).
    '</font></h3><blockquote><i>'.
    &keywords_highlight($oessay).
    '</i></blockquote><hr />';
    }
       }
       my $order=&get_order($partid,$respid,$symb,$uname,$udom);
       if ($ENV{'form.lastSub'} eq 'lastonly' || 
    ($ENV{'form.lastSub'} eq 'hdgrade' && 
    $$handgrade{$part} eq 'yes')) {
  $lastsubonly.='<tr><td bgcolor="#ffffe6"><b>Part '.   $lastsubonly.='<tr><td bgcolor="#ffffe6"><b>Part '.
     $partid.'</b> <font color="#999999">( ID '.$respid.      $partid.'</b> <font color="#999999">( ID '.$respid.
     ' )</font>&nbsp; &nbsp;'.      ' )</font>&nbsp; &nbsp;';
     '<font color="red">Nothing submitted - no attempts</font><br /><br />';   if ($record{"resource.$partid.$respid.uploadedurl"}) {
      } else {      $lastsubonly.='<a href="'.&Apache::lonnet::tokenwrapper($record{"resource.$partid.$respid.uploadedurl"}).'"><img src="/adm/lonIcons/unknown.gif" border=0"> File uploaded by student</a> <font color="red" size="1">Like all files provided by users, this file may contain virusses</font><br />';
  foreach (@$string) {  
     my ($partid,$respid) = /^resource\.([^\.]*)\.([^\.]*)\.submission/;  
     if ($part eq ($partid.'_'.$respid)) {  
  my ($ressub,$subval) = split(/:/,$_,2);  
                             # Similarity check  
  my $similar='';  
  my $oname;  
  my $odom;  
  my $ocrsid;  
  my $oessay;  
  my $osim;  
  if($ENV{'form.checkPlag'}){  
     ($oname,$odom,$ocrsid,$oessay,$osim)=&most_similar($uname,$udom,$subval);  
     if ($osim) {  
  $osim=int($osim*100.0);  
  $similar='<hr /><h3><font color="#FF0000">Essay is '.$osim.  
     '% similar to an essay by '.&Apache::loncommon::plainname($oname,$odom).  
     '</font></h3><blockquote><i>'.  
     &keywords_highlight($oessay).'</i></blockquote><hr />';  
     }  
  }  
  my $order=&get_order($partid,$respid,$symb,$uname,$udom);  
  $lastsubonly.='<tr><td bgcolor="#ffffe6"><b>Part '.  
     $partid.'</b> <font color="#999999">( ID '.$respid.  
     ' )</font>&nbsp; &nbsp;'.  
     ($record{"resource.$partid.$respid.uploadedurl"}?  
      '<a href="'.  
      &Apache::lonnet::tokenwrapper($record{"resource.$partid.$respid.uploadedurl"}).  
      '"><img src="/adm/lonIcons/unknown.gif" border=0"> File uploaded by student</a> '.  
      '<font color="red" size="1">Like all files provided by users, '.  
      'this file may contain virusses</font><br />':'').  
      '<b>Submitted Answer: </b>'.  
      &cleanRecord($subval,$responsetype,$symb,$partid,$respid,\%record,$order).  
      '<br /><br />'.$similar."\n"  
      if ($ENV{'form.lastSub'} eq 'lastonly' ||   
  ($ENV{'form.lastSub'} eq 'hdgrade' &&   
   $$handgrade{$part} =~ /:yes$/));  
     }  
  }   }
    $lastsubonly.='<b>Submitted Answer: </b>'.
       &cleanRecord($subval,$responsetype,$symb,$partid,
    $respid,\%record,$order);
    if ($similar) {$lastsubonly.="<br /><br />$similar\n";}
     }      }
  }   }
     }      }
     $lastsubonly.='</td></tr><tr bgcolor="#ffffff"><td>'."\n";  
     $request->print($lastsubonly);  
  }   }
    $lastsubonly.='</td></tr><tr bgcolor="#ffffff"><td>'."\n";
    $request->print($lastsubonly);
     } elsif ($ENV{'form.lastSub'} eq 'datesub') {      } elsif ($ENV{'form.lastSub'} eq 'datesub') {
  my (undef,$responseType,undef,$parts) = &showResourceInfo($url);   my (undef,$responseType,undef,$parts) = &showResourceInfo($url);
  $request->print(&displaySubByDates($symb,\%record,$parts,$responseType,$checkIcon,$uname,$udom));   $request->print(&displaySubByDates($symb,\%record,$parts,$responseType,$checkIcon,$uname,$udom));
Line 1805  sub processHandGrade { Line 1806  sub processHandGrade {
        $ENV{'form.msgsub'},$message);         $ENV{'form.msgsub'},$message);
     }      }
     if ($ENV{'form.collaborator'.$ctr}) {      if ($ENV{'form.collaborator'.$ctr}) {
  my (@collaborators) = split(/:/,$ENV{'form.collaborator'.$ctr});   &Apache::lonnet::logthis('collab '.(join(':',@{ $ENV{'form.collaborator'.$ctr} })));
  foreach (@collaborators) {   my @collabstrs;
     my ($errorflag,$pts,$wgt) =    if (ref($ENV{'form.collaborator'.$ctr}) eq 'ARRAY') {
  &saveHandGrade($request,$url,$symb,$_,$udom,$ctr,$ENV{'form.unamedom'.$ctr});      @collabstrs=@{$ENV{'form.collaborator'.$ctr}};
     if ($errorflag eq 'not_allowed') {   } else {
  $request->print("<font color=\"red\">Not allowed to modify grades for $_:$udom</font>");      @collabstrs=$ENV{'form.collaborator'.$ctr};
  next;   }
     } else {   foreach my $collabstr (@collabstrs) {
  if ($message ne '') {      my ($part,@collaborators) = split(/:/,$collabstr);
     $msgstatus = &Apache::lonmsg::user_normal_msg ($_,$udom,      foreach (@collaborators) {
    $ENV{'form.msgsub'},   my ($errorflag,$pts,$wgt) = 
    $message);      &saveHandGrade($request,$url,$symb,$_,$udom,$ctr,
      $ENV{'form.unamedom'.$ctr},$part);
    if ($errorflag eq 'not_allowed') {
       $request->print("<font color=\"red\">Not allowed to modify grades for $_:$udom</font>");
       next;
    } else {
       if ($message ne '') {
    $msgstatus = &Apache::lonmsg::user_normal_msg($_,$udom,$ENV{'form.msgsub'},$message);
       }
       
  }   }
     }      }
  }   }
Line 1968  sub processHandGrade { Line 1978  sub processHandGrade {
   
 #---- Save the score and award for each student, if changed  #---- Save the score and award for each student, if changed
 sub saveHandGrade {  sub saveHandGrade {
     my ($request,$url,$symb,$stuname,$domain,$newflg,$submitter) = @_;      my ($request,$url,$symb,$stuname,$domain,$newflg,$submitter,$part) = @_;
     my $usec = &Apache::lonnet::getsection($domain,$stuname,      my $usec = &Apache::lonnet::getsection($domain,$stuname,
    $ENV{'request.course.id'});     $ENV{'request.course.id'});
     if (!&canmodify($usec)) { return('not_allowed'); }      if (!&canmodify($usec)) { return('not_allowed'); }
Line 1976  sub saveHandGrade { Line 1986  sub saveHandGrade {
     my %newrecord  = ();      my %newrecord  = ();
     my ($pts,$wgt) = ('','');      my ($pts,$wgt) = ('','');
     foreach (split(/:/,$ENV{'form.partlist'.$newflg})) {      foreach (split(/:/,$ENV{'form.partlist'.$newflg})) {
    &Apache::lonnet::logthis("-$submitter-$stuname-$part-$_");
    #collaborator may vary for different parts
    if ($submitter && $_ ne $part) { next; }
  my $dropMenu = $ENV{'form.GD_SEL'.$newflg.'_'.$_};   my $dropMenu = $ENV{'form.GD_SEL'.$newflg.'_'.$_};
  if ($dropMenu eq 'excused') {   if ($dropMenu eq 'excused') {
     if ($record{'resource.'.$_.'.solved'} ne 'excused') {      if ($record{'resource.'.$_.'.solved'} ne 'excused') {
Line 2011  sub saveHandGrade { Line 2024  sub saveHandGrade {
  $newrecord{$reckey} = 'correct_by_override'    $newrecord{$reckey} = 'correct_by_override' 
     if ($record{$reckey} ne 'correct_by_override');      if ($record{$reckey} ne 'correct_by_override');
     }      }
       
     $newrecord{'resource.'.$_.'.submitted_by'} = $submitter       $newrecord{'resource.'.$_.'.submitted_by'} = $submitter 
  if ($submitter && ($record{'resource.'.$_.'.submitted_by'} ne $submitter));   if ($submitter && ($record{'resource.'.$_.'.submitted_by'} ne $submitter));
     $newrecord{'resource.'.$_.'.regrader'}="$ENV{'user.name'}:$ENV{'user.domain'}";      $newrecord{'resource.'.$_.'.regrader'}="$ENV{'user.name'}:$ENV{'user.domain'}";
Line 3926  sub send_header { Line 3940  sub send_header {
 #remotewindow.close();  #remotewindow.close();
 #</script>");   #</script>"); 
     $request->print(&Apache::loncommon::bodytag('Grading'));      $request->print(&Apache::loncommon::bodytag('Grading'));
       foreach my $key (sort(keys(%ENV))) {
    if ($key =~ /^form\./) {
       Apache->request->print("$key => $ENV{$key} <br />");
    }
       }
 }  }
   
 sub send_footer {  sub send_footer {

Removed from v.1.148  
changed lines
  Added in v.1.151


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