--- loncom/interface/lonannounce.pm 2004/02/17 01:46:34 1.27 +++ loncom/interface/lonannounce.pm 2005/11/18 13:35:30 1.37 @@ -1,7 +1,7 @@ # The LearningOnline Network # Announce # -# $Id: lonannounce.pm,v 1.27 2004/02/17 01:46:34 www Exp $ +# $Id: lonannounce.pm,v 1.37 2005/11/18 13:35:30 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -33,6 +33,8 @@ use Apache::Constants qw(:common); use Apache::loncommon; use Apache::lonhtmlcommon(); use Apache::lonlocal; +use Apache::lonrss(); +use Apache::lonnet; use HTML::Entities(); my %todayhash; @@ -47,24 +49,29 @@ sub editfield { my $enddateform = &Apache::lonhtmlcommon::date_setter('anno', 'enddate', $end); - my $help=&Apache::loncommon::help_open_topic('Calendar_Add_Announcement'). - &Apache::loncommon::help_open_faq(274). - &Apache::loncommon::help_open_bug('Communication Tools'); + my $help=&Apache::loncommon::help_open_menu('','Calendar Add Announcement','Calendar_Add_Announcement','',274,'Communication Tools'); + my %lt=&Apache::lonlocal::texthash('post' => 'Post Announcement', + 'start' => 'Starting date', + 'end' => 'Ending date', + 'incrss' => 'Include in course RSS newsfeed'); + $r->print(< - - -
Starting date:$startdateform
Ending date:$enddateform
+ + +
$lt{'start'}:$startdateform
$lt{'end'}:$enddateform
-
+
+ +

ENDFORM } sub readcalendar { my $courseid=shift; - my $coursenum=$ENV{'course.'.$courseid.'.num'}; - my $coursedom=$ENV{'course.'.$courseid.'.domain'}; + my $coursenum=$env{'course.'.$courseid.'.num'}; + my $coursedom=$env{'course.'.$courseid.'.domain'}; my %thiscal=&Apache::lonnet::dump('calendar',$coursedom,$coursenum); my %returnhash=(); foreach (keys %thiscal) { @@ -72,7 +79,7 @@ sub readcalendar { $returnhash{$courseid.'@'.$_}=$thiscal{$_}; } } - if ($courseid eq $ENV{'request.course.id'}) { + if ($courseid eq $env{'request.course.id'}) { my %resourcedata= &Apache::lonnet::dump('resourcedata',$coursedom,$coursenum); foreach my $thiskey (sort keys %resourcedata) { @@ -81,6 +88,13 @@ sub readcalendar { ($thiskey=~/^(\w+)\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/); my $section=&mt('All Students'); if ($middle=~/^\[(.*)\]\./) { + my $sec=$1; + # if we have a section don't show ones that aren't ours + if ($env{'request.course.sec'} && + $env{'request.course.sec'} ne $sec) { next; } + # if a student without a section don't show any section ones + if (!$env{'request.role.adv'} && + !$env{'request.course.sec'}) { next; } $section=&mt('Group/Section').': '.$1; $middle=~s/^\[(.*)\]\.//; } @@ -92,9 +106,26 @@ sub readcalendar { $realm=&mt('Resource').': '.&Apache::lonnet::gettitle($middle); } my $datetype=''; - if ($name eq 'duedate') { $datetype=&mt('Due'); } + if ($name eq 'duedate') { + $datetype=&mt('Due'); +# see if accidentally answerdate is before duedate + my $answerkey=$thiskey; + $answerkey=~s/duedate$/answerdate/; + if ($resourcedata{$thiskey}>$resourcedata{$answerkey}) { + $datetype='Due and Answer Available'; + } + } if ($name eq 'opendate') { $datetype=&mt('Opening'); } - if ($name eq 'answerdate') { $datetype=&mt('Answer Available'); } + if ($name eq 'answerdate') { +# see if accidentally answerdate is before duedate + my $duekey=$thiskey; + $duekey=~s/answerdate$/duedate/; + if ($resourcedata{$duekey}>$resourcedata{$thiskey}) { +# forget it + next; + } + $datetype=&mt('Answer Available'); + } $returnhash{$courseid.'@'.$resourcedata{$thiskey}.'_'. $resourcedata{$thiskey}}= 'INTERNAL:'.$datetype.': '.$realm.' ('.$section.')'; @@ -120,33 +151,34 @@ sub normalcell { $msg=~s/INTERNAL\://gs; $internalflag=1; } - my $fullmsg=$ENV{'course.'.$courseid.'.description'}. - ', '.&Apache::lonlocal::locallocaltime($start); + my $fullmsg=&mt('Calendar Announcement for ').$env{'course.'.$courseid.'.description'}. + '\n'.&Apache::lonlocal::locallocaltime($start); if ($start!=$end) { $fullmsg.=' - '.&Apache::lonlocal::locallocaltime($end); } - $fullmsg.=': '.$msg; - if ($courseid eq $ENV{'request.course.id'}) { - if ((&Apache::lonnet::allowed('srm',$ENV{'request.course.id'})) + $fullmsg.=':\n'.$msg; + if ($courseid eq $env{'request.course.id'}) { + if ((&Apache::lonnet::allowed('srm',$env{'request.course.id'})) && (!$showedcheck{$start.'_'.$end}) - && ($ENV{'form.pickdate'} ne 'yes') + && ($env{'form.pickdate'} ne 'yes') && (!$internalflag)) { $output.=''; $showedcheck{$start.'_'.$end}=1; } } + $fullmsg=~s/[\n\r]/\\n/gs; $fullmsg=&HTML::Entities::encode($fullmsg,'<>&"\''); $fullmsg=~s/&/\\&/g; $output.=''. substr($msg,0,20).'...
'; } } - return ''.&tfont(''.&picklink($day,$day,$month,$year).'
'.$output).''; + '>'.&tfont(''.&picklink($day,$day,$month,$year).'
'.$output).''; } sub plaincell { @@ -156,17 +188,18 @@ sub plaincell { if ($_) { my ($courseid,$start,$end,@msg)=split(/\@/,$_); my $msg=join('@',@msg); - my $fullmsg=$ENV{'course.'.$courseid.'.description'}. - ', '.&Apache::lonlocal::locallocaltime($start); + my $fullmsg=&mt('Calendar Announcement for ').$env{'course.'.$courseid.'.description'}. + '\n'.&Apache::lonlocal::locallocaltime($start); if ($start!=$end) { $fullmsg.=' - '.&Apache::lonlocal::locallocaltime($end); } $msg=~s/INTERNAL\://gs; - $fullmsg.=': '.$msg; + $fullmsg.=':\n'.$msg; + $fullmsg=~s/[\n\r]/\\n/gs; $fullmsg=&HTML::Entities::encode($fullmsg,'<>&"\''); $fullmsg=~s/&/\\&/g; $output.=''. - substr($msg,0,40).'...
'; + substr($msg,0,80).'...
'; } } return $output; @@ -232,7 +265,7 @@ sub showday { sub tfont { my $text=shift; - if ($ENV{'form.pickdate'} eq 'yes') { + if ($env{'form.pickdate'} eq 'yes') { return ''.$text.''; } else { return $text; @@ -241,7 +274,7 @@ sub tfont { sub picklink { my ($text,$day,$month,$year)=@_; - if ($ENV{'form.pickdate'} eq 'yes') { + if ($env{'form.pickdate'} eq 'yes') { return ''. $text.''; } else { @@ -253,14 +286,14 @@ sub dialscript { return (< function dialin(day,month,year) { - opener.document.$ENV{'form.formname'}.$ENV{'form.element'}\_year.value=year; - var slct=opener.document.$ENV{'form.formname'}.$ENV{'form.element'}\_month; + opener.document.$env{'form.formname'}.$env{'form.element'}\_year.value=year; + var slct=opener.document.$env{'form.formname'}.$env{'form.element'}\_month; var i; for (i=0;i @@ -284,26 +317,26 @@ sub handler { ['month','year','pickdate','formname','element']); # --------------------------------------------------- Decide what month to show my $year=$todayhash{'year'}; - if ($ENV{'form.year'}) { $year=$ENV{'form.year'}; } + if ($env{'form.year'}) { $year=$env{'form.year'}; } my $month=$todayhash{'month'}; - if ($ENV{'form.month'}) { $month=$ENV{'form.month'}; } + if ($env{'form.month'}) { $month=$env{'form.month'}; } # ---------------------------------------------- See if we are in pickdate mode - my $pickdatemode=($ENV{'form.pickdate'} eq 'yes'); - my $pickinfo='&pickdate=yes&formname='.$ENV{'form.formname'}. - '&element='.$ENV{'form.element'}; + my $pickdatemode=($env{'form.pickdate'} eq 'yes'); + my $pickinfo='&pickdate=yes&formname='.$env{'form.formname'}. + '&element='.$env{'form.element'}; # --------------------------------------------- Find out first day of the month my %firstday=&Apache::loncommon::timehash( &Apache::loncommon::maketime( 'day' => 1, 'month'=> $month, 'year' => $year, 'hours' => 0, 'minutes' => 0, 'seconds' => 0, - 'dlsav' => $todayhash{'dlsav'} )); + 'dlsav' => -1 )); my $weekday=$firstday{'weekday'}; # ------------------------------------------------------------ Print the screen - + my $html=&Apache::lonxml::xmlbegin(); $r->print(< +$html The LearningOnline Network with CAPA