Diff for /loncom/homework/bridgetask.pm between versions 1.8 and 1.11

version 1.8, 2005/03/31 21:24:29 version 1.11, 2005/04/07 06:56:21
Line 37  use Apache::lonmenu; Line 37  use Apache::lonmenu;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonxml;  use Apache::lonxml;
 use Time::HiRes qw( gettimeofday tv_interval );  use Time::HiRes qw( gettimeofday tv_interval );
   
 BEGIN {  BEGIN {
     &Apache::lonxml::register('Apache::bridgetask',('Task','IntroParagraph','Dimension','Instance','InstanceText','Criteria','ClosingParagraph'));      &Apache::lonxml::register('Apache::bridgetask',('Task','IntroParagraph','Dimension','Instance','InstanceText','Criteria','ClosingParagraph'));
 }  }
   
   sub initialize_bridgetask {
       # id of current Dimension, 0 means that no dimension is current 
       # (inside <Task> only)
       $Apache::bridgetask::dimension='';
       # list of all Dimension ids seen
       @Apache::bridgetask::dimensionlist=();
       # list of all current Instance ids
       @Apache::bridgetask::instance=();
       # list of all Instance ids seen in this problem
       @Apache::bridgetask::instancelist=();
   }
   
 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 63  sub proctor_check_auth { Line 76  sub proctor_check_auth {
   
 sub add_previous_version_button {  sub add_previous_version_button {
     my $result;      my $result;
     $result.=' Show a previously done version: <select name="previousversion">      $result.=&mt(' Show a previously done version: [_1]','<select name="previousversion">
 <option>Pick one</option>  <option>Pick one</option>
 </select>';  </select>');
     return $result;      return $result;
 }  }
   
Line 88  sub start_Task { Line 101  sub start_Task {
  $target eq 'tex') {   $target eq 'tex') {
  ($status,$accessmsg,$slot) =    ($status,$accessmsg,$slot) = 
     &Apache::lonhomework::check_task_access('0');      &Apache::lonhomework::check_task_access('0');
  push (@Apache::inputtags::status,$status);   push(@Apache::inputtags::status,$status);
  my $expression='$external::datestatus="'.$status.'";';   my $expression='$external::datestatus="'.$status.'";';
  $expression.='$external::gradestatus="'.$Apache::lonhomework::history{"resource.0.solved"}.'";';   $expression.='$external::gradestatus="'.$Apache::lonhomework::history{"resource.0.solved"}.'";';
  &Apache::run::run($expression,$safeeval);   &Apache::run::run($expression,$safeeval);
Line 139  sub start_Task { Line 152  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";
  }   }
     }      }
  }   }
Line 160  sub end_Task { Line 173  sub end_Task {
     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 (
     (($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') {
  $result.='<table border="1">'.   if ($status eq 'CAN_ANSWER') {
     &Apache::inputtags::file_selector("bridge","task","*",      $result.='<table border="1">'.
       'portfolioonly').   &Apache::inputtags::file_selector('0',"bridgetask","*",
       "</table>";    'portfolioonly').
     "</table>";
       $result.=&Apache::inputtags::gradestatus('0');
    }
  $result.=&Apache::lonxml::xmlend().'</html>';   $result.=&Apache::lonxml::xmlend().'</html>';
     }      }
  }   }
  if ($target eq 'grade') {   if ($target eq 'grade') {
       &Apache::essayresponse::file_submission('0','bridgetask','portfiles','SUBMITTED');
       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 201  sub end_ClosingParagraph { Line 222  sub end_ClosingParagraph {
 }  }
   
 my %dimension;  my %dimension;
 my $dim_id;  
 sub start_Dimension {  sub start_Dimension {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     undef(%dimension);      undef(%dimension);
     $dim_id=$Apache::lonxml::curdepth;      my $dim_id=$Apache::lonxml::curdepth;
       $Apache::bridgetask::dimension=$dim_id;
       push(@Apache::bridgetask::dimensionlist,$dim_id);
       undef(@Apache::bridgetask::instance);
     return '';      return '';
 }  }
   
Line 216  sub end_Dimension { Line 239  sub end_Dimension {
  #FIXME just grabbing the first one for now, need   #FIXME just grabbing the first one for now, need
  #to randomly pick one until all have been seen   #to randomly pick one until all have been seen
  #then start repicking   #then start repicking
  my $instance=$dimension{'instances'}->[0];   &Apache::response::pushrandomnumber();
  $result=$dimension{'intro'}.   my @order=&Math::Random::random_permutation(@{$dimension{'instances'}});
     $dimension{$instance.'.text'};   my $instance=$order[0];
    $result=$dimension{'intro'}.$dimension{$instance.'.text'};
  #FIXME: don't show the criteria yet   #FIXME: don't show the criteria yet
  #foreach my $id (@{$dimension{$instance.'.criterias'}}) {   #foreach my $id (@{$dimension{$instance.'.criterias'}}) {
  #    $result.=$dimension{$instance.'.criteria.'.$id};   #    $result.=$dimension{$instance.'.criteria.'.$id};
Line 249  sub end_IntroParagraph { Line 273  sub end_IntroParagraph {
     return $result;      return $result;
 }  }
   
 my $instance_id;  
 sub start_Instance {  sub start_Instance {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     push(@{$dimension{'instances'}},$Apache::lonxml::curdepth);      push(@{$dimension{'instances'}},$Apache::lonxml::curdepth);
     $instance_id=$Apache::lonxml::curdepth;      push(@Apache::bridgetask::instance,$Apache::lonxml::curdepth);
       push(@Apache::bridgetask::instancelist,$Apache::lonxml::curdepth);
     return '';      return '';
 }  }
   
Line 272  sub start_InstanceText { Line 296  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];
     if ($target eq 'web') {      if ($target eq 'web') {
  $dimension{$instance_id.'.text'}=&Apache::lonxml::endredirection();   $dimension{$instance_id.'.text'}=&Apache::lonxml::endredirection();
     }      }
Line 288  sub start_Criteria { Line 313  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];
     if ($target eq 'web') {      if ($target eq 'web') {
  my $criteria=&Apache::lonxml::endredirection();   my $criteria=&Apache::lonxml::endredirection();
  my $id=$Apache::lonxml::curdepth;   my $id=$Apache::lonxml::curdepth;
Line 301  sub proctor_validation_screen { Line 327  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 312  sub proctor_validation_screen { Line 338  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.8  
changed lines
  Added in v.1.11


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