--- loncom/interface/lonwhatsnew.pm 2005/04/18 20:35:07 1.11 +++ loncom/interface/lonwhatsnew.pm 2005/12/22 02:38:44 1.41 @@ -1,5 +1,5 @@ # -# $Id: lonwhatsnew.pm,v 1.11 2005/04/18 20:35:07 raeburn Exp $ +# $Id: lonwhatsnew.pm,v 1.41 2005/12/22 02:38:44 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -35,8 +35,10 @@ use Apache::lonhtmlcommon(); use Apache::lonlocal; use Apache::loncoursedata(); use Apache::lonnavmaps(); +use Apache::lonuserstate; use Apache::Constants qw(:common :http); use Time::Local; +use GDBM_File; #---------------------------- # handler @@ -50,38 +52,69 @@ sub handler { $r->send_http_header; return OK; } - &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['command']); + &Apache::loncommon::get_unprocessed_cgi( + $ENV{'QUERY_STRING'},['command','refpage']); my $command = $env{'form.command'}; - - if ($command eq '') { - $command = "info"; - } + my $refpage = $env{'form.refpage'}; &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; - $r->print(&display_header()); - if (! (($env{'request.course.fn'}) && (&Apache::lonnet::allowed('vsa',$env{'request.course.id'})))) { - # Not in a course, or not allowed to modify parms - $env{'user.error.msg'}="/adm/whatsnew:vsa:0:0:Cannot display student activity"; + my $crsid = $env{'request.course.id'}; + $crsid =~ s/_/\//; + if ((!($env{'request.course.id'})) || + ($env{'request.role'} !~ /\Q$crsid\E$/)) { + # Not in a course, or no role in course + $env{'user.error.msg'}="/adm/whatsnew::0:0:Cannot display what's new screen"; 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, + ); + + $r->print(&display_header($command,\%checkallowed)); + &Apache::lonhtmlcommon::clear_breadcrumbs(); - if ($command eq 'config') { + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>'/adm/whatsnew', + text=>"Display Action Items"}); + if (($command eq 'chgthreshold') && (&Apache::lonnet::allowed('vgr',$env{'request.course.id'}))) { &Apache::lonhtmlcommon::add_breadcrumb - ({href=>'/adm/whatsnew?command=config', - text=>"Configure display"}); + ({href=>'/adm/whatsnew?command=chgthreshold&refpage='.$refpage, + text=>"Change thresholds"}); $r->print(&Apache::lonhtmlcommon::breadcrumbs - (undef,'Course Action Items','Course_Action_Items_Config')); - } else { + (undef,"What's New?",'Course_Action_Items_Thresholds')); + } elsif (($command eq 'chginterval') && (&Apache::lonnet::allowed('vgr',$env{'request.course.id'}))) { &Apache::lonhtmlcommon::add_breadcrumb - ({href=>'/adm/whatsnew?command=info', - text=>"Display Action Items"}); + ({href=>'/adm/whatsnew?command=chginterval&refpage='.$refpage, + text=>"Change interval"}); $r->print(&Apache::lonhtmlcommon::breadcrumbs - (undef,'Course Action Items','Course_Action_Items_Display')); + (undef,"What's New?",'Course_Action_Items_Intervals')); + } elsif (($command eq 'chgdisc') && (&Apache::lonnet::allowed('pch',$env{'request.course.id'}))) { + &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')); + } 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')); + } else { + $r->print(&Apache::lonhtmlcommon::breadcrumbs + (undef,"What's New?",'Course_Action_Items_Display')); } - &display_main_box($r,$command); + &display_main_box($r,$command,$refpage,\%checkallowed); + return OK; } #------------------------------ @@ -91,33 +124,49 @@ sub handler { #------------------------------ sub display_main_box { - my ($r,$command) = @_; + my ($r,$command,$refpage,$checkallowed) = @_; my $domain=&Apache::loncommon::determinedomain(); - my $tabbg=&Apache::loncommon::designparm('coordinator.tabbg',$domain); - my $selconfig; - my $selinfo; - if ($command eq 'config') { - $selinfo = 'selected="selected"'; - } else { - $selconfig = 'selected="selected"'; - } - my $picker = (' -
'); - + my $function = &Apache::loncommon::get_users_function(); + my $tabbg=&Apache::loncommon::designparm($function.'.tabbg',$domain); $r->print('');
-
- if ($command eq 'config') {
- &display_config_box($r,$picker);
+
+ my %threshold_titles = &Apache::lonlocal::texthash (
+ av_attempts => 'Average number of attempts',
+ degdiff => 'Degree of difficulty',
+ numstudents => 'Total number of students with submissions',
+ );
+
+ my %interval_titles = &Apache::lonlocal::texthash (
+ -1 => 'since start of course',
+ 2592000 => 'since last month',
+ 604800 => 'since last week',
+ 86400 => 'since yesterday',
+ );
+
+ my %initpage = &Apache::lonlocal::texthash (
+ firstres => 'first resource in the course',
+ whatsnew => "what's new? page",
+ userpref => 'your general user preferences',
+ coursespecific => 'specific setting for this course',
+ );
+ 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'}))) {
+ &display_threshold_config($r,$refpage,$tabbg,\%threshold_titles,
+ $cdom,$crs);
+ } elsif (($command eq 'chginterval') &&
+ (&Apache::lonnet::allowed('opa',$env{'request.course.id'}))) {
+ &display_interval_config($r,$refpage,\%interval_titles);
+ } elsif (($command eq 'chgdisc') &&
+ (&Apache::lonnet::allowed('pch',$env{'request.course.id'}))) {
+ &display_discussion_config($r,$refpage);
+ } elsif ($command eq 'courseinit') {
+ &courseinit_config($r,$refpage,\%initpage);
} else {
- &display_actions_box($r,$picker);
+ &display_actions_box($r,$tabbg,$command,$refpage,\%threshold_titles,
+ \%interval_titles,\%initpage,$cdom,$crs,$checkallowed);
}
$r->print(< '); + unless ($cid) { + $r->print(' '); return; } - $r->print(''.$picker.'
'); + $r->rflush(); -## BOMBS ## - $r->print(<<"END"); -
'); -# DEGDIFF AND AV. TRIES TRIGGERS - $r->print(<<"END"); -
'); - $r->print(' | ');
+ $headings{'abovethreshold'} = &mt('Problems with av. attempts').' ≥ '.$threshold{'av_attempts'}.' '.&mt('or deg. difficulty').' ≥ '.$threshold{'degdiff'}.' '.&mt('and total number of students with submissions').' ≥ '.$threshold{'numstudents'}; -## UNREAD COURSE DISCUSSION POSTS ## - $r->print(<<"END"); -
'); -## MESSAGES ## - $r->print(<
- |
|