--- loncom/homework/bridgetask.pm 2006/11/14 22:12:58 1.205 +++ loncom/homework/bridgetask.pm 2006/11/27 20:42:42 1.208 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: bridgetask.pm,v 1.205 2006/11/14 22:12:58 albertel Exp $ +# $Id: bridgetask.pm,v 1.208 2006/11/27 20:42:42 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -380,6 +380,13 @@ sub nest { } } +sub start_delay { + push(@delay,1); +} +sub end_delay { + pop(@delay); +} + sub nested_parse { my ($str,$env,$args) = @_; my @old_env = @Apache::scripttag::parser_env; @@ -791,6 +798,9 @@ sub start_Task { if ($target eq 'webgrade') { $result.="\n".'
'; &Apache::lonxml::startredirection(); + &start_delay(); + $dimension{$top}{'result'}=$result; + undef($result); } } elsif ($target eq 'edit') { $result.=$form_tag_start. @@ -1257,7 +1267,13 @@ DONEBUTTON &Apache::structuretags::finalize_storage(); } } 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; foreach my $id (@{$dimension{$dim}{'criterias'}} ) { my $type = $dimension{$dim}{'criteria.'.$id.'.type'}; @@ -2101,13 +2117,14 @@ sub start_Dimension { $dimension{$top}{'criteria.'.$dim.'.mandatory'}= &Apache::lonxml::get_param('Mandatory',$parstack,$safeeval); push(@{$dimension{$top}{'criterias'}},$dim); + $dimension{$dim}{'nested'}=$top; } push(@Apache::bridgetask::dimension,$dim); &Apache::lonxml::startredirection(); if (!&skip_dimension_parsing($dim)) { &enable_dimension_parsing($dim); } - return &internal_location($dim); + return;# &internal_location($dim); } sub start_QuestionText { @@ -2195,7 +2212,6 @@ sub end_Dimension { my $instance=&get_instance($dim); my $version=&get_version(); if ($target eq 'web') { - $result .= "\n".'
'."\n"; $result .= &nested_parse(\$dimension{$dim}{'intro'},[@_]); my @instances = $instance; if (&Apache::response::showallfoils()) { @@ -2272,7 +2288,10 @@ sub end_Dimension { # $result=~s/\Q$internal_location\E/$dim_info/; } } - $result .= "\n
\n"; + if ($result !~ /^\s*$/s) { + $result = "\n".'
'. + "\n".$result."\n
\n"; + } } elsif ($target eq 'webgrade') { # in case of any side effects that we need &nested_parse(\$dimension{$dim}{'intro'},[@_]); @@ -2604,12 +2623,12 @@ sub start_Criteria { my $dim = &get_dim_id(); my $id=&get_id($parstack,$safeeval); 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 "); $dimension{$dim}{'result'} .= &internal_location($id); } else { &Apache::lonxml::debug(" not stashing $dim $id"); - $result .= &internal_location($id); + #$result .= &internal_location($id); } } &Apache::lonxml::debug("Criteria $id with $dim");