--- loncom/interface/lonnavmaps.pm 2002/02/14 22:13:36 1.26 +++ loncom/interface/lonnavmaps.pm 2003/01/28 22:25:54 1.131 @@ -1,7 +1,8 @@ + # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.26 2002/02/14 22:13:36 harris41 Exp $ +# $Id: lonnavmaps.pm,v 1.131 2003/01/28 22:25:54 bowersj2 Exp $ # # Copyright Michigan State University Board of Trustees # @@ -36,62 +37,1244 @@ # 3/1/1,6/1,17/1,29/1,30/1,2/8,9/21,9/24,9/25 Gerd Kortemeyer # YEAR=2002 # 1/1 Gerd Kortemeyer -# +# Oct-Nov Jeremy Bowers package Apache::lonnavmaps; use strict; use Apache::Constants qw(:common :http); -use Apache::lonnet(); use Apache::loncommon(); -use HTML::TokeParser; +use POSIX qw (floor strftime); + +my %navmaphash; +my %parmhash; + +sub cleanup { + if (tied(%navmaphash)){ + &Apache::lonnet::logthis('Cleanup navmaps: navmaphash'); + unless (untie(%navmaphash)) { + &Apache::lonnet::logthis('Failed cleanup navmaps: navmaphash'); + } + } + if (tied(%parmhash)){ + &Apache::lonnet::logthis('Cleanup navmaps: parmhash'); + unless (untie(%parmhash)) { + &Apache::lonnet::logthis('Failed cleanup navmaps: parmhash'); + } + } +} + +sub handler { + my $r = shift; + real_handler($r); +} + +sub real_handler { + my $r = shift; + + &Apache::loncommon::get_unprocessed_cgi($ENV{QUERY_STRING}); + + # Handle header-only request + if ($r->header_only) { + if ($ENV{'browser.mathml'}) { + $r->content_type('text/xml'); + } else { + $r->content_type('text/html'); + } + $r->send_http_header; + return OK; + } + + # Send header, don't cache this page + if ($ENV{'browser.mathml'}) { + $r->content_type('text/xml'); + } else { + $r->content_type('text/html'); + } + &Apache::loncommon::no_cache($r); + $r->send_http_header; + + # Create the nav map + my $navmap = Apache::lonnavmaps::navmap->new( + $ENV{"request.course.fn"}.".db", + $ENV{"request.course.fn"}."_parms.db", 1, 1); + + + if (!defined($navmap)) { + my $requrl = $r->uri; + $ENV{'user.error.msg'} = "$requrl:bre:0:0:Course not initialized"; + return HTTP_NOT_ACCEPTABLE; + } + + $r->print("
\n"); + $r->print("Key: | '); + + # Print discussions and feedback header + if ($navmap->{LAST_CHECK}) { + $r->print(''. + ' New discussion since '. + strftime("%A, %b %e at %I:%M %P", localtime($navmap->{LAST_CHECK})). + ' | '.
+ ' New message (click to open) '. + ' | ');
+ } else {
+ $r->print(''. + ' Discussions | '. + ' New message (click to open)'. + ' | '); + } + $r->print('