[LON-CAPA-cvs] cvs: loncom /homework bridgetask.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Mon, 27 Nov 2006 20:42:43 -0000
albertel Mon Nov 27 15:42:43 2006 EDT
Modified files:
/loncom/homework bridgetask.pm
Log:
- move results of taks parsing to the out of the way results storage
so arbitrary html can be included
Index: loncom/homework/bridgetask.pm
diff -u loncom/homework/bridgetask.pm:1.207 loncom/homework/bridgetask.pm:1.208
--- loncom/homework/bridgetask.pm:1.207 Tue Nov 14 18:04:56 2006
+++ loncom/homework/bridgetask.pm Mon Nov 27 15:42:42 2006
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: bridgetask.pm,v 1.207 2006/11/14 23:04:56 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 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 @@
if ($target eq 'webgrade') {
$result.="\n".'<div id="LC_GRADING_criterialist">';
&Apache::lonxml::startredirection();
+ &start_delay();
+ $dimension{$top}{'result'}=$result;
+ undef($result);
}
} elsif ($target eq 'edit') {
$result.=$form_tag_start.
@@ -1257,7 +1267,13 @@
&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,6 +2117,7 @@
$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();
@@ -2606,7 +2623,7 @@
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 {