Diff for /loncom/homework/optionresponse.pm between versions 1.52 and 1.66

version 1.52, 2002/10/17 14:40:05 version 1.66, 2003/01/13 21:24:39
Line 42  sub start_optionresponse { Line 42  sub start_optionresponse {
   &Apache::lonxml::register('Apache::optionresponse',('foilgroup','foil','conceptgroup'));    &Apache::lonxml::register('Apache::optionresponse',('foilgroup','foil','conceptgroup'));
   push (@Apache::lonxml::namespace,'optionresponse');    push (@Apache::lonxml::namespace,'optionresponse');
   my $id = &Apache::response::start_response($parstack,$safeeval);    my $id = &Apache::response::start_response($parstack,$safeeval);
     %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</td><td>Delete:".
Line 179  sub end_foilgroup { Line 180  sub end_foilgroup {
  my @whichopt = &whichfoils($max,$randomize);   my @whichopt = &whichfoils($max,$randomize);
  my $temp=1;my $name;   my $temp=1;my $name;
  my %responsehash;   my %responsehash;
    my %grade;
  my $right=0;   my $right=0;
  my $wrong=0;   my $wrong=0;
  my $ignored=0;   my $ignored=0;
Line 188  sub end_foilgroup { Line 190  sub end_foilgroup {
   if ( $response =~ /[^\s]/) {    if ( $response =~ /[^\s]/) {
     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) {$right++;} else {$wrong++;}      if ($value eq $response) {
    $grade{$name}='1'; $right++;
       } else {
    $grade{$name}='0'; $wrong++;
       }
   } else {    } else {
     $ignored++;      $ignored++;
   }    }
Line 197  sub end_foilgroup { Line 203  sub end_foilgroup {
  my $part=$Apache::inputtags::part;   my $part=$Apache::inputtags::part;
  my $id = $Apache::inputtags::response['-1'];   my $id = $Apache::inputtags::response['-1'];
  my $responsestr=&Apache::lonnet::hash2str(%responsehash);   my $responsestr=&Apache::lonnet::hash2str(%responsehash);
    my $gradestr   =&Apache::lonnet::hash2str(%grade);
  my %previous=&Apache::response::check_for_previous($responsestr,   my %previous=&Apache::response::check_for_previous($responsestr,
    $part,$id);     $part,$id);
  &Apache::lonxml::debug("Got $right right and $wrong wrong, and $ignored were ignored");   &Apache::lonxml::debug("Got $right right and $wrong wrong, and $ignored were ignored");
Line 214  sub end_foilgroup { Line 221  sub end_foilgroup {
  }   }
  $Apache::lonhomework::results{"resource.$part.$id.submission"}=   $Apache::lonhomework::results{"resource.$part.$id.submission"}=
   $responsestr;    $responsestr;
    $Apache::lonhomework::results{"resource.$part.$id.submissiongrading"}=$gradestr;
  $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=   $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=
   $ad;    $ad;
  &Apache::response::handle_previous(\%previous,$ad);   &Apache::response::handle_previous(\%previous,$ad);
Line 310  sub displayfoils { Line 318  sub displayfoils {
   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];
   if (($Apache::lonhomework::history{"resource.$part.solved"} =~ /^correct/)  || ($Apache::inputtags::status[-1] eq  'SHOW_ANSWER')) {    my $break;
     my $solved=$Apache::lonhomework::history{"resource.$part.solved"};
     my $status=$Apache::inputtags::status[-1];
     if (
         ($target ne 'tex') &&
         (($solved =~ /^correct/) || ($status eq 'SHOW_ANSWER')) ) {
     foreach $name (@whichopt) {      foreach $name (@whichopt) {
       if ($target eq 'web') {   my $text=$Apache::response::foilgroup{$name.'.text'};
   $result.="<br />";   if ($text!~/^\s*$/) {
       if ($target eq 'tex') {
    $break='\vskip 0 mm ';
       } elsif ($target eq 'web') {
    $break='<br />';
       }
    }
    $result.=$break;
    if ($target eq 'web') {
       my $value=$Apache::response::foilgroup{$name.'.value'};
       if (!($text=~s|<drawoptionlist\s*/>|$value|)) {
    if ($text=~/^\s*$/) {
       $text=$value.$text;
    } else {
       $text=$value.': '.$text;
    }
       }
       $result.=$text."\n";
       } elsif ($target eq 'tex') {        } elsif ($target eq 'tex') {
   $result.='\vskip 0 mm ';    $Apache::response::foilgroup{$name.'.text'}=~s/\\item//;
       }     $result .='\item \textit{'.$Apache::response::foilgroup{$name.'.value'}.'}'.
       if ($target ne 'tex') {  
   $result .=$Apache::response::foilgroup{$name.'.value'}.  
       ":".$Apache::response::foilgroup{$name.'.text'}."\n";  
       } else {  
    $result .='\item '.$Apache::response::foilgroup{$name.'.value'}.  
       ":".$Apache::response::foilgroup{$name.'.text'}."\n";        ":".$Apache::response::foilgroup{$name.'.text'}."\n";
       }        }
         if ($Apache::lonhomework::type eq 'exam') {
    if ($target ne 'tex') {
     $result.=&webbubbles(\@opt,\@alphabet);
           } else {
     $result.=&bubbles(\@alphabet,\@opt);
           }
         }
     }      }
   } else {    } else {
     my $temp=1;      my $temp=1;
     my %lastresponse=&Apache::lonnet::str2hash($Apache::lonhomework::history{"resource.$part.$id.submission"});      my %lastresponse=&Apache::lonnet::str2hash($Apache::lonhomework::history{"resource.$part.$id.submission"});
     foreach $name (@whichopt) {      foreach $name (@whichopt) {
         my $text=$Apache::response::foilgroup{$name.'.text'};
         if ($text!~/^\s*$/) {
     if ($target eq 'tex') {
         $break='\vskip 0 mm ';
     } elsif ($target eq 'web') {
         $break='<br />';
     }
         }
       my $lastopt=$lastresponse{$name};        my $lastopt=$lastresponse{$name};
       my $optionlist="<option></option>\n";        my $optionlist="<option></option>\n";
       my $option;        my $option;
Line 340  sub displayfoils { Line 380  sub displayfoils {
  }   }
       }        }
       if ($target ne 'tex') {        if ($target ne 'tex') {
   $result.="<br /><select name=\"HWVAL_$Apache::inputtags::response['-1']:$temp\">"    $optionlist='<select name="HWVAL_'.
       .$optionlist        $Apache::inputtags::response['-1'].':'.$temp.'">'.
   ."</select>\n".$Apache::response::foilgroup{$name.'.text'}."\n";    $optionlist."</select>\n";
     my $text=$Apache::response::foilgroup{$name.'.text'};
     if (!($text=~s|<drawoptionlist\s*/>|$optionlist|)) {
         $text=$optionlist.$text;
     }
     $result.=$break.$text."\n";
   if ($Apache::lonhomework::type eq 'exam') {    if ($Apache::lonhomework::type eq 'exam') {
   my $number_of_bubbles = $#opt + 1;      $result.=&webbubbles(\@opt,\@alphabet);
   $result.= '<table border="1"><tr>';  
   for (my $ind=0;$ind<$number_of_bubbles;$ind++) {  
       $result.='<td>'.$alphabet[$ind].': '.$opt[$ind].'</td>';  
   }  
   $result.='</tr></table>';  
   }    }
   $temp++;    $temp++;
       } else {        } else {
             my $texoptionlist = &optionlist_correction($optionlist);
   if ($displayoptionintex == 0) {    if ($displayoptionintex == 0) {
               my $texoptionlist = &optionlist_correction($optionlist);        if ($Apache::lonhomework::type eq 'exam') {$texoptionlist='';} #if exam we do not need to show optionlist
       if ($Apache::lonhomework::type eq 'exam') {$texoptionlist='';}  
       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/\\item[\\textbf{$Apache::lonxml::counter}\.]/;
   }          }
   $result.= $texoptionlist.$Apache::response::foilgroup{$name.'.text'};          if ($Apache::response::foilgroup{$name.'.text'}=~/<drawoptionlist\s*\/>/) {
             $Apache::response::foilgroup{$name.'.text'}=~s|<drawoptionlist\s*/>| \\makebox\[0\.3in\]\[b\]\{\\hrulefill\} |;
           }
    $result.= $texoptionlist.$Apache::response::foilgroup{$name.'.text'};
       } else {        } else {
   if ($Apache::lonhomework::type eq 'exam') {    if ($Apache::lonhomework::type eq 'exam') {
       $result.= $texoptionlist.'\item[\textbf{'.$Apache::lonxml::counter.'}.]'.$Apache::response::foilgroup{$name.'.text'};        $result.= $texoptionlist.'\vspace*{-2 mm}\item[\textbf{'.$Apache::lonxml::counter.'}.]'.$Apache::response::foilgroup{$name.'.text'};
   } else {    } else {
       $result.= $texoptionlist.'\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.=&bubbles(\@alphabet,\@opt);
     $result.='\vskip 2 mm ';
       }        }
       $displayoptionintex=1;        $displayoptionintex=1;
   } else {    } else {
Line 377  sub displayfoils { Line 421  sub displayfoils {
   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/\\item[\\textbf{$Apache::lonxml::counter}\.]/;
   }    }
   $result.= $Apache::response::foilgroup{$name.'.text'};          if ($Apache::response::foilgroup{$name.'.text'}=~/<drawoptionlist\s*\/>/) {
             $Apache::response::foilgroup{$name.'.text'}=~s|<drawoptionlist\s*/>| \\makebox\[0\.3in\]\[b\]\{\\hrulefill\} |;
           }
    $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.= '\item[\textbf{'.$Apache::lonxml::counter.'}.]'.$Apache::response::foilgroup{$name.'.text'};
Line 387  sub displayfoils { Line 434  sub displayfoils {
       }        }
       if ($Apache::lonhomework::type eq 'exam') {        if ($Apache::lonhomework::type eq 'exam') {
   $result.=&bubbles(\@alphabet,\@opt);    $result.=&bubbles(\@alphabet,\@opt);
     $result.='\vskip 2 mm ';
       }        }
   }    }
       }         }
     }      }
   }   
   if ($target ne 'tex') {  
       return $result."<br />";  
   }    }
   else {    if ($target ne 'tex') {
         return $result.$break;
     } else {
       return $result;        return $result;
   }    }
 }  }
Line 412  sub optionlist_correction { Line 459  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 {
   
       my ($ropt,$ralphabet)=@_;
       my @opt=@$ropt; 
       my @alphabet=@$ralphabet;
       my $result='';
    my $number_of_bubbles = $#opt + 1;
    $result.= '<table border="1"><tr>';
    for (my $ind=0;$ind<$number_of_bubbles;$ind++) {
      $result.='<td>'.$alphabet[$ind].': '.$opt[$ind].'</td>';
    }
    $result.='</tr></table>';
    return $result;
   }
   
   
 sub bubbles {  sub bubbles {
   
     my ($ralphabit,$ropt) = @_;      my ($ralphabit,$ropt) = @_;
Line 438  sub bubbles { Line 502  sub bubbles {
  }   }
   
     }      }
     $Apache::lonxml::counter++;      &Apache::lonxml::increment_counter();
     my %moreenv;  
     $moreenv{'form.counter'}=$Apache::lonxml::counter;  
     &Apache::lonnet::appenv(%moreenv);  
     return $result;      return $result;
 }  }
   
Line 500  sub end_conceptgroup { Line 561  sub end_conceptgroup {
   $Apache::lonhomework::analyze{"$part_id.foil.location.$name"} =    $Apache::lonhomework::analyze{"$part_id.foil.location.$name"} =
     $Apache::response::conceptgroup{"$name.location"};      $Apache::response::conceptgroup{"$name.location"};
  }   }
         } elsif ($target eq 'web') {
     my $part_id="$Apache::inputtags::part.$Apache::inputtags::response[-1]";
     push(@{ $Apache::hint::option{"$part_id.concepts"} },
          $concept);
     $Apache::hint::option{"$part_id.concept.$concept"}=
         $Apache::response::conceptgroup{'names'};
       }        }
     }      }
   } elsif ($target eq 'edit') {    } elsif ($target eq 'edit') {
Line 548  sub end_foil { Line 615  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 = '\item '.$text; }        if ($target eq 'tex') { $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') {

Removed from v.1.52  
changed lines
  Added in v.1.66


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