|
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
# Delete all Events in a Date Range
package AdminDeleteEvents;
use strict;
use CGI;
use Calendar::Date;
use Calendar::GetHTML;
use vars ('@ISA');
@ISA = ('Operation');
sub perform {
my $self = shift;
my ($save, $cancel) = $self->getParams (qw (Save Cancel));
my ($calName) = $self->calendarName;
my $preferences = $self->prefs;
my $i18n = $self->I18N;
my $cgi = new CGI;
if ($cancel) {
print $self->redir ($self->makeURL({Op => 'AdminPage'}));
return;
}
my $message;
if ($save) {
my ($fromYear, $fromMonth, $fromDay) =
@{$self->{params}}{qw (FromYearPopup
FromMonthPopup
FromDayPopup)};
my ($toYear, $toMonth, $toDay) =
@{$self->{params}}{qw (ToYearPopup
ToMonthPopup
ToDayPopup)};
my $errorMessage;
if (!Date->valid ($fromYear, $fromMonth, $fromDay)) {
$errorMessage = $i18n->get ('<br>Invalid <b>From</b> Date');
}
if (!Date->valid ($toYear, $toMonth, $toDay)) {
$errorMessage = $i18n->get ('<br>Invalid <b>To</b> Date');
}
if ($errorMessage) {
GetHTML->errorPage ($i18n,
header => $i18n->get('Error deleting events'),
message => $errorMessage);
$self->{audit_error} = 'bad date';
return;
}
my $fromDate = Date->new ($fromYear, $fromMonth, $fromDay);
my $toDate = Date->new ($toYear, $toMonth, $toDay);
my $ids = $self->db->deleteEventsInRange ($fromDate, $toDate);
$self->{audit_formsaved}++;
$self->{audit_count} = @$ids + 0;
$self->{audit_from} = $fromDate;
$self->{audit_to} = $toDate;
$message = $i18n->get ('Number of events deleted') . ': ' .
$self->{audit_count};
}
print $cgi->header;
print $cgi->start_html ('-title' =>
$i18n->get ('Delete Events in a Range') .
": $calName",
'-bgcolor' => 'white');
print '<center>';
print GetHTML->AdminHeader (I18N => $i18n,
cal => $calName,
section => 'Delete Events');
print '<br>';
print $cgi->h2 ({size => +2}, $message) if $message;
print $i18n->get ('<b>All</b> events between the specified dates ' .
'will be deleted.');
print '</center>';
my $script = <<' END_JAVASCRIPT';
: <SCRIPT LANGUAGE="JavaScript">
: <!-- start
: // Make sure dates are OK (or cancel pressed)
: function submitCheck (theForm, baseYear) {
: if (theForm.Cancel.pressed) {
: return true;
: }
: fromMonth = theForm.FromMonthPopup.selectedIndex;
: fromDay = theForm.FromDayPopup.selectedIndex + 1;
: fromYear = theForm.FromYearPopup.selectedIndex + baseYear;
: toMonth = theForm.ToMonthPopup.selectedIndex;
: toDay = theForm.ToDayPopup.selectedIndex + 1;
: toYear = theForm.ToYearPopup.selectedIndex + baseYear;
: fromDate = new Date (fromYear, fromMonth, fromDay);
: toDate = new Date (toYear, toMonth, toDay);
: gotMonth = fromDate.getMonth();
: gotDay = fromDate.getDate();
: if (gotMonth != fromMonth || gotDay != fromDay) {
: alert ('From Date is invalid.');
: return false;
: }
: gotMonth = toDate.getMonth();
: gotDay = toDate.getDate();
: if (gotMonth != toMonth || gotDay != toDay) {
: alert ('To Date is invalid.');
: return false;
: }
: if (fromDate.valueOf() > toDate.valueOf()) {
: alert ('To Date cannot be before From Date.');
: return false;
: }
: return true;
: }
: // End -->
: </SCRIPT>
END_JAVASCRIPT
$script =~ s/^\s*:\s*//mg;
print $script;
my ($yearStart, $earliestDate);
$yearStart = Date->new;
$yearStart->month(1);
$yearStart->day(1);
$earliestDate = Date->new ($yearStart);
$earliestDate->addYears(-10);
print $cgi->startform (-onSubmit =>
"return submitCheck(this, $earliestDate)");
my $fromPopup = GetHTML->datePopup ($i18n,
{name => 'From',
default => $yearStart,
start => $earliestDate,
numYears => 20});
my $toPopup = GetHTML->datePopup ($i18n,
{name => 'To',
default => Date->new - 1,
start => $earliestDate,
numYears => 20});
print $cgi->table ($cgi->Tr ($cgi->td ($cgi->b ($i18n->get ('From:'))),
$cgi->td ($fromPopup)),
$cgi->Tr ($cgi->td ($cgi->b ($i18n->get ('To:'))),
$cgi->td ($toPopup)));
print '<center><br>';
print $i18n->get ('Repeating Events will be deleted if the repeat ' .
'period both starts and ends within the specified ' .
'range.');
print '</center><hr>';
print $cgi->submit (-name => 'Save',
-value => $i18n->get ('Delete Events'));
print ' ';
print $cgi->submit (-name => 'Cancel',
-value => $i18n->get ('Cancel'),
-onClick => 'this.pressed = true');
print ' ';
print $cgi->reset (-value => $i18n->get ('Reset Dates'));
print $cgi->hidden (-name => 'Op', -value => 'AdminDeleteEvents');
print $cgi->hidden (-name => 'CalendarName', -value => $calName);
print $cgi->endform;
print $cgi->end_html;
}
sub auditString {
my ($self, $short) = @_;
return unless $self->{audit_formsaved};
my $line = $self->SUPER::auditString ($short);
return ($line . ' ' . $self->{audit_error}) if $self->{audit_error};
$line . " $self->{audit_from}-$self->{audit_to} " .
"$self->{audit_count} events";
}
1;