[LON-CAPA-cvs] cvs: loncom /homework imageresponse.pm
raeburn
raeburn@source.lon-capa.org
Sun, 19 Dec 2010 01:08:11 -0000
raeburn Sun Dec 19 01:08:11 2010 EDT
Modified files:
/loncom/homework imageresponse.pm
Log:
- New Question Type - randomizetry
New routine: &get_prior_options() in place of response::setup_prior_tries_hash
for determination of image and options for prior tries.
Index: loncom/homework/imageresponse.pm
diff -u loncom/homework/imageresponse.pm:1.99 loncom/homework/imageresponse.pm:1.100
--- loncom/homework/imageresponse.pm:1.99 Sun Feb 28 23:37:44 2010
+++ loncom/homework/imageresponse.pm Sun Dec 19 01:08:11 2010
@@ -2,7 +2,7 @@
# The LearningOnline Network with CAPA
# image click response style
#
-# $Id: imageresponse.pm,v 1.99 2010/02/28 23:37:44 raeburn Exp $
+# $Id: imageresponse.pm,v 1.100 2010/12/19 01:08:11 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -192,9 +192,10 @@
%Apache::response::foilgroup=();
sub start_foilgroup {
+ my ($target) = @_;
%Apache::response::foilgroup=();
$Apache::imageresponse::conceptgroup=0;
- &Apache::response::pushrandomnumber();
+ &Apache::response::pushrandomnumber(undef,$target);
return '';
}
@@ -352,12 +353,49 @@
$temp++;
}
if ($target eq 'web') {
- &Apache::response::setup_prior_tries_hash(\&format_prior_response,
- [\@images,\@whichopt]);
+ &get_prior_options(\@images,\@whichopt);
}
return $result;
}
+sub get_prior_options {
+ my ($currimages,$curropt) = @_;
+ return unless((ref($curropt) eq 'ARRAY') &&
+ (ref($currimages) eq 'ARRAY'));
+ my $part = $Apache::inputtags::part;
+ my $respid = $Apache::inputtags::response[-1];
+ foreach my $i (1..$Apache::lonhomework::history{'version'}) {
+ my $partprefix = "$i:resource.$part";
+ my $sub_key = "$partprefix.$respid.submission";
+ next if (!exists($Apache::lonhomework::history{$sub_key}));
+ my $type_key = "$partprefix.type";
+ my @whichopt = ();
+ my @images = ();
+ if ($Apache::lonhomework::history{$type_key} eq 'randomizetry') {
+ my $order_key = "$partprefix.$respid.foilorder";
+ @whichopt = &Apache::lonnet::str2array($Apache::lonhomework::history{$order_key});
+ if (@whichopt > 0) {
+ foreach my $name (@whichopt) {
+ my $image=$Apache::response::foilgroup{"$name.image"};
+ if ($image !~ /^https?\:/ ) {
+ $image=&clean_up_image($image);
+ }
+ push(@images,$image);
+ }
+ }
+ } else {
+ @whichopt = @{$curropt};
+ @images = @{$currimages};
+ }
+ my $submission = $Apache::lonhomework::history{$sub_key};
+ my $output = &format_prior_response('grade',$submission,
+ [\@images,\@whichopt]);
+ if (defined($output)) {
+ $Apache::inputtags::submission_display{$sub_key} = $output;
+ }
+ }
+}
+
sub format_prior_response {
my ($mode,$answer,$other_data) = @_;
@@ -459,6 +497,9 @@
}
$temp++;
}
+ if ($Apache::lonhomework::type eq 'randomizetry') {
+ $Apache::lonhomework::results{"resource.$partid.$id.foilorder"} = &Apache::lonnet::array2str(@whichopt);
+ }
my ($result) = &Apache::inputtags::finalizeawards(\@results,[]);
&Apache::lonxml::debug("Question is $result");
@@ -488,8 +529,6 @@
sub stringify_submission {
my ($response) = @_;
return &Apache::lonnet::hash2str(%{ $response });
-
-
}
sub get_submission {
@@ -526,6 +565,11 @@
if ($target eq 'web' || $target eq 'tex') {
$result=&displayfoils($target,@whichopt);
+ if ($Apache::lonhomework::type eq 'randomizetry') {
+ if ($target eq 'web') {
+ &get_prior_options($target,@whichopt);
+ }
+ }
$Apache::lonxml::post_evaluate=0;
} elsif ($target eq 'grade') {
if ( defined $env{'form.submitted'}) { &gradefoils(@whichopt); }