--- loncom/interface/lonannounce.pm 2003/05/21 19:15:41 1.10
+++ loncom/interface/lonannounce.pm 2003/08/12 19:46:04 1.17
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Announce
#
-# $Id: lonannounce.pm,v 1.10 2003/05/21 19:15:41 www Exp $
+# $Id: lonannounce.pm,v 1.17 2003/08/12 19:46:04 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -32,6 +32,10 @@ use strict;
use Apache::Constants qw(:common);
use Apache::loncommon;
use Apache::lonhtmlcommon();
+use HTML::Entities();
+
+my %todayhash;
+my %showedcheck;
sub editfield {
my ($r,$start,$end,$text)=@_;
@@ -72,24 +76,66 @@ sub emptycell {
}
sub normalcell {
- my ($day,$text)=@_;
+ my ($day,$month,$year,$text)=@_;
my $output='';
foreach (split(/\_\_\_\&\&\&\_\_\_/,$text)) {
if ($_) {
my ($courseid,$start,$end,@msg)=split(/\@/,$_);
my $msg=join('@',@msg);
- my $fullmsg=$ENV{'course.'.$courseid.'.description'}.': '.$msg;
+ my $fullmsg=$ENV{'course.'.$courseid.'.description'}.
+ ', '.localtime($start).' - '.localtime($end).': '.$msg;
if ($courseid eq $ENV{'request.course.id'}) {
- if (&Apache::lonnet::allowed('srm',$ENV{'request.course.id'})) {
+ if ((&Apache::lonnet::allowed('srm',$ENV{'request.course.id'}))
+ && (!$showedcheck{$start.'_'.$end})) {
$output.='';
+ $showedcheck{$start.'_'.$end}=1;
}
}
+ $fullmsg=&HTML::Entities::encode($fullmsg,'<>&"\'');
+ $fullmsg=~s/&/\\&/g;
+ $output.=''.
+ substr($msg,0,20).'...
';
+ }
+ }
+ return '
'.$day.' '.$output.' | ';
+}
+
+sub plaincell {
+ my ($text)=@_;
+ my $output='';
+ foreach (split(/\_\_\_\&\&\&\_\_\_/,$text)) {
+ if ($_) {
+ my ($courseid,$start,$end,@msg)=split(/\@/,$_);
+ my $msg=join('@',@msg);
+ my $fullmsg=$ENV{'course.'.$courseid.'.description'}.
+ ', '.localtime($start).' - '.localtime($end).': '.$msg;
+ $fullmsg=&HTML::Entities::encode($fullmsg,'<>&"\'');
+ $fullmsg=~s/&/\\&/g;
$output.=''.
- substr($msg,0,20).'...
';
+ substr($msg,0,40).'...
';
+ }
+ }
+ return $output;
+}
+
+sub listcell {
+ my ($text)=@_;
+ my $output='';
+ foreach (split(/\_\_\_\&\&\&\_\_\_/,$text)) {
+ if ($_) {
+ my ($courseid,$start,$end,@msg)=split(/\@/,$_);
+ my $msg=join('@',@msg);
+ my $fullmsg=localtime($start).' to '.localtime($end).':
'.
+ $msg.'';
+ $output.=''.$fullmsg.'';
}
}
- return ''.$day.' '.$output.' | ';
+ return $output;
}
sub nextday {
@@ -99,7 +145,7 @@ sub nextday {
}
sub showday {
- my ($tk,%allcal)=@_;
+ my ($tk,$mode,%allcal)=@_;
my %th=&Apache::loncommon::timehash($tk);
my ($nextday,$nextmonth)=&nextday(%th);
my $outp='';
@@ -111,7 +157,18 @@ sub showday {
$allcal{$_};
}
}
- return ($nextday,$nextmonth,&normalcell($th{'day'},$outp));
+ unless ($mode) {
+ return ($nextday,$nextmonth,&normalcell(
+ $th{'day'},$th{'month'},$th{'year'},$outp));
+ } elsif ($outp) {
+ if ($mode==1) {
+ return '
'.&plaincell($outp);
+ } else {
+ return '';
+ }
+ } else {
+ return '';
+ }
}
sub handler {
@@ -122,8 +179,10 @@ sub handler {
# ---------------------------------------------------------- Get time right now
my $today=time;
- my %todayhash=&Apache::loncommon::timehash($today);
-
+ %todayhash=&Apache::loncommon::timehash($today);
+# ----------------------------------------------------------------- Check marks
+ %showedcheck=();
+ undef %showedcheck;
# ---------------------------------------------------------- Get month and year
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
['month','year']);
@@ -166,7 +225,45 @@ ENDDOCUMENT
if ($ENV{'request.course.id'}) {
$allowed=&Apache::lonnet::allowed('srm',$ENV{'request.course.id'});
}
-
+# does this user have privileges to post to servers?
+ my $serverpost=0;
+ if ($ENV{'request.role.domain'}) {
+ $serverpost=&Apache::lonnet::allowed('psa',
+ $ENV{'request.role.domain'});
+ } else {
+ $serverpost=&Apache::lonnet::allowed('psa','/');
+ }
+# ------------------------------------------------------------ Process commands
+ if ($serverpost) {
+ if ($ENV{'form.serveraction'}) {
+ foreach (keys %ENV) {
+ if ($_=~/^form\.postto\_(\w+)/) {
+ $r->print(
+ '
Posting '.$1.': '.&Apache::lonnet::postannounce
+ ($1,$ENV{'form.serverannnounce'}));
+ }
+ }
+ }
+ $r->print(<
+Post Server Announcements
+Post announcements to the system login and roles screen
+(leave blank to delete announcement)
+
+Check machines:
+SERVERANNOUNCE
+# list servers
+ foreach (sort keys %Apache::lonnet::hostname) {
+ if (&Apache::lonnet::allowed('psa',$Apache::lonnet::hostdom{$_})) {
+ $r->print ('
'.
+ $_.' '.$Apache::lonnet::hostname{$_}.' '.
+ 'current');
+ }
+ }
+ $r->print(
+ '
');
+ }
if ($allowed) {
my $coursenum=$ENV{'course.'.$ENV{'request.course.id'}.'.num'};
my $coursedom=$ENV{'course.'.$ENV{'request.course.id'}.'.domain'};
@@ -214,11 +311,22 @@ ENDDOCUMENT
my ($pm,$py,$fm,$fy)=($month-1,$year,$month+1,$year);
if ($pm<1) { ($pm,$py)=(12,$year-1); }
if ($fm>12){ ($fm,$fy)=(1,$year+1); }
+
$r->print(''.('','January','February','March','April','May',
'June','July','August','September','October',
- 'November','December')[$month].' '.$year.'
'.
+ 'November','December')[$month].' '.$year.'');
+# Reached the end of times, give up
+ if (($year<1970) || ($year>2037)) {
+ $r->print('No calendar available for this date.
'.
+ 'Current Month