--- loncom/homework/radiobuttonresponse.pm 2008/09/05 12:50:45 1.135 +++ loncom/homework/radiobuttonresponse.pm 2010/02/28 23:42:24 1.144 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # mutliple choice style responses # -# $Id: radiobuttonresponse.pm,v 1.135 2008/09/05 12:50:45 onken Exp $ +# $Id: radiobuttonresponse.pm,v 1.144 2010/02/28 23:42:24 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -25,6 +25,8 @@ # http://www.lon-capa.org/ # + + package Apache::radiobuttonresponse; use strict; use HTML::Entities(); @@ -65,19 +67,21 @@ sub start_radiobuttonresponse { if ($target eq 'meta') { $result=&Apache::response::meta_package_write('radiobuttonresponse'); } elsif ($target eq 'edit' ) { - $result.=&Apache::edit::start_table($token). - '
";
} else {
if ($target eq 'tex') {
- if($env{'form.pdfFormFields'} eq 'yes') {
+ if($env{'form.pdfFormFields'} eq 'yes' && $Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
my $fieldname = $env{'request.symb'}.
'&part_'. $Apache::inputtags::part.
'&radiobuttonresponse'.
@@ -372,7 +391,7 @@ sub displayallfoils {
}
}
if ($target eq 'tex') {
- if($env{'form.pdfFormFields'} ne 'yes') {
+ if($env{'form.pdfFormFields'} ne 'yes' or $Apache::inputtags::status[-1] ne 'CAN_ANSWER') {
$result .= '$\bigcirc$'.$Apache::response::foilgroup{$name.'.text'}.'\\\\'; #' stupid emacs
}
$i++;
@@ -382,8 +401,8 @@ sub displayallfoils {
onchange=\"javascript:setSubmittedPart('$part');\"
type=\"radio\"
name=\"HWVAL_$Apache::inputtags::response['-1']\"
- value=\"$temp\" ";
- if (defined($lastresponse{$name})) { $result .= 'checked="on"'; }
+ value=\"$temp\"";
+ if (defined($lastresponse{$name})) { $result .= ' checked="checked"'; }
$result .= ' />'.$Apache::response::foilgroup{$name.'.text'}.
'';
}
@@ -401,33 +420,6 @@ sub displayallfoils {
return $result;
}
-=pod
-
-=item &whichfoils($max,$randomize)
-
-Randomizes the list of foils.
-Respects
- - each foils desire to be randomized
- - the existance of Concept groups of foils (select 1 foil from each)
- - and selects a single correct statement from all possilble true statments
- - and limits it to a toal of $max foils
-
-WARNING: this routine uses the random number generator, it should only
-be called once per target, otherwise it can cause randomness changes in
-homework problems.
-
-Arguments
- $max - maximum number of foils to select (including the true one)
- (so a max of 5 is: 1 true, 4 false)
-
- $randomize - whether to randomize the listing of foils, by default
- will randomize, only if randomize is 'no' will it not
-
-Returns
- $answer - location in the array of the correct answer
- @foils - array of foil names in to display order
-
-=cut
sub whichfoils {
my ($max,$randomize)=@_;
@@ -462,7 +454,11 @@ sub whichfoils {
&Apache::lonxml::error(&HTML::Entities::encode("No valid value assigned ($Apache::response::foilgroup{$name.'.value'}) for foil $name in '); } } else { @@ -522,7 +518,11 @@ sub whichfoils { &Apache::lonxml::debug("Answer wants $answer"); my $truename=$truelist[$whichtrue]; my $dosplice=1; - if ($notrue && $Apache::lonhomework::type ne 'survey') { + if (($notrue) && + ($Apache::lonhomework::type ne 'survey') && + ($Apache::lonhomework::type ne 'surveycred') && + ($Apache::lonhomework::type ne 'anonsurvey') && + ($Apache::lonhomework::type ne 'anonsurveycred')) { $dosplice=0; &Apache::lonxml::error(&mt('There are no true statements available.').' '); } @@ -638,8 +638,8 @@ sub displayfoils { ""; } else { if ($Apache::lonhomework::type eq 'exam') { @@ -653,7 +653,7 @@ sub displayfoils { $i++; $bubble_number++; } else { - if($env{'form.pdfFormFields'} eq 'yes') { + if($env{'form.pdfFormFields'} eq 'yes' && $Apache::inputtags::status[-1] eq 'CAN_ANSWER') { my $fieldname = $env{'request.symb'}. '&part_'. $Apache::inputtags::part. @@ -831,4 +831,87 @@ sub insert_foil { } 1; __END__ + + + +=head1 NAME + +Apache::radiobuttonresponse + +=head1 SYNOPSIS + +Handles multiple-choice style responses. + +This is part of the LearningOnline Network with CAPA project +described at http://www.lon-capa.org. + +=head1 SUBROUTINES + +=over + +=item start_radiobuttonresponse() + +=item bubble_line_count() + +=item end_radiobuttonresponse() + +=item start_foilgroup() + +=item storesurvey() + +=item grade_response() + +=item end_foilgroup() + +=item getfoilcounts() + +=item format_prior_answer() + +=item displayallfoils() + +=item &whichfoils($max,$randomize) + +Randomizes the list of foils. +Respects + - each foils desire to be randomized + - the existance of Concept groups of foils (select 1 foil from each) + - and selects a single correct statement from all possilble true statments + - and limits it to a toal of $max foils + +WARNING: this routine uses the random number generator, it should only +be called once per target, otherwise it can cause randomness changes in +homework problems. + +Arguments + $max - maximum number of foils to select (including the true one) + (so a max of 5 is: 1 true, 4 false) + + $randomize - whether to randomize the listing of foils, by default + will randomize, only if randomize is 'no' will it not + +Returns + $answer - location in the array of the correct answer + @foils - array of foil names in to display order + +=item displayfoils() + +=item displayallanswers() + +=item displayanswers() + +=item start_conceptgroup() + +=item end_conceptgroup() + +=item insert_conceptgroup() + +=item start_foil() + +=item end_foil() + +=item insert_foil() + +=back + +=cut |