--- loncom/interface/lonnavmaps.pm 2004/09/14 18:05:30 1.289 +++ loncom/interface/lonnavmaps.pm 2004/09/20 15:23:13 1.294 @@ -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.294 2004/09/20 15:23:13 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -127,7 +127,7 @@ sub nav_control_js { function gonav(url) { if (w_loncapanav_flag != 1) { - go(url); + gopost(url,''); } else { navwindow=window.open(url, "loncapanav","height=600,width=400,scrollbars=1"); @@ -1428,7 +1428,7 @@ sub render { # We only need to do this if we need to open the maps to show the # current position. This will change the counter so we can't count # for the jump marker with this loop. - while (($curRes = $mapIterator->next()) && !$found) { + while ($here && ($curRes = $mapIterator->next()) && !$found) { if (ref($curRes) && $curRes->symb() eq $here) { my $mapStack = $mapIterator->getStack(); @@ -3905,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 @@ -3951,6 +3961,26 @@ sub countParts { return scalar(@{$parts}); # + $delta; } +sub countResponses { + my $self = shift; + my $count; + foreach my $part (@{$self->parts()}) { + $count+= scalar($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;