Merge judge_availablilty into judge_other and delete

judge_availability.php
This commit is contained in:
dave 2010-08-31 07:23:49 +00:00
parent 4bf2897f18
commit e03902bbec
4 changed files with 93 additions and 178 deletions

View File

@ -65,6 +65,12 @@ function judge_status_other(&$u)
/* They must select a language to judge in */
if(count($u['languages']) < 1) return 'incomplete';
if($config['judges_availability_enable'] != 'no') {
$q = mysql_query("SELECT id FROM judges_availability
WHERE users_id=\"{$u['id']}\"");
if(mysql_num_rows($q) == 0) return 'incomplete';
}
return 'complete';
}
@ -104,18 +110,6 @@ function judge_status_special_awards(&$u)
return 'incomplete';
}
function judge_status_availability(&$u)
{
global $config;
if($config['judges_availability_enable'] == 'no') return 'complete';
$q = mysql_query("SELECT id FROM judges_availability
WHERE users_id=\"{$u['id']}\"");
if(mysql_num_rows($q) > 0) return 'complete';
return 'incomplete';
}
function judge_status_update(&$u)
{
global $config;

View File

@ -1,163 +0,0 @@
<?
/*
This file is part of the 'Science Fair In A Box' project
SFIAB Website: http://www.sfiab.ca
Copyright (C) 2005 Sci-Tech Ontario Inc <info@scitechontario.org>
Copyright (C) 2005 James Grant <james@lightbox.org>
Copyright (C) 2009 David Grant <dave@lightbox.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
License as published by the Free Software Foundation, version 2.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
?>
<?
require_once('common.inc.php');
require_once('user.inc.php');
require_once('judge.inc.php');
/* Sort out who we're editting */
if($_POST['users_id'])
$eid = intval($_POST['users_id']); /* From a save form */
else if(array_key_exists('embed_edit_id', $_SESSION))
$eid = $_SESSION['embed_edit_id']; /* From the embedded editor */
else
$eid = $_SESSION['users_id']; /* Regular entry */
if($eid != $_SESSION['users_id']) {
/* Not editing ourself, we had better be
* a committee member */
user_auth_required('committee','admin');
}
$u = user_load($eid);
$times = array();
/* Load the judging rounds */
$q = mysql_query("SELECT date,starttime,endtime,name FROM judges_timeslots WHERE round_id='0' AND year='{$config['FAIRYEAR']}' ORDER BY starttime,type");
$x = 0;
while($r = mysql_fetch_object($q)) {
$found = false;
foreach($times as $xx => $t) {
if($t['date'] == $r->date && $t['starttime'] == $r->starttime && $t['endtime'] == $r->endtime) {
$times[$xx]['name'] .= ", {$r->name}";
$found = true;
break;
}
}
if(!$found) {
$times[$x] = array( 'date' => $r->date,
'starttime' => $r->starttime,
'endtime' => $r->endtime,
'name' => $r->name);
$x++;
}
}
switch($_GET['action']) {
case 'save':
mysql_query("DELETE FROM judges_availability WHERE users_id='{$u['id']}'");
if(is_array($_POST['time']) ) {
foreach($_POST['time'] as $x) {
if(trim($times[$x]['starttime']) == '') continue;
mysql_query("INSERT INTO judges_availability (users_id, `date`,`start`,`end`)
VALUES ('{$u['id']}',
'{$times[$x]['date']}',
'{$times[$x]['starttime']}','{$times[$x]['endtime']}')");
}
}
happy_("Time Availability preferences successfully saved");
exit;
}
if($_SESSION['embed'] == true) {
display_messages();
echo "<h4>".i18n('Time Availability')."</h4>";
echo "<br />";
} else {
//send the header
send_header('Time Availability',
array('Judge Registration' => 'judge_main.php')
);
}
?>
<script type="text/javascript">
function judgeavailability_save()
{
$("#debug").load("<?=$config['SFIABDIRECTORY']?>/judge_availability.php?action=save", $("#judgeavailability_form").serializeArray());
return false;
}
</script>
<?
judge_status_update($u);
if($_SESSION['embed'] != true) {
//output the current status
$newstatus=judge_status_availability($u);
if($newstatus!='complete')
echo error(i18n("Time Availability Preferences Incomplete"));
else
echo happy(i18n("Time Availability Preferences Complete"));
}
?>
<form id="judgeavailability_form" >
<input type="hidden" name="users_id" value="<?=$u['id']?>" />
<br />
<table>
<?
/* Get all their available times */
$q = mysql_query("SELECT * FROM judges_availability WHERE users_id=\"{$u['id']}\" ORDER BY `start`");
$sel = array();
while($r=mysql_fetch_object($q)) {
foreach($times as $x=>$t) {
if($r->start == $t['starttime'] && $r->end == $t['endtime'] && $r->date == $t['date']) {
$sel[$x] = true;
}
}
}
if(count($times) > 1) {
echo i18n("Please Note, you will be scheduled to judge in ALL (not just one) judging timeslots you select.");
echo '<br /><br />';
}
foreach($times as $x=>$t) {
$ch = $sel[$x] == true ? 'checked="checked"' : '';
echo "<tr><td>";
echo "<input onclick=\"checkboxclicked(this)\" $ch type=\"checkbox\" name=\"time[]\" value=\"$x\" />";
$st = substr($t['starttime'], 0, 5);
$end = substr($t['endtime'], 0, 5);
echo "</td><td><b>{$times[$x]['date']} $st - $end</b></td></tr>";
echo "<tr><td></td><td><p>{$t['name']}</td>";
echo "</tr>";
}
?>
</table>
<br />
<br />
<input type="submit" onclick="judgeavailability_save();return false;" value="<?=i18n("Save Time Availability Preferences")?>" />
</form>
<?
if($_SESSION['embed'] != true) send_footer();
?>

View File

@ -39,6 +39,30 @@ else
$u = user_load($edit_id);
/* Load the judging rounds */
$times = array();
$q = mysql_query("SELECT date,starttime,endtime,name FROM judges_timeslots WHERE round_id='0' AND year='{$config['FAIRYEAR']}' ORDER BY starttime,type");
$x = 0;
while($r = mysql_fetch_object($q)) {
$found = false;
foreach($times as $xx => $t) {
if($t['date'] == $r->date && $t['starttime'] == $r->starttime && $t['endtime'] == $r->endtime) {
$times[$xx]['name'] .= ", {$r->name}";
$found = true;
break;
}
}
if(!$found) {
$times[$x] = array( 'date' => $r->date,
'starttime' => $r->starttime,
'endtime' => $r->endtime,
'name' => $r->name);
$x++;
}
}
switch($_GET['action']) {
case 'save':
if(!is_array($_POST['languages'])) $_POST['languages']=array();
@ -53,10 +77,24 @@ case 'save':
$u['years_regional'] = intval($_POST['years_regional']);
$u['years_national'] = intval($_POST['years_national']);
$u['highest_psd'] = stripslashes($_POST['highest_psd']);
user_save($u);
questions_save_answers("judgereg",$u['id'],$_POST['questions']);
mysql_query("DELETE FROM judges_availability WHERE users_id='{$u['id']}'");
if(is_array($_POST['time']) ) {
foreach($_POST['time'] as $x) {
if(trim($times[$x]['starttime']) == '') continue;
mysql_query("INSERT INTO judges_availability (users_id, `date`,`start`,`end`)
VALUES ('{$u['id']}',
'{$times[$x]['date']}',
'{$times[$x]['starttime']}','{$times[$x]['endtime']}')");
}
}
happy_("Preferences successfully saved");
$u = user_load($u['id']);
@ -69,9 +107,11 @@ case 'save':
exit;
}
$fields = array('languages[]', 'years_school','years_regional','years_national','willing_chair','highest_psd');
$fields = array('languages[]', 'years_school','years_regional','years_national','willing_chair','highest_psd','time[]');
$required = array('languages[]');
if(count($times) > 1) $required[] = 'time[]';
?>
<h4><?=i18n("Judge Information")?> - <span class="status_judge"></span></h4>
<br/>
@ -88,6 +128,35 @@ $required = array('languages[]');
<tr><?=user_edit_item($u, 'Judge at a Regional Fair', 'years_regional', 'textbox', 5)?></tr>
<tr><?=user_edit_item($u, 'Judge at a National Fair', 'years_national', 'textbox', 5)?></tr>
<? if(count($times) > 1) { ?>
<tr><td style="text-align: left" colspan="2"><br /><b><?=i18n('Time Availability')?></b><hr />
<i><?=i18n('Please specify the time(s) you are available to judge. You will be scheduled to judge in ALL (not just one) judging timeslot.')?></i>
</td></tr>
<?
/* Get all their available times */
$q = mysql_query("SELECT * FROM judges_availability WHERE users_id=\"{$u['id']}\" ORDER BY `start`");
$sel = array();
while($r=mysql_fetch_object($q)) {
foreach($times as $x=>$t) {
if($r->start == $t['starttime'] && $r->end == $t['endtime'] && $r->date == $t['date'])
$sel[] = $x;
}
}
$items = array();
foreach($times as $x=>$t) {
$st = substr($t['starttime'], 0, 5);
$end = substr($t['endtime'], 0, 5);
$items[$x] = "{$t['name']} ({$times[$x]['date']} $st - $end)";
}
echo '<tr>';
user_edit_item($u, 'Time Availability', 'time[]', 'checklist', $items, $sel);
echo '</tr>';
}
?>
<tr><td style="text-align: left" colspan="2"><br /><b><?=i18n('Judging Questions')?></b><hr /></td></tr>
<tr><?=user_edit_item($u, 'I am willing to be the lead for my judging team', 'willing_chair', 'yesno')?></tr>
<tr><?=user_edit_item($u, 'Highest post-secondary degree', 'highest_psd', 'textbox')?></tr>
@ -121,6 +190,7 @@ $(document).ready(function() {
rules: {
"languages[]": { required: true },
"time[]": { required: <?=in_array('time[]', $required)?'true':'false'?> },
years_school: { min: 0, max:100 },
years_regional: { min: 0, max:100 },
years_national: { min: 0, max:100 }
@ -128,6 +198,7 @@ $(document).ready(function() {
messages: {
"languages[]": { required: "<?=i18n('Please select the language(s) you can judge in')?>" },
"time[]": { required: "<?=i18n('Please select the time(s) you are available for judging')?>" },
years_school: {
min: "<?=i18n('Please enter a valid number')?>",
max: "<?=i18n('Please enter a valid number')?>",

View File

@ -24,7 +24,7 @@
require_once('account.inc.php');
function user_edit_item(&$u, $label, $fname, $type='textbox', $data1=NULL)
function user_edit_item(&$u, $label, $fname, $type='textbox', $data1=NULL, $data2=NULL)
{
global $required, $fields, $config;
@ -87,6 +87,19 @@ function user_edit_item(&$u, $label, $fname, $type='textbox', $data1=NULL)
}
echo "</span>";
break;
case 'checklist':
/* data1 = items, data2 = checked items */
echo "<span>";
$x = 0;
foreach($data1 AS $key=>$txt) {
$ch = (in_array($key,$data2)) ? 'checked="checked"' : '';
if($x) echo '<br />';
echo "<input $ch type=\"checkbox\" name=\"$fname\" value=\"$l\" />$txt";
$x=1;
}
echo "</span>";
break;
}
echo '</td>';
}