--- loncom/interface/lonwhatsnew.pm 2006/01/06 21:04:34 1.43 +++ loncom/interface/lonwhatsnew.pm 2006/01/06 21:52:19 1.44 @@ -1,5 +1,5 @@ # -# $Id: lonwhatsnew.pm,v 1.43 2006/01/06 21:04:34 albertel Exp $ +# $Id: lonwhatsnew.pm,v 1.44 2006/01/06 21:52:19 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -58,28 +58,36 @@ sub handler { my $command = $env{'form.command'}; my $refpage = $env{'form.refpage'}; - &Apache::loncommon::content_type($r,'text/html'); - $r->send_http_header; + my %checkallowed = ( coursenormalmail => 1, + coursecritmail => 1, ); + foreach my $perm_check (['whn','whatsnew',1], + ['pch','coursediscussion',1], + ['mgr','handgrading',1], + ['vgr','abovethreshold',1], + ['opa','haserrors',1], + ['mdc','versionchanges',0], + ) { + my ($perm,$key,$check_section) = @{ $perm_check }; + my $scope = $env{'request.course.id'}; + if (!($checkallowed{$key} = &Apache::lonnet::allowed($perm,$scope))) { + $scope .= '/'.$env{'request.course.sec'}; + if ( $check_section ) { + $checkallowed{$key} = &Apache::lonnet::allowed($perm,$scope); + } + if ($checkallowed{$key}) { + $checkallowed{$key.'_section'} = $env{'request.course.sec'}; + } + } + } - if ( ! $env{'request.course.fn'} - || - (!( &Apache::lonnet::allowed('whn',$env{'request.course.id'}) - || &Apache::lonnet::allowed('whn',$env{'request.course.id'} - .'/'.$env{'request.course.sec'})))) { + if ( ! $env{'request.course.fn'} || ! $checkallowed{'whatsnew'}) { # Not in a course, or no whn priv in course $env{'user.error.msg'}="/adm/whatsnew::whn:0:0:Cannot display what's new page"; return HTTP_NOT_ACCEPTABLE; } - my %checkallowed = ( - coursediscussion => &Apache::lonnet::allowed('pch',$env{'request.course.id'}), - handgrading => &Apache::lonnet::allowed('mgr',$env{'request.course.id'}), - abovethreshold => &Apache::lonnet::allowed('vgr',$env{'request.course.id'}), - haserrors => &Apache::lonnet::allowed('opa',$env{'request.course.id'}), - versionchanges => &Apache::lonnet::allowed('opa',$env{'request.course.id'}), - coursenormalmail => 1, - coursecritmail => 1, - ); + &Apache::loncommon::content_type($r,'text/html'); + $r->send_http_header; $r->print(&display_header($command,\%checkallowed)); @@ -87,19 +95,19 @@ sub handler { &Apache::lonhtmlcommon::add_breadcrumb ({href=>'/adm/whatsnew', text=>"Display Action Items"}); - if (($command eq 'chgthreshold') && (&Apache::lonnet::allowed('vgr',$env{'request.course.id'}))) { + if (($command eq 'chgthreshold') && $checkallowed{'abovethreshold'}) { &Apache::lonhtmlcommon::add_breadcrumb ({href=>'/adm/whatsnew?command=chgthreshold&refpage='.$refpage, text=>"Change thresholds"}); $r->print(&Apache::lonhtmlcommon::breadcrumbs (undef,"What's New?",'Course_Action_Items_Thresholds')); - } elsif (($command eq 'chginterval') && (&Apache::lonnet::allowed('vgr',$env{'request.course.id'}))) { + } elsif (($command eq 'chginterval') && $checkallowed{'versionchanges'} ) { &Apache::lonhtmlcommon::add_breadcrumb ({href=>'/adm/whatsnew?command=chginterval&refpage='.$refpage, text=>"Change interval"}); $r->print(&Apache::lonhtmlcommon::breadcrumbs (undef,"What's New?",'Course_Action_Items_Intervals')); - } elsif (($command eq 'chgdisc') && (&Apache::lonnet::allowed('pch',$env{'request.course.id'}))) { + } elsif (($command eq 'chgdisc') && $checkallowed{'coursediscussion'}) { &Apache::lonhtmlcommon::add_breadcrumb ({href=>'/adm/whatsnew?command=chgdisc&refpage='.$refpage, text=>"Change discussion display"}); @@ -154,15 +162,15 @@ sub display_main_box { my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $crs = $env{'course.'.$env{'request.course.id'}.'.num'}; - if (($command eq 'chgthreshold') && - (&Apache::lonnet::allowed('vgr',$env{'request.course.id'}))) { + if (($command eq 'chgthreshold') + && $checkallowed->{'abovethreshold'}) { &display_threshold_config($r,$refpage,$tabbg,\%threshold_titles, $cdom,$crs); - } elsif (($command eq 'chginterval') && - (&Apache::lonnet::allowed('opa',$env{'request.course.id'}))) { + } elsif (($command eq 'chginterval') + && $checkallowed->{'versionchanges'}) { &display_interval_config($r,$refpage,\%interval_titles); - } elsif (($command eq 'chgdisc') && - (&Apache::lonnet::allowed('pch',$env{'request.course.id'}))) { + } elsif (($command eq 'chgdisc') + && $checkallowed->{'coursediscussion'}) { &display_discussion_config($r,$refpage); } elsif ($command eq 'courseinit') { &courseinit_config($r,$refpage,\%initpage); @@ -202,6 +210,7 @@ function change_display(caller,change) { function changeAll(change) { END foreach my $item (keys(%{$checkallowed})) { + if ($item =~ /_section$/) { next; } if ($$checkallowed{$item}) { $scripttag.='document.visible.display_'.$item.'.value=change'. "\n"; @@ -365,6 +374,7 @@ sub display_actions_box { my @actionorder = ('handgrading','haserrors','abovethreshold','versionchanges','coursediscussion','coursenormalmail','coursecritmail'); foreach my $key (keys(%{$checkallowed})) { + if ($key =~ /_section$/) { next; } $show{$key} = 0; if ($$checkallowed{$key}) { unless ($display_settings{$cid.':'.$key} eq 'hide') { @@ -396,6 +406,7 @@ sub display_actions_box {   $lt{'shal'}
\n|); foreach my $item (keys(%{$checkallowed})) { + if ($item =~ /_section$/) { next; } if ($$checkallowed{$item}) { $r->print(''."\n"); } @@ -406,6 +417,8 @@ sub display_actions_box { my $displayed = 0; my $totalboxes = 0; foreach my $key (keys(%{$checkallowed})) { + if ($key =~ /_section$/) { next; } + if ($key eq 'whatsnew' ) { next; } # whatsnew check creates no box if ($$checkallowed{$key}) { $totalboxes ++; } @@ -1416,6 +1429,7 @@ sub store_display_settings { my %whatsnew_settings; my $result; foreach my $key (keys(%{$checkallowed})) { + if ($key =~ /_section$/) { next; } if (exists($env{'form.display_'.$key})) { unless ($env{'form.display_'.$key} eq '') { $whatsnew_settings{$cid.':'.$key} = $env{'form.display_'.$key};