--- loncom/interface/lonnavmaps.pm 2004/09/13 20:06:57 1.288 +++ loncom/interface/lonnavmaps.pm 2004/09/15 21:10:11 1.290 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.288 2004/09/13 20:06:57 albertel Exp $ +# $Id: lonnavmaps.pm,v 1.290 2004/09/15 21:10:11 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1685,7 +1685,12 @@ END return &$oldFilterFunc($res); }; @resources=$navmap->retrieveResources(undef,$filterFunc); - @resources= sort {lc($a->compTitle) cmp lc($b->compTitle)} @resources; + @resources= sort { + my ($atitle,$btitle) = (lc($a->compTitle),lc($b->compTitle)); + $atitle=~s/^\s*//; + $btitle=~s/^\s*//; + return $atitle cmp $btitle + } @resources; } elsif ($args->{'sort'} eq 'duedate') { @resources=$navmap->retrieveResources(undef, sub { shift->is_problem(); }); @@ -3900,6 +3905,16 @@ Returns the number of parts of the probl for single part problems, returns 1. For multipart, it returns the number of parts in the problem, not including psuedo-part 0. +=item * B(): + +Returns the total number of responses in the problem a student can answer. + +=item * B(): + +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 problem, not +just a single part. + =item * B(): Returns true if the problem is multipart, false otherwise. Use this instead @@ -3946,6 +3961,26 @@ sub countParts { 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;