version 1.94, 2002/11/01 18:24:45
|
version 1.96, 2002/11/01 19:50:00
|
Line 837 sub new_handle {
|
Line 837 sub new_handle {
|
'')); |
'')); |
$r->print('<script>window.focus();</script>'); |
$r->print('<script>window.focus();</script>'); |
my $desc=$ENV{'course.'.$ENV{'request.course.id'}.'.description'}; |
my $desc=$ENV{'course.'.$ENV{'request.course.id'}.'.description'}; |
if (defined($desc)) { $r->print("<h2>$desc</h2>\n"); } |
$r->print('<table border="0" cellpadding="2" cellspacing="0">'); |
my $date=localtime; |
my $date=localtime; |
$r->print("<h3>$date</h3>\n"); |
$r->print('<tr><td align="right" valign="bottom">Key: </td>'); |
$r->rflush(); |
|
if ($navmap->{LAST_CHECK}) { |
if ($navmap->{LAST_CHECK}) { |
$r->print('<img src="/adm/lonMisc/chat.gif"> New discussion since '. |
$r->print('<td align="center" valign="bottom"> '. |
|
'<img src="/adm/lonMisc/chat.gif"> New discussion since '. |
strftime("%A, %b %e at %I:%M %P", localtime($navmap->{LAST_CHECK})). |
strftime("%A, %b %e at %I:%M %P", localtime($navmap->{LAST_CHECK})). |
'<br><img src="/adm/lonMisc/feedback.gif"> New message (click to open)<p>'); |
'</td><td align="center" valign="bottom"> '. |
|
'<img src="/adm/lonMisc/feedback.gif"> New message (click to open)<p>'. |
|
'</td>'); |
|
} else { |
|
$r->print('<td align="center" valign="bottom"> '. |
|
'<img src="/adm/lonMisc/chat.gif"> Discussions</td><td align="center" valign="bottom">'. |
|
' <img src="/adm/lonMisc/feedback.gif"> New message (click to open)'. |
|
'</td>'); |
|
} |
|
$r->print('</tr></table>'); |
|
my $condition = 0; |
|
if ($ENV{'form.condition'}) { |
|
$condition = 1; |
|
} |
|
|
|
if ($condition) { |
|
$r->print('<a href="navmaps?condition=0&filter=">Close All Folders</a>'); |
} else { |
} else { |
$r->print('<img src="/adm/lonMisc/chat.gif"> Discussions'. |
$r->print('<a href="navmaps?condition=1&filter=">Open All Folders</a>'); |
'<br><img src="/adm/lonMisc/feedback.gif"> New message (click to open)<p>'); |
|
} |
} |
|
|
|
$r->print('<br> '); |
|
$r->rflush(); |
|
|
# Now that we've displayed some stuff to the user, init the navmap |
# Now that we've displayed some stuff to the user, init the navmap |
$navmap->init(); |
$navmap->init(); |
|
|
Line 929 sub new_handle {
|
Line 947 sub new_handle {
|
my $queryAdd = "postdata=" . &Apache::lonnet::escape($currenturl) . |
my $queryAdd = "postdata=" . &Apache::lonnet::escape($currenturl) . |
"&alreadyHere=1"; |
"&alreadyHere=1"; |
|
|
my $condition = 0; |
|
if ($ENV{'form.condition'}) { |
|
$condition = 1; |
|
} |
|
|
|
if ($condition) { |
|
$r->print('<a href="navmaps?condition=0&filter=">Close All Folders</a><br /><br />'); |
|
} else { |
|
$r->print('<a href="navmaps?condition=1&filter=">Open All Folders</a><br /><br />'); |
|
} |
|
|
|
# Begin the HTML table |
# Begin the HTML table |
# four cols: resource + indent, chat+feedback, icon, text string |
# four cols: resource + indent, chat+feedback, icon, text string |
$r->print('<table cellspacing="0" cellpadding="3" border="0" bgcolor="#FFFFFF">' ."\n"); |
$r->print('<table cellspacing="0" cellpadding="3" border="0" bgcolor="#FFFFFF">' ."\n"); |
Line 950 sub new_handle {
|
Line 957 sub new_handle {
|
# Here's a simple example of the iterator. |
# Here's a simple example of the iterator. |
# Preprocess the map: Look for current URL, force inlined maps to display |
# Preprocess the map: Look for current URL, force inlined maps to display |
|
|
|
# This currently does very little... |
|
my $mapEventualIterator = Apache::lonnavmaps::iterator->new($navmap, undef, undef, {}, |
|
undef, $condition); |
|
|
my $mapIterator = $navmap->getIterator(undef, undef, {}, 1); |
my $mapIterator = $navmap->getIterator(undef, undef, {}, 1); |
my $found = 0; |
my $found = 0; |
my $depth = 1; |
my $depth = 1; |
Line 961 sub new_handle {
|
Line 972 sub new_handle {
|
my $counter = 0; |
my $counter = 0; |
|
|
while ($depth > 0) { |
while ($depth > 0) { |
if ($curRes == $mapIterator->BEGIN_MAP()) { |
if ($curRes == $mapIterator->BEGIN_MAP()) { $depth++; } |
$depth++; |
if ($curRes == $mapIterator->END_MAP()) { $depth--; } |
} |
|
if ($curRes == $mapIterator->END_MAP()) { |
|
$depth--; |
|
} |
|
|
|
if (ref($curRes)) { $counter++; } |
if (ref($curRes)) { $counter++; } |
|
|
Line 1051 sub new_handle {
|
Line 1058 sub new_handle {
|
if ($curRes == $mapIterator->BEGIN_BRANCH()) { |
if ($curRes == $mapIterator->BEGIN_BRANCH()) { |
$isNewBranch = 1; |
$isNewBranch = 1; |
} |
} |
if ($curRes == $mapIterator->BEGIN_MAP()) { |
if ($curRes == $mapIterator->BEGIN_MAP()) { $depth++; } |
$depth++; |
if ($curRes == $mapIterator->END_MAP()) { $depth--; } |
} |
|
if ($curRes == $mapIterator->END_MAP()) { |
|
$depth--; |
|
} |
|
|
|
if (ref($curRes)) { $counter++; } |
if (ref($curRes)) { $counter++; } |
|
|
Line 2028 sub END_BRANCH { return 4; } # end of
|
Line 2031 sub END_BRANCH { return 4; } # end of
|
sub FORWARD { return 1; } # go forward |
sub FORWARD { return 1; } # go forward |
sub BACKWARD { return 2; } |
sub BACKWARD { return 2; } |
|
|
|
sub min { |
|
(my $a, my $b) = @_; |
|
if ($a < $b) { return $a; } else { return $b; } |
|
} |
|
|
sub new { |
sub new { |
# magic invocation to create a class instance |
# magic invocation to create a class instance |
my $proto = shift; |
my $proto = shift; |
Line 2058 sub new {
|
Line 2066 sub new {
|
# Now, we need to pre-process the map, by walking forward and backward |
# Now, we need to pre-process the map, by walking forward and backward |
# over the parts of the map we're going to look at. |
# over the parts of the map we're going to look at. |
|
|
|
my $forwardIterator = Apache::lonnavmaps::DFSiterator->new($self->{NAV_MAP}, |
|
$self->{FIRST_RESOURCE}, |
|
$self->{FINISH_RESOURCE}, |
|
$self->{FILTER}, |
|
undef, $self->{CONDITION}, |
|
FORWARD()); |
|
|
|
# prime the recursion |
|
$self->{FIRST_RESOURCE}->{DATA}->{TOP_DOWN_VAL} = 0; |
|
my $depth = 1; |
|
$forwardIterator->next(); |
|
my $curRes = $forwardIterator->next(); |
|
while ($depth > 0) { |
|
if ($curRes == $forwardIterator->BEGIN_MAP()) { $depth++; } |
|
if ($curRes == $forwardIterator->END_MAP()) { $depth--; } |
|
|
|
if (ref($curRes)) { |
|
my $topDownVal = $curRes->{DATA}->{TOP_DOWN_VAL}; |
|
my $nextResources = $curRes->getNext(); |
|
my $resourceCount = scalar(@{$nextResources}); |
|
|
|
if ($resourceCount == 1) { |
|
my $current = $nextResources->[0]->{DATA}->{TOP_DOWN_VAL} || 999999999; |
|
$nextResources->[0]->{DATA}->{TOP_DOWN_VAL} = min($topDownVal, $current); |
|
} |
|
|
|
if ($resourceCount > 1) { |
|
foreach my $res (@{$nextResources}) { |
|
my $current = $res->{DATA}->{TOP_DOWN_VAL} || 999999999; |
|
$res->{DATA}->{TOP_DOWN_VAL} = min($current, $topDownVal + 1); |
|
} |
|
} |
|
} |
|
$curRes = $forwardIterator->next(); |
|
} |
|
|
# Now we're ready to start iterating. |
# Now we're ready to start iterating. |
} |
} |
|
|