HTML-CalendarMonthDB
view release on metacpan or search on metacpan
cgi/calendar.cgi view on Meta::CPAN
#!/usr/bin/perl -w
#use CGI::Carp qw(fatalsToBrowser);
use strict;
use HTML::CalendarMonthDB;
use HTML::Template;
require URI::Escape;
main();
sub main {
my(%param, $qs, $queryString);
$queryString="";
if ($ENV{'CONTENT_LENGTH'}) {
read STDIN, $queryString, $ENV{'CONTENT_LENGTH'};
}
if ($ENV{'QUERY_STRING'}) {
$queryString .= "&".$ENV{'QUERY_STRING'};
}
my(@splitQS)=split('&' ,$queryString);
foreach $qs(@splitQS) {
$qs =~ s/\+/ /g;
my(@pair)=split('=', $qs);
$pair[0]=URI::Escape::uri_unescape($pair[0]);
$pair[1]=URI::Escape::uri_unescape($pair[1]);
$param{$pair[0]} = $pair[1];
}
if ($param{'change'}) {
changeCal(%param);
}
elsif ($param{'default'}) {
my $p;
foreach $p (keys %param) {
$param{$p} = "000000" if (($p =~ "bordercolor") || ($p =~ "contentcolor"));
$param{$p} = "ffffff" if ($p =~ "headercolor");
$param{$p} = "ffffff" if ($p =~ "weekendcolor");
$param{$p} = "ffffff" if ($p =~ "weekdaycolor");
$param{$p} = "ffffff" if ($p =~ "bgcolor");
$param{$p} = "ffffff" if ($p =~ "todaycolor");
}
$param{'border'}=5;
$param{'width'}='100%';
$param{'cellalignment'}='left';
changeCal(%param);
}
getCal(%param);
}
#####################################################
sub changeCal {
my(%param)=@_;
my ($cal);
my $dbname = $ENV{'DB_NAME'};
my $dbuser = $ENV{'DB_USER'};
my $dbpass = $ENV{'DB_PASS'};
my $dbclient = $ENV{'DB_CLIENT'};
my $dbcalendar = $ENV{'DB_CALENDAR'};
my $dbhost = $ENV{'DB_HOST'};
$cal = new HTML::CalendarMonthDB('dbname'=>$dbname, 'dbuser'=>$dbuser, 'dbcalendar'=>$dbcalendar, 'dbclient'=>$dbclient, 'dbhost'=>$dbhost);
$cal->editdbcalendar(border=>$param{'border'}, width=>$param{'width'}, bgcolor=>$param{'bgcolor'}, weekdaycolor=>$param{'weekdaycolor'}, weekendcolor=>$param{'weekendcolor'}, todaycolor=>$param{'todaycolor'}, bordercolor=>$param{'bordercolor'}, week...
}
##############
sub getCal {
my(%param)=@_;
my $template = HTML::Template->new(filename => 'caladmin.tmpl');
my $dbname = $ENV{'DB_NAME'};
my $dbuser = $ENV{'DB_USER'};
my $dbpass = $ENV{'DB_PASS'};
my $dbclient = $ENV{'DB_CLIENT'};
my $dbcalendar = $ENV{'DB_CALENDAR'};
my $dbhost = $ENV{'DB_HOST'};
my $htmlOut;
my($cal,$type,$month,$year);
$htmlOut .= '<form name="calform1" method="post" action="calendar.cgi">';
$param{'view'} = '' if !$param{'view'};
$htmlOut .= '<input type="radio" name="view" value="standard"';
if (($param{'view'} eq 'standard') || !$param{'view'}) {
$htmlOut .= ' checked onclick="document.calform1.submit()">Standard <input type="radio" name="view" value="list" onclick="document.calform1.submit()">List View<br>';
}
else {
$htmlOut .= ' onclick="document.calform1.submit()">Standard <input type="radio" name="view" value="list" checked onclick="document.calform1.submit()">List View<br>';
$type=1;
}
if (!$param{'month'}) {
$cal = new HTML::CalendarMonthDB('dbname'=>$dbname, 'dbuser'=>$dbuser, 'dbcalendar'=>$dbcalendar, 'dbclient'=>$dbclient, 'dbhost'=>$dbhost);
$month=$cal->month();
$year=$cal->year();
}
else {
if ($param{'date'} eq '<<') {
$month=$param{'lmonth'};
$year=$param{'lyear'};
}
elsif ($param{'date'} eq '>>') {
$month=$param{'nmonth'};
$year=$param{'nyear'};
}
else {
$month=$param{'month'};
$year=$param{'year'};
}
$cal = new HTML::CalendarMonthDB('month'=>$month, 'year'=>$year, 'dbname'=>$dbname, 'dbuser'=>$dbuser, 'dbcalendar'=>$dbcalendar, 'dbclient'=>$dbclient, 'dbhost'=>$dbhost);
}
$htmlOut .= calNav($cal->month(), $cal->year());
$htmlOut .= '</form>';
$cal->getdbcalendar();
$cal->getdbcontent();
if (!$type) {
$htmlOut .= $cal->as_HTML(editurl=>'editcal.cgi', addurl=>'addcal.cgi');
if ($param{'publish'}) {
my $pubdir=$ENV{'CAL_PUB_DIR'};
my $pubfile= '>'.$pubdir.'/'.$month."_".$year.'.txt';
open(FILE, $pubfile) || print "Cannot open $pubfile for writing.";
print FILE $cal->as_HTML();
close(FILE);
}
}
else {
$htmlOut .= $cal->as_HTML_list(editurl=>'editcal.cgi', addurl=>'addcal.cgi');
if ($param{'publish'}) {
my $pubdir=$ENV{'CAL_PUB_DIR'};
my $pubfile= '>'.$pubdir.'/'.$month."_".$year.'.cal';
open(FILE, $pubfile) || print "Cannot open $pubfile for writing.";
print FILE $cal->as_HTML_list();
close(FILE);
}
}
$htmlOut .= '<br><br><form name="calchange" method="post" action="calendar.cgi">';
$htmlOut .= "<input type=\"hidden\" name=\"month\" value=\"$month\" override=\"1\">";
$htmlOut .= "<input type=\"hidden\" name=\"year\" value=\"$year\" override=\"1\">";
$htmlOut .= "<input type=\"hidden\" name=\"view\" value=\"".$param{'view'}."\" override=\"1\">";
$htmlOut .= "<input type=\"submit\" name=\"publish\" value=\"Publish this Month\">";
$htmlOut .= '<table border="1" cellpadding="3"><tr bgcolor="red"><td colspan="2"><b><font color="ffffff" size="4"><center>Modify Calendar Attributes</center></b></font></td></tr>';
#$htmlOut .= '<tr bgcolor="ddddff"><td></td><td><input type="text" name="" value="'.$cal->().'"></td></tr>'; #template
$htmlOut .= '<tr bgcolor="ddddff"><td>Border Size</td><td><input type="text" name="border" value="'.$cal->border().'"></td></tr>';
$htmlOut .= '<tr bgcolor="ddddff"><td>Width</td><td><input type="text" name="width" value="'.$cal->width().'"></td></tr>';
$htmlOut .= '<tr bgcolor="ddddff"><td>Calendar Background Color</td><td><input type="text" name="bgcolor" value="'.$cal->bgcolor().'"></td></tr>';
$htmlOut .= '<tr bgcolor="ddddff"><td>Weekday Color</td><td><input type="text" name="weekdaycolor" value="'.$cal->weekdaycolor().'"></td></tr>';
$htmlOut .= '<tr bgcolor="ddddff"><td>Weekend Color</td><td><input type="text" name="weekendcolor" value="'.$cal->weekendcolor().'"></td></tr>';
$htmlOut .= '<tr bgcolor="ddddff"><td>Current Day Color</td><td><input type="text" name="todaycolor" value="'.$cal->todaycolor().'"></td></tr>';
$htmlOut .= '<tr bgcolor="ddddff"><td>Border Color</td><td><input type="text" name="bordercolor" value="'.$cal->bordercolor().'"></td></tr>';
$htmlOut .= '<tr bgcolor="ddddff"><td>Weekday Border Color</td><td><input type="text" name="weekdaybordercolor" value="'.$cal->weekdaybordercolor().'"></td></tr>';$htmlOut .= '<tr bgcolor="ddddff"><td>Weekend Border Color</td><td><input type="text" n...
$htmlOut .= '<tr bgcolor="ddddff"><td>Current Day Border Color</td><td><input type="text" name="todaybordercolor" value="'.$cal->todaybordercolor().'"></td></tr>';
$htmlOut .= '<tr bgcolor="ddddff"><td>Content Color</td><td><input type="text" name="contentcolor" value="'.$cal->contentcolor().'"></td></tr>';
$htmlOut .= '<tr bgcolor="ddddff"><td>Weekday Content Color</td><td><input type="text" name="weekdaycontentcolor" value="'.$cal->weekdaycontentcolor().'"></td></tr>';
$htmlOut .= '<tr bgcolor="ddddff"><td>Weekend Content Color</td><td><input type="text" name="weekendcontentcolor" value="'.$cal->weekendcontentcolor().'"></td></tr>';
$htmlOut .= '<tr bgcolor="ddddff"><td>Current Day Content Color</td><td><input type="text" name="todaycontentcolor" value="'.$cal->todaycontentcolor().'"></td></tr>';
$htmlOut .= '<tr bgcolor="ddddff"><td>Header Color</td><td><input type="text" name="headercolor" value="'.$cal->headercolor().'"></td></tr>';
$htmlOut .= '<tr bgcolor="ddddff"><td>Weekday Header Color</td><td><input type="text" name="weekdayheadercolor" value="'.$cal->weekdayheadercolor().'"></td></tr>';
$htmlOut .= '<tr bgcolor="ddddff"><td>Weekend Header Color</td><td><input type="text" name="weekendheadercolor" value="'.$cal->weekendheadercolor().'"></td></tr>';
$htmlOut .= '<tr bgcolor="ddddff"><td>Cell Alignment</td><td><input type="text" name="cellalignment" value="'.$cal->cellalignment().'"></td></tr>';
$htmlOut .= '<tr><td colspan="2"><center><input type="submit" name="change" value="Commit Changes"><input type="reset" value="Reset Form"><input type="submit" name="default" value="Default Settings"></center></td></tr></table>';
$htmlOut .= '</form>';
$template->param(
CALENDAR => $htmlOut
);
# print the template
print $template->output;
}
###################################################################
sub calNav {
my($count,$month, $year, $lmonth, $lyear, $nmonth, $nyear, $html);
$month=shift;
$year=shift;
if ($month eq 1) {
$nmonth=2;
$nyear=$year;
$lmonth=12;
$lyear=$year-1;
}
elsif ($month eq 12) {
$nmonth=1;
$nyear=$year+1;
$lmonth=11;
$lyear=$year;
}
else {
$nmonth=$month+1;
( run in 0.600 second using v1.01-cache-2.11-cpan-39bf76dae61 )