--- 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;
}