- Move the judging age preferences to the expertise page... and rename that

page to "Divisional Preferences"
- Add the ability for the judges to select special awards they would like to
  judge
- Add the ability for a judge to specify that they are a judge for a specific
  (one or more) award, and disable the divisional selection for them
This commit is contained in:
dave 2007-01-30 06:12:11 +00:00
parent 49c5704143
commit 50b4e146bd
6 changed files with 158 additions and 64 deletions

View File

@ -1 +1 @@
39
40

16
db/db.update.40.sql Normal file
View File

@ -0,0 +1,16 @@
ALTER TABLE `judges` ADD `typepref` VARCHAR( 8 ) NOT NULL ;
INSERT INTO `config` ( `var` , `val` , `category` , `type` , `type_values` , `ord` , `description` , `year` ) VALUES ( 'judges_specialaward_enable', 'no', 'Judge Registration', 'yesno', '', '1000', 'Allow judges to specify their special award judging preferences (in addition to the divisional judging preferences)', '-1');
INSERT INTO `config` ( `var` , `val` , `category` , `type` , `type_values` , `ord` , `description` , `year` ) VALUES ( 'judges_specialaward_only_enable', 'no', 'Judge Registration', 'yesno', '', '1100', 'Allow judges to specify that they are a judge for a specific special award. If a judge selects this, it disables their divisional preference selection entirely', '-1');
INSERT INTO `config` ( `var` , `val` , `category` , `type` , `type_values` , `ord` , `description` , `year` ) VALUES ( 'judges_specialaward_min', '1', 'Judge Registration', 'number', '', '1200', 'Minimum number of special awards a judge must select when specifying special award preferences', '-1');
INSERT INTO `config` ( `var` , `val` , `category` , `type` , `type_values` , `ord` , `description` , `year` ) VALUES ( 'judges_specialaward_max', '6', 'Judge Registration', 'number', '', '1300', 'Maximum number of special awards a judge must select when specifying special award preferences', '-1');
CREATE TABLE `judges_specialaward_sel` (
`id` INT NOT NULL AUTO_INCREMENT,
`judges_id` INT NOT NULL ,
`award_awards_id` INT NOT NULL ,
`year` INT NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = MyISAM ;

View File

@ -57,6 +57,21 @@ function personalStatus()
if($r->num==0)
return "incomplete";
//if it made it through without returning incomplete, then we must be complete
return "complete";
}
function expertiseStatus()
{
global $config;
/* If the judging special awards are active, and the judge has
* selected "I am a special awards judge", then disable this */
if($config['judges_specialaward_only_enable'] == 'yes') {
return "complete";
}
//and they need to rank all of the age categories
$q=mysql_query("SELECT COUNT(id) AS num FROM projectcategories WHERE year='".$config['FAIRYEAR']."'");
$r=mysql_fetch_object($q);
@ -69,20 +84,11 @@ function personalStatus()
if($numcats!=$numprefs)
return "incomplete";
//if it made it through without returning incomplete, then we must be complete
return "complete";
}
function expertiseStatus()
{
global $config;
//easiest check here is to check the number of divisions, then check the number of entries
//that they have in the judges_expertise table. If they are the same, then we're good to go
//if they are different, they forgot to fill one out (because it only gets inserted if a value)
//is choosen, and they are always ALL removed before each update
$q=mysql_query("SELECT COUNT(id) AS num FROM projectdivisions WHERE year='".$config['FAIRYEAR']."'");
$r=mysql_fetch_object($q);
$numdivisions=$r->num;
@ -95,8 +101,47 @@ function expertiseStatus()
return "complete";
else
return "incomplete";
}
function specialawardStatus()
{
global $config;
/* Complete if:
* - judge has selected (none) "no special award preferences"
* - judge has selected (pref) "i would like to specify awards", and has
* selected between min and max preferences
* - judge has selected "i am a special awards judge, and has
* selected an award */
$q = mysql_query("SELECT typepref FROM judges WHERE
id='{$_SESSION['judges_id']}'");
$r = mysql_fetch_object($q);
if($r != 1) return "incomplete";
$qq = mysql_query("SELECT COUNT(id) AS num FROM judges_specialaward_sel
WHERE judges_id='{$_SESSION['judges_id']}'
AND year={$config['FAIRYEAR']}");
$rr = mysql_fetch_object($qq);
$awards_selected = $rr->num;
switch($r->typepref) {
case "speconly": /* Judge for special award */
/* They may judge more than one award, so don't limit them
* to one */
if($awards_selected >= 1) return "complete";
break;
case "pref": /* Special award preferences specified */
default:
if( ($awards_selected >= $config['judges_specialaward_min'])
&&($awards_selected <= $config['judges_specialaward_max']) ){
return "complete";
}
break;
}
return "incomplete";
}

View File

@ -26,7 +26,7 @@
include "register_judges.inc.php";
//send the header
send_header("Judges Registration - Areas of Expertise Information");
send_header("Judges Registration - Divisional Judging Preferences");
echo "<a onclick=\"return confirmChanges();\" href=\"register_judges_main.php\">&lt;&lt; ".i18n("Back to Judges Registration Summary")."</a><br />";
echo "<br />";
@ -60,7 +60,19 @@
{
mysql_query("UPDATE judges SET expertise_other=NULL WHERE id='".$_SESSION['judges_id']."'");
}
echo notice(i18n("Areas of Expertise successfully saved"));
mysql_query("DELETE FROM judges_catpref WHERE judges_id='".$_SESSION['judges_id']."'");
if(is_array($_POST['catpref']))
{
foreach($_POST['catpref'] AS $k=>$v)
{
if($v!="")
mysql_query("INSERT INTO judges_catpref (judges_id,projectcategories_id,rank,year) values ('".$_SESSION['judges_id']."','$k','$v','".$config['FAIRYEAR']."')");
}
}
echo notice(i18n("Preferences successfully saved"));
}
$q=mysql_query("SELECT * FROM judges WHERE email='".$_SESSION['email']."' AND id='".$_SESSION['judges_id']."'");
$judgeinfo=mysql_fetch_object($q);
@ -70,15 +82,57 @@
$newstatus=expertiseStatus();
if($newstatus!="complete")
{
echo error(i18n("Areas of Expertise Information Incomplete"));
echo error(i18n("Divisional Judging Information Incomplete"));
}
else
{
echo happy(i18n("Areas of Expertise Information Complete"));
echo happy(i18n("Divisional Judging Information Complete"));
}
if($judgeinfo->typepref == "speconly") {
echo i18n("You have specified that you are a judge for a specific special award. Divisional Judging preferences have been disabled because they do not apply to you.");
echo "<br />";
send_footer();
exit;
}
echo "<form name=\"expertiseform\" method=\"post\" action=\"register_judges_expertise.php\">\n";
echo "<input type=\"hidden\" name=\"action\" value=\"save\">\n";
$q=mysql_query("SELECT * FROM judges_catpref WHERE judges_id='".$_SESSION['judges_id']."' AND year='".$config['FAIRYEAR']."'");
$catprefs=array();
while($r=mysql_fetch_object($q))
$catprefs[$r->projectcategories_id]=$r->rank;
$q=mysql_query("SELECT * FROM projectcategories WHERE year='".$config['FAIRYEAR']."' ORDER BY mingrade");
echo "<h3>".i18n("Age Category Preferences")."</h3><br>";
echo "<table>";
while($r=mysql_fetch_object($q))
{
echo "<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;";
echo i18n("%1 (Grades %2-%3)",array(i18n($r->category),$r->mingrade,$r->maxgrade));
echo "</td>";
echo "<td>";
echo "<select name=\"catpref[$r->id]\">";
echo "<option value=\"\">".i18n("Choose")."</option>\n";
foreach($preferencechoices AS $val=>$str)
{
if($catprefs[$r->id]==$val && $catprefs[$r->id]!="") $sel="selected=\"selected\""; else $sel="";
echo "<option $sel value=\"$val\">".i18n($str)."</option>\n";
}
echo "</select>".REQUIREDFIELD;
echo "</td>";
echo "</tr>";
}
echo "</table>";
echo "<br />";
echo "<br />";
echo "<h3>".i18n("Division Expertise")."</h3><br>";
echo "<table>";
echo i18n("Please rank the following divisions according to the amount of knowledge you have of each subject. A '1' indicates very little knowledge, and a '5' indicates you are very knowledgeable of the subject");
echo "<br />";
echo "<br />";
@ -94,7 +148,7 @@ else
else if($r->projectsubdivisions_id)
$subexpertise[$r->projectsubdivisions_id]=$r->val;
}
echo "<table>\n";
// echo "<table>\n";
//query all of the categories
@ -150,7 +204,7 @@ else
echo "<br />";
echo "<br />";
echo "<input type=\"submit\" value=\"".i18n("Save Areas of Expertise Information")."\" />\n";
echo "<input type=\"submit\" value=\"".i18n("Save Judging Preferences")."\" />\n";
echo "</form>";
echo "<br />";
echo "<a onclick=\"return confirmChanges();\" href=\"register_judges_main.php\">&lt;&lt; ".i18n("Back to Judges Registration Summary")."</a><br />";

View File

@ -126,6 +126,21 @@
echo outputStatus($statusexpertise);
if($statusexpertise!="complete") $overallstatus="incomplete";
echo "</td></tr>";
// special awards
if($config['judges_specialaward_enable'] == 'yes') {
echo "<tr><td>";
echo "<a href=\"register_judges_specialawards.php\">";
echo i18n("Special Award Preferences");
echo "</a>";
echo "</td><td>";
//check to see if its complete
$statusspecialawards=specialawardStatus();
echo outputStatus($statusspecialawards);
if($statusspecialawards!="complete") $overallstatus="incomplete";
echo "</td></tr>";
}
echo "<tr><td colspan=\"2\"><hr></td></tr>";
echo "<tr><td>".i18n("Overall Status")."</td><td>";

View File

@ -49,7 +49,8 @@
"phonecell='".mysql_escape_string(stripslashes($_POST['phonecell']))."', ".
"organization='".mysql_escape_string(stripslashes($_POST['organization']))."', ".
"highest_psd='".mysql_escape_string(stripslashes($_POST['highest_psd']))."', ".
"professional_quals='".mysql_escape_string(stripslashes($_POST['professional_quals']))."' ".
"professional_quals='".mysql_escape_string(stripslashes($_POST['professional_quals']))."', ".
"typepref='".mysql_escape_string(stripslashes($_POST['typepref']))."' ".
"WHERE id='".$_SESSION['judges_id']."'");
echo mysql_error();
@ -69,17 +70,6 @@
questions_save_answers('judgereg', $_SESSION['judges_id'],
$config['FAIRYEAR'], $ans);
mysql_query("DELETE FROM judges_catpref WHERE judges_id='".$_SESSION['judges_id']."'");
if(is_array($_POST['catpref']))
{
foreach($_POST['catpref'] AS $k=>$v)
{
if($v!="")
mysql_query("INSERT INTO judges_catpref (judges_id,projectcategories_id,rank,year) values ('".$_SESSION['judges_id']."','$k','$v','".$config['FAIRYEAR']."')");
}
}
echo notice(i18n("%1 %2 successfully updated",array($_POST['firstname'],$_POST['lastname'])));
}
$q=mysql_query("SELECT * FROM judges WHERE email='".$_SESSION['email']."' AND id='".$_SESSION['judges_id']."'");
@ -130,43 +120,17 @@ echo " <td>".i18n("Organization")."</td><td><input onchange=\"fieldChanged()\" t
echo " <td>".i18n("Phone (Cell)")."</td><td><input onchange=\"fieldChanged()\" type=\"text\" name=\"phonecell\" value=\"$judgeinfo->phonecell\" /></td>\n";
echo "</tr>";
echo "<tr><td colspan=\"4\"><hr /></td></tr>";
echo "<tr>\n";
echo " <td colspan=\"4\"><b>".i18n("Age category preferences")."</b></td>";
$q=mysql_query("SELECT * FROM judges_catpref WHERE judges_id='".$_SESSION['judges_id']."' AND year='".$config['FAIRYEAR']."'");
$catprefs=array();
while($r=mysql_fetch_object($q))
$catprefs[$r->projectcategories_id]=$r->rank;
$q=mysql_query("SELECT * FROM projectcategories WHERE year='".$config['FAIRYEAR']."' ORDER BY mingrade");
echo "<tr><td colspan=\"4\">";
echo "<table>";
//echo "<select name=\"catpref\" onchange=\"fieldChanged()\" >";
//echo "<option value=\"\">".i18n("Doesn't Matter")."</option>\n";
while($r=mysql_fetch_object($q))
{
// if($judgeinfo->catpref==$r->id) $sel="selected=\"selected\""; else $sel="";
echo "<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;";
echo i18n("%1 (Grades %2-%3)",array(i18n($r->category),$r->mingrade,$r->maxgrade));
echo "</td>";
echo "<td>";
echo "<select name=\"catpref[$r->id]\">";
echo "<option value=\"\">".i18n("Choose")."</option>\n";
foreach($preferencechoices AS $val=>$str)
{
if($catprefs[$r->id]==$val && $catprefs[$r->id]!="") $sel="selected=\"selected\""; else $sel="";
echo "<option $sel value=\"$val\">".i18n($str)."</option>\n";
}
echo "</select>".REQUIREDFIELD;
echo "</td>";
echo "</tr>";
if($config['judges_specialaward_only_enable'] == 'yes') {
echo "<tr><td colspan=\"4\"><hr /></td></tr>";
echo "<tr>\n";
echo " <td colspan=\"2\">".i18n("I am a judge for a specific special award")."<br /><font size=-1>(".i18n("Check this box if you are supposed to judge a specific special award, and please select that award on the Special Award Preferences page.").")</font></td>";
if($judgeinfo->typepref == "speconly") $ch = "checked=checked";
else $ch="";
echo " <td colspan=\"2\"><input $ch type=\"checkbox\" name=\"typepref\" value=\"speconly\" />";
echo " </td>";
echo "</tr>\n";
}
//echo "</select>";
echo "</table>";
echo "</td></tr>";
echo "<tr><td colspan=\"4\"><hr /></td></tr>";