version 1.93, 2003/10/27 19:27:09
|
version 1.99, 2004/02/12 15:50:01
|
Line 43 sub start_optionresponse {
|
Line 43 sub start_optionresponse {
|
%Apache::hint::option=(); |
%Apache::hint::option=(); |
if ($target eq 'edit') { |
if ($target eq 'edit') { |
$result.=&Apache::edit::start_table($token). |
$result.=&Apache::edit::start_table($token). |
"<tr><td>Multiple Option Response Question</td><td>Delete:". |
"<tr><td>Multiple Option Response Question ". |
|
&Apache::loncommon::help_open_topic('Option_Response_Problems')."</td><td>Delete:". |
&Apache::edit::deletelist($target,$token) |
&Apache::edit::deletelist($target,$token) |
."</td><td> ". |
."</td><td> ". |
&Apache::edit::end_row(). |
&Apache::edit::end_row(). |
Line 149 sub end_foilgroup {
|
Line 150 sub end_foilgroup {
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
|
|
my $result; |
my $result; |
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || $target eq 'tex' || $target eq 'analyze') { |
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || |
|
$target eq 'tex' || $target eq 'analyze') { |
my $tex_option_switch=&Apache::lonxml::get_param('texoptions',$parstack,$safeeval); |
my $tex_option_switch=&Apache::lonxml::get_param('texoptions',$parstack,$safeeval); |
my $name; |
my $name; |
my @opt; |
my @opt; |
Line 165 sub end_foilgroup {
|
Line 167 sub end_foilgroup {
|
$result.=&displayanswers($max,$randomize,@opt); |
$result.=&displayanswers($max,$randomize,@opt); |
} elsif ( $target eq 'analyze') { |
} elsif ( $target eq 'analyze') { |
my @shown = &whichfoils($max,$randomize); |
my @shown = &whichfoils($max,$randomize); |
&Apache::response::analyze_store_foilgroup(\@shown,['text','value']); |
&Apache::response::analyze_store_foilgroup(\@shown, |
|
['text','value','location']); |
my $part_id="$Apache::inputtags::part.$Apache::inputtags::response[-1]"; |
my $part_id="$Apache::inputtags::part.$Apache::inputtags::response[-1]"; |
push (@{ $Apache::lonhomework::analyze{"$part_id.options"} },@opt); |
push (@{ $Apache::lonhomework::analyze{"$part_id.options"} },@opt); |
} elsif ( $target eq 'grade') { |
} elsif ( $target eq 'grade') { |
Line 182 sub end_foilgroup {
|
Line 185 sub end_foilgroup {
|
if ($ENV{'form.submitted'} eq 'scantron') { |
if ($ENV{'form.submitted'} eq 'scantron') { |
$response = $opt[$response]; |
$response = $opt[$response]; |
} |
} |
$responsehash{$name}=$response; |
|
if ( $response =~ /[^\s]/) { |
if ( $response =~ /[^\s]/) { |
|
$responsehash{$name}=$response; |
my $value=$Apache::response::foilgroup{$name.'.value'}; |
my $value=$Apache::response::foilgroup{$name.'.value'}; |
&Apache::lonxml::debug("submitted a $response for $value<br />\n"); |
&Apache::lonxml::debug("submitted a $response for $value<br />\n"); |
if ($value eq $response) { |
if ($value eq $response) { |
Line 316 sub displayfoils {
|
Line 319 sub displayfoils {
|
} else { |
} else { |
$text=$value.': '.$text; |
$text=$value.': '.$text; |
} |
} |
|
} else { |
|
$text='•'.$text; |
} |
} |
$result.=$text."\n"; |
$result.=$text."\n"; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
Line 365 sub displayfoils {
|
Line 370 sub displayfoils {
|
my $text=$Apache::response::foilgroup{$name.'.text'}; |
my $text=$Apache::response::foilgroup{$name.'.text'}; |
if (!($text=~s|<drawoptionlist\s*/>|$optionlist|) && $Apache::lonhomework::type ne 'exam') { |
if (!($text=~s|<drawoptionlist\s*/>|$optionlist|) && $Apache::lonhomework::type ne 'exam') { |
$text=$optionlist.$text; |
$text=$optionlist.$text; |
|
} else { |
|
$text='•'.$text; |
} |
} |
$result.=$break.$text."\n"; |
$result.=$break.$text."\n"; |
if ($Apache::lonhomework::type eq 'exam') { |
if ($Apache::lonhomework::type eq 'exam') { |
Line 391 sub displayfoils {
|
Line 398 sub displayfoils {
|
} |
} |
} |
} |
if ($Apache::lonhomework::type eq 'exam') { |
if ($Apache::lonhomework::type eq 'exam') { |
$result.='\vskip -2 mm\parbox{\textwidth}{\begin{enumerate}\item[\textbf{'.$internal_counter.'}.]\parbox{\textwidth - 5 mm}{'.&bubbles(\@alphabet,\@opt).'}\end{enumerate}} \vskip -9 mm \strut '; |
$result.='\vskip -1 mm\noindent\begin{enumerate}\item[\textbf{'.$internal_counter.'}.]'.&bubbles(\@alphabet,\@opt).'\end{enumerate} \vskip -9 mm \strut '; |
$internal_counter++; |
$internal_counter++; |
} |
} |
$displayoptionintex=1; |
$displayoptionintex=1; |
Line 412 sub displayfoils {
|
Line 419 sub displayfoils {
|
} |
} |
} |
} |
if ($Apache::lonhomework::type eq 'exam') { |
if ($Apache::lonhomework::type eq 'exam') { |
$result.='\vskip -2 mm \parbox{\textwidth}{\begin{enumerate}\item[\textbf{'.$internal_counter.'}.]\parbox{\textwidth - 5 mm}{'.&bubbles(\@alphabet,\@opt).'}\end{enumerate}} \vskip -9 mm \strut '; |
$result.='\vskip -1 mm \noindent\begin{enumerate}\item[\textbf{'.$internal_counter.'}.]'.&bubbles(\@alphabet,\@opt).'\end{enumerate} \vskip -9 mm \strut '; |
$internal_counter++; |
$internal_counter++; |
} |
} |
} |
} |
Line 439 sub optionlist_correction {
|
Line 446 sub optionlist_correction {
|
$texoptionlist =~ s/>/\$>\$/g; |
$texoptionlist =~ s/>/\$>\$/g; |
$texoptionlist =~ s/</\$<\$/g; |
$texoptionlist =~ s/</\$<\$/g; |
$texoptionlist =~ s/=/\$=\$/g; |
$texoptionlist =~ s/=/\$=\$/g; |
$texoptionlist =~ s/\^(\d+)/<m>\$$1\$<\/m>/g; |
$texoptionlist =~ s/\^(\d+)/\$^{$1}\$/g; |
} else { |
} else { |
$texoptionlist =~ s/<option><\/option>/\\item \[\] \\vskip -5 mm/; |
$texoptionlist =~ s/<option><\/option>/\\item \[\] \\vskip -5 mm/; |
} |
} |
Line 478 sub bubbles {
|
Line 485 sub bubbles {
|
my ($result,$head,$line) =('','',''); |
my ($result,$head,$line) =('','',''); |
my $number_of_bubbles = $#opt + 1; |
my $number_of_bubbles = $#opt + 1; |
my $current_length = 0; |
my $current_length = 0; |
|
$ENV{'form.textwidth'}=~/(\d+)/; |
|
my $textwidth=$1; |
for (my $ind=0;$ind<=$number_of_bubbles;$ind++) { |
for (my $ind=0;$ind<=$number_of_bubbles;$ind++) { |
$current_length += (length($opt[$ind])+length($alphabet[$ind])+2)*2; |
my $leftmargin; |
if ($current_length<0.9*$ENV{'form.textwidth'} and $ind!=$number_of_bubbles) { |
if ($ind==0) {$leftmargin=6;} else {$leftmargin=10;} |
|
$current_length += (length($opt[$ind])+length($alphabet[$ind])+3)*2; |
|
if ($current_length<($textwidth-$leftmargin) and $ind!=$number_of_bubbles) { |
$line.='\hskip -1 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -1 mm & \hskip -3 mm {\small '.$opt[$ind].'} & '; |
$line.='\hskip -1 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -1 mm & \hskip -3 mm {\small '.$opt[$ind].'} & '; |
$head.='lr'; |
$head.='lr'; |
} else { |
} else { |
$line=~s/\&\s*$//; |
$line=~s/\&\s*$//; |
$result.='\vskip -5 mm\begin{tabular}{'.$head.'}\\\\'.$line.'\\\\\end{tabular}'; |
$result.='\vskip -2 mm\noindent\begin{tabular}{'.$head.'}'.$line.'\\\\\end{tabular}'; |
$line = '\hskip -1 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -1 mm & \hskip -3 mm {\small '.$opt[$ind].'} & ';; |
$line = '\hskip -1 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -1 mm & \hskip -3 mm {\small '.$opt[$ind].'} & ';; |
$head ='lr'; |
$head ='lr'; |
$current_length = (length($opt[$ind])+length($alphabet[$ind]))*2; |
$current_length = (length($opt[$ind])+length($alphabet[$ind]))*2; |