--- loncom/interface/lonnavmaps.pm 2004/08/29 03:55:24 1.281 +++ loncom/interface/lonnavmaps.pm 2004/09/21 20:33:49 1.296 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.281 2004/08/29 03:55:24 albertel Exp $ +# $Id: lonnavmaps.pm,v 1.296 2004/09/21 20:33:49 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -127,7 +127,7 @@ sub nav_control_js { function gonav(url) { if (w_loncapanav_flag != 1) { - go(url); + gopost(url,''); } else { navwindow=window.open(url, "loncapanav","height=600,width=400,scrollbars=1"); @@ -262,13 +262,13 @@ ENDSUBM &Apache::loncommon::bodytag('Navigate Course Contents','', $addentries,$body_only,'', $ENV{'form.register'})); - $r->print(''. - &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; @@ -354,7 +354,7 @@ ENDSUBM } else { &add_linkitem(\%toplinkitems,'firsthomework', 'location.href="navmaps?jumpToFirstHomework"', - "Go To My First Homework Problem"); + "Show Me My First Homework Problem"); } my $suppressEmptySequences = 0; @@ -370,7 +370,7 @@ ENDSUBM return $res->completable() || $res->is_map(); }; &add_linkitem(\%toplinkitems,'everything', - 'location.href="locatnavmaps?sort='.$ENV{'form.sort'}.'"', + 'location.href="navmaps?sort='.$ENV{'form.sort'}.'"', "Show Everything"); $r->print("

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

"); $ENV{'form.filter'} = ''; @@ -392,12 +392,12 @@ ENDSUBM + "); # renderer call - &Apache::lonnet::logthis(join(':',keys(%toplinkitems))); - my $renderArgs = { 'cols' => [0,2,3], + my $renderArgs = { 'cols' => [0,1,2,3], 'sort' => $ENV{'form.sort'}, 'url' => '/adm/navmaps', 'navmap' => $navmap, @@ -1344,6 +1344,13 @@ sub setDefault { return $val; } +sub cmp_title { + my ($atitle,$btitle) = (lc($_[0]->compTitle),lc($_[1]->compTitle)); + $atitle=~s/^\s*//; + $btitle=~s/^\s*//; + return $atitle cmp $btitle; +} + sub render { my $args = shift; &Apache::loncommon::get_unprocessed_cgi($ENV{QUERY_STRING}); @@ -1429,7 +1436,7 @@ sub render { # We only need to do this if we need to open the maps to show the # current position. This will change the counter so we can't count # for the jump marker with this loop. - while (($curRes = $mapIterator->next()) && !$found) { + while ($here && ($curRes = $mapIterator->next()) && !$found) { if (ref($curRes) && $curRes->symb() eq $here) { my $mapStack = $mapIterator->getStack(); @@ -1550,37 +1557,54 @@ sub render { # Check for any unread discussions in all resources. if ($args->{'caller'} eq 'navmapsdisplay') { - my $totdisc = 0; - my $haveDisc = ''; - my @allres=$navmap->retrieveResources(); - foreach my $resource (@allres) { - if ($resource->hasDiscussion()) { - my $ressymb; - if ($resource->symb() =~ m-(___adm/\w+/\w+)/(\d+)/bulletinboard$-) { - $ressymb = 'bulletin___'.$2.$1.'/'.$2.'/bulletinboard'; - } else { - $ressymb = $resource->symb(); + &add_linkitem($args->{'linkitems'},'clearbubbles', + 'document.clearbubbles.submit()', + 'Mark all posts read'); + $result .= (< + +END + if ($args->{'sort'} eq 'discussion') { + my $totdisc = 0; + my $haveDisc = ''; + my @allres=$navmap->retrieveResources(); + foreach my $resource (@allres) { + if ($resource->hasDiscussion()) { + my $ressymb; + if ($resource->symb() =~ m-(___adm/\w+/\w+)/(\d+)/bulletinboard$-) { + $ressymb = 'bulletin___'.$2.$1.'/'.$2.'/bulletinboard'; + } else { + $ressymb = $resource->symb(); + } + $haveDisc .= $ressymb.':'; + $totdisc ++; } - $haveDisc .= $ressymb.':'; - $totdisc ++; } - } - if ($totdisc > 0) { - $haveDisc =~ s/:$//; - my $navurl = $ENV{'QUERY_STRING'}; - &add_linkitem($args->{'linkitems'},'clearbubbles', - 'document.clearbubbles.submit()', - 'Mark all posts read'); - $result .= (< - - - + if ($totdisc > 0) { + $haveDisc =~ s/:$//; + my $navurl = $ENV{'QUERY_STRING'}; + $result .= (< + END - } + } + } else { + my $time=time; + $result .= (< + +END + } } if ($args->{'caller'} eq 'navmapsdisplay') { + $result .= ''; + if ($ENV{'environment.remotenavmap'} ne 'on') { + $result .= ''; + } else { + $result .= ''; + } $result.=&show_linkitems($args->{'linkitems'}); if ($args->{'sort_html'}) { if ($ENV{'environment.remotenavmap'} ne 'on') { @@ -1679,18 +1703,35 @@ END return &$oldFilterFunc($res); }; @resources=$navmap->retrieveResources(undef,$filterFunc); - @resources= sort {lc($a->compTitle) cmp lc($b->compTitle)} @resources; + @resources= sort { &cmp_title($a,$b) } @resources; } elsif ($args->{'sort'} eq 'duedate') { - @resources=$navmap->retrieveResources(undef, - sub { shift->is_problem(); }); - @resources= sort - { + my $oldFilterFunc = $filterFunc; + my $filterFunc= + sub { + my ($res)=@_; + if (!$res->is_problem()) { return 0;} + return &$oldFilterFunc($res); + }; + @resources=$navmap->retrieveResources(undef,$filterFunc); + @resources= sort { if ($a->duedate ne $b->duedate) { return $a->duedate cmp $b->duedate; - } else { - lc($a->compTitle) cmp lc($b->compTitle) } + my $value=&cmp_title($a,$b); + return $value; } @resources; + } elsif ($args->{'sort'} eq 'discussion') { + my $oldFilterFunc = $filterFunc; + my $filterFunc= + sub { + my ($res)=@_; + if (!$res->hasDiscussion() && + !$res->getFeedback() && + !$res->getErrors()) { return 0;} + return &$oldFilterFunc($res); + }; + @resources=$navmap->retrieveResources(undef,$filterFunc); + @resources= sort { &cmp_title($a,$b) } @resources; } else { #unknow sort mechanism or default undef($args->{'sort'}); @@ -1917,6 +1958,7 @@ sub show_linkitems { "uncompleted","changefolder","clearbubbles"); my $result .= (< -
'. + &Apache::loncommon::help_open_menu('','Navigation Screen','Navigation_Screen','',undef,'RAT').'