Diff for /loncom/homework/bridgetask.pm between versions 1.205 and 1.211

version 1.205, 2006/11/14 22:12:58 version 1.211, 2006/11/28 16:36:04
Line 380  sub nest { Line 380  sub nest {
     }      }
 }  }
   
   sub start_delay {
       push(@delay,1);
   }
   sub end_delay {
       pop(@delay);
   }
   
 sub nested_parse {  sub nested_parse {
     my ($str,$env,$args) = @_;      my ($str,$env,$args) = @_;
     my @old_env = @Apache::scripttag::parser_env;      my @old_env = @Apache::scripttag::parser_env;
Line 791  sub start_Task { Line 798  sub start_Task {
  if ($target eq 'webgrade') {   if ($target eq 'webgrade') {
     $result.="\n".'<div id="LC_GRADING_criterialist">';      $result.="\n".'<div id="LC_GRADING_criterialist">';
     &Apache::lonxml::startredirection();      &Apache::lonxml::startredirection();
       &start_delay();
       $dimension{$top}{'result'}=$result;
       undef($result);
  }   }
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result.=$form_tag_start.   $result.=$form_tag_start.
Line 1257  DONEBUTTON Line 1267  DONEBUTTON
     &Apache::structuretags::finalize_storage();      &Apache::structuretags::finalize_storage();
  }   }
     } elsif ($target eq 'webgrade') {      } elsif ($target eq 'webgrade') {
  $result.=&Apache::lonxml::endredirection();   if (&nest()) {
       &Apache::lonxml::endredirection();
       &end_delay();
       $result.=$dimension{$top}{'result'};
    } else {
       $result.=&Apache::lonxml::endredirection();
    }
  my $dim = $top;   my $dim = $top;
  foreach my $id (@{$dimension{$dim}{'criterias'}} ) {   foreach my $id (@{$dimension{$dim}{'criterias'}} ) {
     my $type = $dimension{$dim}{'criteria.'.$id.'.type'};      my $type = $dimension{$dim}{'criteria.'.$id.'.type'};
Line 1269  DONEBUTTON Line 1285  DONEBUTTON
      [@_]);       [@_]);
  $criteria = &layout_webgrade_Criteria($dim,$id,$criteria);   $criteria = &layout_webgrade_Criteria($dim,$id,$criteria);
  my $internal_location=&internal_location($id);   my $internal_location=&internal_location($id);
  $result=~s/\Q$internal_location\E/$criteria/;   if ($result =~ m/\Q$internal_location\E/) {
       $result=~s/\Q$internal_location\E/$criteria/;
    } else {
       $result.=$criteria;
    }
   
     }      }
  }   }
         $result.="</div>";          $result.="</div>";
Line 2049  sub start_Setup { Line 2070  sub start_Setup {
     my $dim = &get_id($parstack,$safeeval);      my $dim = &get_id($parstack,$safeeval);
     push(@Apache::bridgetask::dimension,$dim);      push(@Apache::bridgetask::dimension,$dim);
     &Apache::lonxml::startredirection();      &Apache::lonxml::startredirection();
     return &internal_location($dim);      return;# &internal_location($dim);
 }  }
   
 {  {
Line 2101  sub start_Dimension { Line 2122  sub start_Dimension {
  $dimension{$top}{'criteria.'.$dim.'.mandatory'}=   $dimension{$top}{'criteria.'.$dim.'.mandatory'}=
     &Apache::lonxml::get_param('Mandatory',$parstack,$safeeval);      &Apache::lonxml::get_param('Mandatory',$parstack,$safeeval);
  push(@{$dimension{$top}{'criterias'}},$dim);   push(@{$dimension{$top}{'criterias'}},$dim);
    $dimension{$dim}{'nested'}=$top;
     }      }
     push(@Apache::bridgetask::dimension,$dim);      push(@Apache::bridgetask::dimension,$dim);
     &Apache::lonxml::startredirection();      &Apache::lonxml::startredirection();
     if (!&skip_dimension_parsing($dim)) {      if (!&skip_dimension_parsing($dim)) {
  &enable_dimension_parsing($dim);   &enable_dimension_parsing($dim);
     }      }
     return &internal_location($dim);      return;# &internal_location($dim);
 }  }
   
 sub start_QuestionText {  sub start_QuestionText {
Line 2195  sub end_Dimension { Line 2217  sub end_Dimension {
     my $instance=&get_instance($dim);      my $instance=&get_instance($dim);
     my $version=&get_version();      my $version=&get_version();
     if ($target eq 'web') {      if ($target eq 'web') {
  $result .= "\n".'<div class="LC_question">'."\n";  
  $result .= &nested_parse(\$dimension{$dim}{'intro'},[@_]);   $result .= &nested_parse(\$dimension{$dim}{'intro'},[@_]);
  my @instances = $instance;   my @instances = $instance;
  if (&Apache::response::showallfoils()) {   if (&Apache::response::showallfoils()) {
Line 2272  sub end_Dimension { Line 2293  sub end_Dimension {
  # $result=~s/\Q$internal_location\E/$dim_info/;   # $result=~s/\Q$internal_location\E/$dim_info/;
     }      }
  }   }
  $result .= "\n</div>\n";   if ($result !~ /^\s*$/s) {
       # FIXME? this maybe unneccssary in the future, (CSE101 BT
       # from Fall 2006 geenrate a div that attempts to hide some
       # of the output in an odd way, this is a workaround so
       # those old ones will continue to work.  # It puts the
       # LC_question div to come after any starting closie div
       # that the dimension produces
       if ($result =~ m{^\s*</div>}) {
    $result =~ s{^(\s*</div>)}
               {$1\n<div id="$dim" class="LC_question">};
       } else {
    $result = "\n".'<div id="'.$dim.'" class="LC_question">'.
       "\n".$result;
       }
       $result .= "\n</div>\n";
    }
     } 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
  &nested_parse(\$dimension{$dim}{'intro'},[@_]);   &nested_parse(\$dimension{$dim}{'intro'},[@_]);
Line 2295  sub end_Dimension { Line 2331  sub end_Dimension {
      [@_]);       [@_]);
  $criteria = &layout_webgrade_Criteria($dim,$id,$criteria);   $criteria = &layout_webgrade_Criteria($dim,$id,$criteria);
  my $internal_location=&internal_location($id);   my $internal_location=&internal_location($id);
  $result=~s/\Q$internal_location\E/$criteria/;   if ($result =~ m/\Q$internal_location\E/) {
       $result =~ s/\Q$internal_location\E/$criteria/;
    } else {
       $result.=$criteria ;
    }
     }      }
  }   }
  if (&nest()) {   if (&nest()) {
Line 2604  sub start_Criteria { Line 2644  sub start_Criteria {
  my $dim = &get_dim_id();   my $dim = &get_dim_id();
  my $id=&get_id($parstack,$safeeval);   my $id=&get_id($parstack,$safeeval);
  if ($target eq 'web' || $target eq 'webgrade') {   if ($target eq 'web' || $target eq 'webgrade') {
     if ($target eq 'webgrade' && $dim ne 'top') {      if ($target eq 'webgrade') {
  &Apache::lonxml::debug(" for $dim $id stashing results into $dim ");   &Apache::lonxml::debug(" for $dim $id stashing results into $dim ");
  $dimension{$dim}{'result'} .= &internal_location($id);   $dimension{$dim}{'result'} .= &internal_location($id);
     } else {      } else {
  &Apache::lonxml::debug(" not stashing $dim $id");   &Apache::lonxml::debug(" not stashing $dim $id");
  $result .= &internal_location($id);   #$result .= &internal_location($id);
     }      }
  }   }
  &Apache::lonxml::debug("Criteria $id with $dim");   &Apache::lonxml::debug("Criteria $id with $dim");

Removed from v.1.205  
changed lines
  Added in v.1.211


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