--- loncom/interface/lonnavmaps.pm 2003/02/28 16:16:59 1.150
+++ loncom/interface/lonnavmaps.pm 2003/03/08 21:16:38 1.155
@@ -2,7 +2,7 @@
# The LearningOnline Network with CAPA
# Navigate Maps Handler
#
-# $Id: lonnavmaps.pm,v 1.150 2003/02/28 16:16:59 www Exp $
+# $Id: lonnavmaps.pm,v 1.155 2003/03/08 21:16:38 bowersj2 Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -38,6 +38,8 @@
# YEAR=2002
# 1/1 Gerd Kortemeyer
# Oct-Nov Jeremy Bowers
+# YEAR=2003
+# Jeremy Bowers ... lots of days
package Apache::lonnavmaps;
@@ -167,7 +169,7 @@ sub real_handler {
# Header
$r->print(''.
&Apache::loncommon::bodytag('Navigate Course Contents','',
- $addentries));
+ $addentries,'','',$ENV{'form.register'}));
$r->print('');
$r->rflush();
@@ -186,10 +188,36 @@ sub real_handler {
return OK;
}
+ # See if there's only one map in the top-level... if so,
+ # automatically display it
+ my $iterator = $navmap->getIterator(undef, undef, undef, 0);
+ my $depth = 1;
+ $iterator->next();
+ my $curRes = $iterator->next();
+ my $sequenceCount = 0;
+ my $sequenceId;
+ while ($depth > 0) {
+ if ($curRes == $iterator->BEGIN_MAP()) { $depth++; }
+ if ($curRes == $iterator->END_MAP()) { $depth--; }
+
+ if (ref($curRes) && $curRes->is_sequence()) {
+ $sequenceCount++;
+ $sequenceId = $curRes->map_pc();
+ }
+
+ $curRes = $iterator->next();
+ }
+
+ if ($sequenceCount == 1) {
+ # The automatic iterator creation in the render call
+ # will pick this up.
+ $ENV{'form.filter'} = "$sequenceId";
+ }
+
# renderer call
my $render = render({ 'cols' => [0,1,2,3],
'url' => '/adm/navmaps',
- #'printKey' => 1,
+ 'suppressNavmap' => 1,
'r' => $r});
$navmap->untieHashes();
@@ -536,7 +564,9 @@ Most of these parameters are only useful
=item * B: If true, print the "Close all folders" or "open all folders" links. Default is true.
-=item * B: A function that takes the resource object as its only parameter and returns a true or false value. If true, the resource is displayed. If false, it is simply skipped in the display. By default, all resources are showne.
+=item * B: A function that takes the resource object as its only parameter and returns a true or false value. If true, the resource is displayed. If false, it is simply skipped in the display. By default, all resources are shown.
+
+=item * B: If true, will not display Navigate Content resources. Default to false.
=back
@@ -815,6 +845,7 @@ sub render {
my $here;
my $jump;
my $currentJumpIndex = setDefault($args->{'currentJumpIndex'}, 0);
+ my $suppressNavmap = setDefault($args->{'suppressNavmap'}, 0);
my $currentJumpDelta = 2; # change this to change how many resources are displayed
# before the current resource when using #current
@@ -1081,6 +1112,12 @@ sub render {
next;
}
+ # If we're suppressing navmaps and this is a navmap, continue on
+ if ($suppressNavmap && $curRes->src() =~ /^\/adm\/navmaps/) {
+ $curRes = $it->next();
+ next;
+ }
+
# Does it have multiple parts?
$args->{'multipart'} = 0;
$args->{'condensed'} = 0;
@@ -1192,7 +1229,7 @@ sub render {
$result .= " \n";
$args->{'isNewBranch'} = 0;
}
-
+
if ($r && $rownum % 20 == 0) {
$r->print($result);
$result = "";
@@ -2691,22 +2728,21 @@ sub countParts {
sub extractParts {
my $self = shift;
- return if ($self->{PARTS});
+ return if (defined($self->{PARTS}));
return if ($self->ext);
$self->{PARTS} = [];
# Retrieve part count, if this is a problem
if ($self->is_problem()) {
- my $metadata = &Apache::lonnet::metadata($self->src(), 'allpossiblekeys');
+ my $metadata = &Apache::lonnet::metadata($self->src(), 'packages');
if (!$metadata) {
$self->{RESOURCE_ERROR} = 1;
$self->{PARTS} = [];
return;
}
-
foreach (split(/\,/,$metadata)) {
- if ($_ =~ /^parameter\_(.*)\_opendate$/) {
+ if ($_ =~ /^part_(.*)$/) {
my $part = $1;
# check to see if part is turned off.
if (! Apache::loncommon::check_if_partid_hidden($part, $self->symb())) {
@@ -2720,6 +2756,11 @@ sub extractParts {
$self->{PARTS} = \@sortedParts;
}
+ # Ensure part 0 is included at the beginning.
+ if ($self->{PARTS}->[0] ne '0') {
+ unshift @{$self->{PARTS}}, '0';
+ }
+
return;
}