--- loncom/interface/lonnavmaps.pm 2004/08/27 20:34:13 1.280 +++ loncom/interface/lonnavmaps.pm 2004/08/29 03:55:24 1.281 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.280 2004/08/27 20:34:13 albertel Exp $ +# $Id: lonnavmaps.pm,v 1.281 2004/08/29 03:55:24 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -84,7 +84,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; } @@ -178,6 +178,8 @@ sub real_handler { &Apache::loncommon::no_cache($r); $r->send_http_header; + my %toplinkitems=(); + if ($ENV{QUERY_STRING} eq 'collapseExternal') { &Apache::lonnet::put('environment',{'remotenavmap' => 'off'}); &Apache::lonnet::appenv('environment.remotenavmap' => 'off'); @@ -308,18 +310,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); @@ -352,8 +352,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"', + "Go To My First Homework Problem"); } my $suppressEmptySequences = 0; @@ -368,15 +369,18 @@ ENDSUBM $filterFunc = sub { my $res = shift; return $res->completable() || $res->is_map(); }; - $r->print("" . - &mt("Show Everything")."    "); + &add_linkitem(\%toplinkitems,'everything', + 'location.href="locatnavmaps?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'); @@ -392,6 +396,7 @@ ENDSUBM "); # renderer call + &Apache::lonnet::logthis(join(':',keys(%toplinkitems))); my $renderArgs = { 'cols' => [0,2,3], 'sort' => $ENV{'form.sort'}, 'url' => '/adm/navmaps', @@ -401,7 +406,9 @@ 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(); @@ -1522,20 +1529,27 @@ sub render { } if ($printCloseAll && !$args->{'resource_no_folder_link'}) { + my ($link,$text); if ($condition) { - $result.="".&mt('Close All Folders').""; + $link='"navmaps?condition=0&filter=&'.$queryString. + '&here='.&Apache::lonnet::escape($here).'"'; + $text='Close All Folders'; } else { - $result.="".&mt('Open All Folders').""; - } + $link='"navmaps?condition=1&filter=&'.$queryString. + '&here='.&Apache::lonnet::escape($here).'"'; + $text='Open All Folders'; + } + if ($args->{'caller'} eq 'navmapsdisplay') { + &add_linkitem($args->{'linkitems'},'changefolder', + 'location.href='.$link,$text); + } else { + $result.=''.&mt($text).''; + } $result .= "\n"; } # Check for any unread discussions in all resources. - if (!$args->{'resource_no_folder_link'}) { + if ($args->{'caller'} eq 'navmapsdisplay') { my $totdisc = 0; my $haveDisc = ''; my @allres=$navmap->retrieveResources(); @@ -1553,22 +1567,34 @@ sub render { } if ($totdisc > 0) { $haveDisc =~ s/:$//; - my %lt = &Apache::lonlocal::texthash( - 'mapr' => 'Mark all posts read', - ); - $result .= (<$lt{'mapr'} (Help: NavMaps_MarkPostsLink) + my $navurl = $ENV{'QUERY_STRING'}; + &add_linkitem($args->{'linkitems'},'clearbubbles', + 'document.clearbubbles.submit()', + 'Mark all posts read'); + $result .= (< END - } else { - $result .= '
'; } } - if ($args->{'sort_html'}) { $result.=$args->{'sort_html'}; } + if ($args->{'caller'} eq 'navmapsdisplay') { + $result.=&show_linkitems($args->{'linkitems'}); + if ($args->{'sort_html'}) { + if ($ENV{'environment.remotenavmap'} ne 'on') { + $result.='   '. + ''.$args->{'sort_html'}.''; + } else { + $result.='
'. + $args->{'sort_html'}.''; + } + } + $result .= ''; + } elsif ($args->{'sort_html'}) { + $result.=$args->{'sort_html'}; + } $result .= "
\n"; if ($r) { @@ -1879,6 +1905,45 @@ if (location.href.indexOf('#curloc')==-1 return $result; } +sub add_linkitem { + my ($linkitems,$name,$cmd,$text)=@_; + $$linkitems{$name}{'cmd'}=$cmd; + $$linkitems{$name}{'text'}=&mt($text); +} + +sub show_linkitems { + my ($linkitems)=@_; + my @linkorder = ("launchnav","closenav","firsthomework","everything", + "uncompleted","changefolder","clearbubbles"); + + my $result .= (< + function changeNavDisplay () { + var navchoice = document.linkitems.toplink[document.linkitems.toplink.selectedIndex].value; +ENDBLOCK + foreach my $link (@linkorder) { + $result.= "if (navchoice == '$link') {". + $linkitems->{$link}{'cmd'}."}\n"; + } + $result.='} + + '."\n"; + return $result; +} + 1; package Apache::lonnavmaps::navmap;
+
+   +