version 1.72, 2003/06/20 04:05:13
|
version 1.80, 2004/01/14 22:08:22
|
Line 25
|
Line 25
|
# |
# |
# http://www.lon-capa.org/ |
# http://www.lon-capa.org/ |
# |
# |
# 2/21 Guy |
|
|
|
package Apache::radiobuttonresponse; |
package Apache::radiobuttonresponse; |
use strict; |
use strict; |
Line 47 sub start_radiobuttonresponse {
|
Line 46 sub start_radiobuttonresponse {
|
$result=&Apache::response::meta_package_write('radiobuttonresponse'); |
$result=&Apache::response::meta_package_write('radiobuttonresponse'); |
} elsif ($target eq 'edit' ) { |
} elsif ($target eq 'edit' ) { |
$result.=&Apache::edit::start_table($token). |
$result.=&Apache::edit::start_table($token). |
'<tr><td>'.&Apache::lonxml::description($token)."</td><td>Delete:". |
'<tr><td>'.&Apache::lonxml::description($token). |
|
&Apache::loncommon::help_open_topic('Radio_Response_Problems'). |
|
"</td><td>Delete:". |
&Apache::edit::deletelist($target,$token) |
&Apache::edit::deletelist($target,$token) |
."</td><td> ".&Apache::edit::end_row() |
."</td><td> ".&Apache::edit::end_row() |
.&Apache::edit::start_spanning_row(); |
.&Apache::edit::start_spanning_row(); |
Line 73 sub start_radiobuttonresponse {
|
Line 74 sub start_radiobuttonresponse {
|
$result .= ' \renewcommand{\labelenumi}{\roman{enumi}.}'; |
$result .= ' \renewcommand{\labelenumi}{\roman{enumi}.}'; |
} |
} |
$result .= '\begin{enumerate}'; |
$result .= '\begin{enumerate}'; |
|
} elsif ($target eq 'analyze') { |
|
my $part_id="$Apache::inputtags::part.$id"; |
|
push (@{ $Apache::lonhomework::analyze{"parts"} },$part_id); |
} |
} |
return $result; |
return $result; |
} |
} |
Line 152 sub end_foilgroup {
|
Line 156 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') { |
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || |
|
$target eq 'tex' || $target eq 'analyze') { |
my $style = $Apache::lonhomework::type; |
my $style = $Apache::lonhomework::type; |
if ( $style eq 'survey' ) { |
if ( $style eq 'survey' && $target ne 'analyze') { |
if ($target eq 'web' || $target eq 'answer' || $target eq 'tex') { |
if ($target eq 'web' || $target eq 'answer' || $target eq 'tex') { |
$result=&displayallfoils(); |
$result=&displayallfoils(); |
} elsif ( $target eq 'grade' ) { |
} elsif ( $target eq 'grade' ) { |
Line 171 sub end_foilgroup {
|
Line 176 sub end_foilgroup {
|
$result=&displayanswers($max,$randomize); |
$result=&displayanswers($max,$randomize); |
} elsif ( $target eq 'grade') { |
} elsif ( $target eq 'grade') { |
&grade_response($max,$randomize); |
&grade_response($max,$randomize); |
|
} elsif ( $target eq 'analyze') { |
|
my @shown = &whichfoils($max,$randomize); |
|
&Apache::response::analyze_store_foilgroup(\@shown, |
|
['text','value','location']); |
|
my $part_id="$Apache::inputtags::part.$Apache::inputtags::response[-1]"; |
|
push (@{ $Apache::lonhomework::analyze{"$part_id.options"} }, |
|
('true','false')); |
} |
} |
} |
} |
} |
} |
Line 205 sub displayallfoils {
|
Line 217 sub displayallfoils {
|
my $part=$Apache::inputtags::part; |
my $part=$Apache::inputtags::part; |
my $lastresponse=$Apache::lonhomework::history{"resource.$part.$id.submission"}; |
my $lastresponse=$Apache::lonhomework::history{"resource.$part.$id.submission"}; |
my %lastresponse=&Apache::lonnet::str2hash($lastresponse); |
my %lastresponse=&Apache::lonnet::str2hash($lastresponse); |
if (($Apache::lonhomework::history{"resource.$part.solved"} =~ /^correct/) || ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER')) { |
if (&Apache::response::show_answer() ) { |
foreach my $name (@names) { |
foreach my $name (@names) { |
if ($Apache::response::foilgroup{$name.'.value'} ne 'unused') { |
if ($Apache::response::foilgroup{$name.'.value'} ne 'unused') { |
$result.="<br />".$Apache::response::foilgroup{$name.'.value'}; |
$result.="<br />".$Apache::response::foilgroup{$name.'.value'}; |
Line 371 sub displayfoils {
|
Line 383 sub displayfoils {
|
my ($answer,@whichfoils)=&whichfoils($max,$randomize); |
my ($answer,@whichfoils)=&whichfoils($max,$randomize); |
my $part=$Apache::inputtags::part; |
my $part=$Apache::inputtags::part; |
my $solved=$Apache::lonhomework::history{"resource.$part.solved"}; |
my $solved=$Apache::lonhomework::history{"resource.$part.solved"}; |
my $status=$Apache::inputtags::status[-1]; |
|
if ( ($target ne 'tex') && |
if ( ($target ne 'tex') && |
(($solved =~ /^correct/) || ($status eq 'SHOW_ANSWER')) ) { |
&Apache::response::show_answer() ) { |
foreach my $name (@whichfoils) { |
foreach my $name (@whichfoils) { |
if ($target ne 'tex') { |
if ($target ne 'tex') { |
$result.="<br />"; |
$result.="<br />"; |
Line 455 sub end_conceptgroup {
|
Line 466 sub end_conceptgroup {
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
$Apache::radiobuttonresponse::conceptgroup=0; |
$Apache::radiobuttonresponse::conceptgroup=0; |
my $result; |
my $result; |
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') { |
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || |
if (defined(@{ $Apache::response::conceptgroup{'names'} })) { |
$target eq 'tex' || $target eq 'analyze') { |
my @names = @{ $Apache::response::conceptgroup{'names'} }; |
&Apache::response::pick_foil_for_concept($target, |
my $pick=int(&Math::Random::random_uniform() * ($#names+1)); |
['value','text','location'], |
my $name=$names[$pick]; |
\%Apache::hint::radiobutton, |
push @{ $Apache::response::foilgroup{'names'} }, $name; |
$parstack,$safeeval); |
$Apache::response::foilgroup{"$name.text"} = $Apache::response::conceptgroup{"$name.text"}; |
|
$Apache::response::foilgroup{"$name.value"} = $Apache::response::conceptgroup{"$name.value"}; |
|
$Apache::response::foilgroup{"$name.location"} = $Apache::response::conceptgroup{"$name.location"}; |
|
my $concept = &Apache::lonxml::get_param('concept',$parstack,$safeeval); |
|
$Apache::response::foilgroup{"$name.concept"} = $concept; |
|
&Apache::lonxml::debug("Selecting $name in $concept"); |
|
my $part_id="$Apache::inputtags::part.$Apache::inputtags::response[-1]"; |
|
push(@{ $Apache::hint::radiobutton{"$part_id.concepts"} },$concept); |
|
$Apache::hint::radiobutton{"$part_id.concept.$concept"}= |
|
$Apache::response::conceptgroup{'names'}; |
|
} |
|
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
$result=&Apache::edit::end_table(); |
$result=&Apache::edit::end_table(); |
} |
} |
Line 486 sub insert_conceptgroup {
|
Line 486 sub insert_conceptgroup {
|
sub start_foil { |
sub start_foil { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my $result=''; |
my $result=''; |
if ($target eq 'web' || $target eq 'tex') { |
if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') { |
&Apache::lonxml::startredirection; |
&Apache::lonxml::startredirection; |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
$result=&Apache::edit::tag_start($target,$token); |
$result=&Apache::edit::tag_start($target,$token); |
Line 511 sub start_foil {
|
Line 511 sub start_foil {
|
sub end_foil { |
sub end_foil { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my $text=''; |
my $text=''; |
if ($target eq 'web' || $target eq 'tex') { $text=&Apache::lonxml::endredirection; } |
if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') { |
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') { |
$text=&Apache::lonxml::endredirection; |
|
} |
|
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex' || $target eq 'analyze') { |
my $value = &Apache::lonxml::get_param('value',$parstack,$safeeval); |
my $value = &Apache::lonxml::get_param('value',$parstack,$safeeval); |
if ($value ne 'unused') { |
if ($value ne 'unused') { |
my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval); |
my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval); |