From 7b5d56ce60c8d5ee59d29da75e465330d5731380 Mon Sep 17 00:00:00 2001 From: james Date: Thu, 26 Jan 2006 21:42:04 +0000 Subject: [PATCH] Update the judges timeslot editor to have a new field for 'allow divisional'. This specifies whether the automatic judges scheduler can use this timeslot to scheduler the divisional awards judging. Add a new feature to the timeslot editor to add multiple timeslots at once, by specifying the start time, duration, and break time. --- admin/judges_timeslots.php | 138 +++++++++++++++++++++++++++++++++++-- db/db.update.13.sql | 1 + 2 files changed, 132 insertions(+), 7 deletions(-) diff --git a/admin/judges_timeslots.php b/admin/judges_timeslots.php index 8ba7bd8..2d5bbd4 100644 --- a/admin/judges_timeslots.php +++ b/admin/judges_timeslots.php @@ -63,6 +63,8 @@ echo error(i18n("End Time is required")); } + $allowdivisional=$_POST['allowdivisional']; + if(!$allowdivisional) $allowdivisional="no"; if(!$err) { @@ -73,12 +75,53 @@ } if($_POST['action']=="edit") { - mysql_query("UPDATE judges_timeslots SET `date`='$date', starttime='$starttime', endtime='$endtime' WHERE id='".$_POST['edit']."'"); + mysql_query("UPDATE judges_timeslots SET `date`='$date', starttime='$starttime', endtime='$endtime', allowdivisional='$allowdivisional' WHERE id='".$_POST['edit']."'"); echo mysql_error(); echo happy(i18n("Timeslot successfully saved")); } } } + else if($_POST['action']=="addmultiple") + { + if($_POST['addnum'] && $_POST['date_day'] && $_POST['date_month'] && $_POST['date_year'] && $_POST['starttime_hour'] && $_POST['starttime_minute'] && $_POST['duration'] && $_POST['break']) + { + $date=$_POST['date_year']."-".$_POST['date_month']."-".$_POST['date_day']; + $hr=$_POST['starttime_hour']; + $min=$_POST['starttime_minute']; + $dur=$_POST['duration']; + $brk=$_POST['break']; + $tt=$dur+$brk; + + if($_POST['allowdivisional']=="yes") $ad="yes"; else $ad="no"; + + for($x=0;$x<$_POST['addnum'];$x++) + { + $q=mysql_query("SELECT DATE_ADD('$date $hr:$min:00', INTERVAL $dur MINUTE) AS endtime, + DATE_ADD('$date $hr:$min:00', INTERVAL $tt MINUTE) AS startnext + "); + echo mysql_error(); + $r=mysql_fetch_object($q); + list($ed,$et)=split(" ",$r->endtime); + list($nd,$nt)=split(" ",$r->startnext); + + mysql_query("INSERT INTO judges_timeslots (date,starttime,endtime,allowdivisional,year) VALUES ( + '$date', + '$hr:$min:00', + '$et', + '$ad', + '".$config['FAIRYEAR']."')"); + echo mysql_Error(); + $date=$nd; + list($s_h,$s_m,$s_s)=split(":",$nt); + list($e_h,$e_m,$e_s)=split(":",$et); + echo happy(i18n("Adding timeslot: %1",array($date." ".$hr.":".$min." - ".$e_h.":".$e_m))); + $hr=$s_h; + $min=$s_m; + } + } + else + echo error(i18n("All fields are required to add multiple timeslots")); + } //FIXME: only delete if the timeslot is not in use!!! if($_GET['action']=="delete" && $_GET['delete']) @@ -89,7 +132,75 @@ } - if($_GET['action']=="add" || $_GET['action']=="edit") + if($_GET['action']=="addmultiple") + { + + echo "

Add Multiple New Judging Timeslots

"; + echo "<< ".i18n("Back to Judging Timeslots")."\n"; + $q=mysql_query("SELECT * FROM judges_timeslots WHERE year='".$config['FAIRYEAR']."' ORDER BY date DESC LIMIT 1"); + if(mysql_num_rows($q)) + { + $r=mysql_fetch_object($q); + $date=$r->date; + } + else + { + $date=$config['dates']['fairdate']; + } + + + echo "
"; + echo "\n"; + echo ""; + echo ""; + echo ""; + echo ""; + + echo ""; + + + + echo ""; + echo "
"; + echo i18n("Add"); + echo ""; + echo ""; + echo ""; + echo i18n("new timeslots"); + echo "
"; + echo i18n("On date"); + echo ""; + emit_date_selector("date",$date); + echo "
"; + echo i18n("Starting timeslots at"); + echo ""; + emit_time_selector("starttime"); + echo "
"; + echo i18n("With a duration of"); + echo ""; + echo ""; + echo ""; + echo i18n("minutes"); + echo "
"; + echo i18n("And a break of"); + echo ""; + echo ""; + echo ""; + echo i18n("minutes"); + echo "
"; + if($allowdivisional=="yes") $ch="checked=\"checked\""; else $ch=""; + echo ""; + echo ""; + echo i18n("Allow this timeslot to be used by the automatic judges scheduler for divisional awards"); + echo "
"; + echo ""; + echo "
"; + + echo "
"; + $showlist=false; + + } + else if($_GET['action']=="add" || $_GET['action']=="edit") { echo "
"; @@ -99,18 +210,20 @@ { echo "

Add New Judging Timeslot

"; $buttontext=i18n("Add Timeslot"); + //get a default date, either the date from a different timeslot, or the date of the fair, whichever. $q=mysql_query("SELECT * FROM judges_timeslots WHERE year='".$config['FAIRYEAR']."' ORDER BY date DESC LIMIT 1"); if(mysql_num_rows($q)) { $r=mysql_fetch_object($q); $date=$r->date; - $starttime=""; - $endtime=""; } else { $date=$config['dates']['fairdate']; } + $starttime=""; + $endtime=""; + $allowdivisional="yes"; } else if($_GET['action']=="edit") @@ -124,22 +237,30 @@ $date=$r->date; $starttime=$r->starttime; $endtime=$r->endtime; + $allowdivisional=$r->allowdivisional; } echo ""; - echo ""; - echo ""; - echo ""; + echo ""; + echo "
Date:"; + echo "
".i18n("Date").":"; emit_date_selector("date",$date); echo "
Start Time:"; + echo "
".i18n("Start Time").":"; emit_time_selector("starttime",$starttime); echo "
End Time:"; + echo "
".i18n("End Time").":"; emit_time_selector("endtime",$endtime); echo "
"; + if($allowdivisional=="yes") $ch="checked=\"checked\""; else $ch=""; + echo ""; + echo ""; + echo i18n("Allow this timeslot to be used by the automatic judges scheduler for divisional awards"); + echo "
"; echo ""; @@ -151,11 +272,13 @@ { echo "".i18n("Add new judging timeslot")."
"; + echo "".i18n("Add multiple new judging timeslots")."
"; echo ""; echo ""; echo ""; echo ""; echo ""; + echo ""; echo ""; echo ""; @@ -167,6 +290,7 @@ echo ""; echo ""; echo ""; + echo ""; echo "
".i18n("Date")."".i18n("Start Time")."".i18n("End Time")."".i18n("Div OK?")."".i18n("Actions")."
$r->date".substr($r->starttime,0,-3)."".substr($r->endtime,0,-3)."$r->allowdivisional"; diff --git a/db/db.update.13.sql b/db/db.update.13.sql index f93840c..fbb4903 100644 --- a/db/db.update.13.sql +++ b/db/db.update.13.sql @@ -1,3 +1,4 @@ INSERT INTO `config` ( `var` , `val` , `description` , `year` ) VALUES ( 'participant_project_summary_wordmax', '100', 'The maximum number of words acceptable in the project summary', '-1'); INSERT INTO `config` ( `var` , `val` , `description` , `year` ) VALUES ( 'participant_project_summary_wordmax', '100', 'The maximum number of words acceptable in the project summary', '2006'); ALTER TABLE `projects` ADD `summarycountok` TINYINT( 1 ) DEFAULT '1' NOT NULL AFTER `summary` ; +ALTER TABLE `judges_timeslots` ADD `allowdivisional` ENUM( 'no', 'yes' ) DEFAULT 'no' NOT NULL AFTER `endtime` ;