Diff for /loncom/homework/bridgetask.pm between versions 1.167 and 1.168

version 1.167, 2006/06/12 23:17:56 version 1.168, 2006/06/13 15:45:54
Line 46  BEGIN { Line 46  BEGIN {
     &Apache::lonxml::register('Apache::bridgetask',('Task','IntroParagraph','Dimension','Question','QuestionText','Setup','Instance','InstanceText','Criteria','ClosingParagraph'));      &Apache::lonxml::register('Apache::bridgetask',('Task','IntroParagraph','Dimension','Question','QuestionText','Setup','Instance','InstanceText','Criteria','ClosingParagraph'));
 }  }
   
   my %dimension_info;
 sub initialize_bridgetask {  sub initialize_bridgetask {
     # id of current Dimension, 0 means that no dimension is current       # id of current Dimension, 0 means that no dimension is current 
     # (inside <Task> only)      # (inside <Task> only)
     $Apache::bridgetask::dimension='';      %Apache::bridgetask::dimension=();
     # list of all Dimension ids seen      # list of all Dimension ids seen
     @Apache::bridgetask::dimensionlist=();      %Apache::bridgetask::top_dimensionlist=();
     # mandatory attribute of all Dimensions seen  
     %Apache::bridgetask::dimensionmandatory=();  
     # list of all current Instance ids      # list of all current Instance ids
     @Apache::bridgetask::instance=();      %Apache::bridgetask::instance=();
     # list of all Instance ids seen in this problem      # list of all Instance ids seen in this problem
     @Apache::bridgetask::instancelist=();      @Apache::bridgetask::instancelist=();
     # key of queud user data that we are currently grading      # key of queud user data that we are currently grading
     $Apache::bridgetask::queue_key='';      $Apache::bridgetask::queue_key='';
       undef(%dimension_info);
 }  }
   
 sub proctor_check_auth {  sub proctor_check_auth {
Line 971  DONEBUTTON Line 971  DONEBUTTON
     my $man_count=0;      my $man_count=0;
     my $opt_count=0;      my $opt_count=0;
     my $opt_passed=0;      my $opt_passed=0;
     foreach my $dim_id (@Apache::bridgetask::dimensionlist) {      foreach my $dim (keys(%Apache::bridgetask::top_dimensionlist)) {
  if ($Apache::bridgetask::dimensionmandatory{$dim_id}   if ($Apache::bridgetask::top_dimensionlist{$dim}{'manadatory'}
     eq 'N') {      eq 'N') {
     $opt_count++;      $opt_count++;
     if ($Apache::lonhomework::history{"resource.$version.0.$dim_id.status"} eq 'pass') {      if ($Apache::lonhomework::history{"resource.$version.0.$dim.status"} eq 'pass') {
  $opt_passed++;   $opt_passed++;
     }      }
  } else {   } else {
Line 1046  DONEBUTTON Line 1046  DONEBUTTON
     my $ungraded=0;      my $ungraded=0;
     my $review=0;         my $review=0;   
     &Apache::lonhomework::showhash(%Apache::lonhomework::results);      &Apache::lonhomework::showhash(%Apache::lonhomework::results);
     foreach my $dim_id (@Apache::bridgetask::dimensionlist) {      foreach my $dim (keys(%Apache::bridgetask::top_dimensionlist)) {
  my $status=   my $status=
     $Apache::lonhomework::results{"resource.$version.0.$dim_id.status"};      $Apache::lonhomework::results{"resource.$version.0.$dim.status"};
  my $mandatory=   my $mandatory=
     ($Apache::bridgetask::dimensionmandatory{$dim_id} ne 'N');      ($Apache::bridgetask::top_dimensionlist{$dim}{'manadatory'} ne 'N');
  if ($status eq 'pass') {   if ($status eq 'pass') {
     if (!$mandatory) { $optional_passed++; }      if (!$mandatory) { $optional_passed++; }
  } elsif ($status eq 'fail') {   } elsif ($status eq 'fail') {
Line 1066  DONEBUTTON Line 1066  DONEBUTTON
     if ($optional_passed < $optional_required) {      if ($optional_passed < $optional_required) {
  $mandatory_failed++;   $mandatory_failed++;
     }      }
     &Apache::lonxml::debug("all dim ".join(':',@Apache::bridgetask::dimensionlist)."results -> m_f $mandatory_failed o_p $optional_passed u $ungraded r $review");      &Apache::lonxml::debug("all dim ".join(':',keys(%Apache::bridgetask::top_dimensionlist))."results -> m_f $mandatory_failed o_p $optional_passed u $ungraded r $review");
     $Apache::lonhomework::results{'resource.0.regrader'}=      $Apache::lonhomework::results{'resource.0.regrader'}=
  $env{'user.name'}.':'.$env{'user.domain'};   $env{'user.name'}.':'.$env{'user.domain'};
     if ($review) {      if ($review) {
Line 1888  sub end_ClosingParagraph { Line 1888  sub end_ClosingParagraph {
     return $result;      return $result;
 }  }
   
   sub get_dim_id {
       return $Apache::bridgetask::dimension[-1];
   }
   
 sub get_id {  sub get_id {
     my ($parstack,$safeeval)=@_;      my ($parstack,$safeeval)=@_;
     my $id=&Apache::lonxml::get_param('id',$parstack,$safeeval);      my $id=&Apache::lonxml::get_param('id',$parstack,$safeeval);
Line 1895  sub get_id { Line 1899  sub get_id {
     return $id;      return $id;
 }  }
   
 my %dimension;  
 sub start_Setup {  sub start_Setup {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     undef(%dimension);      #undef(%dimension);
     my $dim_id=&get_id($parstack,$safeeval);      my $dim = &get_id($parstack,$safeeval);
     $Apache::bridgetask::dimension=$dim_id;      push(@Apache::bridgetask::dimension,$dim);
     undef(@Apache::bridgetask::instance);  
     &Apache::lonxml::startredirection();      &Apache::lonxml::startredirection();
     return &internal_location($dim_id);      return &internal_location($dim);
 }  }
 sub start_Question { return &start_Dimension(@_); }  sub start_Question { return &start_Dimension(@_); }
 sub start_Dimension {  sub start_Dimension {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     undef(%dimension);      my $dim = &get_id($parstack,$safeeval);
     my $dim_id=&get_id($parstack,$safeeval);      my $previous_dim;
     $Apache::bridgetask::dimension=$dim_id;      if (@Apache::bridgetask::dimension) {
     push(@Apache::bridgetask::dimensionlist,$dim_id);   $previous_dim = $Apache::bridgetask::dimension[-1];
     undef(@Apache::bridgetask::instance);   push(@{$Apache::bridgetask::dimension{$previous_dim}{'contains'}},
     $Apache::bridgetask::dimensionmandatory{$dim_id}=       $dim);
  &Apache::lonxml::get_param('Mandatory',$parstack,$safeeval);   # FIXME need to add as a 'criteria' for nesting
       } else {
    $Apache::bridgetask::top_dimensionlist{$dim}{'manadatory'}=
       &Apache::lonxml::get_param('Mandatory',$parstack,$safeeval);
       }
       push(@Apache::bridgetask::dimension,$dim);
     &Apache::lonxml::startredirection();      &Apache::lonxml::startredirection();
     return &internal_location($dim_id);      return &internal_location($dim);
 }  }
   
 sub start_QuestionText {  sub start_QuestionText {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $dim_id=$Apache::bridgetask::dimension;      my $dim = &get_dim_id();
     my $text=&Apache::lonxml::get_all_text('/questiontext',$parser,$style);      my $text=&Apache::lonxml::get_all_text('/questiontext',$parser,$style);
     if ($target eq 'grade' || $target eq 'web' || $target eq 'webgrade') {      if ($target eq 'grade' || $target eq 'web' || $target eq 'webgrade') {
  $dimension{'questiontext'}=$text;   $dimension_info{$dim}{'questiontext'}=$text;
     }      }
     return '';      return '';
 }  }
Line 1940  sub get_instance { Line 1947  sub get_instance {
  $rand_alg eq '64bit2' || $rand_alg eq '64bit3' ||   $rand_alg eq '64bit2' || $rand_alg eq '64bit3' ||
  $rand_alg eq '64bit4' ) {   $rand_alg eq '64bit4' ) {
  &Apache::response::pushrandomnumber();   &Apache::response::pushrandomnumber();
  my @order=&Math::Random::random_permutation(@{$dimension{'instances'}});   my @order=&Math::Random::random_permutation(@{$dimension_info{$dim}{'instances'}});
  my $num=@order;   my $num=@order;
  my $version=&get_version();   my $version=&get_version();
  my $which=($version-1)%$num;   my $which=($version-1)%$num;
Line 1952  sub get_instance { Line 1959  sub get_instance {
  if (defined($instance)) { return $instance; }   if (defined($instance)) { return $instance; }
   
  &Apache::response::pushrandomnumber();   &Apache::response::pushrandomnumber();
  my @instances = @{$dimension{'instances'}};   my @instances = @{$dimension_info{$dim}{'instances'}};
  # remove disabled instances   # remove disabled instances
  for (my $i=0; $i < $#instances; $i++) {   for (my $i=0; $i < $#instances; $i++) {
     if ($dimension{$instances[$i].'.disabled'}) {      if ($dimension_info{$dim}{$instances[$i].'.disabled'}) {
  splice(@instances,$i,1);   splice(@instances,$i,1);
  $i--;   $i--;
     }      }
Line 1988  sub get_instance { Line 1995  sub get_instance {
  my $version=&get_version();   my $version=&get_version();
  if ($target eq 'web') {   if ($target eq 'web') {
     @Apache::scripttag::parser_env = @_;      @Apache::scripttag::parser_env = @_;
     $result.=&Apache::scripttag::xmlparse($dimension{'intro'});      $result.=&Apache::scripttag::xmlparse($dimension_info{$dim}{'intro'});
     my @instances = $instance;      my @instances = $instance;
     if (&Apache::response::showallfoils()) {      if (&Apache::response::showallfoils()) {
  @instances = @{$dimension{'instances'}};   @instances = @{$dimension_info{$dim}{'instances'}};
     }      }
     my $shown_question_text;      my $shown_question_text;
     foreach my $instance (@instances) {      foreach my $instance (@instances) {
  @Apache::scripttag::parser_env = @_;   @Apache::scripttag::parser_env = @_;
  $result.=&Apache::scripttag::xmlparse($dimension{$instance.'.text'});   $result.=&Apache::scripttag::xmlparse($dimension_info{$dim}{$instance.'.text'});
  @Apache::scripttag::parser_env = @_;   @Apache::scripttag::parser_env = @_;
  $result.=&Apache::scripttag::xmlparse($dimension{'questiontext'});   $result.=&Apache::scripttag::xmlparse($dimension_info{$dim}{'questiontext'});
  if ($Apache::lonhomework::history{"resource.$version.0.status"} eq 'pass' ||   if ($Apache::lonhomework::history{"resource.$version.0.status"} eq 'pass' ||
     $Apache::lonhomework::history{"resource.$version.0.status"} eq 'fail') {      $Apache::lonhomework::history{"resource.$version.0.status"} eq 'fail') {
   
Line 2018  sub get_instance { Line 2025  sub get_instance {
     my $man_passed=0;      my $man_passed=0;
     my $opt_count=0;      my $opt_count=0;
     my $opt_passed=0;      my $opt_passed=0;
     foreach my $id ( @{$dimension{$instance.'.criterias'}},      foreach my $id ( @{$dimension_info{$dim}{$instance.'.criterias'}},
      @{$dimension{'criterias'}} ) {       @{$dimension_info{$dim}{'criterias'}} ) {
  if ($dimension{'criteria.'.$id.'.mandatory'}    if ($dimension_info{$dim}{'criteria.'.$id.'.mandatory'} 
     eq 'N') {      eq 'N') {
     $opt_count++;      $opt_count++;
     if ($Apache::lonhomework::history{"resource.$version.0.$dim.$id.status"} eq 'pass') {      if ($Apache::lonhomework::history{"resource.$version.0.$dim.$id.status"} eq 'pass') {
Line 2035  sub get_instance { Line 2042  sub get_instance {
     }      }
     if ($man_passed eq $man_count) { $man_passed='all'; }      if ($man_passed eq $man_count) { $man_passed='all'; }
   
     my $opt_req=$dimension{$instance.'.optionalrequired'};      my $opt_req=$dimension_info{$dim}{$instance.'.optionalrequired'};
     if ($opt_req !~ /\S/) {      if ($opt_req !~ /\S/) {
  $opt_req=   $opt_req=
     &Apache::lonxml::get_param('OptionalRequired',      &Apache::lonxml::get_param('OptionalRequired',
Line 2047  sub get_instance { Line 2054  sub get_instance {
     my $internal_location=&internal_location($dim);      my $internal_location=&internal_location($dim);
     $result=~s/\Q$internal_location\E/$dim_info/;      $result=~s/\Q$internal_location\E/$dim_info/;
   
     foreach my $id (@{$dimension{$instance.'.criterias'}},      foreach my $id (@{$dimension_info{$dim}{$instance.'.criterias'}},
     @{$dimension{'criterias'}}) {      @{$dimension_info{$dim}{'criterias'}}) {
  my $status=$Apache::lonhomework::history{"resource.$version.0.$dim.$id.status"};   my $status=$Apache::lonhomework::history{"resource.$version.0.$dim.$id.status"};
  my $comment=$Apache::lonhomework::history{"resource.$version.0.$dim.$id.comment"};   my $comment=$Apache::lonhomework::history{"resource.$version.0.$dim.$id.comment"};
  my $mandatory=($dimension{'criteria.'.$id.'.mandatory'} ne 'N');   my $mandatory=($dimension_info{$dim}{'criteria.'.$id.'.mandatory'} ne 'N');
  if ($mandatory) {   if ($mandatory) {
     $mandatory='Mandatory';      $mandatory='Mandatory';
  } else {   } else {
Line 2068  sub get_instance { Line 2075  sub get_instance {
     '<div class="LC_'.$status.' LC_criteria"><h4>'      '<div class="LC_'.$status.' LC_criteria"><h4>'
     .$mandatory.' Criteria</h4><p>';      .$mandatory.' Criteria</h4><p>';
  @Apache::scripttag::parser_env = @_;   @Apache::scripttag::parser_env = @_;
  $result.=&Apache::scripttag::xmlparse($dimension{'criteria.'.$id});   $result.=&Apache::scripttag::xmlparse($dimension_info{$dim}{'criteria.'.$id});
  $result.='</p><p class="LC_grade">'.$status_display.'</p>';   $result.='</p><p class="LC_grade">'.$status_display.'</p>';
  if ($Apache::lonhomework::history{"resource.$version.0.$dim.$id.comment"}) {   if ($Apache::lonhomework::history{"resource.$version.0.$dim.$id.comment"}) {
     $result.='<p class="LC_comment">'.&mt('Comment: [_1]',$Apache::lonhomework::history{"resource.$version.0.$dim.$id.comment"}).'</p>';      $result.='<p class="LC_comment">'.&mt('Comment: [_1]',$Apache::lonhomework::history{"resource.$version.0.$dim.$id.comment"}).'</p>';
Line 2080  sub get_instance { Line 2087  sub get_instance {
  } elsif ($target eq 'webgrade') {   } elsif ($target eq 'webgrade') {
     # in case of any side effects that we need      # in case of any side effects that we need
     @Apache::scripttag::parser_env = @_;      @Apache::scripttag::parser_env = @_;
     &Apache::scripttag::xmlparse($dimension{'intro'});      &Apache::scripttag::xmlparse($dimension_info{$dim}{'intro'});
     @Apache::scripttag::parser_env = @_;      @Apache::scripttag::parser_env = @_;
     &Apache::scripttag::xmlparse($dimension{$instance.'.text'});      &Apache::scripttag::xmlparse($dimension_info{$dim}{$instance.'.text'});
     @Apache::scripttag::parser_env = @_;      @Apache::scripttag::parser_env = @_;
     &Apache::scripttag::xmlparse($dimension{'questiontext'});      &Apache::scripttag::xmlparse($dimension_info{$dim}{'questiontext'});
     foreach my $id (@{$dimension{$instance.'.criterias'}},      foreach my $id (@{$dimension_info{$dim}{$instance.'.criterias'}},
     @{$dimension{'criterias'}} ) {      @{$dimension_info{$dim}{'criterias'}} ) {
  my $link=&link($id);   my $link=&link($id);
  my $status=$Apache::lonhomework::history{"resource.$version.0.$dim.$id.status"};   my $status=$Apache::lonhomework::history{"resource.$version.0.$dim.$id.status"};
  $result.='<div class="LC_GRADING_criteria" id="'.$link.'">'."\n".   $result.='<div class="LC_GRADING_criteria" id="'.$link.'">'."\n".
     '<div class="LC_GRADING_criteriatext" id="next_'.$last_link.'">'."\n";      '<div class="LC_GRADING_criteriatext" id="next_'.$last_link.'">'."\n";
  @Apache::scripttag::parser_env = @_;   @Apache::scripttag::parser_env = @_;
  $result.=&Apache::scripttag::xmlparse($dimension{'criteria.'.$id});   $result.=&Apache::scripttag::xmlparse($dimension_info{$dim}{'criteria.'.$id});
  $result.='</div>'."\n".   $result.='</div>'."\n".
     #$dimension{'criteria.'.$id}.      #$dimension_info{$dim}{'criteria.'.$id}.
     '<div class="LC_GRADING_grade">'."\n".      '<div class="LC_GRADING_grade">'."\n".
     '<label class="LC_GRADING_ungraded"><input type="radio" name="HWVAL_'.$link.'" value="ungraded" '.($status eq 'ungraded' || !$status ? 'checked="checked"':'').' />'.&mt('Ungraded').'</label>'."\n".      '<label class="LC_GRADING_ungraded"><input type="radio" name="HWVAL_'.$link.'" value="ungraded" '.($status eq 'ungraded' || !$status ? 'checked="checked"':'').' />'.&mt('Ungraded').'</label>'."\n".
     '<label class="LC_GRADING_fail"><input type="radio" name="HWVAL_'.$link.'" value="fail" '.($status eq 'fail' ? 'checked="checked"':'').' />'.&mt('Fail').'</label>'."\n".      '<label class="LC_GRADING_fail"><input type="radio" name="HWVAL_'.$link.'" value="fail" '.($status eq 'fail' ? 'checked="checked"':'').' />'.&mt('Fail').'</label>'."\n".
Line 2119  sub get_instance { Line 2126  sub get_instance {
     my $review=0;      my $review=0;
   
     @Apache::scripttag::parser_env = @_;      @Apache::scripttag::parser_env = @_;
     $result.=&Apache::scripttag::xmlparse($dimension{'intro'});      $result.=&Apache::scripttag::xmlparse($dimension_info{$dim}{'intro'});
     @Apache::scripttag::parser_env = @_;      @Apache::scripttag::parser_env = @_;
     $result.=&Apache::scripttag::xmlparse($dimension{$instance.'.text'});      $result.=&Apache::scripttag::xmlparse($dimension_info{$dim}{$instance.'.text'});
     @Apache::scripttag::parser_env = @_;      @Apache::scripttag::parser_env = @_;
     &Apache::scripttag::xmlparse($dimension{'questiontext'});      &Apache::scripttag::xmlparse($dimension_info{$dim}{'questiontext'});
   
     foreach my $id (@{$dimension{$instance.'.criterias'}},      foreach my $id (@{$dimension_info{$dim}{$instance.'.criterias'}},
     @{$dimension{'criterias'}}) {      @{$dimension_info{$dim}{'criterias'}}) {
  my $link=&link($id);   my $link=&link($id);
  my $status=$Apache::lonhomework::results{"resource.$version.0.$dim.$id.status"}=$env{'form.HWVAL_'.$link};   my $status=$Apache::lonhomework::results{"resource.$version.0.$dim.$id.status"}=$env{'form.HWVAL_'.$link};
  $Apache::lonhomework::results{"resource.$version.0.$dim.$id.comment"}=$env{'form.HWVAL_comment_'.$link};   $Apache::lonhomework::results{"resource.$version.0.$dim.$id.comment"}=$env{'form.HWVAL_comment_'.$link};
  my $mandatory=($dimension{'criteria.'.$id.'.mandatory'} ne 'N');   my $mandatory=($dimension_info{$dim}{'criteria.'.$id.'.mandatory'} ne 'N');
  if ($status eq 'pass') {   if ($status eq 'pass') {
     if (!$mandatory) { $optional_passed++; }      if (!$mandatory) { $optional_passed++; }
  } elsif ($status eq 'fail') {   } elsif ($status eq 'fail') {
Line 2144  sub get_instance { Line 2151  sub get_instance {
  }   }
     }      }
     # FIXME optional required can apply to only <instance> right now...      # FIXME optional required can apply to only <instance> right now...
     my $opt_req=$dimension{$instance.'.optionalrequired'};      my $opt_req=$dimension_info{$dim}{$instance.'.optionalrequired'};
     if ($opt_req !~ /\S/) {      if ($opt_req !~ /\S/) {
  $opt_req=   $opt_req=
     &Apache::lonxml::get_param('OptionalRequired',      &Apache::lonxml::get_param('OptionalRequired',
Line 2154  sub get_instance { Line 2161  sub get_instance {
     if ($optional_passed < $opt_req) {      if ($optional_passed < $opt_req) {
  $mandatory_failed++;   $mandatory_failed++;
     }      }
     &Apache::lonxml::debug("all instance ".join(':',@{$dimension{$instance.'.criterias'}})." results -> m_f $mandatory_failed o_p $optional_passed u $ungraded r $review");      &Apache::lonxml::debug("all instance ".join(':',@{$dimension_info{$dim}{$instance.'.criterias'}})." results -> m_f $mandatory_failed o_p $optional_passed u $ungraded r $review");
     if ($review) {      if ($review) {
  $Apache::lonhomework::results{"resource.$version.0.$dim.status"}=   $Apache::lonhomework::results{"resource.$version.0.$dim.status"}=
     'review';      'review';
Line 2183  sub get_instance { Line 2190  sub get_instance {
  my $version=&get_version();   my $version=&get_version();
  if ($target eq 'web') {   if ($target eq 'web') {
     @Apache::scripttag::parser_env = @_;      @Apache::scripttag::parser_env = @_;
     $result.=&Apache::scripttag::xmlparse($dimension{'intro'});      $result.=&Apache::scripttag::xmlparse($dimension_info{$dim}{'intro'});
     my @instances = $instance;      my @instances = $instance;
     if (&Apache::response::showallfoils()) {      if (&Apache::response::showallfoils()) {
  @instances = @{$dimension{'instances'}};   @instances = @{$dimension_info{$dim}{'instances'}};
     }      }
     foreach my $instance (@instances) {      foreach my $instance (@instances) {
  @Apache::scripttag::parser_env = @_;   @Apache::scripttag::parser_env = @_;
  $result.=&Apache::scripttag::xmlparse($dimension{$instance.'.text'});   $result.=&Apache::scripttag::xmlparse($dimension_info{$dim}{$instance.'.text'});
  @Apache::scripttag::parser_env = @_;   @Apache::scripttag::parser_env = @_;
  $result.=&Apache::scripttag::xmlparse($dimension{'questiontext'});   $result.=&Apache::scripttag::xmlparse($dimension_info{$dim}{'questiontext'});
     }      }
  } elsif ($target eq 'webgrade'    } elsif ($target eq 'webgrade' 
  || $target eq 'grade' && $env{'form.webgrade'}) {   || $target eq 'grade' && $env{'form.webgrade'}) {
     # in case of any side effects that we need      # in case of any side effects that we need
     @Apache::scripttag::parser_env = @_;      @Apache::scripttag::parser_env = @_;
     &Apache::scripttag::xmlparse($dimension{'intro'});      &Apache::scripttag::xmlparse($dimension_info{$dim}{'intro'});
     @Apache::scripttag::parser_env = @_;      @Apache::scripttag::parser_env = @_;
     &Apache::scripttag::xmlparse($dimension{$instance.'.text'});      &Apache::scripttag::xmlparse($dimension_info{$dim}{$instance.'.text'});
     @Apache::scripttag::parser_env = @_;      @Apache::scripttag::parser_env = @_;
     &Apache::scripttag::xmlparse($dimension{'questiontext'});      &Apache::scripttag::xmlparse($dimension_info{$dim}{'questiontext'});
  } else {   } else {
     # any other targets no output      # any other targets no output
     undef($result);      undef($result);
Line 2246  sub grading_history { Line 2253  sub grading_history {
 sub start_IntroParagraph {  sub start_IntroParagraph {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $result;      my $result;
       my $dim = &get_dim_id();
     if ($target eq 'grade' || $target eq 'web' || $target eq 'webgrade') {      if ($target eq 'grade' || $target eq 'web' || $target eq 'webgrade') {
  if ($tagstack->[-2] eq 'Dimension' || $tagstack->[-2] eq 'Question' ) {   if ($tagstack->[-2] eq 'Dimension' || $tagstack->[-2] eq 'Question' ) {
     $dimension{'intro'}=      $dimension_info{$dim}{'intro'}=
  &Apache::lonxml::get_all_text('/introparagraph',   &Apache::lonxml::get_all_text('/introparagraph',
       $parser,$style);        $parser,$style);
         } elsif ($tagstack->[-2] eq 'Task' && $target eq 'webgrade') {          } elsif ($tagstack->[-2] eq 'Task' && $target eq 'webgrade') {
Line 2268  sub end_IntroParagraph { Line 2276  sub end_IntroParagraph {
   
 sub start_Instance {  sub start_Instance {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
     my $id=&get_id($parstack,$safeeval);      my $dim = &get_dim_id();
     push(@{$dimension{'instances'}},$id);      my $id  = &get_id($parstack,$safeeval);
     push(@Apache::bridgetask::instance,$id);      push(@{$dimension_info{$dim}{'instances'}},$id);
       push(@{$Apache::bridgetask::instance{$dim}},$id);
     push(@Apache::bridgetask::instancelist,$id);      push(@Apache::bridgetask::instancelist,$id);
     $dimension{$id.'.optionalrequired'}=      $dimension_info{$dim}{$id.'.optionalrequired'}=
  &Apache::lonxml::get_param('OptionalRequired',$parstack,$safeeval);   &Apache::lonxml::get_param('OptionalRequired',$parstack,$safeeval);
     my $disabled = &Apache::lonxml::get_param('Disabled',$parstack,$safeeval);      my $disabled = &Apache::lonxml::get_param('Disabled',$parstack,$safeeval);
     if (lc($disabled) eq 'yes') {      if (lc($disabled) eq 'yes') {
  $dimension{$id.'.disabled'}='1';   $dimension_info{$dim}{$id.'.disabled'}='1';
     }      }
     return '';      return '';
 }  }
Line 2286  sub end_Instance { Line 2295  sub end_Instance {
   
 sub start_InstanceText {  sub start_InstanceText {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $instance_id=$Apache::bridgetask::instance[-1];      my $dim = &get_dim_id();
       my $instance_id=$Apache::bridgetask::instance{$dim}[-1];
     my $text=&Apache::lonxml::get_all_text('/instancetext',$parser,$style);      my $text=&Apache::lonxml::get_all_text('/instancetext',$parser,$style);
     if ($target eq 'grade' || $target eq 'web' || $target eq 'webgrade') {      if ($target eq 'grade' || $target eq 'web' || $target eq 'webgrade') {
  $dimension{$instance_id.'.text'}=$text;   $dimension_info{$dim}{$instance_id.'.text'}=$text;
     }      }
     return '';      return '';
 }  }
Line 2302  sub start_Criteria { Line 2312  sub start_Criteria {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $criteria=&Apache::lonxml::get_all_text('/criteria',$parser,$style);      my $criteria=&Apache::lonxml::get_all_text('/criteria',$parser,$style);
     if ($target eq 'web' || $target eq 'webgrade' || $target eq 'grade') {      if ($target eq 'web' || $target eq 'webgrade' || $target eq 'grade') {
    my $dim = &get_dim_id();
  my $id=&get_id($parstack,$safeeval);   my $id=&get_id($parstack,$safeeval);
  if (&Apache::londefdef::is_inside_of($tagstack,'Instance')) {   if (&Apache::londefdef::is_inside_of($tagstack,'Instance')) {
     my $instance_id=$Apache::bridgetask::instance[-1];      my $instance_id=$Apache::bridgetask::instance{$dim}[-1];
     $dimension{"criteria.$instance_id.$id"}=$criteria;      $dimension_info{$dim}{"criteria.$instance_id.$id"}=$criteria;
     $dimension{"criteria.$instance_id.$id.mandatory"}=      $dimension_info{$dim}{"criteria.$instance_id.$id.mandatory"}=
  &Apache::lonxml::get_param('Mandatory',$parstack,$safeeval);   &Apache::lonxml::get_param('Mandatory',$parstack,$safeeval);
     push(@{$dimension{$instance_id.'.criterias'}},"$instance_id.$id");      push(@{$dimension_info{$dim}{$instance_id.'.criterias'}},"$instance_id.$id");
  } else {   } else {
     $dimension{'criteria.'.$id}=$criteria;      $dimension_info{$dim}{'criteria.'.$id}=$criteria;
     $dimension{'criteria.'.$id.'.mandatory'}=      $dimension_info{$dim}{'criteria.'.$id.'.mandatory'}=
  &Apache::lonxml::get_param('Mandatory',$parstack,$safeeval);   &Apache::lonxml::get_param('Mandatory',$parstack,$safeeval);
     push(@{$dimension{'criterias'}},$id);      push(@{$dimension_info{$dim}{'criterias'}},$id);
  }   }
     }      }
     return '';      return '';

Removed from v.1.167  
changed lines
  Added in v.1.168


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