Diff for /loncom/homework/optionresponse.pm between versions 1.62 and 1.69

version 1.62, 2002/11/11 20:26:59 version 1.69, 2003/03/26 18:42:29
Line 31  package Apache::optionresponse; Line 31  package Apache::optionresponse;
 use strict;  use strict;
 use Apache::response;  use Apache::response;
   
   my $flag_for_exam_printing = 1;
   
 BEGIN {  BEGIN {
   &Apache::lonxml::register('Apache::optionresponse',('optionresponse'));    &Apache::lonxml::register('Apache::optionresponse',('optionresponse'));
 }  }
Line 141  ENDTABLE Line 143  ENDTABLE
       $result.=')">';        $result.=')">';
     } # else nothing changed so just use the default mechanism      } # else nothing changed so just use the default mechanism
   }    }
   if ($target eq 'tex') {    if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') {
       $result .= ' \begin{enumerate} ';        $result .= ' \begin{enumerate} ';
   }    }
   return $result;    return $result;
Line 230  sub end_foilgroup { Line 232  sub end_foilgroup {
   } elsif ($target eq 'edit') {    } elsif ($target eq 'edit') {
     $result.=&Apache::edit::end_table();      $result.=&Apache::edit::end_table();
   }      }  
   if ($target eq 'tex') {$result .= '\end{enumerate}';}    if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') {$result .= '\end{enumerate}';}
   return $result;    return $result;
 }  }
   
Line 248  sub whichfoils { Line 250  sub whichfoils {
   my ($max,$randomize)=@_;    my ($max,$randomize)=@_;
   $max = &getfoilcounts($max);    $max = &getfoilcounts($max);
   &Apache::lonxml::debug("randomize $randomize");    &Apache::lonxml::debug("randomize $randomize");
     if (!defined(@{ $Apache::response::foilgroup{'names'} })) {return;}
   my @names = @{ $Apache::response::foilgroup{'names'} };    my @names = @{ $Apache::response::foilgroup{'names'} };
   my @whichopt =();    my @whichopt =();
   my (%top,@toplist,%bottom,@bottomlist);    my (%top,@toplist,%bottom,@bottomlist);
Line 294  sub whichfoils { Line 297  sub whichfoils {
   
 sub displayanswers {  sub displayanswers {
   my ($max,$randomize,@opt)=@_;    my ($max,$randomize,@opt)=@_;
     if (!defined(@{ $Apache::response::foilgroup{'names'} })) {return;}
   my @names = @{ $Apache::response::foilgroup{'names'} };    my @names = @{ $Apache::response::foilgroup{'names'} };
   my @whichopt = &whichfoils($max,$randomize);    my @whichopt = &whichfoils($max,$randomize);
   my $result=&Apache::response::answer_header('optionresponse');    my $result=&Apache::response::answer_header('optionresponse');
Line 307  sub displayanswers { Line 311  sub displayanswers {
   
 sub displayfoils {  sub displayfoils {
   my ($target,$max,$randomize,@opt)=@_;    my ($target,$max,$randomize,@opt)=@_;
     if (!defined(@{ $Apache::response::foilgroup{'names'} })) {return;}
   my @names = @{ $Apache::response::foilgroup{'names'} };    my @names = @{ $Apache::response::foilgroup{'names'} };
   my @truelist;    my @truelist;
   my @falselist;    my @falselist;
Line 319  sub displayfoils { Line 324  sub displayfoils {
   my $part=$Apache::inputtags::part;    my $part=$Apache::inputtags::part;
   my $id=$Apache::inputtags::response[-1];    my $id=$Apache::inputtags::response[-1];
   my $break;    my $break;
   if (($Apache::lonhomework::history{"resource.$part.solved"} =~ /^correct/)  || ($Apache::inputtags::status[-1] eq  'SHOW_ANSWER')) {        my $solved=$Apache::lonhomework::history{"resource.$part.solved"};
     my $temp=1; ####    my $status=$Apache::inputtags::status[-1];
     if (
         ($target ne 'tex') &&
         (($solved =~ /^correct/) || ($status eq 'SHOW_ANSWER')) ) {
     foreach $name (@whichopt) {      foreach $name (@whichopt) {
  my $text=$Apache::response::foilgroup{$name.'.text'};   my $text=$Apache::response::foilgroup{$name.'.text'};
  if ($text!~/^\s*$/) {   if ($text!~/^\s*$/) {
Line 353  sub displayfoils { Line 361  sub displayfoils {
   $result.=&bubbles(\@alphabet,\@opt);    $result.=&bubbles(\@alphabet,\@opt);
         }          }
       }        }
     $temp++;  
     }      }
   } else {    } else {
     my $temp=1;      my $temp=1;
Line 396  sub displayfoils { Line 403  sub displayfoils {
       if ($Apache::lonhomework::type eq 'exam') {$texoptionlist='';} #if exam we do not need to show optionlist        if ($Apache::lonhomework::type eq 'exam') {$texoptionlist='';} #if exam we do not need to show optionlist
       if ($Apache::response::foilgroup{$name.'.text'}=~m/\\item /) {        if ($Apache::response::foilgroup{$name.'.text'}=~m/\\item /) {
  if ($Apache::lonhomework::type eq 'exam') {   if ($Apache::lonhomework::type eq 'exam') {
           $Apache::response::foilgroup{$name.'.text'}=~s/\\item/\\item[\\textbf{$Apache::lonxml::counter}\.]/;            $Apache::response::foilgroup{$name.'.text'}=~s/\\item/\\vskip 2 mm/;
         }          }
         if ($Apache::response::foilgroup{$name.'.text'}=~/<drawoptionlist\s*\/>/) {          if ($Apache::response::foilgroup{$name.'.text'}=~/<drawoptionlist\s*\/>/) {
           $Apache::response::foilgroup{$name.'.text'}=~s|<drawoptionlist\s*/>| \\makebox\[0\.3in\]\[b\]\{\\hrulefill\} |;            $Apache::response::foilgroup{$name.'.text'}=~s|<drawoptionlist\s*/>| \\makebox\[0\.3in\]\[b\]\{\\hrulefill\} |;
           $result.= $texoptionlist.$Apache::response::foilgroup{$name.'.text'};  
         }          }
    $result.= $texoptionlist.$Apache::response::foilgroup{$name.'.text'};
       } else {        } else {
   if ($Apache::lonhomework::type eq 'exam') {    if ($Apache::lonhomework::type eq 'exam') {
       $result.= $texoptionlist.'\vspace*{-2 mm}\item[\textbf{'.$Apache::lonxml::counter.'}.]'.$Apache::response::foilgroup{$name.'.text'};        $result.= $texoptionlist.'  '.$Apache::response::foilgroup{$name.'.text'};
   } else {    } else {
       $result.= $texoptionlist.'\vspace*{-2 mm}\item '.$Apache::response::foilgroup{$name.'.text'};        $result.= $texoptionlist.'\vspace*{-2 mm}\item '.$Apache::response::foilgroup{$name.'.text'};
   }    }
       }        }
       if ($Apache::lonhomework::type eq 'exam') {        if ($Apache::lonhomework::type eq 'exam') {
   $result.=&bubbles(\@alphabet,\@opt);    $result.='\vskip -2 mm\parbox{\textwidth}{\begin{enumerate}\item[\textbf{'.$Apache::lonxml::counter.'}.]\parbox{\textwidth - 5 mm}{'.&bubbles(\@alphabet,\@opt).'}\end{enumerate}} \vskip -9 mm \strut ';
       }        }
       $displayoptionintex=1;        $displayoptionintex=1;
   } else {    } else {
       if ($Apache::response::foilgroup{$name.'.text'}=~m/\\item /) {        if ($Apache::response::foilgroup{$name.'.text'}=~m/\\item /) {
   if ($Apache::lonhomework::type eq 'exam') {    if ($Apache::lonhomework::type eq 'exam') {
       $Apache::response::foilgroup{$name.'.text'}=~s/\\item/\\item[\\textbf{$Apache::lonxml::counter}\.]/;        $Apache::response::foilgroup{$name.'.text'}=~s/\\item//;
   }    }
         if ($Apache::response::foilgroup{$name.'.text'}=~/<drawoptionlist\s*\/>/) {          if ($Apache::response::foilgroup{$name.'.text'}=~/<drawoptionlist\s*\/>/) {
           $Apache::response::foilgroup{$name.'.text'}=~s|<drawoptionlist\s*/>| \\makebox\[0\.3in\]\[b\]\{\\hrulefill\} |;            $Apache::response::foilgroup{$name.'.text'}=~s|<drawoptionlist\s*/>| \\makebox\[0\.3in\]\[b\]\{\\hrulefill\} |;
Line 424  sub displayfoils { Line 431  sub displayfoils {
  $result.= $Apache::response::foilgroup{$name.'.text'};   $result.= $Apache::response::foilgroup{$name.'.text'};
       } else {        } else {
   if ($Apache::lonhomework::type eq 'exam') {    if ($Apache::lonhomework::type eq 'exam') {
       $result.= '\item[\textbf{'.$Apache::lonxml::counter.'}.]'.$Apache::response::foilgroup{$name.'.text'};        $result.= '  '.$Apache::response::foilgroup{$name.'.text'};
   } else {    } else {
       $result.= '\item '.$Apache::response::foilgroup{$name.'.text'};        $result.= '\item '.$Apache::response::foilgroup{$name.'.text'};
   }    }
       }        }
       if ($Apache::lonhomework::type eq 'exam') {        if ($Apache::lonhomework::type eq 'exam') {
   $result.=&bubbles(\@alphabet,\@opt);    $result.='\vskip -2 mm \parbox{\textwidth}{\begin{enumerate}\item[\textbf{'.$Apache::lonxml::counter.'}.]\parbox{\textwidth - 5 mm}{'.&bubbles(\@alphabet,\@opt).'}\end{enumerate}} \vskip -9 mm \strut ';
       }        }
   }    }
       }        }
Line 455  sub optionlist_correction { Line 462  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;
     return $texoptionlist;      return $texoptionlist;
 }  }
   
Line 610  sub end_foil { Line 618  sub end_foil {
   my $result = '';    my $result = '';
   if ($target eq 'web' || $target eq 'tex') {     if ($target eq 'web' || $target eq 'tex') { 
       $text=&Apache::lonxml::endredirection;        $text=&Apache::lonxml::endredirection;
       if ($target eq 'tex') { $text = '\vspace*{-2 mm}\item '.$text; }        if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') { $text = '\vspace*{-2 mm}\item '.$text; }
   }    }
   if ($target eq 'web' || $target eq 'grade' || $target eq 'answer'     if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' 
       || $target eq 'tex' || $target eq 'analyze') {        || $target eq 'tex' || $target eq 'analyze') {
Line 625  sub end_foil { Line 633  sub end_foil {
    && !&Apache::response::showallfoils() ) {     && !&Apache::response::showallfoils() ) {
  push @{ $Apache::response::conceptgroup{'names'} }, $name;   push @{ $Apache::response::conceptgroup{'names'} }, $name;
  $Apache::response::conceptgroup{"$name.value"} = $value;   $Apache::response::conceptgroup{"$name.value"} = $value;
  $Apache::response::conceptgroup{"$name.text"} = $text;   if ($target eq 'tex' and $Apache::lonhomework::type eq 'exam' and $flag_for_exam_printing) {
       $Apache::response::conceptgroup{"$name.text"} = '\vskip 4 mm $\triangleright$ '.$text;
    } else {
       if ($target eq 'tex') {
    $Apache::response::conceptgroup{"$name.text"} = ' $\triangleright$ '.$text;
       } else {
    $Apache::response::conceptgroup{"$name.text"} = $text;
       }
    }
  $Apache::response::conceptgroup{"$name.location"} = $location;   $Apache::response::conceptgroup{"$name.location"} = $location;
       } else {        } else {
  push @{ $Apache::response::foilgroup{'names'} }, $name;   push @{ $Apache::response::foilgroup{'names'} }, $name;
  $Apache::response::foilgroup{"$name.value"} = $value;   $Apache::response::foilgroup{"$name.value"} = $value;
  $Apache::response::foilgroup{"$name.text"} = $text;   if ($Apache::lonhomework::type eq 'exam' and $flag_for_exam_printing) {
       $Apache::response::foilgroup{"$name.text"} = '\vskip 5 mm $\triangleright$ '.$text;
    } else {
       if ($target eq 'tex') {
    $Apache::response::foilgroup{"$name.text"} = ' $\triangleright$ '.$text;
       } else {
    $Apache::response::foilgroup{"$name.text"} = $text;
       }
    }
  $Apache::response::foilgroup{"$name.location"} = $location;   $Apache::response::foilgroup{"$name.location"} = $location;
       }        }
     }      }

Removed from v.1.62  
changed lines
  Added in v.1.69


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>