';
}
sub plaincell {
@@ -102,6 +116,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 +160,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);
@@ -156,24 +173,68 @@ sub showday {
}
}
+sub tfont {
+ my $text=shift;
+ if ($ENV{'form.pickdate'} eq 'yes') {
+ return ''.$text.'';
+ } else {
+ return $text;
+ }
+}
+
+sub picklink {
+ my ($text,$day,$month,$year)=@_;
+ if ($ENV{'form.pickdate'} eq 'yes') {
+ return ''.
+ $text.'';
+ } else {
+ return $text;
+ }
+}
+
+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;
+ var i;
+ for (i=0;i
+ENDDIA
+}
+
sub handler {
my $r = shift;
- $r->content_type('text/html');
+ &Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
return OK if $r->header_only;
# ---------------------------------------------------------- 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','formname','element']);
# --------------------------------------------------- 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');
+ my $pickinfo='&pickdate=yes&formname='.$ENV{'form.formname'}.
+ '&element='.$ENV{'form.element'};
# --------------------------------------------- Find out first day of the month
my %firstday=&Apache::loncommon::timehash(
@@ -202,13 +263,63 @@ 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).
+ &dialscript().
+ '');
+ } 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,13 +367,43 @@ 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('