remind.cgi


#!/usr/bin/perl
#
# output Paul's "remind" calendar for current month (or specified month)
#
use CGI;
use Date::Manip;

@monthlist = qw(January February March April May June
  July August September October November December);
$today     = ParseDate("today");
$this_year = UnixDate( $today, "%Y" );
@yearlist  = ( $this_year - 1 ) .. ( $this_year + 3 );

$remind_file = '/home/pas/.reminders';

$q      = new CGI;
$myself = $q->url;

#
# if month/year parameters are supplied, and and produce
# a date parseable by ParseDate,
# then use them, otherwise use today
#
$disp_date = ParseDate( $q->param('month') . ' ' . $q->param('year') )
  || $today;
$disp_month = UnixDate( $disp_date, "%B" );
$disp_year  = UnixDate( $disp_date, "%Y" );
$rem_cmd =
  '/usr/bin/remind -p ' . $remind_file . ' ' . $disp_month . ' ' . $disp_year;

#
# calculate previous and next month dates, and the respective URLs
#
$forw_delta = ParseDateDelta("+1m");
$back_delta = ParseDateDelta("-1m");
$forw_date  = DateCalc( $disp_date, $forw_delta );
$back_date  = DateCalc( $disp_date, $back_delta );

$backurl =
    quotemeta $myself 
  . '?year='
  . UnixDate( $back_date, "%Y" )
  . '&month='
  . UnixDate( $back_date, "%B" );
$forwurl =
    quotemeta $myself 
  . '?year='
  . UnixDate( $forw_date, "%Y" )
  . '&month='
  . UnixDate( $forw_date, "%B" );

#
# ... which are used as parameters to the rem2html script
#
$html_cmd =
    '/usr/bin/perl /usr/share/doc/remind-03.01.02/www/rem2html --backurl '
  . $backurl
  . '  --forwurl '
  . $forwurl
  . ' --tableonly';

#
# we're ready to go, produce the page
#
print $q->header(),
  $q->start_html(
    -title => "Remind",
    -style => { -src => 'http://okoboji.unh.edu/remind.css' },
  ),
  $q->h1("Reminders"), $q->hr, $q->start_form, "Month: ",
  $q->popup_menu(
    -name    => 'month',
    -values  => \@monthlist,
    -default => $disp_month
  ),
  "Year: ",
  $q->popup_menu(
    -name    => 'year',
    -values  => \@yearlist,
    -default => $disp_year
  ),
  $q->submit( -value => 'Go' ), $q->end_form, $q->hr;

system("$rem_cmd | $html_cmd");
print $q->hr, $q->end_html;