#!/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 ''; # A different coloring for each line ###################################### 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 '
  ', $time_count, ':00   '; } else{ print ' bgcolor="', $alt_entry_bg_color, '"> '; } foreach(@entries){ if(/^$time_count:([^\n].+)/){ print $1 . '  '; } } print '
'; print $cgi->p; print 'Back to the calendar'; print $cgi->end_html;