Diff for /loncom/homework/bridgetask.pm between versions 1.9 and 1.13

version 1.9, 2005/04/04 18:14:58 version 1.13, 2005/04/29 21:22:33
Line 56  sub initialize_bridgetask { Line 56  sub initialize_bridgetask {
   
 sub proctor_check_auth {  sub proctor_check_auth {
     my ($slot)=@_;      my ($slot)=@_;
     my $user=$ENV{'form.proctorname'};      my $user=$env{'form.proctorname'};
     my $domain=$ENV{'form.proctordomain'};      my $domain=$env{'form.proctordomain'};
           
     my @allowed=split(",",$slot->{'proctor'});      my @allowed=split(",",$slot->{'proctor'});
     foreach my $possible (@allowed) {      foreach my $possible (@allowed) {
  my ($puser,$pdom)=(split('@',$possible));   my ($puser,$pdom)=(split('@',$possible));
  if ($puser eq $user && $pdom eq $domain) {   if ($puser eq $user && $pdom eq $domain) {
     my $authhost=&Apache::lonnet::authenticate($puser,$ENV{'form.proctorpassword'},$pdom);      my $authhost=&Apache::lonnet::authenticate($puser,$env{'form.proctorpassword'},$pdom);
     if ($authhost ne 'no_host') {      if ($authhost ne 'no_host') {
  $Apache::lonhomework::results{'resource.checkedin'}=   $Apache::lonhomework::results{'resource.checkedin'}=
     $user.'@'.$domain;      $user.'@'.$domain;
Line 82  sub add_previous_version_button { Line 82  sub add_previous_version_button {
     return $result;      return $result;
 }  }
   
   sub add_grading_button {
       my $result;
       $result.=' <input type="submit" name="gradeasubmission" value="'.
    &mt("Get a submission to grade").'" />';
       $result.='<input type="hidden" name="grade_target" value="webgrade" />';
       return $result;
   }
   
 sub start_Task {  sub start_Task {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
   
     &Apache::structuretags::initialize_storage();      &Apache::structuretags::initialize_storage();
     &Apache::lonhomework::showhash(%Apache::lonhomework::history);      &Apache::lonhomework::showhash(%Apache::lonhomework::history);
   
     my ($status,$accessmsg,$slot);      my ($status,$accessmsg,$slot);
     $Apache::lonhomework::parsing_a_task=1;      $Apache::lonhomework::parsing_a_task=1;
     #should get back a <html> or the neccesary stuff to start XML/MathML      #should get back a <html> or the neccesary stuff to start XML/MathML
Line 96  sub start_Task { Line 103  sub start_Task {
   
     if ($target eq 'web') {      if ($target eq 'web') {
  $body_tag_start.=&add_previous_version_button();   $body_tag_start.=&add_previous_version_button();
    if ($Apache::lonhomework::modifygrades) {
       $body_tag_start.='<form name="gradesubmission" method="POST" action="';
       my $uri=$env{'request.uri'};
       if ($env{'request.enc'}) { $uri=&Apache::lonenc::encrypted($uri); }
       $body_tag_start.=$uri.'">'.&add_grading_button()."</form>";
    }
     }      }
     if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' ||      if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' ||
  $target eq 'tex') {   $target eq 'tex') {
Line 152  sub start_Task { Line 165  sub start_Task {
               $body_tag_start \n $form_tag_start".                $body_tag_start \n $form_tag_start".
       '<input type="hidden" name="submitted" value="yes" />';        '<input type="hidden" name="submitted" value="yes" />';
     # if we are viewing someone else preserve that info      # if we are viewing someone else preserve that info
     if (defined $ENV{'form.grade_symb'}) {      if (defined $env{'form.grade_symb'}) {
  foreach my $field ('symb','courseid','domain','username') {   foreach my $field ('symb','courseid','domain','username') {
     $result .= '<input type="hidden" name="grade_'.$field.      $result .= '<input type="hidden" name="grade_'.$field.
  '" value="'.$ENV{"form.grade_$field"}.'" />'."\n";   '" value="'.$env{"form.grade_$field"}.'" />'."\n";
  }   }
     }      }
  }   }
       } elsif ($target eq 'webgrade') {
    $result.=$head_tag_start.$body_tag_start.$form_tag_start.
       'Yahoo!';
     } else {      } else {
  # page_start returned a starting result, delete it if we don't need it   # page_start returned a starting result, delete it if we don't need it
  $result = '';   $result = '';
Line 171  sub end_Task { Line 187  sub end_Task {
     my $result='';      my $result='';
     my $status=$Apache::inputtags::status['-1'];      my $status=$Apache::inputtags::status['-1'];
     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' || $target eq 'webgrade') {
  if (   if (
     (($target eq 'web') && ($ENV{'request.state'} ne 'construct')) ||      (($target eq 'web') && ($env{'request.state'} ne 'construct')) ||
     ($target eq 'answer') || ($target eq 'tex')      ($target eq 'answer') || ($target eq 'tex')
    ) {     ) {
     if ($target eq 'web') {      if ($target eq 'web') {
Line 184  sub end_Task { Line 200  sub end_Task {
   "</table>";    "</table>";
     $result.=&Apache::inputtags::gradestatus('0');      $result.=&Apache::inputtags::gradestatus('0');
  }   }
       } 
       if ($target eq 'web' || $target eq 'webgrade') {
  $result.=&Apache::lonxml::xmlend().'</html>';   $result.=&Apache::lonxml::xmlend().'</html>';
     }      }
  }   }
  if ($target eq 'grade') {   if ($target eq 'grade') {
       my $award='SUBMITTED';
       &Apache::essayresponse::file_submission('0','bridgetask','portfiles',$award);
       if ($Apache::lonhomework::results{"resource.0.bridgetask.portfiles"}) {
    $Apache::lonhomework::results{"resource.0.tries"}=
       1+$Apache::lonhomework::history{"resource.0.tries"};
       }
     &Apache::lonhomework::showhash(%Apache::lonhomework::results);      &Apache::lonhomework::showhash(%Apache::lonhomework::results);
     &Apache::structuretags::finalize_storage();      &Apache::structuretags::finalize_storage();
  }   }
Line 204  sub start_ClosingParagraph { Line 228  sub start_ClosingParagraph {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my $result;      my $result;
     if ($target eq 'web') {      if ($target eq 'web') {
       } elsif ($target eq 'webgrade') {
    &Apache::lonxml::startredirection();
     }      }
     return $result;      return $result;
 }  }
Line 212  sub end_ClosingParagraph { Line 238  sub end_ClosingParagraph {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my $result;      my $result;
     if ($target eq 'web') {      if ($target eq 'web') {
       } elsif ($target eq 'webgrade') {
    &Apache::lonxml::endredirection();
     }      }
     return $result;      return $result;
 }  }
Line 227  sub start_Dimension { Line 255  sub start_Dimension {
     return '';      return '';
 }  }
   
   sub get_instance {
       #FIXME just grabbing the first one for now, need
       #to randomly pick one until all have been seen
       #then start repicking
       &Apache::response::pushrandomnumber();
       my @order=&Math::Random::random_permutation(@{$dimension{'instances'}});
       return $order[0];
   }
   
 sub end_Dimension {  sub end_Dimension {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my $result;      my $result;
     if ($target eq 'web') {      if ($target eq 'web') {
  #FIXME just grabbing the first one for now, need   my $instance=&get_instance();
  #to randomly pick one until all have been seen  
  #then start repicking  
  &Apache::response::pushrandomnumber();  
  my $num_instances=scalar(@{$dimension{'instances'}});  
  my $which=&Math::Random::random_uniform_integer(1,0,$num_instances-1);  
  my $instance=$dimension{'instances'}->[$which];  
  $result=$dimension{'intro'}.$dimension{$instance.'.text'};   $result=$dimension{'intro'}.$dimension{$instance.'.text'};
  #FIXME: don't show the criteria yet      } elsif ($target eq 'webgrade') {
  #foreach my $id (@{$dimension{$instance.'.criterias'}}) {   my $instance=&get_instance();
  #    $result.=$dimension{$instance.'.criteria.'.$id};   $result.='<table>';
  #}   foreach my $id (@{$dimension{$instance.'.criterias'}}) {
       $result.='<tr><td>'.
    $dimension{$instance.'.criteria.'.$id}.'</td></tr>';
    }
    $result.='</table>';
     }      }
     return $result;      return $result;
 }  }
Line 250  sub end_Dimension { Line 285  sub end_Dimension {
 sub start_IntroParagraph {  sub start_IntroParagraph {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my $result;      my $result;
     if ($target eq 'web') {      if ($target eq 'web' || $target eq 'webgrade') {
  if ($tagstack->[-2] eq 'Dimension') {   if ($tagstack->[-2] eq 'Dimension' || $target eq 'webgrade') {
     &Apache::lonxml::startredirection();      &Apache::lonxml::startredirection();
  }   }
     }      }
Line 261  sub start_IntroParagraph { Line 296  sub start_IntroParagraph {
 sub end_IntroParagraph {  sub end_IntroParagraph {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my $result;      my $result;
     if ($target eq 'web') {      if ($target eq 'web' || $target eq 'webgrade') {
  if ($tagstack->[-2] eq 'Dimension') {   if ($tagstack->[-2] eq 'Dimension' || $target eq 'webgrade') {
     $dimension{'intro'}=&Apache::lonxml::endredirection();      $dimension{'intro'}=&Apache::lonxml::endredirection();
  }   }
     }      }
Line 284  sub end_Instance { Line 319  sub end_Instance {
   
 sub start_InstanceText {  sub start_InstanceText {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     if ($target eq 'web') {      if ($target eq 'web' || $target eq 'webgrade') {
  &Apache::lonxml::startredirection();   &Apache::lonxml::startredirection();
     }      }
     return '';      return '';
Line 293  sub start_InstanceText { Line 328  sub start_InstanceText {
 sub end_InstanceText {  sub end_InstanceText {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my $instance_id=$Apache::bridgetask::instance[-1];      my $instance_id=$Apache::bridgetask::instance[-1];
     if ($target eq 'web') {      if ($target eq 'web' || $target eq 'webgrade') {
  $dimension{$instance_id.'.text'}=&Apache::lonxml::endredirection();   $dimension{$instance_id.'.text'}=&Apache::lonxml::endredirection();
     }      }
     return '';      return '';
Line 301  sub end_InstanceText { Line 336  sub end_InstanceText {
   
 sub start_Criteria {  sub start_Criteria {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     if ($target eq 'web') {      if ($target eq 'web' || $target eq 'webgrade') {
  &Apache::lonxml::startredirection();   &Apache::lonxml::startredirection();
     }      }
     return '';      return '';
Line 310  sub start_Criteria { Line 345  sub start_Criteria {
 sub end_Criteria {  sub end_Criteria {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my $instance_id=$Apache::bridgetask::instance[-1];      my $instance_id=$Apache::bridgetask::instance[-1];
     if ($target eq 'web') {      if ($target eq 'web' || $target eq 'webgrade') {
  my $criteria=&Apache::lonxml::endredirection();   my $criteria=&Apache::lonxml::endredirection();
  my $id=$Apache::lonxml::curdepth;   my $id=$Apache::lonxml::curdepth;
  $dimension{$instance_id.'.criteria.'.$id}=$criteria;   $dimension{$instance_id.'.criteria.'.$id}=$criteria;
Line 323  sub proctor_validation_screen { Line 358  sub proctor_validation_screen {
     my ($slot) = @_;      my ($slot) = @_;
     my (undef,undef,$domain,$user) = &Apache::lonxml::whichuser();      my (undef,undef,$domain,$user) = &Apache::lonxml::whichuser();
     my $url=&Apache::lonnet::studentphoto($domain,$user,'jpg');      my $url=&Apache::lonnet::studentphoto($domain,$user,'jpg');
     $user=$ENV{'form.proctorname'};      $user=$env{'form.proctorname'};
     if ($ENV{'form.proctordomain'}) { $domain=$ENV{'form.proctordomain'}; }      if ($env{'form.proctordomain'}) { $domain=$env{'form.proctordomain'}; }
     my $msg;      my $msg;
     if ($ENV{'form.proctorpassword'}) {      if ($env{'form.proctorpassword'}) {
  $msg='<p><font color="red">'.&mt("Failed to authenticate the proctor.")   $msg='<p><font color="red">'.&mt("Failed to authenticate the proctor.")
     .'</font></p>';      .'</font></p>';
     }      }
Line 334  sub proctor_validation_screen { Line 369  sub proctor_validation_screen {
 <h2>Proctor Validation</h2>  <h2>Proctor Validation</h2>
     <p>Your room's proctor needs to validate your access to this resource.</p>      <p>Your room's proctor needs to validate your access to this resource.</p>
     $msg      $msg
 <form name="checkout" method="POST" action="$ENV{'request.uri'}">  <form name="checkout" method="POST" action="$env{'request.uri'}">
 <input type="hidden" name="validate" value="yes" />  <input type="hidden" name="validate" value="yes" />
 <input type="hidden" name="submitted" value="yes" />  <input type="hidden" name="submitted" value="yes" />
 <table>  <table>

Removed from v.1.9  
changed lines
  Added in v.1.13


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