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

albertel lon-capa-cvs@mail.lon-capa.org
Fri, 07 Nov 2003 08:52:21 -0000


albertel		Fri Nov  7 03:52:21 2003 EDT

  Modified files:              
    /loncom/homework	matchresponse.pm 
  Log:
  - analyze mode is now correct for match response
  - now includes a listing of the items in the order presented
  - now stores the exact letters submitted 
  
  
Index: loncom/homework/matchresponse.pm
diff -u loncom/homework/matchresponse.pm:1.29 loncom/homework/matchresponse.pm:1.30
--- loncom/homework/matchresponse.pm:1.29	Mon Oct 27 15:04:34 2003
+++ loncom/homework/matchresponse.pm	Fri Nov  7 03:52:20 2003
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Full matching style response
 #
-# $Id: matchresponse.pm,v 1.29 2003/10/27 20:04:34 albertel Exp $
+# $Id: matchresponse.pm,v 1.30 2003/11/07 08:52:20 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -123,6 +123,10 @@
 	@names=&Apache::response::whichorder($#names+1,$randomize,0,
 					 \%Apache::response::itemgroup);
     }
+    if ($target eq 'analyze') {
+	my $partid="$Apache::inputtags::part.$Apache::inputtags::response[-1]";
+	push (@{ $Apache::lonhomework::analyze{"$partid.items"} }, @names);
+    }
     my %letter_name_map;
     my %name_letter_map;
     my @alphabet=('A'..'Z');
@@ -163,7 +167,7 @@
 sub start_item {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $result='';
-    if ($target eq 'web' || $target eq 'tex') {
+    if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') {
 	&Apache::lonxml::startredirection;
     } elsif ($target eq 'edit') {
 	my $randomize=&Apache::lonxml::get_param('randomize',$parstack,
@@ -189,11 +193,11 @@
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $text ='';
     my $result = '';
-    if ($target eq 'web' || $target eq 'tex') {
+    if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') {
 	$text=&Apache::lonxml::endredirection;
     }
     if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' ||
-	$target eq 'edit' || $target eq 'tex') {
+	$target eq 'edit' || $target eq 'tex' || $target eq 'analyze') {
 	my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval);
 	my $location=&Apache::lonxml::get_param('location',$parstack,
 						$safeeval);
@@ -308,8 +312,10 @@
 	%letter_name_map=
 	    %{ $Apache::response::itemgroup{'letter_name_map'} };
     }
+    my @items;
     foreach my $name (@whichfoils) {
 	my $response = &Apache::response::getresponse($temp);
+	push(@items,$response);
 	my $responsename = $letter_name_map{$response};
 	$responsehash{$name}=$responsename;
 	my $value=$Apache::response::foilgroup{$name.'.value'};
@@ -328,9 +334,9 @@
     my $part=$Apache::inputtags::part;
     my $id = $Apache::inputtags::response['-1'];
     my $responsestr=&Apache::lonnet::hash2str(%responsehash);
+    my $itemstr    =&Apache::lonnet::array2str(@items);
     my $gradestr   =&Apache::lonnet::hash2str(%grade);
-    my %previous =&Apache::response::check_for_previous($responsestr,
-							$part,$id);
+    my %previous=&Apache::response::check_for_previous($responsestr,$part,$id);
     &Apache::lonxml::debug("Got $right right and $wrong wrong, and $ignored were ignored ");
     my $ad;
     if ($wrong==0 && $ignored==0) {
@@ -346,6 +352,8 @@
     }
     $Apache::lonhomework::results{"resource.$part.$id.submission"}=
 	$responsestr;
+    $Apache::lonhomework::results{"resource.$part.$id.submissionitems"}=
+	$itemstr;
     $Apache::lonhomework::results{"resource.$part.$id.submissiongrading"}=
 	$gradestr;
     $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=$ad;