Diff for /loncom/homework/optionresponse.pm between versions 1.65 and 1.73

version 1.65, 2002/12/02 17:06:08 version 1.73, 2003/04/02 18:40:37
Line 141  ENDTABLE Line 141  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 230  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 248  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 295  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 309  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;
   my $result;    my $result;
   my $name;    my $name;
   my $displayoptionintex=0;    my $displayoptionintex=0;
   my @alphabet = ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P',    my @alphabet = ('A'..'Z');
   'Q','R','S','T','U','V','W','X','Y','Z');  
   my @whichopt = &whichfoils($max,$randomize);    my @whichopt = &whichfoils($max,$randomize);
   my $part=$Apache::inputtags::part;    my $part=$Apache::inputtags::part;
   my $id=$Apache::inputtags::response[-1];    my $id=$Apache::inputtags::response[-1];
Line 380  sub displayfoils { Line 382  sub displayfoils {
  }   }
       }        }
       if ($target ne 'tex') {        if ($target ne 'tex') {
   $optionlist='<select name="HWVAL_'.    if ($Apache::lonhomework::type ne 'exam') {
       $optionlist='<select name="HWVAL_'.
       $Apache::inputtags::response['-1'].':'.$temp.'">'.        $Apache::inputtags::response['-1'].':'.$temp.'">'.
   $optionlist."</select>\n";    $optionlist."</select>\n";
     }
   my $text=$Apache::response::foilgroup{$name.'.text'};    my $text=$Apache::response::foilgroup{$name.'.text'};
   if (!($text=~s|<drawoptionlist\s*/>|$optionlist|)) {    if (!($text=~s|<drawoptionlist\s*/>|$optionlist|) && $Apache::lonhomework::type ne 'exam') {
       $text=$optionlist.$text;        $text=$optionlist.$text;
   }    }
   $result.=$break.$text."\n";    $result.=$break.$text."\n";
   if ($Apache::lonhomework::type eq 'exam') {    if ($Apache::lonhomework::type eq 'exam') {
     $result.=&webbubbles(\@opt,\@alphabet);      $result.=&webbubbles(\@opt,\@alphabet,$temp);
   }    }
   $temp++;    $temp++;
       } else {        } else {
Line 398  sub displayfoils { Line 402  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\} |;
Line 406  sub displayfoils { Line 410  sub displayfoils {
  $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 426  sub displayfoils { Line 430  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 457  sub optionlist_correction { Line 461  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;
 }  }
   
   
 sub webbubbles {  sub webbubbles {
   
     my ($ropt,$ralphabet)=@_;      my ($ropt,$ralphabet,$temp)=@_;
     my @opt=@$ropt;       my @opt=@$ropt; 
     my @alphabet=@$ralphabet;      my @alphabet=@$ralphabet;
     my $result='';      my $result='';
  my $number_of_bubbles = $#opt + 1;   my $number_of_bubbles = $#opt + 1;
  $result.= '<table border="1"><tr>';   $result.= '<table border="1"><tr>';
  for (my $ind=0;$ind<$number_of_bubbles;$ind++) {   for (my $ind=0;$ind<$number_of_bubbles;$ind++) {
    $result.='<td>'.$alphabet[$ind].': '.$opt[$ind].'</td>';     $result.='<td><input type="radio" name="HWVAL_'.$Apache::inputtags::response['-1'].':'.$temp.
                       '" value='.$opt[$ind].'>'.$alphabet[$ind].': '.$opt[$ind].'</td>';
  }   }
  $result.='</tr></table>';   $result.='</tr></table>';
  return $result;   return $result;
Line 612  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 627  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') {
       $Apache::response::conceptgroup{"$name.text"} = '\vskip 4 mm $\triangleright$ '.$text;
    } else {
       if ($target eq 'tex' and $Apache::lonhomework::type eq 'exam') {
    $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') {
       $Apache::response::foilgroup{"$name.text"} = '\vskip 5 mm $\triangleright$ '.$text;
    } else {
       if ($target eq 'tex' and $Apache::lonhomework::type eq 'exam') {
    $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.65  
changed lines
  Added in v.1.73


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