--- loncom/interface/lonnavdisplay.pm 2006/10/10 20:16:26 1.1
+++ loncom/interface/lonnavdisplay.pm 2015/03/30 22:29:24 1.32
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
-# Navigate Maps Handler
+# Navigate Maps Display Handler
#
-# $Id: lonnavdisplay.pm,v 1.1 2006/10/10 20:16:26 albertel Exp $
+# $Id: lonnavdisplay.pm,v 1.32 2015/03/30 22:29:24 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -30,13 +30,15 @@
package Apache::lonnavdisplay;
use strict;
-use Apache::Constants qw(:common :http);
+use Apache::Constants qw(:common :http REDIRECT);
use Apache::lonmenu();
use Apache::loncommon();
use Apache::lonnavmaps();
use Apache::lonhtmlcommon();
use Apache::lonnet;
use Apache::lonlocal;
+use Apache::londocs();
+use Apache::lonuserstate;
sub handler {
my $r = shift;
@@ -45,85 +47,40 @@ sub handler {
sub real_handler {
my $r = shift;
- #my $t0=[&gettimeofday()];
# Handle header-only request
if ($r->header_only) {
- if ($env{'browser.mathml'}) {
- &Apache::loncommon::content_type($r,'text/xml');
- } else {
- &Apache::loncommon::content_type($r,'text/html');
- }
+ &Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
return OK;
}
- # Send header, don't cache this page
- if ($env{'browser.mathml'}) {
- &Apache::loncommon::content_type($r,'text/xml');
- } else {
+ # Check for critical messages and redirect if present.
+ my ($redirect,$url) = &Apache::loncommon::critical_redirect(300);
+ if ($redirect) {
&Apache::loncommon::content_type($r,'text/html');
+ $r->header_out(Location => $url);
+ return REDIRECT;
}
- &Apache::loncommon::no_cache($r);
- my %toplinkitems=();
- &Apache::lonnavmaps::add_linkitem(\%toplinkitems,'blank','',
- "Select Action");
- if ($ENV{QUERY_STRING} eq 'collapseExternal') {
- &Apache::lonnet::put('environment',{'remotenavmap' => 'off'});
- &Apache::lonnet::appenv('environment.remotenavmap' => 'off');
- my $menu=&Apache::lonmenu::reopenmenu();
- my $navstatus=&Apache::lonmenu::get_nav_status();
- if ($menu) {
- $menu=(<
');
- $r->print('
- ');
- }
-
- if ($env{'environment.remotenavmap'} ne 'on') {
- $r->print(&launch_win('link','yes',\%toplinkitems));
- }
- if ($env{'environment.remotenavmap'} eq 'on') {
- &Apache::lonnavmaps::add_linkitem(\%toplinkitems,'closenav',
- 'collapse()',
- "Close navigation window");
- }
-
-
# Check to see if the student is jumping to next open, do-able problem
if ($ENV{QUERY_STRING} =~ /^jumpToFirstHomework/) {
# Find the next homework problem that they can do.
@@ -224,19 +176,19 @@ MENU
my $curRes;
my $foundDoableProblem = 0;
my $minimumduedate;
-
+ my $now = time();
+
while ($curRes = $iterator->next()) {
if (ref($curRes) && $curRes->is_problem()) {
my $status = $curRes->status();
- if ($curRes->completable()) {
- my $thisduedate=$curRes->duedate();
- unless ($foundDoableProblem) {
- $minimumduedate=$thisduedate;
- }
+ my $thisduedate=$curRes->duedate();
+ if ($thisduedate > $now
+ && $curRes->completable()) {
$foundDoableProblem = 1;
- if ($thisduedate<=$minimumduedate) {
+ if (!defined($minimumduedate)
+ || $thisduedate<$minimumduedate) {
# Pop open all previous maps
my $stack = $iterator->getStack();
pop @$stack; # last resource in the stack is the problem
@@ -254,12 +206,20 @@ MENU
# If we found no problems, print a note to that effect.
if (!$foundDoableProblem) {
- $r->print("All homework assignments have been completed.
");
+ $r->print(""
+ .&mt("All homework assignments have been completed.")
+ ."");
}
} else {
- &Apache::lonnavmaps::add_linkitem(\%toplinkitems,'firsthomework',
- 'location.href="navmaps?jumpToFirstHomework"',
- "Show my first due problem");
+ my $link = 'navmaps?jumpToFirstHomework';
+ if ($env{'form.register'}) {
+ $link .= '®ister='.$env{'form.register'};
+ }
+ unless ($notools) {
+ &Apache::lonnavmaps::add_linkitem(\%toplinkitems,'firsthomework',
+ 'location.href="'.$link.'"',
+ "Show my first due problem");
+ }
}
my $suppressEmptySequences = 0;
@@ -274,33 +234,47 @@ MENU
$filterFunc = sub { my $res = shift;
return $res->completable() || $res->is_map();
};
+ my $link = 'navmaps?sort='.$env{'form.sort'};
+ if ($env{'form.register'}) {
+ $link .= '®ister='.$env{'form.register'};
+ }
&Apache::lonnavmaps::add_linkitem(\%toplinkitems,'everything',
- 'location.href="navmaps?sort='.$env{'form.sort'}.'"',
- "Show everything");
- $r->print("
".&mt("Uncompleted Problems")."
");
+ 'location.href="'.$link.'"',
+ 'Show everything');
+ $r->print("".&mt("Uncompleted Problems")."");
$env{'form.filter'} = '';
$env{'form.condition'} = 1;
$resource_no_folder_link = 1;
} else {
- &Apache::lonnavmaps::add_linkitem(\%toplinkitems,'uncompleted',
- 'location.href="navmaps?sort='.$env{'form.sort'}.
- '&showOnlyHomework=1"',
- "Show only uncompleted problems");
- }
-
- my %selected=($env{'form.sort'} => 'selected=on');
- my $sort_html=("");
+
+
+ ');
+ }
# renderer call
my $renderArgs = { 'cols' => [0,1,2,3],
'sort' => $env{'form.sort'},
@@ -313,54 +287,51 @@ MENU
'sort_html'=> $sort_html,
'r' => $r,
'caller' => 'navmapsdisplay',
- 'linkitems' => \%toplinkitems};
+ 'linkitems' => \%toplinkitems,
+ 'notools' => $notools};
+
my $render = &Apache::lonnavmaps::render($renderArgs);
# If no resources were printed, print a reassuring message so the
# user knows there was no error.
if ($renderArgs->{'counter'} == 0) {
if ($showOnlyHomework) {
- $r->print("
".&mt("All homework is currently completed").".
");
+ $r->print("
".&mt("All homework is currently completed.")."
");
} else { # both jumpToFirstHomework and normal use the same: course must be empty
- $r->print("