forked from science-ation/science-ation
Implemented a judges division editor, to be used before the automatic judge scheduler to
set groups of divisions that judges can judge within.
This commit is contained in:
parent
1519b427d2
commit
6fc83836af
@ -42,6 +42,7 @@
|
||||
echo "<a href=\"judges_teams_projects.php\">".i18n("Assign Projects to Teams")."</a><br />";
|
||||
echo "<hr />";
|
||||
|
||||
echo "<a href=\"judges_jdiv.php\">".i18n("Manage Divisional Judging Groupings")."</a><br />";
|
||||
echo "<a href=\"judges_schedulerconfig.php\">".i18n("Judging automatic scheduler")."</a><br />";
|
||||
|
||||
send_footer();
|
||||
|
285
admin/judges_jdiv.php
Normal file
285
admin/judges_jdiv.php
Normal file
@ -0,0 +1,285 @@
|
||||
<?
|
||||
/*
|
||||
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>
|
||||
|
||||
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("../common.inc.php");
|
||||
auth_required('admin');
|
||||
include "judges.inc.php";
|
||||
|
||||
send_header("Administration - Judging Division Groupings");
|
||||
?>
|
||||
<script language="javascript" type="text/javascript">
|
||||
function addbuttonclicked(jdiv)
|
||||
{
|
||||
document.forms.jdivs.action.value="add";
|
||||
document.forms.jdivs.jdiv_id.value=jdiv;
|
||||
document.forms.jdivs.submit();
|
||||
}
|
||||
|
||||
function newbuttonclicked(jdivs)
|
||||
{
|
||||
document.forms.jdivs.action.value="new";
|
||||
document.forms.jdivs.jdivs.value=jdivs;
|
||||
document.forms.jdivs.submit();
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<?
|
||||
|
||||
$q=mysql_query("SELECT * FROM projectdivisions WHERE year='".$config['FAIRYEAR']."' ORDER BY id");
|
||||
while($r=mysql_fetch_object($q)) {
|
||||
$divshort[$r->id]=$r->division_shortform;
|
||||
$div[$r->id]=$r->division;
|
||||
}
|
||||
|
||||
$cat = array();
|
||||
$q=mysql_query("SELECT * FROM projectcategories WHERE year='".$config['FAIRYEAR']."' ORDER BY id");
|
||||
while($r=mysql_fetch_object($q)) {
|
||||
$cat[$r->id]=$r->category;
|
||||
}
|
||||
|
||||
$langr = array();
|
||||
$q=mysql_query("SELECT * FROM languages WHERE active='Y'");
|
||||
while($r=mysql_fetch_object($q)) {
|
||||
$langr[$r->lang] = $r->langname;
|
||||
}
|
||||
|
||||
|
||||
function get_all_divs()
|
||||
{
|
||||
global $config;
|
||||
global $divshort, $div,$cat, $langr;
|
||||
|
||||
$cdlcheck = array();
|
||||
$cdl = array();
|
||||
$q=mysql_query("SELECT * FROM judges_jdiv");
|
||||
while($r=mysql_fetch_object($q)) {
|
||||
$cdl[$r->id]['id'] = $r->id;
|
||||
$cdl[$r->id]['jdiv'] = $r->jdiv_id;
|
||||
$cdl[$r->id]['div'] = $r->projectdivisions_id;
|
||||
$cdl[$r->id]['cat'] = $r->projectcategories_id;
|
||||
$cdl[$r->id]['lang'] = $r->lang;
|
||||
|
||||
$cdlcheck[$r->projectcategories_id][$r->projectdivisions_id][$r->lang] = 1;
|
||||
}
|
||||
|
||||
/* Check for missing cdls */
|
||||
$divkeys = array_keys($divshort);
|
||||
$catkeys = array_keys($cat);
|
||||
$lankeys = array_keys($langr);
|
||||
foreach($catkeys as $x) {
|
||||
foreach($divkeys as $y) {
|
||||
foreach($lankeys as $z) {
|
||||
if($cdlcheck[$x][$y][$z] == 1)
|
||||
continue;
|
||||
|
||||
/* Also, make an entry in the DB, so that this isn't
|
||||
* unassigned anymore */
|
||||
mysql_query("INSERT INTO judges_jdiv (id, jdiv_id, projectdivisions_id, projectcategories_id, lang) ".
|
||||
" VALUES('', 0, '$y', '$x', '$z')");
|
||||
$q = mysql_query("SELECT id FROM judges_jdiv WHERE ".
|
||||
" projectdivisions_id='$y' ".
|
||||
" AND projectcategories_id='$x' ".
|
||||
" AND lang='$z' ");
|
||||
$r = mysql_fetch_object($q);
|
||||
|
||||
$cdl[$r->id]['id'] = $r->id;
|
||||
$cdl[$r->id]['jdiv'] = 0; /* Unassigned */
|
||||
$cdl[$r->id]['cat'] = $x;
|
||||
$cdl[$r->id]['div'] = $y;
|
||||
$cdl[$r->id]['lang'] = $z;
|
||||
|
||||
}
|
||||
reset($lankeys);
|
||||
}
|
||||
reset($catkeys);
|
||||
}
|
||||
reset($divkeys);
|
||||
|
||||
/* Make names for all the DCLs, and count the number of projects */
|
||||
$dkeys = array_keys($cdl);
|
||||
foreach($dkeys as $id) {
|
||||
$x = $cat[$cdl[$id]['cat']];
|
||||
$y = $divshort[$cdl[$id]['div']];
|
||||
$z = $div[$cdl[$id]['div']];
|
||||
$q = mysql_query("SELECT count(id) AS cnt FROM projects WHERE ".
|
||||
" projectdivisions_id='{$cdl[$id]['div']}' ".
|
||||
" AND projectcategories_id='{$cdl[$id]['cat']}' ".
|
||||
" AND language='{$cdl[$id]['lang']}' ".
|
||||
" AND year='{$config['FAIRYEAR']}' ");
|
||||
|
||||
$r = mysql_fetch_object($q);
|
||||
$c = $r->cnt;
|
||||
|
||||
$cdl[$id]['name'] = "$x $y ({$cdl[$id]['lang']}) ($c project".($c==1?'':'s').")";
|
||||
$cdl[$id]['lname'] = "$x $z ({$cdl[$id]['lang']}) ($c project".($c==1?'':'s').")";
|
||||
$cdl[$id]['projects'] = $c;
|
||||
}
|
||||
return $cdl;
|
||||
}
|
||||
|
||||
echo "<a href=\"index.php\"><< ".i18n("Back to Administration")."</a>\n";
|
||||
echo "<a href=\"judges.php\"><< ".i18n("Back to Judges")."</a>\n";
|
||||
|
||||
if($_POST['action']=="add" && $_POST['jdiv_id'] && count($_POST['cdllist'])>0)
|
||||
{
|
||||
foreach($_POST['cdllist'] AS $selectedcdl) {
|
||||
$q=mysql_query("UPDATE judges_jdiv SET jdiv_id='{$_POST['jdiv_id']}' WHERE ".
|
||||
" id='$selectedcdl' ");
|
||||
}
|
||||
echo happy(i18n("Judging Division(s) successfully added"));
|
||||
}
|
||||
|
||||
if($_GET['action']=="del" && $_GET['cdl_id']) {
|
||||
mysql_query("UPDATE judges_jdiv SET jdiv_id=0 WHERE id='{$_GET['cdl_id']}'");
|
||||
}
|
||||
|
||||
if($_GET['action']=="empty" && $_GET['jdiv_id']) {
|
||||
mysql_query("UPDATE judges_jdiv SET jdiv_id=0 WHERE jdiv_id='{$_GET['jdiv_id']}' ");
|
||||
echo happy(i18n("Emptied all divisions from Judging Division Group %1",array($_GET['jdiv_id'])));
|
||||
}
|
||||
|
||||
|
||||
/* Sort out all the judging divisions */
|
||||
$cdl = get_all_divs();
|
||||
|
||||
$dkeys = array_keys($cdl);
|
||||
|
||||
/* Count the divisions, or, use the posted variable so we can create new
|
||||
* and empty judging divisions */
|
||||
if($_POST['jdivs'] > 0) {
|
||||
$jdivs = $_POST['jdivs'];
|
||||
} else {
|
||||
$jdivs = 0;
|
||||
foreach($dkeys as $d) {
|
||||
if($cdl[$d]['jdiv'] > $jdivs) $jdivs = $cdl[$d]['jdiv'];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
echo "<form name=\"jdivs\" method=\"post\" action=\"judges_jdiv.php\">";
|
||||
echo "<input type=\"hidden\" name=\"action\">";
|
||||
echo "<input type=\"hidden\" name=\"jdivs\" value=\"$jdivs\">";
|
||||
echo "<input type=\"hidden\" name=\"jdiv_id\">";
|
||||
echo "<input type=\"hidden\" name=\"judges_id\">";
|
||||
echo "<table width=100%>";
|
||||
echo "<tr>";
|
||||
echo "<th width=25% >".i18n("Division List");
|
||||
echo "<br />";
|
||||
echo "</th>";
|
||||
echo "<th>".i18n("Judging Division Groups")."</th>";
|
||||
echo "</tr>";
|
||||
echo "<tr><td valign=\"top\">";
|
||||
// echo "<table width=\"100%\"><tr>";
|
||||
// echo "</tr></table>";
|
||||
|
||||
|
||||
|
||||
echo "<select name=\"cdllist[]\" multiple=\"multiple\" style=\"width: 300px; height: 600px;\">";
|
||||
|
||||
|
||||
/* Print the list of all unassigned divs */
|
||||
reset($dkeys);
|
||||
foreach($dkeys as $id) {
|
||||
if($cdl[$id]['jdiv'] != 0) continue;
|
||||
echo "<option value=\"$id\">{$cdl[$id]['name']}</option>\n";
|
||||
}
|
||||
|
||||
|
||||
echo "</select>";
|
||||
echo "</td>";
|
||||
echo "<td valign=\"top\">";
|
||||
|
||||
/* Print he groupings of the assigned ones */
|
||||
for($jdiv = 1; $jdiv <= $jdivs; $jdiv++) {
|
||||
echo "<hr>";
|
||||
|
||||
echo "<table width=\"100%\">";
|
||||
echo "<tr><td valign=top width=\"80\">";
|
||||
echo "<input onclick=\"addbuttonclicked('$jdiv')\" type=\"button\" value=\"Add >>\"><br />";
|
||||
echo "<br />";
|
||||
echo "<a onclick=\"return confirmClick('Are you sure you want to empty all the divisions from this grouping?')\" href=\"judges_jdiv.php?action=empty&jdiv_id=$jdiv \">";
|
||||
echo "<img border=0 src=\"".$config['SFIABDIRECTORY']."/images/16/button_cancel.".$config['icon_extension']."\">";
|
||||
echo " ".i18n("Empty")." ";
|
||||
echo "</a>";
|
||||
|
||||
|
||||
echo "</td><td>";
|
||||
|
||||
$p = 0;
|
||||
reset($dkeys);
|
||||
foreach($dkeys as $id) {
|
||||
if($cdl[$id]['jdiv'] != $jdiv) continue;
|
||||
$p += $cdl[$id]['projects'];
|
||||
}
|
||||
|
||||
echo "<table width=\"100%\">\n";
|
||||
echo "<tr><th colspan=\"2\" align=\"left\">Judging Division $jdiv ($p project".($p==1?'':'s').")";
|
||||
echo "</th></tr>\n";
|
||||
|
||||
$x = 0;
|
||||
reset($dkeys);
|
||||
foreach($dkeys as $id) {
|
||||
if($cdl[$id]['jdiv'] != $jdiv) continue;
|
||||
|
||||
echo "<tr><td>";
|
||||
echo "<a href=\"judges_jdiv.php?action=del&cdl_id=$id\"><img border=0 src=\"".$config['SFIABDIRECTORY']."/images/16/button_cancel.".$config['icon_extension']."\"></a>";
|
||||
echo "</td><td width=\"100%\">";
|
||||
|
||||
echo $cdl[$id]['lname'];
|
||||
echo "</td></tr>";
|
||||
$x++;
|
||||
|
||||
}
|
||||
|
||||
if($x) {
|
||||
echo "<tr><td colspan=\"2\">";
|
||||
// echo "<a onclick=\"return confirmClick('Are you sure you want to empty all the divisions from this grouping?')\" href=\"judges_jdiv.php?action=empty&jdiv_id=$jdiv \">";
|
||||
// echo " ".i18n("Empty All Divisions")." ";
|
||||
// echo "<img border=0 src=\"".$config['SFIABDIRECTORY']."/images/16/button_cancel.".$config['icon_extension']."\">";
|
||||
// echo "</a>";
|
||||
echo "</td></tr>";
|
||||
} else {
|
||||
echo "<tr><td colspan=\"2\">";
|
||||
echo error(i18n("No divisions present"),"inline");
|
||||
echo "</td></tr>";
|
||||
}
|
||||
|
||||
echo "</table>";
|
||||
|
||||
echo "</td></tr></table>";
|
||||
}
|
||||
echo "<hr><input onclick=\"newbuttonclicked('".($jdivs+1)."')\" type=\"button\" value=\"New Judging Divsion Group\">";
|
||||
|
||||
echo "<br />";
|
||||
|
||||
echo "</td></tr>";
|
||||
echo "</table>";
|
||||
echo "</form>";
|
||||
|
||||
send_footer();
|
||||
|
||||
|
||||
|
||||
?>
|
@ -1 +1 @@
|
||||
19
|
||||
20
|
||||
|
15
db/db.update.20.sql
Normal file
15
db/db.update.20.sql
Normal file
@ -0,0 +1,15 @@
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `judges_jdiv`
|
||||
--
|
||||
|
||||
CREATE TABLE `judges_jdiv` (
|
||||
`id` int(10) unsigned NOT NULL auto_increment,
|
||||
`jdiv_id` int(11) NOT NULL default '0',
|
||||
`projectdivisions_id` int(11) NOT NULL default '0',
|
||||
`projectcategories_id` int(11) NOT NULL default '0',
|
||||
`lang` char(2) NOT NULL default '',
|
||||
PRIMARY KEY (`id`)
|
||||
) TYPE=MyISAM;
|
||||
|
@ -89,6 +89,19 @@ function questions_save_answers($section, $id, $year, $answers)
|
||||
}
|
||||
}
|
||||
|
||||
function questions_find_question_id($section, $year, $dbheading)
|
||||
{
|
||||
$q = mysql_query("SELECT id FROM questions WHERE ".
|
||||
" section='$section' ".
|
||||
" AND year='$year' ".
|
||||
" AND db_heading='$dbheading' ");
|
||||
if(mysql_num_rows($q) == 1) {
|
||||
$r = mysql_fetch_object($q);
|
||||
return $r->id;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
function questions_print_answer_editor($section, $id, $year, $array_name)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user