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

version 1.6, 2005/03/28 21:50:46 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;

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


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