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

version 1.5, 2005/03/28 21:49:31 version 1.9, 2005/04/04 18:14:58
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'};
Line 61  sub proctor_check_auth { Line 74  sub proctor_check_auth {
     return 0;      return 0;
 }  }
   
   sub add_previous_version_button {
       my $result;
       $result.=&mt(' Show a previously done version: [_1]','<select name="previousversion">
   <option>Pick one</option>
   </select>');
       return $result;
   }
   
 sub start_Task {  sub start_Task {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
   
Line 73  sub start_Task { Line 94  sub start_Task {
     my ($result,$head_tag_start,$body_tag_start,$form_tag_start)=      my ($result,$head_tag_start,$body_tag_start,$form_tag_start)=
  &Apache::structuretags::page_start($target,$token,$tagstack,$parstack,$parser,$safeeval);   &Apache::structuretags::page_start($target,$token,$tagstack,$parstack,$parser,$safeeval);
   
       if ($target eq 'web') {
    $body_tag_start.=&add_previous_version_button();
       }
     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') {
  ($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 153  sub end_Task { Line 177  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') {
       $result.='<table border="1">'.
    &Apache::inputtags::file_selector('0',"bridgetask","*",
     'portfolioonly').
     "</table>";
       $result.=&Apache::inputtags::gradestatus('0');
    }
  $result.=&Apache::lonxml::xmlend().'</html>';   $result.=&Apache::lonxml::xmlend().'</html>';
     }      }
  }   }
Line 173  sub start_ClosingParagraph { Line 204  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') {
  $result='<table border="1"><tr><td>Closing</td></tr><tr><td>';  
     }      }
     return $result;      return $result;
 }  }
Line 182  sub end_ClosingParagraph { Line 212  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') {
  $result='</td></tr></table>';  
     }      }
     return $result;      return $result;
 }  }
   
 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 203  sub end_Dimension { Line 234  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 $num_instances=scalar(@{$dimension{'instances'}});
     $dimension{$instance.'.text'}.   my $which=&Math::Random::random_uniform_integer(1,0,$num_instances-1);
     '<table border="1"><tr><td>Criteria</td></tr><tr><td>';   my $instance=$dimension{'instances'}->[$which];
  foreach my $id (@{$dimension{$instance.'.criterias'}}) {   $result=$dimension{'intro'}.$dimension{$instance.'.text'};
     $result.=$dimension{$instance.'.criteria.'.$id}.   #FIXME: don't show the criteria yet
  '</td></tr><tr><td>';   #foreach my $id (@{$dimension{$instance.'.criterias'}}) {
  }   #    $result.=$dimension{$instance.'.criteria.'.$id};
  $result=~s/<tr><td>$//;   #}
  $result.='</table>';  
     }      }
     return $result;      return $result;
 }  }
Line 223  sub start_IntroParagraph { Line 253  sub start_IntroParagraph {
     if ($target eq 'web') {      if ($target eq 'web') {
  if ($tagstack->[-2] eq 'Dimension') {   if ($tagstack->[-2] eq 'Dimension') {
     &Apache::lonxml::startredirection();      &Apache::lonxml::startredirection();
  } else {  
     $result='<table border="1"><tr><td>Intro</td></tr><tr><td>';  
  }   }
     }      }
     return $result;      return $result;
Line 236  sub end_IntroParagraph { Line 264  sub end_IntroParagraph {
     if ($target eq 'web') {      if ($target eq 'web') {
  if ($tagstack->[-2] eq 'Dimension') {   if ($tagstack->[-2] eq 'Dimension') {
     $dimension{'intro'}=&Apache::lonxml::endredirection();      $dimension{'intro'}=&Apache::lonxml::endredirection();
  } else {  
     $result='</td></tr></table>';  
  }   }
     }      }
     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 266  sub start_InstanceText { Line 292  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 282  sub start_Criteria { Line 309  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 295  sub proctor_validation_screen { Line 323  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');
     my $dom=(&Apache::lonxml::whichuser())[2];      $user=$ENV{'form.proctorname'};
     my $user=$ENV{'form.proctorname'};      if ($ENV{'form.proctordomain'}) { $domain=$ENV{'form.proctordomain'}; }
     if ($ENV{'form.proctordomain'}) { $dom=$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.")
Line 313  sub proctor_validation_screen { Line 340  sub proctor_validation_screen {
 <table>  <table>
   <tr><td>Proctor's Username:</td><td><input type="string" name="proctorname" value="$user" /></td></tr>    <tr><td>Proctor's Username:</td><td><input type="string" name="proctorname" value="$user" /></td></tr>
   <tr><td>Password:</td><td><input type="password" name="proctorpassword" value="" /></td></tr>    <tr><td>Password:</td><td><input type="password" name="proctorpassword" value="" /></td></tr>
   <tr><td>Proctor's Domain:</td><td><input type="string" name="proctordomain" value="$dom" /></td></tr>    <tr><td>Proctor's Domain:</td><td><input type="string" name="proctordomain" value="$domain" /></td></tr>
 </table>  </table>
 <input type="submit" name="checkoutbutton" value="Validate"  /><br />  <input type="submit" name="checkoutbutton" value="Validate"  /><br />
 Student who should be logged in is:<br />  Student who should be logged in is:<br />

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


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