#!/usr/bin/perl # author: Michel Bourget, hacked for plan 1.8 by thomas@bitrot.de #-------------------------------------------------------------------------- #-------------------------------------------------------------------------- require ("./cgi-lib.pl") || die "can\'t require cgi-lib.pl: $!";; require ("./common.pl") || die "can\'t require common.pl: $!";; #-------------------------------------------------------------------------- #-------------------------------------------------------------------------- sub header { local($mo,$yr)=@_; print "Content-type: text/html January 1999 "; } # header #-------------------------------------------------------------------------- # Print the content of the FORM #-------------------------------------------------------------------------- sub add { local($dorep); $start="00000000"; if ( $in{mo_start} <=9 ) { substr($start,1,1)=$in{mo_start}; } else { substr($start,0,2)=$in{mo_start}; } if ( $in{jr_start} <=9 ) { substr($start,3,1)=$in{jr_start}; } else { substr($start,2,2)=$in{jr_start}; } if ( $in{type} eq "Appointment" ) { if ( $in{hr_start} < 1000 ) { substr($start,5,3)=$in{hr_start}; } else { substr($start,4,4)=$in{hr_start}; } } # -l option $len="0000"; if ( $in{type} eq "Appointment" ) { if ( $in{hr_end} < 10 ) { substr($len,3,1)=$in{hr_end}; } else { if ( $in{hr_end} < 100 ) { substr($len,2,2)=$in{hr_end}; } else { if ( $in{hr_end} < 1000 ) { substr($len,1,3)=$in{hr_end}; } else { substr($len,0,4)=$in{hr_end}; } } } } # -u option $user=$in{group}; # Don't ask why ... user contains a \0 at the end ... # Must be a bug in cgi-lib in readparse chop $user; # Testing if user=none is entered if ( $in{group} eq "none" ) { print "User None specified: nothing added \!
\n"; return; } # -l or -L if ( $in{type} eq "Appointment" ) { $long="-l $len"; } else { $long="-L"; } # -r, -d, -D repeat options (hacked 21.12.98 thomas@bitrot.de) $dorep=0; $rep=" "; if ( $in{mday} ne "No" ) { # on a day of the month $dorep=1; $rep=$rep."-d $in{mday} "; } if ( $in{wday} ne "No" ) { # on a weekday $dorep=1; $rep=$rep."-D $in{wday} "; } if ( $in{ndays} ne "No" ) { # every n days $dorep=1; $rep=$rep."-r $in{ndays} "; } if ( $dorep == 1 ) { # end date $till="00000000"; if ( $in{mo_end} <=9 ) { substr($till,1,1)=$in{mo_end}; } else { substr($till,0,2)=$in{mo_end}; } if ( $in{jr_end} <=9 ) { substr($till,3,1)=$in{jr_end}; } else { substr($till,2,2)=$in{jr_end}; } $rep=$rep."-e $till"; # Testing if till > start $nstart = substr($start,0,4); $ntill = substr($till,0,4); if ( $ntill <= $nstart ) { print "Error: Stop Date MUST be at least one day after Start Date \!
\n"; return; } } $data="$in{descr}"; # print "Not ready yet : below are debug messages
"; # user add a \0 appended to it ... that's why data was not passed # to the dam script with system or open() statement $cmd="/usr/local/bin/plan $start -W $long $rep -u $user \"$data\""; # system("$cmd"); open ( IN , "$cmd |"); @error=; close(IN); foreach $line ( @error ) { print "$line\n"; } print "Done\! ... Please \"Get Calendar\" to update your Scheduler View."; } # form #-------------------------------------------------------------------------- # Print the Footer #-------------------------------------------------------------------------- sub footer { print <<"END"; END print ""; } # footer #-------------------------------------------------------------------------- # Main Function #-------------------------------------------------------------------------- &ReadParse; &header; &add; &footer;