Fix uploading to STO: Make YSC targets use the same upload screen, but

disable division selection.  Count the number of winners on the main
upload page and disable the send button if there are 0 winners.  (also
helps the user know which awards need uploading).
This commit is contained in:
dave 2010-04-18 22:40:10 +00:00
parent 8a5436a3b2
commit f0515a93bd

View File

@ -27,7 +27,7 @@ require_once('curl.inc.php');
user_auth_required('committee', 'admin'); user_auth_required('committee', 'admin');
//function get_cwsf_award_winners() //function get_cwsf_award_winners()
function get_winners($awardid, $fairs_id, $catmap_str=NULL, $divmap_str=NULL) function get_winners($awardid, $fairs_id)
{ {
global $config; global $config;
@ -172,6 +172,51 @@ function get_winners($awardid, $fairs_id, $catmap_str=NULL, $divmap_str=NULL)
return $all_winners; return $all_winners;
} }
function count_winners($awardid, $fairs_id)
{
global $config;
$count = 0;
$awards = array();
if($awardid == -1) {
/* Get all for this fair */
$q=mysql_query("SELECT * FROM award_awards WHERE award_source_fairs_id='$fairs_id' AND year='{$config['FAIRYEAR']}'");
if(mysql_num_rows($q) == 0) {
error_("Can't find award id $awardid");
return 0;
}
while($a = mysql_fetch_assoc($q)) {
$awards[] = $a;
}
} else {
/* Get the award */
$q=mysql_query("SELECT * FROM award_awards WHERE id='$awardid' AND year='{$config['FAIRYEAR']}'");
if(mysql_num_rows($q)!=1) {
error_("Can't find award id $awardid");
return 0;
}
$award=mysql_fetch_assoc($q);
$awards[] = $award;
}
foreach($awards as $award) {
/* Get the prizes */
$q=mysql_query("SELECT * FROM award_prizes WHERE award_awards_id='{$award['id']}'");
while($prize=mysql_fetch_assoc($q)) {
$pid = $prize['id'];
$wq=mysql_query("SELECT COUNT(projects.id) as C FROM award_prizes
LEFT JOIN winners ON winners.awards_prizes_id=award_prizes.id
LEFT JOIN projects ON projects.id=winners.projects_id
WHERE
awards_prizes_id='$pid' AND
winners.year='{$config['FAIRYEAR']}'");
$wc = mysql_fetch_assoc($wq);
$count += $wc['C'];
}
}
return $count;
}
function load_server_cats_divs($fairs_id) function load_server_cats_divs($fairs_id)
{ {
@ -243,15 +288,21 @@ case 'award_upload':
$upload_something = false; $upload_something = false;
foreach($all_winners as &$w) { foreach($all_winners as &$w) {
foreach($w['prizes'] as &$p) { foreach($w['prizes'] as &$p) {
if(count($p['projects']))
$upload_something = true;
/* Only update divs/cats for SFIAB fairs, the
* YSC/STO awards system doesn't care about divisions, but YSC
* registration does, but that's a different bit of code */
if($fair['type'] != 'sfaib') continue;
foreach($p['projects'] as &$pr) { foreach($p['projects'] as &$pr) {
$div_id = intval($divs[$w['id']][$p['id']][$pr['projectid']]); $div_id = intval($divs[$w['id']][$p['id']][$pr['projectid']]);
$pr['projectdivisions_id'] = $div_id; $pr['projectdivisions_id'] = $div_id;
$cat_id = intval($cats[$w['id']][$p['id']][$pr['projectid']]); $cat_id = intval($cats[$w['id']][$p['id']][$pr['projectid']]);
$pr['projectcategories_id'] = $cat_id; $pr['projectcategories_id'] = $cat_id;
} }
if(count($p['projects']))
$upload_something = true;
} }
} }
@ -386,7 +437,6 @@ case 'load':
$fairs_id = intval($_GET['fairs_id']); $fairs_id = intval($_GET['fairs_id']);
$winners = get_winners($award_awards_id, $fairs_id); $winners = get_winners($award_awards_id, $fairs_id);
list($server_cats, $server_divs, $catmap, $divmap) = load_server_cats_divs($fairs_id);
$divs = projectdivisions_load(); $divs = projectdivisions_load();
$q = mysql_query("SELECT * FROM fairs WHERE id='$fairs_id}'"); $q = mysql_query("SELECT * FROM fairs WHERE id='$fairs_id}'");
@ -394,17 +444,30 @@ case 'load':
echo i18n("The following list of winning projects/students will be sent to: <b>%1</b>. Use the 'Edit Default Division Assignments' button to change the default mappings for divisions. You can over-ride any division assignment by changing it in the list below. Category assignments are done automatically based on grade. When you are happy with the list below, click the 'Upload Winners' button.", array($fair['name'])); echo i18n("The following list of winning projects/students will be sent to: <b>%1</b>. Use the 'Edit Default Division Assignments' button to change the default mappings for divisions. You can over-ride any division assignment by changing it in the list below. Category assignments are done automatically based on grade. When you are happy with the list below, click the 'Upload Winners' button.", array($fair['name']));
if($fair['type'] != 'sfiab') {
echo '<br /><br />';
echo i18n('This server does not collection Division information, all division selection is disabled.');
$server_cats = array();
$server_divs = array();
$catmap =array();
$divmap = array();
$division_disabled = true;
} else {
list($server_cats, $server_divs, $catmap, $divmap) = load_server_cats_divs($fairs_id);
$division_disabled = false;
}
?> ?>
<br /> <br /><br />
<br /> <button onClick="popup_divmap(<?=$fairs_id?>);return false;" <?=$division_disabled ? 'disabled="disabled' : ''?>
<button onClick="popup_divmap(<?=$fairs_id?>);return false;" title="<?=i18n("Edit Default Division Assignments")?>"><?=i18n("Edit Default Division Assignments")?></button>
title="<?=i18n("Edit Default Division Assignments")?>"><?=i18n("Edit Default Division Assignments")?></button>
<form id="winner_divs_form"> <form id="winner_divs_form">
<input type="hidden" name="fairs_id" value="<?=$fairs_id?>" /> <input type="hidden" name="fairs_id" value="<?=$fairs_id?>" />
<input type="hidden" name="award_awards_id" value="<?=$award_awards_id?>" /> <input type="hidden" name="award_awards_id" value="<?=$award_awards_id?>" />
<table class="tableview"> <table class="tableview">
<? <?
foreach($winners as &$w) { foreach($winners as &$w) {
echo "<tr><td style=\"border: 0px;\" colspan=\"3\">"; echo "<tr><td style=\"border: 0px;\" colspan=\"3\">";
echo "<br /><h3>{$w['award_name']}</h3>"; echo "<br /><h3>{$w['award_name']}</h3>";
@ -412,6 +475,10 @@ case 'load':
echo "<tr><td style=\"border: 0px;\" colspan=\"3\">"; echo "<tr><td style=\"border: 0px;\" colspan=\"3\">";
echo "<h4>{$p['name']}</h4>"; echo "<h4>{$p['name']}</h4>";
echo '</td></tr>'; echo '</td></tr>';
if(count($p['projects']) == 0) {
echo i18n('No winners to upload');
continue;
}
foreach($p['projects'] as &$pr) { foreach($p['projects'] as &$pr) {
?> <tr><td style="border: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;</td> ?> <tr><td style="border: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td><b><?=$pr['projectnumber']?> - <?=$pr['title']?></b><br/> <td><b><?=$pr['projectnumber']?> - <?=$pr['title']?></b><br/>
@ -441,22 +508,25 @@ case 'load':
<tr> <td align="right" style="border: 0px;"><?=i18n('Our division')?>:</td> <tr> <td align="right" style="border: 0px;"><?=i18n('Our division')?>:</td>
<td><b><?=$divs[$pr['client_projectdivisions_id']]['division']?></td> <td><b><?=$divs[$pr['client_projectdivisions_id']]['division']?></td>
</tr> </tr>
<tr> <td align="right"><?=i18n('%1 Division', array($fair['abbrv']))?>:</td>
<td><select name="div[<?=$w['id']?>][<?=$p['id']?>][<?=$pr['projectid']?>]">
<? <?
$mapto = $divmap[$pr['client_projectdivisions_id']]; if($division_disabled == false) {
foreach($server_divs as $d) { ?> <tr> <td align="right"><?=i18n('%1 Division', array($fair['abbrv']))?>:</td>
$sel = ($mapto == $d['id']) ? 'selected="selected"' : ''; <td><select name="div[<?=$w['id']?>][<?=$p['id']?>][<?=$pr['projectid']?>]">
echo "<option $sel value=\"{$d['id']}\">{$d['division']}</option>"; <?
} $mapto = $divmap[$pr['client_projectdivisions_id']];
?> </select> foreach($server_divs as $d) {
<input type="hidden" name="cat[<?=$w['id']?>][<?=$p['id']?>][<?=$pr['projectid']?>]" value="<?=$server_cat?>" /> $sel = ($mapto == $d['id']) ? 'selected="selected"' : '';
</td> echo "<option $sel value=\"{$d['id']}\">{$d['division']}</option>";
</tr> }
<tr> <td align="right"><?=i18n('%1 Category', array($fair['abbrv']))?>:</td> ?> </select>
<td><b><?=$server_cats[$server_cat]['category']?> (<?=i18n('Grade')?> <?=$server_cats[$server_cat]['mingrade']?> - <?=$server_cats[$server_cat]['maxgrade']?>)</td> <input type="hidden" name="cat[<?=$w['id']?>][<?=$p['id']?>][<?=$pr['projectid']?>]" value="<?=$server_cat?>" />
</tr> </td>
</table> </tr>
<tr> <td align="right"><?=i18n('%1 Category', array($fair['abbrv']))?>:</td>
<td><b><?=$server_cats[$server_cat]['category']?> (<?=i18n('Grade')?> <?=$server_cats[$server_cat]['mingrade']?> - <?=$server_cats[$server_cat]['maxgrade']?>)</td>
</tr>
<? }
?> </table>
</td></tr> </td></tr>
<? <?
} }
@ -603,14 +673,19 @@ echo mysql_error();
<table class="tableview"><thead> <table class="tableview"><thead>
<tr><th><?=i18n("Source Name")?></th> <tr><th><?=i18n("Source Name")?></th>
<th><?=i18n("Number of Awards")?></th> <th><?=i18n("Number of Awards")?></th>
<th><?=i18n("Winners<br />Assigned")?></th>
<th><?=i18n("Send All")?></th> <th><?=i18n("Send All")?></th>
</tr></thead> </tr></thead>
<? <?
while($r=mysql_fetch_object($q)) { while($r=mysql_fetch_object($q)) {
echo "<tr><td>{$r->name}</td>\n"; $count = count_winners(-1, $r->id);
echo "<td align=\"center\">{$r->AWARD_COUNT}</td>"; ?>
echo "<td align=\"center\">"; <tr><td><?=$r->name?></td>
<td align="center"><?=$r->AWARD_COUNT?></td>
<td align="center"><?=$count?></td>
<td align="center">
<?
if($r->type == 'sfiab') if($r->type == 'sfiab')
echo "<a href=\"#\" onClick=\"popup_upload({$r->id},-1)\" >".i18n("Send All")."</a>"; echo "<a href=\"#\" onClick=\"popup_upload({$r->id},-1)\" >".i18n("Send All")."</a>";
else else
@ -641,25 +716,31 @@ echo mysql_error();
<table class="tableview"><thead> <table class="tableview"><thead>
<tr><th><?=i18n("Award Name")?></th> <tr><th><?=i18n("Award Name")?></th>
<th><?=i18n("Source Name")?></th> <th><?=i18n("Source Name")?></th>
<th><?=i18n("Winners<br />Assigned")?></th>
<th><?=i18n("Send")?></th> <th><?=i18n("Send")?></th>
<th><?=i18n("Additional<br />Info")?></th> <th><?=i18n("Additional<br />Info")?></th>
</tr></thead> </tr></thead>
<? <?
while($r=mysql_fetch_object($q)) { while($r=mysql_fetch_object($q)) {
echo "<tr><td>{$r->awardname}</td>\n"; $count = count_winners($r->id, $r->award_source_fairs_id);
echo "<td>{$r->fairname}</td>"; ?>
echo "<td align=\"center\">"; <tr><td><?=$r->awardname?></td>
if($r->fairtype == 'sfiab') <td><?=$r->fairname?></td>
echo "<a href=\"#\" onClick=\"popup_upload({$r->award_source_fairs_id},{$r->id})\" >".i18n("send")."</a>"; <td align="center"><?=$count?></td>
else <td align="center">
echo "<a href=\"#\" onClick=\"award_upload({$r->id})\" >".i18n("send")."</a>"; <?
echo "</td><td>"; if($count > 0)
$onclick = "popup_upload({$r->award_source_fairs_id},{$r->id});return false;";
else
$onclick = "alert('".i18n('Assign a winner first')."');return false;";
?>
<a href="#" onClick="<?=$onclick?>"><?=i18n("send")?></a>
</td><td>
if($r->external_additional_materials) { <? if($r->external_additional_materials) {
echo "<a href=\"{$_SERVER['PHP_SELF']}?action=additional_materials&award_awards_id={$r->id}\" target=\"_blank\">".i18n("download")."</a>"; echo "<a href=\"{$_SERVER['PHP_SELF']}?action=additional_materials&award_awards_id={$r->id}\" target=\"_blank\">".i18n("download")."</a>";
} }
echo '</td></tr>';
echo "</td></tr>";
} }
?> ?>
</table> </table>