#!/usr/local/bin/perl require "/export/home/http/cgi-bin/cgi-lib.pl"; $setfile="setcs246"; MAIN: { &ReadParse; unless ($in{set}) { print "Content-type: text/html\n\n"; &ReadData($in{course}); &PrintTop; &PrintTable; &PrintForm; &PrintBottom; } else { &ReadData($in{course}); &PrintTop; $i=0; foreach $lab (@ColLabels) { if ($ColLabels[$i++] eq $in{'date'}) { $date=$i-1; } } $i=0; foreach $lab (@RowLabels) { if ($RowLabels[$i++] eq $in{'time'}) { $time=$i; } } $username=$in{'username'}; $set=$in{'set'}; &Confirm; &PrintTable; &PrintForm; &PrintBottom; } } sub Confirm { if ($settings{$username}) { @aname=split(/ /,$settings{$username}); if ($set == 1) { unless ($settings{$time.",".$date}) { $settings{$time.",".$date}=$username; if(!open(ADD,">>".$setfile)) { &FileError; } else { print ADD "$time,$date=$username\n"; close(ADD); } print "<h3>OK $aname[0]. <br>Your appointment was accepted. \n"; print "<br>See you on $ColLabels[$date] at $RowLabels[$tiome-1].</h3><br>\n"; } else { print "<h3>Sorry $aname[0]. <br>That time has been reserved.\n"; print "<br>Please select a different time.</h3><br>\n"; } } else { if ($settings{$time.",".$date} eq $username) { $settings{$time.",".$date}=""; if(!open(ADD,">>".$setfile)) { &FileError; } else { print ADD "$time,$date=\n"; close(ADD); } print "<h3>OK $aname[0]. <br>Your appointment was canceled. </h3><br>\n"; } else { print "<h3>Sorry $aname[0]. <br>The appointment on $ColLabels[$date] at $RowLabels[$tiome-1] is not yours. <br>You can cancel only your appointments.</h3><br><br>\n"; } } } else { print <<"EOT4"; <h3>Sorry $username!<br> Only students from <i>$settings{'ClassName'}</i> can set <br>appointments for $settings{'Class#'} office hours.</h3><br> EOT4 } } sub PrintTop { print <<"EOT1"; <html> <head><title>$title</title></head> <body bgcolor=#ffffff> <h1>$title</h1> EOT1 } sub PrintBottom { print "<p>Back to <a href=\"$settings{URL}\">$settings{ClassName}</a>.<br>\n"; print "</body></html>\n"; } sub PrintTable { print "<TABLE ALIGN=ABSCENTER BORDER=1 CELLSPACING=0 CELLPADDING=1 >\n"; for ($i=0;$i<=$Nrows;$i++) { print "<tr>\n"; for ($j=0;$j<=$Ncols;$j++) { $location=$i.",".$j; if ($i==0) { $ttext=$ColLabels[$j]; $cstr="bgcolor=gray " } elsif ($j==0) { $ttext=$RowLabels[$i-1]; $cstr="bgcolor=gray " } else { $ttext=$settings{$location}; if ($settings{$ttext} || !$ttext) { if ($ttext) { if($ttext eq " --- ") { $cstr="bgcolor=yellow "; } else { $cstr="bgcolor=red "; ($t1,$t2)=split(/ /,$settings{$ttext}); $ttext=$t1." ".substr($t2,0,1); } } else { $cstr="bgcolor=green "; } } else { $cstr="bgcolor=yellow "; } } print "<td align=center valign=center $cstr"; print "width=\"90\">$ttext </td>\n"; } print "</tr>\n"; } print "</table>\n"; } sub PrintForm { print <<"EOT3"; <form method=get action="http://mainline.brynmawr.edu/cgi-bin/bbutoi/appointments.perl"> Enter your username: <input type="text" name="username" size=8><br> Enter your option: <input type="radio" name="set" value=1>Set an Appointment <input type="radio" name="set" value=2>Cancel an Appointment<br> EOT3 print "Select Date: <select name=\"date\">\n"; for ($i=1;$i<=$Ncols;$i++) { print "<option>$ColLabels[$i]\n"; } print "</select>\n"; print "Select Time: <select name=\"time\">\n"; for ($i=1;$i<=$Nrows;$i++) { print "<option>$RowLabels[$i-1]\n"; } print "</select><br>\n"; print <<"EOT4"; <input type=submit value=" Send Request "> <input type=reset value=" Clear Request "> EOT4 } sub ReadData { if($in{course}) { $setfile=$in{course}; } if(!open(INPUT,$setfile)) { print <<"EOT2"; <html> <head><title>ERROR:Appointments Log</title></head> <body bgcolor=#ffffff> <center><h1>ERROR: Appointments Log</h1></center> <h3>Can not open settings file $setfile</h3> Please check the settings and try again. </body> <html> EOT2 exit; } else { while (<INPUT>) { chomp($_); split(/=/); $settings{$_[0]}=$_[1]; } close(INPUT); $Ncols=$settings{'Ncols'}; $Nrows=$settings{'Nrows'}; $title=$settings{'title'}; @ColLabels=split(/,/,$settings{'ColLabels'}); @RowLabels=split(/,/,$settings{'RowLabels'}); } }