--- loncom/interface/lonwhatsnew.pm 2005/12/22 03:39:39 1.42
+++ loncom/interface/lonwhatsnew.pm 2006/01/12 09:32:26 1.49
@@ -1,5 +1,5 @@
#
-# $Id: lonwhatsnew.pm,v 1.42 2005/12/22 03:39:39 raeburn Exp $
+# $Id: lonwhatsnew.pm,v 1.49 2006/01/12 09:32:26 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -58,27 +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 $crsid = $env{'request.course.id'};
- $crsid =~ s/_/\//;
- if ((!($env{'request.course.fn'})) ||
- (!(&Apache::lonnet::allowed('whn',
- $env{'request.course.id'})))) {
- # Not in a course, or no role in course
+ 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'} || ! $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));
@@ -86,33 +95,38 @@ 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'}))) {
+ (undef,"What's New?",#'Course_Action_Items_Thresholds'
+ ));
+ } 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'}))) {
+ (undef,"What's New?",#'Course_Action_Items_Intervals'
+ ));
+ } elsif (($command eq 'chgdisc') && $checkallowed{'coursediscussion'}) {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>'/adm/whatsnew?command=chgdisc&refpage='.$refpage,
text=>"Change discussion display"});
$r->print(&Apache::lonhtmlcommon::breadcrumbs
- (undef,"What's New?",'Course_Action_Items_Intervals'));
+ (undef,"What's New?",#'Course_Action_Items_Intervals'
+ ));
} elsif ($command eq 'courseinit') {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>'/adm/whatsnew?command=courseinit&refpage='.$refpage,
text=>"Course initialization preference"});
$r->print(&Apache::lonhtmlcommon::breadcrumbs
- (undef,"What's New?",'Course_Action_Items_Initialization'));
+ (undef,"What's New?",#'Course_Action_Items_Initialization'
+ ));
} else {
$r->print(&Apache::lonhtmlcommon::breadcrumbs
- (undef,"What's New?",'Course_Action_Items_Display'));
+ (undef,"What's New?",#'Course_Action_Items_Display'
+ ));
}
&display_main_box($r,$command,$refpage,\%checkallowed);
return OK;
@@ -153,15 +167,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);
@@ -201,6 +215,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";
@@ -301,7 +316,7 @@ sub display_actions_box {
}
}
$r->print($lt{'pgse'}.' '.&mt('Currently: [_1]',''.$currinit.'').
- ' '.&mt('[_1] for just [_2]','Change',
+ ' '.&mt('[_1] for just [_2]','Change',
'this course').' '.&mt('or for all [_1].',
'$lt{'shal'}
');
+ $r->print('
+
+  
+
+ ');
return;
}
@@ -603,14 +632,14 @@ $$initpage{$current}.
$lt{'padc'}
END
foreach my $choice (@chgstate) {
- $r->print(''.$$initpage{$choice}.' ');
+ $r->print('');
}
$r->print('
'.&mt('If').' '.$$initpage{'coursespecific'}.
'
'.$lt{'chce'}." \n");
foreach my $choice (@chgentry) {
- $r->print(''.$$initpage{$choice}.' ');
+ $r->print('');
}
$r->print('
');
@@ -866,6 +895,9 @@ sub check_thresholds {
if ($resource->handgrade($part) eq 'yes') {
next;
}
+ if ($resource->is_survey($part)) {
+ next;
+ }
%{$stats{$part}} = ();
my ($attempts,$users,$corrects,$degdiff,$av_attempts);
if (exists($$resourcetracker{$symb."\0".$part."\0attempts"})) {
@@ -1415,6 +1447,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};