--- loncom/interface/lonnavmaps.pm 2004/09/21 19:12:59 1.295 +++ 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.295 2004/09/21 19:12:59 albertel Exp $ +# $Id: lonnavmaps.pm,v 1.296 2004/09/21 20:33:49 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -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,6 +392,7 @@ ENDSUBM + "); @@ -1343,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}); @@ -1549,34 +1557,44 @@ 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') { @@ -1685,23 +1703,35 @@ END return &$oldFilterFunc($res); }; @resources=$navmap->retrieveResources(undef,$filterFunc); - @resources= sort { - my ($atitle,$btitle) = (lc($a->compTitle),lc($b->compTitle)); - $atitle=~s/^\s*//; - $btitle=~s/^\s*//; - return $atitle cmp $btitle - } @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'});