--- loncom/homework/imageresponse.pm	2005/06/07 22:43:08	1.70
+++ loncom/homework/imageresponse.pm	2006/03/09 01:11:12	1.74
@@ -2,7 +2,7 @@
 # The LearningOnline Network with CAPA
 # image click response style
 #
-# $Id: imageresponse.pm,v 1.70 2005/06/07 22:43:08 foxr Exp $
+# $Id: imageresponse.pm,v 1.74 2006/03/09 01:11:12 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -63,12 +63,25 @@ sub start_imageresponse {
 
 sub end_imageresponse {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
-    &Apache::response::end_response;
-    pop @Apache::lonxml::namespace;
+
+    pop(@Apache::lonxml::namespace);
     &Apache::lonxml::deregister('Apache::imageresponse',('foilgroup','foil','text','image','rectangle','conceptgroup'));
+
     my $result;
-    if ($target eq 'edit') { $result=&Apache::edit::end_table(); }
+    if ($target eq 'edit') {
+	$result=&Apache::edit::end_table();
+    } elsif ($target eq 'tex') {
+	$result=&Apache::inputtags::exam_score_line($target);
+    }
+
     undef(%Apache::response::foilnames);
+    
+    if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || 
+	$target eq 'tex' || $target eq 'analyze') {
+	&Apache::lonxml::increment_counter(&Apache::response::repetition());
+    }
+    &Apache::response::end_response();
+
     return $result;
 }
 
@@ -238,10 +251,18 @@ sub clean_up_image {
 
 sub gradefoils {
     my (@whichopt) = @_;
+
+    my $partid = $Apache::inputtags::part;
+    my $id     = $Apache::inputtags::response['-1'];
+
+    if ($Apache::lonhomework::type eq 'exam') {
+	&Apache::response::scored_response($partid,$id);
+	return;
+    }
+    
     my $x;
     my $y;
     my $result;
-    my $id=$Apache::inputtags::response['-1'];
     my $temp=1;
     foreach my $name (@whichopt) {
 	$x=$env{"form.HWVAL_$id:$temp.x"};
@@ -280,7 +301,7 @@ sub gradefoils {
     &Apache::response::handle_previous(\%previous,$result);
     $Apache::lonhomework::results{"resource.$part.$id.submission"}=$responsestr;
     $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=$result;
-    return '';
+    return;
 }
 
 sub end_foilgroup {
@@ -347,8 +368,8 @@ sub start_foil {
     if ($target eq 'web' || $target eq 'grade' || $target eq 'tex' ||
 	$target eq 'analyze') {
 	my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval);
-	if (!$name) {
-	    &Apache::lonxml::error("Foils without names exist. This can cause problems to malfunction.");
+	if ($name eq "") {
+	    &Apache::lonxml::warning("Foils without names exist. This can cause problems to malfunction.");
 	    $name=$Apache::lonxml::curdepth;
 	}
 	if (defined($Apache::response::foilnames{$name})) {
@@ -391,7 +412,7 @@ sub start_text {
     if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') { 
 	&Apache::lonxml::startredirection; 
     } elsif ($target eq 'edit') {
-	my $descr=&Apache::lonxml::get_all_text('/text',$parser);
+	my $descr=&Apache::lonxml::get_all_text('/text',$parser,$style);
 	$result=&Apache::edit::tag_start($target,$token,'Task Description').
 	    &Apache::edit::editfield($token->[1],$descr,'Text',60,2).
 	    &Apache::edit::end_row();
@@ -425,7 +446,7 @@ sub start_image {
     if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') { 
 	&Apache::lonxml::startredirection; 
     } elsif ($target eq 'edit') {
-	my $bgimg=&Apache::lonxml::get_all_text('/image',$parser);
+	my $bgimg=&Apache::lonxml::get_all_text('/image',$parser,$style);
 	$Apache::edit::bgimgsrc=$bgimg;
 	$Apache::edit::bgimgsrcdepth=$Apache::lonxml::curdepth;
 
@@ -502,7 +523,7 @@ sub start_rectangle {
 	$target eq 'analyze') { 
 	&Apache::lonxml::startredirection; 
     } elsif ($target eq 'edit') {
-	my $coords=&Apache::lonxml::get_all_text('/rectangle',$parser);
+	my $coords=&Apache::lonxml::get_all_text('/rectangle',$parser,$style);
 	$result=&Apache::edit::tag_start($target,$token,'Rectangle').
 	    &Apache::edit::editline($token->[1],$coords,'Coordinate Pairs',40).
 	    &Apache::edit::entercoord(undef,'textnode',undef,undef,'box').
@@ -556,7 +577,7 @@ sub start_polygon {
 	$target eq 'analyze') { 
 	&Apache::lonxml::startredirection; 
     } elsif ($target eq 'edit') {
-	my $coords=&Apache::lonxml::get_all_text('/polygon',$parser);
+	my $coords=&Apache::lonxml::get_all_text('/polygon',$parser,$style);
 	$result=&Apache::edit::tag_start($target,$token,'Polygon').
 	    &Apache::edit::editline($token->[1],$coords,'Coordinate list',40).
 	    &Apache::edit::entercoord(undef,'textnode',undef,undef,'polygon').