[LON-CAPA-cvs] cvs: loncom /interface lonnavmaps.pm
matthew
lon-capa-cvs@mail.lon-capa.org
Wed, 15 Sep 2004 21:10:11 -0000
matthew Wed Sep 15 17:10:11 2004 EDT
Modified files:
/loncom/interface lonnavmaps.pm
Log:
Added resource methods countResponses and responseTypes.
Index: loncom/interface/lonnavmaps.pm
diff -u loncom/interface/lonnavmaps.pm:1.289 loncom/interface/lonnavmaps.pm:1.290
--- loncom/interface/lonnavmaps.pm:1.289 Tue Sep 14 14:05:30 2004
+++ loncom/interface/lonnavmaps.pm Wed Sep 15 17:10:11 2004
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Navigate Maps Handler
#
-# $Id: lonnavmaps.pm,v 1.289 2004/09/14 18:05:30 raeburn Exp $
+# $Id: lonnavmaps.pm,v 1.290 2004/09/15 21:10:11 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -3905,6 +3905,16 @@
for single part problems, returns 1. For multipart, it returns the
number of parts in the problem, not including psuedo-part 0.
+=item * B<countResponses>():
+
+Returns the total number of responses in the problem a student can answer.
+
+=item * B<responseTypes>():
+
+Returns a hash whose keys are the response types. The values are the number
+of times each response type is used. This is for the I<entire> problem, not
+just a single part.
+
=item * B<multipart>():
Returns true if the problem is multipart, false otherwise. Use this instead
@@ -3951,6 +3961,26 @@
return scalar(@{$parts}); # + $delta;
}
+sub countResponses {
+ my $self = shift;
+ my $count;
+ foreach my $part ($self->parts()) {
+ $count+= $self->responseIds($part);
+ }
+ return $count;
+}
+
+sub responseTypes {
+ my $self = shift;
+ my %Responses;
+ foreach my $part ($self->parts()) {
+ foreach my $responsetype ($self->responseType($part)) {
+ $Responses{$responsetype}++ if (defined($responsetype));
+ }
+ }
+ return %Responses;
+}
+
sub multipart {
my $self = shift;
return $self->countParts() > 1;