version 1.93, 2002/10/29 20:26:03
|
version 1.95, 2002/11/01 18:47:26
|
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 1769 sub courseMapDefined {
|
Line 1776 sub courseMapDefined {
|
|
|
sub getIterator { |
sub getIterator { |
my $self = shift; |
my $self = shift; |
my $iterator = Apache::lonnavmaps::iterator->new($self, shift, shift, |
my $iterator = Apache::lonnavmaps::DFSiterator->new($self, shift, shift, |
shift, undef, shift, |
shift, undef, shift, |
$ENV{'form.direction'}); |
$ENV{'form.direction'}); |
return $iterator; |
return $iterator; |
Line 2028 sub END_BRANCH { return 4; } # end of
|
Line 2035 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 new { |
|
# magic invocation to create a class instance |
|
my $proto = shift; |
|
my $class = ref($proto) || $proto; |
|
my $self = {}; |
|
|
|
$self->{NAV_MAP} = shift; |
|
return undef unless ($self->{NAV_MAP}); |
|
|
|
# Handle the parameters |
|
$self->{FIRST_RESOURCE} = shift || $self->{NAV_MAP}->firstResource(); |
|
$self->{FINISH_RESOURCE} = shift || $self->{NAV_MAP}->finishResource(); |
|
|
|
# If the given resources are just the ID of the resource, get the |
|
# objects |
|
if (!ref($self->{FIRST_RESOURCE})) { $self->{FIRST_RESOURCE} = |
|
$self->{NAV_MAP}->getById($self->{FIRST_RESOURCE}); } |
|
if (!ref($self->{FINISH_RESOURCE})) { $self->{FINISH_RESOURCE} = |
|
$self->{NAV_MAP}->getById($self->{FINISH_RESOURCE}); } |
|
|
|
$self->{FILTER} = shift; |
|
|
|
# A hash, used as a set, of resource already seen |
|
$self->{ALREADY_SEEN} = shift; |
|
if (!defined($self->{ALREADY_SEEN})) { $self->{ALREADY_SEEN} = {} }; |
|
$self->{CONDITION} = shift; |
|
|
|
# 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. |
|
|
|
# Now we're ready to start iterating. |
|
} |
|
|
|
1; |
|
|
|
package Apache::lonnavmaps::DFSiterator; |
|
|
|
# UNDOCUMENTED: This is a private library, it should not generally be used |
|
# by the outside world. What it does is walk through the nav map in a |
|
# depth-first fashion. This is not appropriate for most uses, but it is |
|
# used by the main iterator for pre-processing. It also is able to isolate |
|
# much of the complexity of the main iterator, so the main iterator is much |
|
# simpler. |
|
|
|
# Here are the tokens for the iterator, replicated from iterator for convenience: |
|
|
|
sub BEGIN_MAP { return 1; } # begining of a new map |
|
sub END_MAP { return 2; } # end of the map |
|
sub BEGIN_BRANCH { return 3; } # beginning of a branch |
|
sub END_BRANCH { return 4; } # end of a branch |
|
sub FORWARD { return 1; } # go forward |
|
sub BACKWARD { return 2; } |
|
|
# Params: nav map, start resource, end resource, filter, condition, |
# Params: nav map, start resource, end resource, filter, condition, |
# already seen hash ref |
# already seen hash ref |
|
|
Line 2236 sub next {
|
Line 2296 sub next {
|
my $finishResource = $self->{HERE}->map_finish(); |
my $finishResource = $self->{HERE}->map_finish(); |
|
|
$self->{RECURSIVE_ITERATOR} = |
$self->{RECURSIVE_ITERATOR} = |
Apache::lonnavmaps::iterator->new ($self->{NAV_MAP}, $firstResource, |
Apache::lonnavmaps::DFSiterator->new ($self->{NAV_MAP}, $firstResource, |
$finishResource, $self->{FILTER}, $self->{ALREADY_SEEN}, |
$finishResource, $self->{FILTER}, $self->{ALREADY_SEEN}, |
$self->{CONDITION}, $self->{DIRECTION}); |
$self->{CONDITION}, $self->{DIRECTION}); |
} |
} |