--- loncom/interface/lonnavmaps.pm 2004/08/10 20:52:03 1.274 +++ loncom/interface/lonnavmaps.pm 2004/08/27 20:34:13 1.280 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.274 2004/08/10 20:52:03 matthew Exp $ +# $Id: lonnavmaps.pm,v 1.280 2004/08/27 20:34:13 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -100,7 +100,7 @@ sub launch_win { } if ($mode eq 'link') { $result.='' - .&mt("Launch navigation in separate window")." "; + .&mt("Launch navigation window")."    "; } return $result; } @@ -119,6 +119,23 @@ window.status='Done.'; ENDCLOSE } +sub nav_control_js { + my $nav=($ENV{'environment.remotenavmap'} eq 'on'); + return (< 'off'}); &Apache::lonnet::appenv('environment.remotenavmap' => 'off'); + my $menu=&Apache::lonmenu::reopenmenu(); + my $navstatus=&Apache::lonmenu::get_nav_status(); + if ($menu) { + $menu=(<print(<<"ENDSUBM"); @@ -195,11 +230,12 @@ ENDSUBM $r->print("\n"); $r->print("".&mt('Navigate Course Contents').""); # ------------------------------------------------------------ Get query string - &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['register','sort']); + &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['register','sort','showOnlyHomework']); # ----------------------------------------------------- Force menu registration my $addentries=''; my $more_unload; + my $body_only=''; if ($ENV{'environment.remotenavmap'} eq 'on') { $r->print(''); # FIXME need to be smarter to only catch window close events # $more_unload="collapse()" + $body_only=1; } if ($ENV{'form.register'}) { $addentries=' onLoad="'.&Apache::lonmenu::loadevents(). @@ -221,7 +258,8 @@ ENDSUBM # Header $r->print(''. &Apache::loncommon::bodytag('Navigate Course Contents','', - $addentries,'','',$ENV{'form.register'})); + $addentries,$body_only,'', + $ENV{'form.register'})); $r->print(''. &Apache::loncommon::help_open_menu('','Navigation Screen','Navigation_Screen','',undef,'RAT')); @@ -275,7 +313,7 @@ ENDSUBM if ($ENV{'environment.remotenavmap'} eq 'on') { # $r->print("" . $r->print("" . - &mt("Close separate navigation window"). + &mt("Close navigation window"). "    "); } @@ -324,30 +362,33 @@ ENDSUBM # Display only due homework. my $showOnlyHomework = 0; - if ($ENV{QUERY_STRING} eq 'showOnlyHomework') { + if ($ENV{'form.showOnlyHomework'} eq "1") { $showOnlyHomework = 1; $suppressEmptySequences = 1; $filterFunc = sub { my $res = shift; return $res->completable() || $res->is_map(); }; + $r->print("" . + &mt("Show Everything")."    "); $r->print("

".&mt("Uncompleted Homework")."

"); $ENV{'form.filter'} = ''; $ENV{'form.condition'} = 1; $resource_no_folder_link = 1; } else { - $r->print("" . + $r->print("" . &mt("Show Only Uncompleted Homework")."    "); } - $r->print("
+ my %selected=($ENV{'form.sort'} => 'selected=on'); + my $sort_html=(" - Sort by: + + -
"); # renderer call @@ -359,6 +400,7 @@ ENDSUBM 'suppressEmptySequences' => $suppressEmptySequences, 'filterFunc' => $filterFunc, 'resource_no_folder_link' => $resource_no_folder_link, + 'sort_html'=> $sort_html, 'r' => $r}; my $render = render($renderArgs); $navmap->untieHashes(); @@ -631,7 +673,7 @@ sub timeToHumanString { } # Not this year, so show the year - my $timeStr = strftime("on %A, %b %e %G at %I:%M %P", localtime($time)); + my $timeStr = strftime("on %A, %b %e %Y at %I:%M %P", localtime($time)); $timeStr =~ s/12:00 am/00:00/; $timeStr =~ s/12:00 pm/noon/; return $timeStr; @@ -1370,10 +1412,7 @@ sub render { #$currenturl=~s/^[^\/]+//; $here = $jump = &Apache::lonnet::symbread($currenturl); - } else { - &Apache::lonnet::logthis("Hrrm,"); - - } + } # Step three: Ensure the folders are open my $mapIterator = $navmap->getIterator(undef, undef, undef, 1); @@ -1528,6 +1567,9 @@ END $result .= '
'; } } + + if ($args->{'sort_html'}) { $result.=$args->{'sort_html'}; } + $result .= "
\n"; if ($r) { $r->print($result); @@ -1603,8 +1645,14 @@ END my @resources; my $code='';# sub { !(shift->is_map();) }; if ($args->{'sort'} eq 'title') { - @resources=$navmap->retrieveResources(undef, - sub { !shift->is_map(); }); + my $oldFilterFunc = $filterFunc; + my $filterFunc= + sub { + my ($res)=@_; + if ($res->is_map()) { return 0;} + return &$oldFilterFunc($res); + }; + @resources=$navmap->retrieveResources(undef,$filterFunc); @resources= sort {lc($a->compTitle) cmp lc($b->compTitle)} @resources; } elsif ($args->{'sort'} eq 'duedate') { @resources=$navmap->retrieveResources(undef, @@ -1617,8 +1665,12 @@ END lc($a->compTitle) cmp lc($b->compTitle) } } @resources; + } else { + #unknow sort mechanism or default + undef($args->{'sort'}); } + while (1) { if ($args->{'sort'}) { $curRes = shift(@resources); @@ -2211,9 +2263,14 @@ sub getById { sub getBySymb { my $self = shift; my $symb = shift; + my ($mapUrl, $id, $filename) = &Apache::lonnet::decode_symb($symb); my $map = $self->getResourceByUrl($mapUrl); - return $self->getById($map->map_pc() . '.' . $id); + my $returnvalue = undef; + if (ref($map)) { + $returnvalue = $self->getById($map->map_pc() .'.'.$id); + } + return $returnvalue; } sub getByMapPc { @@ -2407,6 +2464,7 @@ in the filter function. =cut + sub getResourceByUrl { my $self = shift; my $resUrl = shift;