--- loncom/interface/lonannounce.pm 2003/05/21 20:10:53 1.11
+++ loncom/interface/lonannounce.pm 2003/09/02 21:15:59 1.18
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Announce
#
-# $Id: lonannounce.pm,v 1.11 2003/05/21 20:10:53 www Exp $
+# $Id: lonannounce.pm,v 1.18 2003/09/02 21:15:59 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,7 +76,7 @@ sub emptycell {
}
sub normalcell {
- my ($day,$text)=@_;
+ my ($day,$month,$year,$text)=@_;
my $output='';
foreach (split(/\_\_\_\&\&\&\_\_\_/,$text)) {
if ($_) {
@@ -81,16 +85,24 @@ sub normalcell {
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.'
';
+ return '
'.$day.' '.$output.'
';
}
sub plaincell {
@@ -102,6 +114,8 @@ sub plaincell {
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,40).'... ';
}
@@ -144,7 +158,8 @@ sub showday {
}
}
unless ($mode) {
- return ($nextday,$nextmonth,&normalcell($th{'day'},$outp));
+ return ($nextday,$nextmonth,&normalcell(
+ $th{'day'},$th{'month'},$th{'year'},$outp));
} elsif ($outp) {
if ($mode==1) {
return ' '.&plaincell($outp);
@@ -164,16 +179,22 @@ 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']);
+ ['month','year','pickdate']);
# --------------------------------------------------- Decide what month to show
my $year=$todayhash{'year'};
if ($ENV{'form.year'}) { $year=$ENV{'form.year'}; }
my $month=$todayhash{'month'};
if ($ENV{'form.month'}) { $month=$ENV{'form.month'}; }
+
+# ---------------------------------------------- See if we are in pickdate mode
+ my $pickdatemode=($ENV{'form.pickdate'} eq 'yes');
+
# --------------------------------------------- Find out first day of the month
my %firstday=&Apache::loncommon::timehash(
@@ -202,13 +223,62 @@ sub handler {
ENDDOCUMENT
- $r->print(&Apache::loncommon::bodytag("Announcements and Calendar"));
+ if ($pickdatemode) {
+# no big header in pickdate mode
+ $r->print(&Apache::loncommon::bodytag("Pick a Date",'','',1).
+ '');
+ } else {
+ $r->print(&Apache::loncommon::bodytag("Announcements and Calendar"));
+ }
# does this user have privileges to post, etc?
my $allowed=0;
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','/');
+ }
+# -------------------------------- BUT: do no fancy stuff when in pickdate mode
+ if ($pickdatemode) {
+ $serverpost=0;
+ $allowed=0;
+ }
+# ------------------------------------------------------------ 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'};
@@ -256,11 +326,25 @@ 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('