--- loncom/homework/bridgetask.pm	2006/06/13 20:28:49	1.169
+++ loncom/homework/bridgetask.pm	2006/06/13 21:34:28	1.171
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA 
 # definition of tags that give a structure to a document
 #
-# $Id: bridgetask.pm,v 1.169 2006/06/13 20:28:49 albertel Exp $
+# $Id: bridgetask.pm,v 1.171 2006/06/13 21:34:28 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -390,7 +390,7 @@ sub webgrade_standard_info {
 	    'fail'   => 'Fail Rest',
 	    'cancel' => 'Cancel',
 	    );
-    my %lt=&Apache::lonlocal::texthash(%lt);
+    %lt=&Apache::lonlocal::texthash(%lt);
 
     my $result=<<INFO;
   <div class="LC_GRADING_maincontrols">
@@ -1916,12 +1916,12 @@ sub start_Dimension {
 	$previous_dim = $Apache::bridgetask::dimension[-1];
 	push(@{$Apache::bridgetask::dimension{$previous_dim}{'contains'}},
 	     $dim);
-	# FIXME need to add as a 'criteria' for nesting
 	$dimension{$previous_dim}{'criteria.'.$dim}='';
 	$dimension{$previous_dim}{'criteria.'.$dim.'.type'}='dimension';
 	$dimension{$previous_dim}{'criteria.'.$dim.'.mandatory'}=
 	    &Apache::lonxml::get_param('Mandatory',$parstack,$safeeval);
 	push(@{$dimension{$previous_dim}{'criterias'}},$dim);
+	$dimension{$dim}{'nested'}=$previous_dim;
     } else {
 	$Apache::bridgetask::top_dimensionlist{$dim}{'manadatory'}=
 	    &Apache::lonxml::get_param('Mandatory',$parstack,$safeeval);
@@ -2072,10 +2072,11 @@ sub get_criteria {
 
 		    foreach my $id (@{$dimension{$dim}{$instance.'.criterias'}},
 				    @{$dimension{$dim}{'criterias'}}) {
-			# FIXME need to collect the dimension style criteria 
-			# and output them here.
 			my $type = $dimension{$dim}{'criteria.'.$id.'.type'};
-			next if ($type eq 'dimension');
+			if ($type eq 'dimension') {
+			    $result.=$dimension{$id}{'result'};
+			    next;
+			}
 			my $status= &get_criteria('status', $version,$dim,$id);
 			my $comment=&get_criteria('comment',$version,$dim,$id);
 			my $mandatory=($dimension{$dim}{'criteria.'.$id.'.mandatory'} ne 'N');
@@ -2105,6 +2106,10 @@ sub get_criteria {
 		    }
 		}
 	    }
+	    if (exists($dimension{$dim}{'nested'})) {
+		$dimension{$dim}{'result'}=$result;
+		undef($result);
+	    }
 	} elsif ($target eq 'webgrade') {
 	    # in case of any side effects that we need
 	    @Apache::scripttag::parser_env = @_;
@@ -2115,9 +2120,12 @@ sub get_criteria {
 	    &Apache::scripttag::xmlparse($dimension{$dim}{'questiontext'});
 	    foreach my $id (@{$dimension{$dim}{$instance.'.criterias'}},
 			    @{$dimension{$dim}{'criterias'}} ) {
-		# dimensional 'criteria' don't get assigned grades
 		my $type = $dimension{$dim}{'criteria.'.$id.'.type'};
-		next if ($type eq 'dimension');
+		if ($type eq 'dimension') {
+		    # dimensional 'criteria' don't get assigned grades
+		    $result.=$dimension{$id}{'result'};
+		    next;
+		}
 
 		my $link=&link($id);
 		my $status= &get_criteria('status',$version,$dim,$id);
@@ -2144,6 +2152,10 @@ sub get_criteria {
 		$result.=&grading_history($version,$dim,$id);
 		$last_link=$link;
 	    }
+	    if (exists($dimension{$dim}{'nested'})) {
+		$dimension{$dim}{'result'}=$result;
+		undef($result);
+	    }
 	} elsif ($target eq 'grade' && $env{'form.webgrade'}) {
 	    my $optional_passed=0;
 	    my $mandatory_failed=0;