--- loncom/interface/lonnavmaps.pm 2004/08/23 21:05:03 1.278 +++ loncom/interface/lonnavmaps.pm 2005/03/23 22:16:57 1.319 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.278 2004/08/23 21:05:03 albertel Exp $ +# $Id: lonnavmaps.pm,v 1.319 2005/03/23 22:16:57 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -30,12 +30,16 @@ package Apache::lonnavmaps; use strict; +use GDBM_File; use Apache::Constants qw(:common :http); use Apache::loncommon(); use Apache::lonmenu(); +use Apache::lonenc(); use Apache::lonlocal; +use Apache::lonnet; use POSIX qw (floor strftime); -use Data::Dumper; # for debugging, not always used +use Data::Dumper; # for debugging, not always +use Time::HiRes qw( gettimeofday tv_interval ); # symbolic constants sub SYMB { return 1; } @@ -84,7 +88,7 @@ my %colormap = my $hurryUpColor = "#FF0000"; sub launch_win { - my ($mode,$script)=@_; + my ($mode,$script,$toplinkitems)=@_; my $result; if ($script ne 'no') { $result.=''; } if ($mode eq 'link') { - $result.='' - .&mt("Launch navigation window")." "; + &add_linkitem($toplinkitems,'launchnav','launch_navmapwin()', + "Launch navigation window"); } return $result; } @@ -119,23 +123,6 @@ window.status='Done.'; ENDCLOSE } -sub nav_control_js { - my $nav=($ENV{'environment.remotenavmap'} eq 'on'); - return (<header_only) { if ($ENV{'browser.mathml'}) { @@ -178,6 +165,8 @@ sub real_handler { &Apache::loncommon::no_cache($r); $r->send_http_header; + my %toplinkitems=(); + &add_linkitem(\%toplinkitems,'blank','',"Select Action"); if ($ENV{QUERY_STRING} eq 'collapseExternal') { &Apache::lonnet::put('environment',{'remotenavmap' => 'off'}); &Apache::lonnet::appenv('environment.remotenavmap' => 'off'); @@ -189,9 +178,17 @@ sub real_handler { swmenu.clearTimeout(swmenu.menucltim); $navstatus MENU + } else { + my $nothing = &Apache::lonhtmlcommon::javascript_nothing(); + my $mainwindow='window.open('.$nothing.',"loncapaclient","",false);'; + $menu=(<print(<<"ENDSUBM"); - + $html '. - &Apache::loncommon::help_open_menu('','Navigation Screen','Navigation_Screen','',undef,'RAT')); + $r->print(''); $r->rflush(); # Check that it's defined if (!($navmap->courseMapDefined())) { + $r->print(&Apache::loncommon::help_open_menu('','Navigation Screen','Navigation_Screen','',undef,'RAT')); $r->print('Coursemap undefined.' . ''); return OK; @@ -301,18 +298,16 @@ ENDSUBM } if ($ENV{'environment.remotenavmap'} ne 'on') { - $r->print(&launch_win('link','yes')); + $r->print(&launch_win('link','yes',\%toplinkitems)); } if ($ENV{'environment.remotenavmap'} eq 'on') { -# $r->print("" . - $r->print("" . - &mt("Close navigation window"). - " "); + &add_linkitem(\%toplinkitems,'closenav','collapse()', + "Close navigation window"); } my $jumpToFirstHomework = 0; # Check to see if the student is jumping to next open, do-able problem - if ($ENV{QUERY_STRING} eq 'jumpToFirstHomework') { + if ($ENV{QUERY_STRING} =~ /^jumpToFirstHomework/) { $jumpToFirstHomework = 1; # Find the next homework problem that they can do. my $iterator = $navmap->getIterator(undef, undef, undef, 1); @@ -345,8 +340,9 @@ ENDSUBM $r->print("All homework assignments have been completed."); } } else { - $r->print("" . - &mt("Go To My First Homework Problem")." "); + &add_linkitem(\%toplinkitems,'firsthomework', + 'location.href="navmaps?jumpToFirstHomework"', + "Show Me My First Homework Problem"); } my $suppressEmptySequences = 0; @@ -361,15 +357,18 @@ ENDSUBM $filterFunc = sub { my $res = shift; return $res->completable() || $res->is_map(); }; - $r->print("" . - &mt("Show Everything")." "); + &add_linkitem(\%toplinkitems,'everything', + 'location.href="navmaps?sort='.$ENV{'form.sort'}.'"', + "Show Everything"); $r->print("".&mt("Uncompleted Homework").""); $ENV{'form.filter'} = ''; $ENV{'form.condition'} = 1; $resource_no_folder_link = 1; } else { - $r->print("" . - &mt("Show Only Uncompleted Homework")." "); + &add_linkitem(\%toplinkitems,'uncompleted', + 'location.href="navmaps?sort='.$ENV{'form.sort'}. + '&showOnlyHomework=1"', + "Show Only Uncompleted Homework"); } my %selected=($ENV{'form.sort'} => 'selected=on'); @@ -381,11 +380,12 @@ ENDSUBM ".&mt('Default')." ".&mt('Title')." ".&mt('Duedate')." + ".&mt('Has New Discussion')." "); # renderer call - my $renderArgs = { 'cols' => [0,2,3], + my $renderArgs = { 'cols' => [0,1,2,3], 'sort' => $ENV{'form.sort'}, 'url' => '/adm/navmaps', 'navmap' => $navmap, @@ -394,9 +394,10 @@ ENDSUBM 'filterFunc' => $filterFunc, 'resource_no_folder_link' => $resource_no_folder_link, 'sort_html'=> $sort_html, - 'r' => $r}; + 'r' => $r, + 'caller' => 'navmapsdisplay', + 'linkitems' => \%toplinkitems}; my $render = render($renderArgs); - $navmap->untieHashes(); # If no resources were printed, print a reassuring message so the # user knows there was no error. @@ -407,6 +408,8 @@ ENDSUBM $r->print("This course is empty."); } } + #my $td=&tv_interval($t0); + #$r->print("$td"); $r->print("
".&mt("Uncompleted Homework")."
This course is empty.