[LON-CAPA-cvs] cvs: loncom /homework inputtags.pm /homework/caparesponse caparesponse.pm

albertel lon-capa-cvs@mail.lon-capa.org
Fri, 04 Jun 2004 22:06:08 -0000


This is a MIME encoded message

--albertel1086386768
Content-Type: text/plain

albertel		Fri Jun  4 18:06:08 2004 EDT

  Modified files:              
    /loncom/homework	inputtags.pm 
    /loncom/homework/caparesponse	caparesponse.pm 
  Log:
  - fixing display of numerical/formula/string respons types to make BUG#873 go away
  - now longer says 'The correct answers is ...' but rather just puts the correct answer up there, and whenever it would display the computer's answer is says 'Computer's answer now show'
  
  
  
  
--albertel1086386768
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20040604180608.txt"

Index: loncom/homework/inputtags.pm
diff -u loncom/homework/inputtags.pm:1.143 loncom/homework/inputtags.pm:1.144
--- loncom/homework/inputtags.pm:1.143	Thu Jun  3 10:28:39 2004
+++ loncom/homework/inputtags.pm	Fri Jun  4 18:06:07 2004
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # input  definitons
 #
-# $Id: inputtags.pm,v 1.143 2004/06/03 14:28:39 www Exp $
+# $Id: inputtags.pm,v 1.144 2004/06/04 22:06:07 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -65,6 +65,9 @@
     @Apache::inputtags::importlist=();
     # just used to note whether we have seen a response that isn't in a part
     $Apache::inputtags::response_with_no_part=0;
+    # storage location so the begin <*response> tag can generate the correct
+    # answer string for display by the <textline />
+    %Apache::inputtags::answertxt=();
 }
 
 sub check_for_duplicate_ids {
@@ -224,8 +227,8 @@
 	    }
 	} else {
 	    #right or wrong don't show what was last typed in.
-	    #$result='<i>'.$oldresponse.'</i>';
-	    $result='';
+	    $result='<i>'.$Apache::inputtags::answertxt{$id}.'</i>';
+	    #$result='';
 	}
     } elsif ($target eq 'edit') {
 	$result=&Apache::edit::tag_start($target,$token);
@@ -344,6 +347,7 @@
 	    } else {
 		$message = "<b>".&mt('You are correct.')."</b>";
 	    }
+	    $message.= " ".&mt(" Computer's answer now shown.");
 	    unless ($ENV{'course.'.
 			     $ENV{'request.course.id'}.
 			     '.disable_receipt_display'} eq 'yes') { 
@@ -366,11 +370,16 @@
 	$previousmsg='';
     } elsif ($award eq 'EXACT_ANS' || $award eq 'APPROX_ANS' ) {
 	if ($solved =~ /^incorrect/ || $solved eq '') {
-	    $message = &mt("Incorrect");
+	    $message = &mt("Incorrect").".";
 	    $bgcolor=$possiblecolors{'charged_try'};
 	    $button=1;
 	} else {
-	    $message = "<b>".&mt('You are correct.')."</b>";
+	    if ($target eq 'tex') {
+		$message = '\textbf{'.&mt('You are correct.').'}';
+	    } else {
+		$message = "<b>".&mt('You are correct.')."</b>";
+	    }
+	    $message.= " ".&mt(" Computer's answer now shown.");
 	    unless ($ENV{'course.'.
 			     $ENV{'request.course.id'}.
 			     '.disable_receipt_display'} eq 'yes') { 
@@ -423,21 +432,21 @@
 	$bgcolor=$possiblecolors{'not_charged_try'};
 	$button=1;
     } elsif ($award eq 'UNIT_INVALID_STUDENT') {
-	$message = &mt('Unable to interpret units. Computer reads units as "[_1]"','<tt>'.$awardmsg.'</tt>');
+	$message = &mt('Unable to interpret units. Computer reads units as "[_1]"','<tt>'.$awardmsg.'</tt>.');
 	if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Physical_Units');} 
 	$bgcolor=$possiblecolors{'not_charged_try'};
 	$button=1;
     } elsif ($award eq 'UNIT_FAIL' || $award eq 'UNIT_IRRECONCIBLE') {
-	$message = &mt('Incompatible units. No conversion found between "[_1]" and the required units.','<tt>'.$awardmsg.'</tt>');
+	$message = &mt('Incompatible units. No conversion found between "[_1]" and the required units ','<tt>'.$awardmsg.'</tt>.');
 	if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Physical_Units');} 
 	$bgcolor=$possiblecolors{'not_charged_try'};
 	$button=1;
     } elsif ($award eq 'UNIT_NOTNEEDED') {
-	$message = &mt('Only a number required. Computer reads units of "[_1]"','<tt>'.$awardmsg.'</tt>');
+	$message = &mt('Only a number required. Computer reads units of "[_1]"','<tt>'.$awardmsg.'</tt>.');
 	$bgcolor=$possiblecolors{'not_charged_try'};
 	$button=1;
     } elsif ($award eq 'NO_UNIT') {
-	$message = &mt("Units required");
+	$message = &mt("Units required").'.';
 	if ($target ne 'tex') {$message.=&Apache::loncommon::help_open_topic('Physical_Units')};
 	$bgcolor=$possiblecolors{'not_charged_try'};
 	$button=1;
@@ -446,7 +455,7 @@
 	$bgcolor=$possiblecolors{'not_charged_try'};
 	$button=1;
     } elsif ($award eq 'INCORRECT') {
-	$message = &mt("Incorrect");
+	$message = &mt("Incorrect").'.';
 	$bgcolor=$possiblecolors{'charged_try'};
 	$button=1;
     } elsif ($award eq 'SUBMITTED') {
@@ -454,13 +463,16 @@
 	$bgcolor=$possiblecolors{'correct'};
 	$button=1;
     } elsif ($award eq 'DRAFT') {
-	$message = "A draft copy has been saved.";
+	$message = &mt("A draft copy has been saved.");
 	$bgcolor=$possiblecolors{'not_charged_try'};
 	$button=1;
     } elsif ($award eq 'ASSIGNED_SCORE') {
-	$message = "A score has been assigned.";
+	$message = &mt("A score has been assigned.");
 	$bgcolor=$possiblecolors{'correct'};
 	$button=0;
+    } elsif ($award eq '') {
+	$bgcolor=$possiblecolors{'not_charged_try'};
+	$button=1;
     } else {
 	$message = &mt("Unknown message").": $award";
 	$button=1;
@@ -471,6 +483,9 @@
 	$bgcolor=$possiblecolors{'correct'};
 	$button=1;
     }
+    if ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER') {
+	$message.=" ".&mt("Computer's answer now shown.");
+    }
     return ($button,$bgcolor,$message,$previousmsg);
 }
 
@@ -668,10 +683,11 @@
 	my $previous = $Apache::lonhomework::history{"resource.$id.previous"};
 	my $awardmsg = $Apache::lonhomework::history{"resource.$id.awardmsg"};
 	&Apache::lonxml::debug("Found Award |$award|$solved|$awardmsg");
-	if ( $award ne '' || $solved ne '') {
+	if ( $award ne '' || $solved ne '' || $status eq 'SHOW_ANSWER') {
 	    &Apache::lonxml::debug('Getting message');
 	    ($showbutton,$bgcolor,$message,$previousmsg) =
 		&decideoutput($award,$awardmsg,$solved,$previous,$target);
+	    &Apache::lonnet::logthis(" mesage is $message status is $status");
 	    if ($target eq 'tex') {
 		$message='\vskip 2 mm '.$message.' ';
 	    } else {
Index: loncom/homework/caparesponse/caparesponse.pm
diff -u loncom/homework/caparesponse/caparesponse.pm:1.145 loncom/homework/caparesponse/caparesponse.pm:1.146
--- loncom/homework/caparesponse/caparesponse.pm:1.145	Wed Jun  2 17:23:21 2004
+++ loncom/homework/caparesponse/caparesponse.pm	Fri Jun  4 18:06:07 2004
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # caparesponse definition
 #
-# $Id: caparesponse.pm,v 1.145 2004/06/02 21:23:21 albertel Exp $
+# $Id: caparesponse.pm,v 1.146 2004/06/04 22:06:07 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -86,6 +86,39 @@
 						    $safeeval);
 	    if ($unit =~ /\S/) { $result.=" (in $unit) "; }
 	}
+	if (  &Apache::response::show_answer() ) {
+	    my $answertxt;
+	    my (@answers)=&Apache::lonxml::get_param_var('answer',$parstack,
+							 $safeeval);
+	    my (@formats)=&Apache::lonxml::get_param_var('format',$parstack,
+							 $safeeval);
+	    my $unit=&Apache::lonxml::get_param_var('unit',$parstack,
+						    $safeeval);
+	    for (my $i=0; $i <= $#answers; $i++) {
+		my $answer=$answers[$i];
+		my $format;
+		if ($#formats > 0) {
+		    $format=$formats[$i];
+		} else {
+		    $format=$formats[0];
+		}
+		my $formatted;
+		if ((defined($format)) && ($format ne '')) {
+		    $format=~s/e/E/g;
+		    &Apache::lonxml::debug("formatting with :$format: answer :$answer:");
+		    $formatted=sprintf('%.'.$format,$answer).',';
+		} else {
+		    &Apache::lonxml::debug("no format answer :$answer:");
+		    $formatted="$answer,";
+		}
+		$answertxt.=$formatted;
+	    }
+	    chop $answertxt;
+	    if ($target eq 'web') {
+		$answertxt.=" $unit.<br />";
+	    }
+	    $Apache::inputtags::answertxt{$id}=$answertxt;
+	}
     }
     return $result;
 }
@@ -185,42 +218,6 @@
 						     $safeeval);
 	my $award = $Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"};
 	my $status = $Apache::inputtags::status['-1'];
-	if (  &Apache::response::show_answer() ) {
-	    my (@formats)=&Apache::lonxml::get_param_var('format',$parstack,
-							 $safeeval);
-	    my $unit=&Apache::lonxml::get_param_var('unit',$parstack,
-						    $safeeval);
-	    if ($target eq 'web') {
-		$result="<br />".&mt('The correct answer is')." ";
-	    }
-	    for (my $i=0; $i <= $#answers; $i++) {
-		my $answer=$answers[$i];
-		my $format;
-		if ($#formats > 0) {
-		    $format=$formats[$i];
-		} else {
-		    $format=$formats[0];
-		}
-		my $formatted;
-		if ((defined($format)) && ($format ne '')) {
-		    $format=~s/e/E/g;
-		    &Apache::lonxml::debug("formatting with :$format: answer :$answer:");
-		    $formatted=sprintf('%.'.$format,$answer).',';
-		} else {
-		    &Apache::lonxml::debug("no format answer :$answer:");
-		    $formatted="$answer,";
-		}
-		if ($target eq 'tex') {
-		    $formatted='';
-		    #$formatted=&Apache::lonxml::latex_special_symbols($formatted);
-		}
-		$result.=$formatted;
-	    }
-	    chop $result;
-	    if ($target eq 'web') {
-		$result.=" $unit.<br />";
-	    }
-	}
 	if ($Apache::lonhomework::type eq 'exam') {
 	    my $partid=$Apache::inputtags::part;
 	    my $id=$Apache::inputtags::response[-1];
@@ -561,18 +558,21 @@
 			 [['cs','Case Sensitive'],['ci','Case Insensitive'],
 			  ['mc','Case Insensitive, Any Order'],
 			  ['re','Regular Expression']],$token);
-	$result.=&Apache::edit::checked_arg('Answer Display:','answerdisplay',
-					    [['inline','Inline']],$token);
 	$result.=&Apache::edit::end_row().&Apache::edit::start_spanning_row();
     } elsif ($target eq 'modified') {
-       my $constructtag;
-       $constructtag=&Apache::edit::get_new_args($token,$parstack,
-                                                 $safeeval,'answer',
-                                                 'type','answerdisplay');
-       if ($constructtag) {
-           $result = &Apache::edit::rebuild_tag($token);
-           $result.=&Apache::edit::handle_insert();
-       }
+	my $constructtag;
+	$constructtag=&Apache::edit::get_new_args($token,$parstack,
+						  $safeeval,'answer',
+						  'type','answerdisplay');
+	if ($constructtag) {
+	    $result = &Apache::edit::rebuild_tag($token);
+	    $result.=&Apache::edit::handle_insert();
+	}
+    } elsif ($target eq 'web') {
+	if (  &Apache::response::show_answer() ) {
+	    $Apache::inputtags::answertxt{$id}=
+		&Apache::lonxml::get_param('answer',$parstack,$safeeval);
+	} 
     } elsif ($target eq 'answer' || $target eq 'grade') {
 	&Apache::response::reset_params();
     }
@@ -648,13 +648,6 @@
     } elsif ($target eq 'web' || $target eq 'tex') {
 	my $award = $Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"};
 	my $status = $Apache::inputtags::status['-1'];
-	if (  &Apache::response::show_answer() ) {
-	    if ($target eq 'web') {
-		$result=($answerdisplay eq 'inline'?'':"<br />".&mt('The correct answer is')." ")
-		    .$answer;
-#		    join(', ',@answers).".<br />";
-	    }
-	}
 	if ($Apache::lonhomework::type eq 'exam' && $target eq 'tex') {
 	    $result.='\fbox{\fbox{\parbox{\textwidth-5mm}{\strut\\\\\strut\\\\\strut\\\\\strut\\\\}}}';
 	    $increment = &Apache::response::repetition();

--albertel1086386768--