--- loncom/homework/matchresponse.pm 2007/04/05 10:29:58 1.62 +++ loncom/homework/matchresponse.pm 2007/10/08 09:22:50 1.66 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Full matching style response # -# $Id: matchresponse.pm,v 1.62 2007/04/05 10:29:58 foxr Exp $ +# $Id: matchresponse.pm,v 1.66 2007/10/08 09:22:50 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -71,6 +71,8 @@ sub start_matchresponse { } elsif ($target eq 'analyze') { my $part_id="$Apache::inputtags::part.$id"; push (@{ $Apache::lonhomework::analyze{"parts"} },$part_id); + push (@{ $Apache::lonhomework::anaylze{"$part_id.bubble_lines"} }, + 1); } return $result; } @@ -276,7 +278,12 @@ sub end_foilgroup { ['text','value','location']); #FIXME need to store options in some way } - &Apache::lonxml::increment_counter(&getfoilcounts($max)); + &Apache::lonxml::increment_counter(&getfoilcounts($max), + $Apache::inputtags::part); + if ($target eq 'analyze') { + &Apache::lonhomework::set_bubble_lines(); + } + } elsif ($target eq 'edit') { $result=&Apache::edit::end_table(); } @@ -415,6 +422,24 @@ sub grade_response { } } +sub format_prior_answer { + my ($mode,$answer,$other_data) = @_; + my %answer =&Apache::lonnet::str2hash($answer); + my $foil_order =$other_data->[0]; + my %grading =&Apache::lonnet::str2hash($other_data->[1]); + my @items =&Apache::lonnet::str2array($other_data->[2]); + my $output; + + foreach my $name (@{ $foil_order }) { + my $item=shift(@items); + $output .= ''.$item.''; + } + return if (!defined($output)); + + $output = ''.$output.'
'; + return $output; +} + sub itemdisplay { my ($location)=@_; if ($location eq 'top' && @@ -426,6 +451,7 @@ sub itemdisplay { } return undef; } + sub displayfoils { my ($target,$max,$randomize)=@_; my ($tabsize, $lefttabsize, $righttabsize); @@ -535,11 +561,9 @@ sub displayfoils { $question.='\vskip -1 mm\noindent\begin{list}{}{\setlength{\listparindent}{0mm}\setlength{\leftmargin}{2mm}}' .'\item \hskip -3mm \textbf{'.$internal_counter.'}'; if (&itemdisplay('left') || &itemdisplay('right')) { - &Apache::lonnet::logthis("Constraining bubbles to $righttabsize - 10"); $question .= &Apache::optionresponse::bubbles(\@used_letters,\@emptyItems, "", $righttabsize); } else { - &Apache::lonnet::logthis("Not constraining bubbles"); $question .= &Apache::optionresponse::bubbles(\@used_letters,\@emptyItems); } $question .= '\end{list} \vskip -8 mm \strut '; @@ -578,6 +602,12 @@ sub displayfoils { $result='\setlength{\tabcolsep}{1 mm}\begin{tabular}{p{'.$lefttabsize.'}p{'.$righttabsize.'}}\begin{minipage}{'.$lefttabsize.'}'.$result.'\end{minipage}&\begin{minipage}{'.$righttabsize.'}'.$question.'\end{minipage}\end{tabular}'; } } + if ($target eq 'web') { + &Apache::response::setup_prior_tries_hash(\&format_prior_answer, + [\@whichfoils, + 'submissiongrading', + 'submissionitems']); + } if ($target ne 'tex') {$result.="
";} else {$result.=' \\\\ ';} return $result; }