--- loncom/homework/radiobuttonresponse.pm 2009/03/18 13:46:26 1.142
+++ loncom/homework/radiobuttonresponse.pm 2011/08/26 22:40:17 1.150
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# mutliple choice style responses
#
-# $Id: radiobuttonresponse.pm,v 1.142 2009/03/18 13:46:26 bisitz Exp $
+# $Id: radiobuttonresponse.pm,v 1.150 2011/08/26 22:40:17 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -104,9 +104,8 @@ sub start_radiobuttonresponse {
} else {
$result .= ' \renewcommand{\labelenumi}{\Alph{enumi}.}';
}
- if($env{'form.pdfFormFields'} eq 'yes') {
- $result .= &Apache::lonxml::print_pdf_hiddenfield('meta', $env{'user.name'}, $env{'user.domain'});
- $result .= "\n\\\\\n\\\\\n";
+ if($env{'form.pdfFormFields'} eq 'yes' && $Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
+ $result .= '\begin{itemize}';
} else {
$result .= '\begin{enumerate}';
}
@@ -122,8 +121,12 @@ sub end_radiobuttonresponse {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
my $result;
if ($target eq 'edit') { $result=&Apache::edit::end_table(); }
- if ($target eq 'tex' and $env{'form.pdfFormFields'} ne 'yes') {
- $result .= '\end{enumerate}';
+ if ($target eq 'tex' ) {
+ if($env{'form.pdfFormFields'} eq 'yes' and $Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
+ $result .= '\end{itemize}';
+ } else {
+ $result .= '\end{enumerate}';
+ }
}
&Apache::response::end_response;
pop @Apache::lonxml::namespace;
@@ -138,7 +141,7 @@ sub start_foilgroup {
my $result;
%Apache::response::foilgroup=();
$Apache::radiobuttonresponse::conceptgroup=0;
- &Apache::response::pushrandomnumber();
+ &Apache::response::pushrandomnumber(undef,$target);
if ($target eq 'tex' && $Apache::lonhomework::type eq 'exam') {
$result.='\item[\textbf{'.$Apache::lonxml::counter.'}.]';
}
@@ -146,6 +149,7 @@ sub start_foilgroup {
}
sub storesurvey {
+ my ($style) = @_;
if ( !&Apache::response::submitted() ) { return ''; }
my $response = $env{'form.HWVAL_'.$Apache::inputtags::response['-1']};
&Apache::lonxml::debug("Here I am!:$response:");
@@ -159,7 +163,16 @@ sub storesurvey {
$Apache::lonhomework::results{"resource.$part.$id.submission"}=
$responsestr;
my %previous=&Apache::response::check_for_previous($responsestr,$part,$id);
- my $ad=$Apache::lonhomework::results{"resource.$part.$id.awarddetail"}='SUBMITTED';
+ my $ad;
+ if ($style eq 'anonsurvey') {
+ $ad=$Apache::lonhomework::results{"resource.$part.$id.awarddetail"}='ANONYMOUS';
+ } elsif ($style eq 'anonsurveycred') {
+ $ad=$Apache::lonhomework::results{"resource.$part.$id.awarddetail"}='ANONYMOUS_CREDIT';
+ } elsif ($style eq 'surveycred') {
+ $ad=$Apache::lonhomework::results{"resource.$part.$id.awarddetail"}='SUBMITTED_CREDIT';
+ } else {
+ $ad=$Apache::lonhomework::results{"resource.$part.$id.awarddetail"}='SUBMITTED';
+ }
&Apache::response::handle_previous(\%previous,$ad);
&Apache::lonxml::debug("submitted a $response
\n");
return '';
@@ -224,13 +237,15 @@ sub end_foilgroup {
my $style = $Apache::lonhomework::type;
my $direction = &Apache::lonxml::get_param('direction',$parstack,
$safeeval,'-2');
- if ( $style eq 'survey' && $target ne 'analyze') {
+ if ( (($style eq 'survey') || ($style eq 'surveycred') ||
+ ($style eq 'anonsurvey') || ($style eq 'anonsurveycred'))
+ && ($target ne 'analyze')) {
if ($target eq 'web' || $target eq 'tex') {
$result=&displayallfoils($direction, $target);
} elsif ( $target eq 'answer' ) {
$result=&displayallanswers();
} elsif ( $target eq 'grade' ) {
- $result=&storesurvey();
+ $result=&storesurvey($style);
}
$answer_count = scalar(@{$Apache::response::foilgroup{'names'}});
@@ -321,11 +336,24 @@ sub displayallfoils {
my $i =0;
my $id=$Apache::inputtags::response['-1'];
my $part=$Apache::inputtags::part;
- my $lastresponse=
- $Apache::lonhomework::history{"resource.$part.$id.submission"};
+ my ($lastresponse,$newvariation,$showanswer);
+ if ((($Apache::lonhomework::history{"resource.$part.type"} eq 'randomizetry') ||
+ ($Apache::lonhomework::type eq 'randomizetry')) &&
+ ($Apache::inputtags::status[-1] eq 'CAN_ANSWER')) {
+ if ($env{'form.'.$part.'.rndseed'} ne
+ $Apache::lonhomework::history{"resource.$part.rndseed"}) {
+ $newvariation = 1;
+ }
+ }
+ $showanswer = &Apache::response::show_answer();
+ unless ((($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurvey') || ($Apache::lonhomework::history{"resource.$part.type"} eq 'anonsurveycred')) && (defined($env{'form.grade_symb'})) ||
+ ($newvariation && !$showanswer)) {
+ $lastresponse =
+ $Apache::lonhomework::history{"resource.$part.$id.submission"};
+ }
if ($direction eq 'horizontal') { $result.='
";
} else {
if ($target eq 'tex') {
- if($env{'form.pdfFormFields'} eq 'yes') {
- my $fieldname = $env{'request.symb'}.
- '&part_'. $Apache::inputtags::part.
- '&radiobuttonresponse'.
- '&HWVAL_' . $Apache::inputtags::response['-1'];
- my $value = $temp;
- my $text = $Apache::response::foilgroup{$name.'.text'};
- $result .= &Apache::lonxml::print_pdf_radiobutton($fieldname,
- $value,
- $text)."\n";
+ if($env{'form.pdfFormFields'} eq 'yes' && $Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
+ my $fieldname = $env{'request.symb'}.'&part_'. $Apache::inputtags::part
+ .'&radiobuttonresponse'.'&HWVAL_'.$Apache::inputtags::response['-1'];
+ $result .= '\item[{'.&Apache::lonxml::print_pdf_radiobutton($fieldname,$temp).'}]'
+ .$Apache::response::foilgroup{$name.'.text'}."\n";
} else {
$result .= '\item \vskip -2mm ';
}
@@ -376,7 +399,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++;
@@ -387,6 +410,7 @@ sub displayallfoils {
type=\"radio\"
name=\"HWVAL_$Apache::inputtags::response['-1']\"
value=\"$temp\"";
+
if (defined($lastresponse{$name})) { $result .= ' checked="checked"'; }
$result .= ' />'.$Apache::response::foilgroup{$name.'.text'}.
'';
@@ -439,7 +463,11 @@ sub whichfoils {
&Apache::lonxml::error(&HTML::Entities::encode("No valid value assigned ($Apache::response::foilgroup{$name.'.value'}) for foil $name in '); } } else { @@ -499,7 +527,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.').' '); } @@ -523,8 +555,12 @@ sub whichfoils { $dosplice=0; } else { if ($topcount>0 || $bottomcount>0) { - $answer = int(&Math::Random::random_uniform() * ($#whichfalse+1)) - + $topcount; + my $inc = 1; + if (($bottomcount > 0) && ($Apache::lonhomework::type ne 'exam')) { + $inc = 2; + } + $answer=int(&Math::Random::random_uniform() * ($#whichfalse+$inc)) + + $topcount; } } &Apache::lonxml::debug("Answer now wants $answer"); @@ -596,7 +632,18 @@ sub displayfoils { my $temp=0; my $id=$Apache::inputtags::response['-1']; my $part=$Apache::inputtags::part; - my $lastresponse=$Apache::lonhomework::history{"resource.$part.$id.submission"}; + my ($lastresponse,$newvariation); + if ((($Apache::lonhomework::history{"resource.$part.type"} eq 'randomizetry') || + ($Apache::lonhomework::type eq 'randomizetry')) && + ($Apache::inputtags::status[-1] eq 'CAN_ANSWER')) { + if ($env{'form.'.$part.'.rndseed'} ne + $Apache::lonhomework::history{"resource.$part.rndseed"}) { + $newvariation = 1; + } + } + unless ($newvariation) { + $lastresponse=$Apache::lonhomework::history{"resource.$part.$id.submission"}; + } my %lastresponse=&Apache::lonnet::str2hash($lastresponse); if ($target ne 'tex' && $direction eq 'horizontal') { $result.=" |