--- loncom/interface/lonannounce.pm 2003/05/23 16:14:33 1.12
+++ 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.12 2003/05/23 16:14:33 www Exp $
+# $Id: lonannounce.pm,v 1.18 2003/09/02 21:15:59 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -32,8 +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)=@_;
@@ -83,11 +85,15 @@ 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).'... ';
}
@@ -108,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).'... ';
}
@@ -172,15 +180,21 @@ sub handler {
# ---------------------------------------------------------- Get time right now
my $today=time;
%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(
@@ -209,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'};
@@ -263,13 +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('
'.
- 'Previous Month '.
- 'Next Month'.
+ 'November','December')[$month].' '.$year.'');
+# Reached the end of times, give up
+ if (($year<1970) || ($year>2037)) {
+ $r->print('