--- loncom/interface/lonnavmaps.pm 2006/03/16 20:48:30 1.371 +++ loncom/interface/lonnavmaps.pm 2006/04/10 21:40:08 1.376 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.371 2006/03/16 20:48:30 albertel Exp $ +# $Id: lonnavmaps.pm,v 1.376 2006/04/10 21:40:08 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -203,10 +203,13 @@ MENU ENDSUBM - $r->print(&Apache::lonxml::xmlbegin(). - &Apache::loncommon::head(undef,$js). - ''. - &Apache::loncommon::end_page(undef,$js)); + $r->print(&Apache::loncommon::start_page(undef,$js, + {'only_body' => 1, + 'bgcolor' => '#FFFFFF', + 'add_entries' => + {'onload' => + "submitthis()"}}). + &Apache::loncommon::end_page()); return OK; } @@ -243,8 +246,6 @@ MENU &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['register','sort','showOnlyHomework','postsymb']); # ----------------------------------------------------- Force menu registration - my $addentries=''; - my $more_unload; my $body_only=''; my $js; if ($env{'environment.remotenavmap'} eq 'on') { @@ -253,33 +254,23 @@ MENU this.document.location="/adm/navmaps?collapseExternal"; } '; -# 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(). - '" onUnload="'.&Apache::lonmenu::unloadevents().';'. - $more_unload.'"'; - $r->print(&Apache::lonmenu::registerurl(1)); - } else { - $addentries=' onUnload="'.$more_unload.'"'; - } # Header - $r->print(&Apache::lonxml::xmlbegin(). - &Apache::loncommon::head('Navigate Course Contents',$js). - &Apache::loncommon::bodytag('Navigate Course Contents','', - $addentries,$body_only,'', - $env{'form.register'})); - $r->print(''); + $r->print(&Apache::loncommon::start_page('Navigate Course Contents',$js, + {'only_body' => $body_only, + 'force_register' => + $env{'form.register'},})); + $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.' . + $r->print(''.&mt('Coursemap undefined.'). + '' . &Apache::loncommon::end_page()); return OK; } @@ -2355,10 +2346,11 @@ sub unread_discussion { my $symb = shift; $self->get_discussion_data(); - - my $ressymb = $self->wrap_symb($symb); - my $version = $self->{DISCUSSION_DATA}{'version:'.$ressymb}; + my $ressymb = $self->wrap_symb($symb); + # keys used to store bulletinboard postings use 'unwrapped' symb. + my $discsymb = $self->unwrap_symb($ressymb); + my $version = $self->{DISCUSSION_DATA}{'version:'.$discsymb}; if (!$version) { return; } my $prevread = $self->{LAST_READ}{$ressymb}; @@ -2371,24 +2363,24 @@ sub unread_discussion { my %subjects; for (my $id=$version; $id>0; $id--) { - my $vkeys=$self->{DISCUSSION_DATA}{$id.':keys:'.$ressymb}; + my $vkeys=$self->{DISCUSSION_DATA}{$id.':keys:'.$discsymb}; my @keys=split(/:/,$vkeys); if (grep(/^hidden$/ ,@keys)) { if (!$hiddenflag) { - $hidden = $self->{DISCUSSION_DATA}{$id.':'.$ressymb.':hidden'}; + $hidden = $self->{DISCUSSION_DATA}{$id.':'.$discsymb.':hidden'}; $hiddenflag = 1; } } elsif (grep(/^deleted$/,@keys)) { if (!$deletedflag) { - $deleted = $self->{DISCUSSION_DATA}{$id.':'.$ressymb.':deleted'}; + $deleted = $self->{DISCUSSION_DATA}{$id.':'.$discsymb.':deleted'}; $deletedflag = 1; } } else { if (($hidden !~/\.$id\./) && ($deleted !~/\.$id\./) - && $prevread < $self->{DISCUSSION_DATA}{$id.':'.$ressymb.':timestamp'}) { + && $prevread < $self->{DISCUSSION_DATA}{$id.':'.$discsymb.':timestamp'}) { $unreadcount++; $subjects{$unreadcount}= - $id.': '.$self->{DISCUSSION_DATA}{$id.':'.$ressymb.':subject'}; + $id.': '.$self->{DISCUSSION_DATA}{$id.':'.$discsymb.':subject'}; } } } @@ -2401,7 +2393,7 @@ sub unread_discussion { sub wrap_symb { my $self = shift; my $symb = shift; - if ($symb =~ m-___(adm/\w+/\w+/)(\d+)(/bulletinboard)$-) { + if ($symb =~ m-___(adm/[^/]+/[^/]+/)(\d+)(/bulletinboard)$-) { unless ($symb =~ m|adm/wrapper/adm|) { $symb = 'bulletin___'.$2.'___adm/wrapper/'.$1.$2.$3; } @@ -2409,6 +2401,16 @@ sub wrap_symb { return $symb; } +sub unwrap_symb { + my $self = shift; + my $ressymb = shift; + my $discsymb = $ressymb; + if ($ressymb =~ m-^(bulletin___\d+___)adm/wrapper/(adm/[^/]+/[^/]+/\d+/bulletinboard)$-) { + $discsymb = $1.$2; + } + return $discsymb; +} + # Private method: Does the given resource (as a symb string) have # current feedback? Returns the string in the feedback hash, which # will be false if it does not exist.