Diff for /loncom/homework/bridgetask.pm between versions 1.25 and 1.29

version 1.25, 2005/05/19 21:22:44 version 1.29, 2005/05/20 21:23:42
Line 71  sub proctor_check_auth { Line 71  sub proctor_check_auth {
     if ($authhost ne 'no_host') {      if ($authhost ne 'no_host') {
  my $version=   my $version=
     $Apache::lonhomework::results{'resource.version'}=      $Apache::lonhomework::results{'resource.version'}=
     $Apache::lonhomework::history{'resource.version'}++;      ++$Apache::lonhomework::history{'resource.version'};
  $Apache::lonhomework::results{"resource.$version.checkedin"}=   $Apache::lonhomework::results{"resource.$version.checkedin"}=
     $user.'@'.$domain;      $user.'@'.$domain;
  $Apache::lonhomework::results{"resource.$version.checkedin.slot"}=   $Apache::lonhomework::results{"resource.$version.checkedin.slot"}=
     $slot_name;      $slot_name;
    foreach my $key (keys(%Apache::lonhomework::history)) {
       if ($key=~/^resource\.0\./) {
    $Apache::lonhomework::results{$key}='';
       }
    }
  return 1;   return 1;
     }      }
  }   }
Line 84  sub proctor_check_auth { Line 89  sub proctor_check_auth {
 }  }
   
 sub get_version {  sub get_version {
       my ($version,$previous);
     if ($env{'form.previousversion'} &&       if ($env{'form.previousversion'} && 
  defined($Apache::lonhomework::history{'resource.'.$env{'form.previousversion'}.'.status'})) {   defined($Apache::lonhomework::history{'resource.'.$env{'form.previousversion'}.'.status'})) {
  return $env{'form.previousversion'};   $version=$env{'form.previousversion'};
    $previous=1;
       } else {
    $version=$Apache::lonhomework::history{'resource.version'};
    $previous=0;
     }      }
     return $Apache::lonhomework::history{'resource.version'};      if (wantarray) {
    return ($version,$previous);
       }
       return $version;
 }  }
   
 sub add_previous_version_button {  sub add_previous_version_button {
     my ($status)=@_;      my ($status)=@_;
     my $result;      my $result;
     if ($Apache::lonhomework::history{'resource.version'} eq '0') {      if ($Apache::lonhomework::history{'resource.version'} eq '') {
  return '';   return '';
     }      }
     my $version=&get_version();      if ($Apache::lonhomework::history{'resource.version'} < 2 &&
     if ($version ne $Apache::lonhomework::history{'resource.version'}) {   $status ne 'NEEDS_CHECKIN') {
  return '';   return '';
     }      }
       my $version=&get_version();
     $result.=&mt(' Show a previously done version: [_1]','<select name="previousversion">      if ($env{'form.previousversion'} ne '' &&
 <option>Pick one</option>   $env{'form.previousversion'} eq $version) {
 </select>');   $result.="<h3>".&mt("Showing previous version [_1]",$version).
       "</h3>\n";
       }
       my @to_show;
       foreach my $test_version (1..$Apache::lonhomework::history{'resource.version'}) {
    if (defined($Apache::lonhomework::history{'resource.'.$test_version.'.status'})) {
       push(@to_show,$test_version);
    }
       }
       my $list='<option>'.
    join("</option>\n<option>",@to_show).
        "</option>\n";
       $result.='<form name="getprevious" method="POST" action="';
       my $uri=$env{'request.uri'};
       if ($env{'request.enc'}) { $uri=&Apache::lonenc::encrypted($uri); }
       $result.=$uri.'">'.
    &mt(' Show a previously done version: [_1]','<select onchange="this.form.submit()" name="previousversion">
   <option>'.&mt('Pick one').'</option>
   '.$list.'
   </select>')."</form>";
     return $result;      return $result;
 }  }
   
 sub add_grading_button {  sub add_grading_button {
     my $result;      my $result=' <input type="submit" name="gradeasubmission" value="'.
     $result.=' <input type="submit" name="gradeasubmission" value="'.  
  &mt("Get a submission to grade").'" />';   &mt("Get a submission to grade").'" />';
     $result.='<input type="hidden" name="grade_target" value="webgrade" />';      $result.='<input type="hidden" name="grade_target" value="webgrade" />';
     return $result;      return $result;
Line 147  sub start_Task { Line 178  sub start_Task {
     }      }
     if ($target eq 'web' || ($target eq 'grade' && !$env{'form.webgrade'}) || $target eq 'answer' ||      if ($target eq 'web' || ($target eq 'grade' && !$env{'form.webgrade'}) || $target eq 'answer' ||
  $target eq 'tex') {   $target eq 'tex') {
  my $version=&get_version();   my ($version,$previous)=&get_version();
  ($status,$accessmsg,my $slot_name,$slot) =    ($status,$accessmsg,my $slot_name,$slot) = 
     &Apache::lonhomework::check_task_access('0');      &Apache::lonhomework::check_task_access('0');
  push(@Apache::inputtags::status,$status);   push(@Apache::inputtags::status,$status);
Line 157  sub start_Task { Line 188  sub start_Task {
  &Apache::run::run($expression,$safeeval);   &Apache::run::run($expression,$safeeval);
  &Apache::lonxml::debug("Got $status");   &Apache::lonxml::debug("Got $status");
  $body_tag_start.=&add_previous_version_button($status);   $body_tag_start.=&add_previous_version_button($status);
  if (( $status eq 'CLOSED' ) ||   if (!$previous && (
     ( $status eq 'BANNED') ||     ( $status eq 'CLOSED' ) ||
     ( $status eq 'UNAVAILABLE') ||     ( $status eq 'BANNED') ||
     ( $status eq 'NOT_IN_A_SLOT') ||     ( $status eq 'UNAVAILABLE') ||
     ( $status eq 'NEEDS_CHECKIN') ||     ( $status eq 'NOT_IN_A_SLOT') ||
     ( $status eq 'WAITING_FOR_GRADE') ||     ( $status eq 'NEEDS_CHECKIN') ||
     ( $status eq 'INVALID_ACCESS')) {     ( $status eq 'WAITING_FOR_GRADE') ||
      ( $status eq 'INVALID_ACCESS') )) {
     my $bodytext=&Apache::lonxml::get_all_text("/task",$parser);      my $bodytext=&Apache::lonxml::get_all_text("/task",$parser);
     if ( $target eq "web" ) {      if ( $target eq "web" ) {
  $result.= $head_tag_start.'</head>'.$body_tag_start;   $result.= $head_tag_start.'</head>'.$body_tag_start;
Line 215  sub start_Task { Line 247  sub start_Task {
  '" value="'.$env{"form.grade_$field"}.'" />'."\n";   '" value="'.$env{"form.grade_$field"}.'" />'."\n";
  }   }
     }      }
     my $version=&get_version();      my ($version,$previous)=&get_version();
     if ($Apache::lonhomework::history{"resource.$version.status"} eq 'fail') {      if ($Apache::lonhomework::history{"resource.$version.status"} eq 'fail') {
  $result.='<h1><font color="red">'.&mt('Did not pass').'</font></h1>';   $result.='<h1><font color="red">'.&mt('Did not pass').'</font></h1>';
  $result.=&add_request_another_attempt_button();   if (!$previous) {
       $result.=&add_request_another_attempt_button();
    }
     }      }
     if ($Apache::lonhomework::history{"resource.$version.status"} eq 'pass') {      if ($Apache::lonhomework::history{"resource.$version.status"} eq 'pass') {
  $result.='<h1><font color="green">'.&mt('Passed').'</font></h1>';   $result.='<h1><font color="green">'.&mt('Passed').'</font></h1>';
Line 261  sub end_Task { Line 295  sub end_Task {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my $result='';      my $result='';
     my $status=$Apache::inputtags::status['-1'];      my $status=$Apache::inputtags::status['-1'];
     my $version=&get_version();      my ($version,$previous)=&get_version();
     if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' ||      if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' ||
  $target eq 'tex') {   $target eq 'tex') {
  if (   if (
Line 269  sub end_Task { Line 303  sub end_Task {
     ($target eq 'answer') || ($target eq 'tex')      ($target eq 'answer') || ($target eq 'tex')
    ) {     ) {
     if ($target eq 'web') {      if ($target eq 'web') {
  if ($status eq 'CAN_ANSWER') {   if ($status eq 'CAN_ANSWER' && !$previous) {
     $result.="\n".'<table border="1">'.      $result.="\n".'<table border="1">'.
  &Apache::inputtags::file_selector($version,   &Apache::inputtags::file_selector("$version.0",
   "bridgetask","*",    "bridgetask","*",
   'portfolioonly').    'portfolioonly').
   "</table>";    "</table>";
Line 282  sub end_Task { Line 316  sub end_Task {
  $result.=&Apache::lonxml::xmlend().'</html>';   $result.=&Apache::lonxml::xmlend().'</html>';
     }      }
  }   }
  if ($target eq 'grade' && !$env{'form.webgrade'}) {   if ($target eq 'grade' && !$env{'form.webgrade'} && !$previous) {
     my $award='SUBMITTED';      my $award='SUBMITTED';
     &Apache::essayresponse::file_submission('0','bridgetask',      &Apache::essayresponse::file_submission("$version.0",'bridgetask',
     'portfiles',\$award);      'portfiles',\$award);
     if ($award eq 'SUBMITTED' &&      if ($award eq 'SUBMITTED' &&
  $Apache::lonhomework::results{"resource.$version.bridgetask.portfiles"}) {   $Apache::lonhomework::results{"resource.$version.0.bridgetask.portfiles"}) {
  $Apache::lonhomework::results{"resource.$version.tries"}=   $Apache::lonhomework::results{"resource.0.tries"}=
     1+$Apache::lonhomework::history{"resource.$version.tries"};      $Apache::lonhomework::results{"resource.$version.0.tries"}=
       1+$Apache::lonhomework::history{"resource.$version.0.tries"};
   
    $Apache::lonhomework::results{"resource.0.award"}=
       $Apache::lonhomework::results{"resource.$version.0.award"}=
       $award;
     }      }
     $Apache::lonhomework::results{"resource.$version.award"}=$award;  
     &Apache::lonhomework::showhash(%Apache::lonhomework::results);      &Apache::lonhomework::showhash(%Apache::lonhomework::results);
     &Apache::structuretags::finalize_storage();      &Apache::structuretags::finalize_storage();
     if ($award eq 'SUBMITTED') {      if ($award eq 'SUBMITTED') {
Line 347  sub end_Task { Line 385  sub end_Task {
  $Apache::lonhomework::results{"resource.$version.0.awarded"}='1';   $Apache::lonhomework::results{"resource.$version.0.awarded"}='1';
  &remove_from_queue();   &remove_from_queue();
     }      }
     $Apache::lonhomework::results{'resource.status'}=      $Apache::lonhomework::results{"resource.status"}=
  $Apache::lonhomework::results{'resource.$version.status'};   $Apache::lonhomework::results{"resource.$version.status"};
     if (defined($Apache::lonhomework::results{'resource.$version.awarded'})) {      if (defined($Apache::lonhomework::results{"resource.$version.0.awarded"})) {
  $Apache::lonhomework::results{'resource.0.award'}=   $Apache::lonhomework::results{"resource.0.award"}=
     $Apache::lonhomework::results{'resource.$version.award'};      $Apache::lonhomework::results{"resource.$version.award"};
  $Apache::lonhomework::results{'resource.0.awarded'}=   $Apache::lonhomework::results{"resource.0.awarded"}=
     $Apache::lonhomework::results{'resource.$version.awarded'};      $Apache::lonhomework::results{"resource.$version.awarded"};
  $Apache::lonhomework::results{'resource.0.solved'}=   $Apache::lonhomework::results{"resource.0.solved"}=
     $Apache::lonhomework::results{'resource.$version.solved'};      $Apache::lonhomework::results{"resource.$version.solved"};
     }      }
     &Apache::structuretags::finalize_storage();      &Apache::structuretags::finalize_storage();
  }   }
Line 388  sub check_queue_unlock { Line 426  sub check_queue_unlock {
 }  }
   
 sub remove_from_queue {  sub remove_from_queue {
     &Apache::lonxml::debug("Want to remove. Done?");      my ($symb,$cid,$udom,$uname)=&Apache::lonxml::whichuser();
       my $cnum=$env{'course.'.$cid.'.num'};
       my $cdom=$env{'course.'.$cid.'.domain'};
       my $key="$symb\0queue\0$uname\@$udom";
       my @keys=($key,"$key\0locked");
       &Apache::lonnet::del('gradingqueue',\@keys,$cdom,$cnum);
 }  }
   
 sub setup_env_for_other_user {  sub setup_env_for_other_user {
Line 417  sub show_queue { Line 460  sub show_queue {
     my $cdom=$env{'course.'.$cid.'.domain'};      my $cdom=$env{'course.'.$cid.'.domain'};
     my $regexp="^$symb\0";      my $regexp="^$symb\0";
     my %queue=&Apache::lonnet::dump('gradingqueue',$cdom,$cnum,$regexp);      my %queue=&Apache::lonnet::dump('gradingqueue',$cdom,$cnum,$regexp);
     $result.="\n<h3>Current Queue</h3><table><tr><th>resource</th>".      $result.="\n<h3>Current Queue</h3><table border='1'><tr><th>resource</th>".
  "<th>user</th><th>type</th><th>data</th></tr>";   "<th>user</th><th>type</th><th>data</th></tr>";
     foreach my $key (sort(keys(%queue))) {      foreach my $key (sort(keys(%queue))) {
  if ($key=~/locked$/) {   if ($key=~/locked$/) {
     my ($symb,$uname,$udom) = &decode_queue_key($key);      my ($symb,$uname,$udom) = &decode_queue_key($key);
     my $title=&Apache::lonnet::gettitle($symb);      my $title=&Apache::lonnet::gettitle($symb);
     $result.="<tr><td>$title</td><td>$uname</td><td>";      $result.="<tr><td>$title</td><td>$uname</td>";
     $result.='<td>lock</td><td>'.$queue{$key}.'</td></tr>';      $result.='<td>lock</td><td>'.$queue{$key}.'</td></tr>';
  } elsif ($key=~/timestamp$/) {   } elsif ($key=~/timestamp$/) {
     my ($symb,undef) = split("\0",$key);      my ($symb,undef) = split("\0",$key);
     my $title=&Apache::lonnet::gettitle($symb);      my $title=&Apache::lonnet::gettitle($symb);
     $result.="<tr><td>$title</td><td></td><td>";      $result.="<tr><td>$title</td><td></td>";
     $result.='<td>last queue modification time</td><td>'.      $result.='<td>last queue modification time</td><td>'.
  &Apache::lonlocal::locallocaltime($queue{$key})."</td></tr>";   &Apache::lonlocal::locallocaltime($queue{$key})."</td></tr>";
  } else {   } else {
     my ($symb,$uname,$udom) = &decode_queue_key($key);      my ($symb,$uname,$udom) = &decode_queue_key($key);
     my $title=&Apache::lonnet::gettitle($symb);      my $title=&Apache::lonnet::gettitle($symb);
     $result.="<tr><td>$title</td><td>$uname</td><td>";      $result.="<tr><td>$title</td><td>$uname</td>";
     my $slot=$queue{$key}->[0];      my $slot=$queue{$key}->[0];
     my %slot_data=&Apache::lonnet::get_slot($slot);      my %slot_data=&Apache::lonnet::get_slot($slot);
     $result.='<td>queue entry</td><td>End time: '.      $result.='<td>queue entry</td><td>Slot: '.$slot.' End time: '.
  &Apache::lonlocal::locallocaltime($slot_data{'endtime'}).   &Apache::lonlocal::locallocaltime($slot_data{'endtime'}).
  "</td></tr>";   "</td></tr>";
  }   }
Line 625  sub get_instance { Line 668  sub get_instance {
     #then start repicking      #then start repicking
     &Apache::response::pushrandomnumber();      &Apache::response::pushrandomnumber();
     my @order=&Math::Random::random_permutation(@{$dimension{'instances'}});      my @order=&Math::Random::random_permutation(@{$dimension{'instances'}});
     return $order[0];      my $num=@order;
       my $version=&get_version();
       my $which=($version-1)%$num;
       return $order[$which];
 }  }
   
 {  {
Line 638  sub get_instance { Line 684  sub get_instance {
  my $version=&get_version();   my $version=&get_version();
  if ($target eq 'web') {   if ($target eq 'web') {
     $result=$dimension{'intro'}.$dimension{$instance.'.text'};      $result=$dimension{'intro'}.$dimension{$instance.'.text'};
     if ($Apache::lonhomework::history{'resource.$version.status'} eq 'pass' ||      if ($Apache::lonhomework::history{"resource.$version.status"} eq 'pass' ||
  $Apache::lonhomework::history{'resource.$version.status'} eq 'fail') {   $Apache::lonhomework::history{"resource.$version.status"} eq 'fail') {
  foreach my $id (@{$dimension{$instance.'.criterias'}}) {   foreach my $id (@{$dimension{$instance.'.criterias'}}) {
     my $status=$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"};      my $status=$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.status"};
     my $comment=$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.comment"};      my $comment=$Apache::lonhomework::history{"resource.$version.$dim.$instance.$id.comment"};

Removed from v.1.25  
changed lines
  Added in v.1.29


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