Diff for /loncom/homework/lonhomework.pm between versions 1.225 and 1.226

version 1.225, 2005/11/15 21:39:33 version 1.226, 2005/11/21 21:51:29
Line 166  sub send_footer { Line 166  sub send_footer {
 }  }
   
 sub proctor_checked_in {  sub proctor_checked_in {
     my ($slot_name,$slot)=@_;      my ($slot_name,$slot,$type)=@_;
     my @allowed=split(",",$slot->{'proctor'});      my @possible_proctors=split(",",$slot->{'proctor'});
     my $version=$Apache::lonhomework::history{'resource.version'};      
     foreach my $possible (@allowed) {       my $key;
  if ($Apache::lonhomework::history{"resource.$version.checkedin"} eq      if ($type eq 'Task') {
     $possible &&   my $version=$Apache::lonhomework::history{'resource.version'};
     $Apache::lonhomework::history{"resource.$version.checkedin.slot"}   $key ="resource.$version.checkedin";
        eq $slot_name) {      } elsif ($type eq 'problem') {
    $key ='resource.0.checkedin';
       }
       
       foreach my $possible (@possible_proctors) { 
    if ($Apache::lonhomework::history{$key} eq $possible
       && $Apache::lonhomework::history{$key.'.slot'} eq $slot_name) {
     return 1;      return 1;
  }   }
     }      }
       
     return 0;      return 0;
 }  }
   
Line 230  sub check_ip_acc { Line 237  sub check_ip_acc {
     return $allowed;      return $allowed;
 }  }
   
 sub check_task_access {  sub check_slot_access {
       my ($id,$type)=@_;
   
     # does it pass normal muster      # does it pass normal muster
     # yes we really do want the default args passing      my ($status,$datemsg)=&check_access($id);
     my ($status,$datemsg)=&check_access;      
       my $useslots = &Apache::lonnet::EXT("resource.$id.useslots");
       if ($useslots ne 'resource') {
    return ($status,$datemsg);
       }
   
     if ($status eq 'SHOW_ANSWER' ||      if ($status eq 'SHOW_ANSWER' ||
  $status eq 'CLOSED' ||   $status eq 'CLOSED' ||
  $status eq 'INVALID_ACCESS' ||   $status eq 'INVALID_ACCESS' ||
Line 243  sub check_task_access { Line 257  sub check_task_access {
     if ($env{'request.state'} eq "construct") {      if ($env{'request.state'} eq "construct") {
  return ($status,$datemsg);   return ($status,$datemsg);
     }      }
     my $version=$Apache::lonhomework::history{'resource.version'};      
     if ($Apache::lonhomework::history{"resource.$version.checkedin"} &&      if ($type eq 'Task') {
  $Apache::lonhomework::history{"resource.$version.status"} eq 'pass') {   my $version=$Apache::lonhomework::history{'resource.version'};
  return ('SHOW_ANSWER');   if ($Apache::lonhomework::history{"resource.$version.checkedin"} &&
       $Apache::lonhomework::history{"resource.$version.status"} eq 'pass') {
       return ('SHOW_ANSWER');
    }
     }      }
     my ($id)=@_;  
     my @slots=      my @slots=
  (split(':',&Apache::lonnet::EXT("resource.$id.availablestudent")),   (split(':',&Apache::lonnet::EXT("resource.$id.availablestudent")),
  split(':',&Apache::lonnet::EXT("resource.$id.available")));   split(':',&Apache::lonnet::EXT("resource.$id.available")));
Line 273  sub check_task_access { Line 290  sub check_task_access {
  }   }
     }      }
     if ($slotstatus eq 'NEEDS_CHECKIN' &&      if ($slotstatus eq 'NEEDS_CHECKIN' &&
  &proctor_checked_in($slot_name,$returned_slot)) {   &proctor_checked_in($slot_name,$returned_slot,$type)) {
  &Apache::lonxml::debug("protoctor checked in");   &Apache::lonxml::debug("protoctor checked in");
  $slotstatus='CAN_ANSWER';   $slotstatus='CAN_ANSWER';
     }      }
     if ( $slotstatus eq 'NOT_IN_A_SLOT' &&   
  $Apache::lonhomework::history{"resource.$version.checkedin"}) {      my ($pass_status,$checkedin);
  if ($Apache::lonhomework::history{"resource.$version.status"} eq 'fail') {      if ($type eq 'Task') {
    my $version=$Apache::lonhomework::history{'resource.version'};
    $pass_status = 
       $Apache::lonhomework::history{"resource.$version.status"} eq 'fail';
    $checkedin =
       $Apache::lonhomework::history{"resource.$version.checkedin"};
       } elsif ($type eq 'problem') {
    $pass_status = 1;
    $checkedin = $Apache::lonhomework::history{"resource.0.checkedin"};
       }
       
       if ($slotstatus eq 'NOT_IN_A_SLOT' 
    && $checkedin ) {
   
    if ($pass_status) {
     return ('SHOW_ANSWER');      return ('SHOW_ANSWER');
  } else {   } else {
     return ('WAITING_FOR_GRADE');      return ('WAITING_FOR_GRADE');
  }   }
   
     }      }
     if ( $status eq 'CANNOT_ANSWER' &&       if ( $status eq 'CANNOT_ANSWER' && 
  ($slotstatus ne 'NEEDS_CHECKIN' && $slotstatus ne 'NOT_IN_A_SLOT')) {   ($slotstatus ne 'NEEDS_CHECKIN' && $slotstatus ne 'NOT_IN_A_SLOT')) {
Line 301  sub check_access { Line 333  sub check_access {
     my $status;      my $status;
     my $datemsg = '';      my $datemsg = '';
     my $lastdate = '';      my $lastdate = '';
     my $temp;  
     my $type;      my $type;
     my $passed;      my $passed;
   
Line 338  sub check_access { Line 369  sub check_access {
     return($status,$date);      return($status,$date);
  }   }
   
  foreach $temp ("opendate","duedate","answerdate") {   foreach my $temp ("opendate","duedate","answerdate") {
     $lastdate = $date;      $lastdate = $date;
     $date = &Apache::lonnet::EXT("resource.$id.$temp");      $date = &Apache::lonnet::EXT("resource.$id.$temp");
     my $thistype = &Apache::lonnet::EXT("resource.$id.$temp.type");      my $thistype = &Apache::lonnet::EXT("resource.$id.$temp.type");

Removed from v.1.225  
changed lines
  Added in v.1.226


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