#!/usr/bin/perl -Tw use strict; use CGI; # Set PATH to cal ######################### $ENV{'PATH'} = '/usr/bin'; # The directory to store entries for dates ######################### my $date_dir = "dates/"; my $cgi = new CGI; my $cal_prog = '/usr/bin/cal'; # A style sheet ######################### my $cal_style= <<"EOT"; EOT # Colors for the backgrounds ########################## my $month_bg_color='#ff0000'; my $week_bg_color='#0000ff'; my $date_bg_color='#e0e0e0'; my $year = 2000; my $num_of_months = 12; # The number of months shown per row ########################## my $months_per_row = 3; print $cgi->header(), $cgi->start_html( -title=>'Calendar', -BGCOLOR=>'#ffffff', -style=>{-code=>$cal_style} ); print $cgi->h1('Calendar for the year '. $year); print '
';
my $month_name = splice(@month,0,1);
$month_name =~ s/^\s+(\w+) \d+$/$1/g;
my $days = splice(@month,0,1);
# A table for each of the months
###################################
print '
| ';
if($row_count % $months_per_row == 0){
print '|||||||||||
##
#!/usr/bin/perl
use strict;
use Fcntl;
use CGI;
my $cgi = new CGI;
my $date_dir = 'dates/';
# Check month & date params
###############################
unless($cgi->param('month') =~ /\w+/ && $cgi->param('date') =~ /\d{2}/){
die "Invalid parameters!\n";
}
my $date_file = $date_dir . $cgi->param('month') . $cgi->param('date');
my $file_identifier = '### CALENDAR.PL DATE FILE ' . $cgi->param('month') . $cgi->param('date');
# Style sheet
#########################
my $cal_style= <<"EOT";
EOT
# Some color settings
##########################
my $time_bg_color = '#ff0000';
my $entry_bg_color = '#efefef';
my $alt_entry_bg_color = '#c0c0c0';
print $cgi->header(),
$cgi->start_html(
-title=>'Calendar',
-BGCOLOR=>'#ffffff',
-style=>{ -code=>$cal_style },
);
print $cgi->h2(
'Entries for ',
$cgi->param('month'),'-',
$cgi->param('date'),'-2000',
);
# Read in old entries if any
#############################
my(@entries);
if(-e $date_file){
sysopen(ENTRIES,$date_file,O_RDONLY) ||
die "Cannot open $date_file: $!\n";
flock(ENTRIES,1);
@entries = ;
close(ENTRIES);
}
# Check to see if requested date file is valid
################################################
unless(splice(@entries,0,1) eq $file_identifier){
die "Not a valid date file!\n";
}
print '';
# Start day at $time_count
##########################
my $time_count = 8;
for(;$time_count < 25; $time_count++){
print ' ',
$time_count,
':00 ';
# A different coloring for each line
######################################
print ' ';
}
else{
print ' bgcolor="',
$alt_entry_bg_color,
'"> ';
}
foreach(@entries){
if(/^$time_count:([^\n].+)/){
print $1 . ' ';
}
}
print ' ';
}
else{
print ' bgcolor="',
$alt_entry_bg_color,
'"> ';
}
# A link to add an entry
###############################
print '[ADD ENTRY |';
# ..and to remove one
print ' REMOVE] ';
print ' ';
}
print '
';
print $cgi->p;
print 'Back to the calendar';
print $cgi->end_html;
## ##
#!/usr/bin/perl
use CGI;
use strict;
use Fcntl;
my $cgi = new CGI;
my $date_dir = 'dates/';
# Check month, date & time params
###############################
unless($cgi->param('month') =~ /\w+/ && $cgi->param('date') =~ /\d{2}/ && $cgi->param('time') =~ /\d{1,2}/){
die "Invalid parameters!\n";
}
my $date_file = $date_dir . $cgi->param('month') . $cgi->param('date');
my $file_identifier = '### CALENDAR.PL DATE FILE ' . $cgi->param('month') . $cgi->param('date');
my $new_entry;
my $redirect = 'showDate.pl?month=' . $cgi->param('month') . '&date=' . $cgi->param('date');
# If we just added an entry write it and bounce back
#######################################################
if($cgi->param('action') eq 'Add new entry'){
sysopen(DATE_FILE,$date_file, O_RDWR | O_CREAT,0666) ||
die "Cannot open $date_file: $!\n";
flock(DATE_FILE,2);
my @old_entries = ;
# Check to see if requested date file is valid
################################################
unless(splice(@old_entries,0,1) eq $file_identifier){
die "Not a valid date file!\n";
}
seek(DATE_FILE, 0, 0);
truncate(DATE_FILE, 0);
$new_entry = $cgi->param('time') . ":" . $cgi->param('entry');
push(@old_entries,$new_entry);
print DATE_FILE $file_identifier
foreach(@old_entries){
unless(/^\s$/){
print DATE_FILE $_ . "\n";
}
}
close(DATE_FILE);
print $cgi->redirect($redirect);
}
# Remove an entry
###############################
elsif($cgi->param('action') eq 'rem'){
sysopen(DATE_FILE,$date_file,O_RDWR) ||
die "Cannot open $date_file: $!\n";
flock(DATE_FILE,2);
my(@old_entries,@new_entries);
@old_entries = ;
# Check to see if requested date file is valid
################################################
unless(splice(@old_entries,0,1) eq $file_identifier){
die "Not a valid date file!\n";
}
my $time = $cgi->param('time');
while(@old_entries){
unless(/^$time:.+/){
push(@new_entries,$_);
}
}
seek(DATE_FILE, 0, 0);
truncate(DATE_FILE, 0);
print DATE_FILE $file_identifier;
foreach(@new_entries){
unless(/^\s$/){
print DATE_FILE $_ . "\n";
}
}
close(DATE_FILE);
print $cgi->redirect($redirect);
}
# The form to add an entry
#################################
else{
print $cgi->header(),
$cgi->start_html(
-title=>'Add entry',
-BGCOLOR=>'#ffffff',
);
print $cgi->h2(
$cgi->param('month'),'-',
$cgi->param('date'),'-2000 at',
$cgi->param('time'),':00',
);
print $cgi->start_form(
-action=>'alterDate.pl',
-method=>'post',
);
print $cgi->p,
"Enter text:",
$cgi->br,
$cgi->textfield(
-name=>'entry',
-size=>'40',
),
$cgi->p,
$cgi->submit(
-value=>'Add new entry',
-name=>'action',
),
'',
'',
'';
print $cgi->end_form();
print $cgi->end_html();
}