|
Server : Apache/2.4.62 System : FreeBSD fbsdweb2.web.rcn.net 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC amd64 User : www ( 80) PHP Version : 8.3.8 Disable Function : NONE Directory : /domains/compasssysweb/calendar/CalciumDir39/Operation/ |
Upload File : |
# Copyright 1999-2003, Fred Steinberg, Brown Bear Software
# Popup Window
package PopupWindow;
use strict;
use CGI (':standard');
use Calendar::Date;
use Calendar::Javascript;
use vars ('@ISA');
@ISA = ('Operation');
sub perform {
my $self = shift;
my ($date, $id, $source, $doneURL) = $self->getParams (qw (Date ID Source
DoneURL));
# DoneURL used if no JS
unless (defined ($date) && defined ($id)) {
warn "Bad Params to Popup Window";
return;
}
my $cgi = CGI->new;
my $name = $self->calendarName();
my $i18n = $self->I18N;
my $prefs = $self->prefs;
# Get the colors
my $bg = $prefs->color ('PopupBG') || 'white';
my $fg = $prefs->color ('PopupFG') || 'black';
my $dateFG = $prefs->color ('PopupDateFG') || 'black';
my $dateBG = $prefs->color ('PopupDateBG') || 'white';
# Get the Event; if no source, not an included event
# Some browswers (Opera) set source to ' ' instead of ''
undef $source if ($source =~ /^\s+$/);
my ($db, $sourceName, $addInName);
if (!$source) {
$db = $self->db;
$sourceName = $name;
} else {
$sourceName = $source;
if ($source !~ /^ADDIN /) {
$db = Database->new ($source);
} else {
$sourceName =~ s/^ADDIN //;
$addInName = $sourceName;
$sourceName = $name;
$db = AddIn->new ($addInName, $self->db);
}
}
my $event = $db->getEvent ($date, $id);
# If TZ offset, might not have right date.
unless ($event) {
($event, $date) = $db->getEventById ($id);
}
$date = Date->new ($date);
$self->{audit_date} = $date;
$self->{audit_eventtext} = $event ? $event->text : 'event not found';
# And display everything
print $cgi->header;
print $cgi->start_html (-Title => "$sourceName",
-bgcolor => $bg,
-text => $fg);
my ($face, $size) = $prefs->font ('PopupDate');
my %fontHash = (-color => $dateFG);
$fontHash{-face} = $face if $face;
$fontHash{-size} = $size if $size;
my $offset = $prefs->Timezone || 0;
my $displayDate = $date;
if ($event and $offset) {
$displayDate = $event->getDisplayDate ($date, $offset);
}
my $theDate = $cgi->font (\%fontHash, $displayDate->pretty ($i18n));
if ($event and $event->isRepeating and $event->repeatInfo->bannerize) {
my $start = $event->getDisplayDate ($event->repeatInfo->startDate);
my $end = $event->getDisplayDate ($event->repeatInfo->endDate);
$theDate = $cgi->font (\%fontHash,
$start->pretty ($i18n) . ' - ' .
$end->pretty ($i18n));
$date = $start;
}
if ($event && $event->hasTime) {
my $text;
if (!$offset) {
$text = $event->getTimeString ('both', $prefs) || '';
} else {
my $milTime = $prefs->MilitaryTime;
my ($start, $end) = $event->getDisplayTime ($offset);
$text = Event->getTimeString ($start, $milTime) || '';
if (defined $end) {
$text .= ' - ' . Event->getTimeString ($end, $milTime);
}
}
if ($event->timePeriod) {
my ($name, $s, $e, $which) =
$prefs->getTimePeriod ($event->timePeriod);
if ($name) {
$text = $name . ": $text";
}
}
$theDate .= '<br>' . $cgi->font (\%fontHash, $text);
}
print $cgi->table ({-bgcolor => $dateBG}, Tr (td ($theDate)));
print '<p>';
my $messageFace = '';
if ($event) {
my $escapeIt = $prefs->EventHTML =~ /none/;
my $text = $event->escapedText ($escapeIt, 'newWindow');
($face, $size) = $prefs->font ('PopupEvent');
undef %fontHash;
$fontHash{-face} = $face if $face;
$fontHash{-size} = $size if $size;
print $cgi->font (\%fontHash, $text);
print '<p>';
$text = $event->escapedPopup ($escapeIt, 'newWindow');
($face, $size) = $prefs->font ('PopupText');
undef %fontHash;
$fontHash{-face} = $face if $face;
$fontHash{-size} = $size if $size;
print $cgi->font (\%fontHash, $text);
print '</p>';
$messageFace = $face || '';
my $today = Date->new;
if (Defines->mailEnabled and $prefs->RemindersOn and $date > $today) {
print '<hr width="50%">';
my ($email, $doIt) = $self->getParams (qw (EmailAddress
SubscribeMe));
if ($doIt) {
SUBSCRIBE: {
if (!$email or $email =~ /[\s,]/) {
print $cgi->font ({-face => $messageFace},
$i18n->get ("Please enter a single email address."));
last SUBSCRIBE;
}
my @all = $prefs->getRemindAllAddresses;
if (grep {lc($email) eq lc ($_)} @all) {
print $cgi->font ({-face => $messageFace},
"'$email' " .
$i18n->get ('is already signed up to receive ' .
'mail for all events in this ' .
'calendar.'));
last SUBSCRIBE;
}
if (defined $event->category) {
my $cats = $prefs->getRemindByCategory;
my $addrs = $cats->{$event->category};
if ($addrs and grep {lc($email) eq lc ($_)} @$addrs) {
print $cgi->font ({-face => $messageFace},
"'$email' " .
$i18n->get ('is already signed up to ' .
'receive mail for all events in ' .
'this category.'));
last SUBSCRIBE;
}
}
if ($event->isSubscribed ($email, $name)) {
print $cgi->font ({-face => $messageFace},
"'$email' " .
$i18n->get ('is already signed up to receive' .
' mail for this event.'));
last SUBSCRIBE;
}
$event->addSubscriber ($email, $name);
$db->replaceEvent ($event, $date);
print $cgi->font ({-face => $messageFace},
$i18n->get ("Email will be sent to") .
"'$email'" . '.');
$self->{audit_subscribed} = $email;
}
}
print '<center>';
print $cgi->startform;
my $user = User->getUser ($self->getUsername); # must re-get DB
my $userEmail = $user ? $user->email : '';
print '<b>';
print $cgi->font ({-face => $messageFace},
$i18n->get ('Email Address:') . ' ');
print '</b>';
print $cgi->textfield (-name => 'EmailAddress',
-default => $userEmail,
-size => 20,
-maxlength => 100);
print ' ';
print $cgi->submit (-name => 'SubscribeMe',
-value => $i18n->get ('Remind Me'));
print '<br> ';
print $cgi->font ({-size => "-1", -face => $messageFace},
$i18n->get ('Sign up to be notified by email ' .
'before this event takes place.'));
print $cgi->hidden (-name => 'Op', -value => __PACKAGE__);
print $cgi->hidden (-name => 'CalendarName',-value => $name);
print $cgi->hidden (-name => 'Date',-value => "$date");
print $cgi->hidden (-name => 'ID',-value => $id);
print $cgi->hidden (-name => 'Source',-value => $source);
print $cgi->hidden (-name => 'DoneURL', -value => $doneURL)
if ($doneURL);
print $cgi->endform;
print '</center>';
}
if ($prefs->PopupExportOn) {
print '<hr width="50%">';
my $url = $self->makeURL ({Op => 'vCalEventExport',
CalendarName => $sourceName,
Date => $date,
ID => $id,
AddInName => $addInName,
FullURL => 1});
print '<center>';
print $cgi->a ({-href => $url},
"<font color='$fg' face='$messageFace'>" .
$i18n->get ('Download as iCalendar') . '</font>');
print '</center><br/>';
}
} else {
print $i18n->get ('Warning! This Event has been Deleted.');
}
print '</p>';
if ($doneURL) {
my $font = "<font color='$fg' face='$messageFace' size='+1'>";
print $cgi->a ({-href => $doneURL},
$font . $i18n->get ('Done') . '</font>');
} else {
print $cgi->startform;
print $cgi->button ({-value => $i18n->get ('Close'),
-onClick => 'window.close()'});
print $cgi->endform;
}
print $cgi->end_html;
}
# if it was a subscription request, override the 'View' default
sub auditType {
if (shift->{audit_subscribed}) {
return 'Subscribe';
}
return 'View';
}
sub auditString {
my ($self, $short) = @_;
my $line = $self->SUPER::auditString ($short);
$self->{audit_eventtext} =~ s/\n/\\n/g;
$line .= ' ' . $self->{audit_date} . ' ' . $self->{audit_eventtext};
$line .= "\nSubscribed: $self->{audit_subscribed}"
if ($self->{audit_subscribed});
return $line;
}
1;