--- loncom/homework/inputtags.pm 2006/02/21 22:41:29 1.187 +++ loncom/homework/inputtags.pm 2006/03/09 00:41:24 1.188 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # input definitons # -# $Id: inputtags.pm,v 1.187 2006/02/21 22:41:29 albertel Exp $ +# $Id: inputtags.pm,v 1.188 2006/03/09 00:41:24 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -222,6 +222,47 @@ sub end_textfield { return $result; } +sub exam_box { + my ($target) = @_; + my $result; + + if ($target eq 'tex') { + $result.='\fbox{\fbox{\parbox{\textwidth-5mm}{\strut\\\\\strut\\\\\strut\\\\\strut\\\\}}}'; + my $repetition = &Apache::response::repetition(); + $result.='\begin{enumerate}'; + foreach my $i (0..$repetition-1) { + $result.='\item[\textbf{'. + ($Apache::lonxml::counter+$i). + '}.]\textit{Leave blank on scoring form}\vskip 0 mm'; + } + $result.= '\end{enumerate}'; + + } elsif ($target eq 'web') { + my $id=$Apache::inputtags::response[-1]; + $result.= '

+

'; + } + return $result; +} + +sub needs_exam_box { + my ($tagstack) = @_; + my @tags = ('formularesponse', + 'stringresponse', + 'reactionresponse', + 'organicresponse', + 'imageresponse', + ); + + foreach my $tag (@tags) { + if (grep(/\Q$tag\E/,@$tagstack)) { + return 1; + } + } + return 0; +} + sub start_textline { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $result = ""; @@ -252,6 +293,10 @@ sub start_textline { $result.= ''; } + if ($Apache::lonhomework::type eq 'exam' + && &needs_exam_box($tagstack)) { + $result.=&exam_box($target); + } } else { #right or wrong don't show what was last typed in. $result=''.$Apache::inputtags::answertxt{$id}.''; @@ -271,10 +316,16 @@ sub start_textline { $safeeval,'size', 'addchars','readonly'); if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); } - } elsif ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') { + } elsif ($target eq 'tex' + && $Apache::lonhomework::type ne 'exam') { my $size = &Apache::lonxml::get_param('size',$parstack,$safeeval); if ($size != 0) {$size=$size*2; $size.=' mm';} else {$size='40 mm';} $result='\framebox['.$size.'][s]{\tiny\strut}'; + + } elsif ($target eq 'tex' + && $Apache::lonhomework::type eq 'exam' + && &needs_exam_box($tagstack)) { + $result.=&exam_box($target); } return $result; }