<? /* * 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_once ('../common.inc.php'); require_once ('../user.inc.php'); user_auth_required('committee', 'admin'); require_once ('awards.inc.php'); $_GET['action'] = $_GET['action'] ?? ''; switch ($_GET['action']) { case 'awardinfo_load': ; $id = intval(get_value_from_array($_GET, 'id')); $q = $pdo->prepare("SELECT * FROM award_awards WHERE id=?"); $q->execute([$id]); $ret = $q->fetch(PDO::FETCH_ASSOC); // json_encode NEEDS UTF8 DATA, but we store it in the database as ISO :( foreach ($ret AS $k => $v) { $ret[$k] = iconv('ISO-8859-1', 'UTF-8', $v); } // echo iconv("ISO-8859-1","UTF-8",json_encode($ret)); echo json_encode($ret); exit; case 'award_delete': $id = intval($_GET['id']); award_delete($id); exit; case 'awardinfo_save': /* Scrub the data while we save it */ $id = intval($_POST['id']); if ($id == -1) { $q = $pdo->prepare("INSERT INTO award_awards (year,self_nominate,schedule_judges) VALUES (?,'yes','yes')"); $q->execute([$config['FAIRYEAR']]); $id = $pdo->lastInsertId(); happy_('Award Created'); /* Set the award_id in the client */ echo "<script type=\"text/javascript\">award_id=$id;</script>"; } $q = "UPDATE award_awards SET award_types_id='" . intval($_POST['award_types_id']) . "', presenter='" . iconv('UTF-8', 'ISO-8859-1', stripslashes($_POST['presenter'])) . "', excludefromac='" . (($_POST['excludefromac'] == 1) ? 1 : 0) . "', cwsfaward='" . (($_POST['cwsfaward'] == 1) ? 1 : 0) . "', self_nominate='" . (($_POST['self_nominate'] == 'yes') ? 'yes' : 'no') . "', schedule_judges='" . (($_POST['schedule_judges'] == 'yes') ? 'yes' : 'no') . "', description='" . iconv('UTF-8', 'ISO-8859-1', stripslashes($_POST['description'])) . "' "; if (array_key_exists('name', $_POST)) { /* * These values may be disabled, if they name key exists, assume * they aren't disabled and save them too */ $q .= ",name='" . iconv('UTF-8', 'ISO-8859-1', stripslashes($_POST['name'])) . "', criteria='" . iconv('UTF-8', 'ISO-8859-1', stripslashes($_POST['criteria'])) . "', sponsors_id='" . intval($_POST['sponsors_id']) . "' "; } $q .= "WHERE id=?"; $q = $pdo->prepare($q); $q->execute([$id]); show_pdo_errors_if_any($pdo); happy_('Award information saved'); exit; case 'eligibility_load': $id = intval($_GET['id']); // select the current categories that this award is linked to $ret = array('categories' => array(), 'divisions' => array()); $q = $pdo->prepare("SELECT * FROM award_awards_projectcategories WHERE award_awards_id=?"); $q->execute([$id]); while ($r = $q->fetch(PDO::FETCH_ASSOC)) { $ret['categories'][] = $r['projectcategories_id']; } // select the current categories that this award is linked to $q = $pdo->$prepare("SELECT * FROM award_awards_projectdivisions WHERE award_awards_id=?"); $q->execute([$id]); while ($r = $q->fetch(PDO::FETCH_ASSOC)) { $ret['divisions'][] = $r['projectdivisions_id']; } echo json_encode($ret); exit; case 'eligibility_save': $id = intval($_POST['award_awards_id']); // now add the new ones if (!is_array($_POST['categories']) || !is_array($_POST['divisions'])) { error_('Invalid data'); exit; } // wipe out any old award-category links $q = $pdo->prepare("DELETE FROM award_awards_projectcategories WHERE award_awards_id=?"); $q->execute([$id]); foreach ($_POST['categories'] AS $key => $cat) { $c = intval($cat); $q = $pdo->prepare('INSERT INTO award_awards_projectcategories (award_awards_id, projectcategories_id, year) VALUES (:id, :c, :year)'); $q->bindParam(':id', $id, PDO::PARAM_INT); $q->bindParam(':c', $c, PDO::PARAM_INT); $q->bindParam(':year', $config['FAIRYEAR'], PDO::PARAM_INT); $q->execute(); } // wipe out any old award-divisions links $q = $pdo->prepare("DELETE FROM award_awards_projectdivisions WHERE award_awards_id=?"); $q->execute([$id]); // now add the new ones foreach ($_POST['divisions'] AS $key => $div) { $d = intval($div); $q = $pdo->prepare('INSERT INTO award_awards_projectdivisions (award_awards_id, projectdivisions_id, year) VALUES (:id, :d, :year)'); $q->bindParam(':id', $id, PDO::PARAM_INT); $q->bindParam(':d', $d, PDO::PARAM_INT); $q->bindParam(':year', $config['FAIRYEAR'], PDO::PARAM_INT); $q->execute(); show_pdo_errors_if_any($pdo); } happy_('Eligibility information saved'); exit; case 'prize_order': $order = 0; foreach ($_GET['prizelist'] as $position => $id) { if ($id == '') continue; $order++; $q = $pdo->prepare("UPDATE `award_prizes` SET `order`=? WHERE `id`=?"); $q->execute([$order, $id]); } // print_r($_GET); happy_('Order Updated.'); exit; case 'award_order': $order = 0; foreach ($_GET['awardlist'] as $position => $id) { if ($id == '') continue; $order++; $q = $pdo->prepare("UPDATE `award_awards` SET `order`=? WHERE `id`=?"); $q->execute([$order, $id]); } happy_('Order updated'); exit; case 'prizeinfo_load': $id = intval($_GET['id']); if ($id == -1) { $q = $pdo->prepare("SELECT * FROM award_prizes WHERE year='-1' AND award_awards_id='0' ORDER BY `order`"); $q->execute(); } else { $q = $pdo->prepare("SELECT * FROM award_prizes WHERE award_awards_id=? ORDER BY `order`"); $q->execute([$id]); } while ($r = $q->fetch(PDO::FETCH_ASSOC)) { foreach ($r AS $k => $v) { $r[$k] = iconv('ISO-8859-1', 'UTF-8', $v); } $ret[] = $r; } echo json_encode($ret); exit; case 'prize_load': $id = intval($_GET['id']); $q = $pdo->prepare("SELECT * FROM award_prizes WHERE id=?"); $q->execute([$id]); $ret = $q->fetch(PDO::FETCH_ASSOC); foreach ($ret AS $k => $v) { $ret[$k] = iconv('ISO-8859-1', 'UTF-8', $v); } echo json_encode($ret); exit; case 'prize_create': $aaid = intval($_GET['award_awards_id']); $year = $config['FAIRYEAR']; if ($aaid == -1) { $aaid = 0; $year = -1; } $q = $pdo->prepare('INSERT INTO award_prizes (award_awards_id, year) VALUES (:aaid, :year)'); $q->bindParam(':aaid', $aaid, PDO::PARAM_INT); $q->bindParam(':year', $year, PDO::PARAM_INT); $q->execute(); $ret = array('id' => $pdo->lastInsertId()); echo json_encode($ret); exit; case 'prize_save': $id = intval($_POST['id']); $q = $pdo->prepare('UPDATE award_prizes SET prize = :prize, cash = :cash, scholarship = :scholarship, value = :value, number = :number, excludefromac = :excludefromac, trophystudentkeeper = :trophystudentkeeper, trophystudentreturn = :trophystudentreturn, trophyschoolkeeper = :trophyschoolkeeper, trophyschoolreturn = :trophyschoolreturn WHERE id = :id'); $q->bindParam(':prize', stripslashes(iconv('UTF-8', 'ISO-8859-1', $_POST['prize'])), PDO::PARAM_STR); $q->bindValue(':cash', intval($_POST['cash']), PDO::PARAM_INT); $q->bindValue(':scholarship', intval($_POST['scholarship']), PDO::PARAM_INT); $q->bindValue(':value', intval($_POST['value']), PDO::PARAM_INT); $q->bindValue(':number', intval($_POST['number']), PDO::PARAM_INT); $q->bindValue(':excludefromac', ($_POST['excludefromac'] == 1) ? 1 : 0, PDO::PARAM_INT); $q->bindValue(':trophystudentkeeper', ($_POST['trophystudentkeeper'] == 1) ? 1 : 0, PDO::PARAM_INT); $q->bindValue(':trophystudentreturn', ($_POST['trophystudentreturn'] == 1) ? 1 : 0, PDO::PARAM_INT); $q->bindValue(':trophyschoolkeeper', ($_POST['trophyschoolkeeper'] == 1) ? 1 : 0, PDO::PARAM_INT); $q->bindValue(':trophyschoolreturn', ($_POST['trophyschoolreturn'] == 1) ? 1 : 0, PDO::PARAM_INT); $q->bindValue(':id', $id, PDO::PARAM_INT); $q->execute(); happy_('Prize saved'); exit; case 'prize_delete': $id = intval($_GET['id']); award_prize_delete($id); happy_('Prize deleted'); exit; case 'feeder_load': $id = intval($_GET['id']); /* Prepare two lists of fair IDs, for which fairs can upload and download this award */ $q = $pdo->prepare("SELECT * FROM fairs_awards_link WHERE award_awards_id=?"); $q->execute([$id]); $ul = array(); $dl = array(); while ($r = $q->fetch(PDO::FETCH_ASSOC)) { if ($r['upload_winners'] == 'yes') $ul[$r['fairs_id']] = true; if ($r['download_award'] == 'yes') $dl[$r['fairs_id']] = true; } $q = $pdo->prepare("SELECT * FROM award_awards WHERE id=?"); $q->execute([$id]); $a = $q->fetch(PDO::FETCH_ASSOC); ?> <h4><?= i18n('Feeder Fairs') ?></h4> <form id="feeder_form"> <input type="hidden" id="feeder_id" name="award_awards_id" value="<?= $a['id'] ?>"/> <? $ch = $a['per_fair'] == 'yes' ? 'checked="checked"' : ''; ?> <p><input type="checkbox" name="per_fair" value="yes" <?= $ch ?> /> <?= i18n('Treat this award as a separate award for each feeder fair (instead of as a single award across the whole system). This will allow winners to be assigned to prizes for each feeder fair. If disabled, only a single group if winners will be permitted across all feeder fairs.') ?></p> <? $ch = (count($ul) || count($dl)) ? 'checked="checked"' : ''; ?> <p><input type="checkbox" id="feeder_enable" name="enable" value="yes" <?= $ch ?> /> <?= i18n('Allow feeder fairs to download this award.') ?></p> <div id="feeder_en"> <table class="editor"> <tr><td><?= i18n('Unique Name') ?>:</td> <td><input type="text" name="identifier" value="<?= $a['external_identifier'] ?>" size="40" maxlength="128" /></td></tr> <? $ch = $a['external_additional_materials'] ? 'checked="checked"' : ''; ?> <tr><td><input type="checkbox" name="register_winners" value="1" <?= $ch ?> /></td> <td><?= i18n('Winners uploaded by a feeder fair should be registered as participants at this fair (both download award and upload winners should be turned on below)') ?></td></tr> <? $ch = $a['external_register_winners'] ? 'checked="checked"' : ''; ?> <tr><td><input type="checkbox" name="additional_materials" value="1" <?= $ch ?> /></td> <td><?= i18n('There is additional material for this award (e.g. forms, instructions). If a feeder fair assigns a winner to this award, they will be told they need to contact this fair to get the additional material.') ?></td></tr> </table> <p><?= i18n('Select which feeder fairs can download this award and upload winners.') ?></p> <table class="tableview"> <tr><th><?= i18n('Fair') ?></th> <th style="width: 5em"><?= i18n('Download Award') ?></th> <th style="width: 5em"><?= i18n('Upload Winners') ?></th> </tr> <? $q = $pdo->prepare("SELECT * FROM fairs WHERE type='feeder'"); $q->execute(); while ($r = $q->fetch(PDO::FETCH_ASSOC)) { echo "<tr><td style=\"padding-left:1em;padding-right:1em\">{$r['name']}</td>"; $ch = $dl[$r['id']] == true ? 'checked="checked"' : ''; echo "<td style=\"text-align:center\"><input type=\"checkbox\" name=\"feeder_dl[]\" value=\"{$r['id']}\" $ch ></td>"; $ch = $ul[$r['id']] == true ? 'checked="checked"' : ''; echo "<td style=\"text-align:center\"><input type=\"checkbox\" name=\"feeder_ul[]\" value=\"{$r['id']}\" $ch ></td>"; echo '</tr>'; } ?> </table> </div> <br /> <button id="feeder_save"><?= i18n('Save') ?></button> </form> <? exit; case 'feeder_save': $id = intval($_POST['award_awards_id']); $dl = is_array($_POST['feeder_dl']) ? $_POST['feeder_dl'] : array(); $ul = is_array($_POST['feeder_ul']) ? $_POST['feeder_ul'] : array(); /* Prepare a fair-wise list */ $data = array(); foreach ($dl AS $fairs_id) $data[$fairs_id]['dl'] = true; foreach ($ul AS $fairs_id) $data[$fairs_id]['ul'] = true; /* Now save each one */ $q = $pdo->prepare("DELETE FROM fairs_awards_link WHERE award_awards_id=?"); $q->execute([$id]); show_pdo_errors_if_any($pdo); foreach ($data as $fairs_id => $f) { $dl = ($f['dl'] == true) ? 'yes' : 'no'; $ul = ($f['ul'] == true) ? 'yes' : 'no'; $q = $pdo->prepare("INSERT INTO fairs_awards_link (award_awards_id,fairs_id,download_award,upload_winners) VALUES (?,?,?,?)"); $q->execute([$id,$fairs_id,$dl,$ul]); show_pdo_errors_if_any($pdo); } $ident = stripslashes($_POST['identifier']); $per_fair = $_POST['per_fair'] == 'yes' ? 'yes' : 'no'; $mat = intval($_POST['additional_materials']); $w = intval($_POST['register_winners']); $q = $pdo->prepare("UPDATE award_awards SET external_identifier=?, external_additional_materials=?, external_register_winners=?, per_fair=? WHERE id=?"); $q->execute([[$ident, $mat,$w],$per_fair,$id]); happy_('Feeder Fair information saved'); exit; } send_header('Awards Management', array('Committee Main' => 'committee_main.php', 'Administration' => 'admin/index.php', 'Awards Main' => 'admin/awards.php')); ?> <!--<script type="text/javascript" src="../js/jquery.tablednd_0_5.js"></script>--> <script type="text/javascript"> var award_id = 0; var award_tab_update = new Array(); function update_awardinfo() { if(award_tab_update['awardinfo'] == award_id) return; award_tab_update['awardinfo'] = award_id; // alert(award_id); if(award_id == -1) { // $("#awardinfo input:text").val(''); /* New award, set defaults and clear everythign else */ $("#awardinfo_id").val(-1); $("#awardinfo_name").val(""); $("#awardinfo_sponsors_id").val(0); $("#awardinfo_presenter").val(""); $("#awardinfo_description").val(""); $("#awardinfo_criteria").val(""); $("#awardinfo_award_types_id").val(5); // For some reason, with checkboxes, these have to be arrays $("#awardinfo_excludefromac").val([]); $("#awardinfo_cwsfaward").val([]); $("#awardinfo_selfnominate").val(["yes"]); $("#awardinfo_schedulejudges").val(["yes"]); return; } /* Enable all fields */ $("#awardinfo *").removeAttr('disabled'); $.getJSON("<?= $_SERVER['PHP_SELF'] ?>?action=awardinfo_load&id="+award_id, function(json){ $("#awardinfo_id").val(json.id); $("#awardinfo_name").val(json.name); $("#awardinfo_award_source_fairs_id").val(json.award_source_fairs_id); $("#awardinfo_sponsors_id").val(json.sponsors_id); $("#awardinfo_presenter").val(json.presenter); $("#awardinfo_description").val(json.description); $("#awardinfo_criteria").val(json.criteria); $("#awardinfo_award_types_id").val(json.award_types_id); // For some reason, with checkboxes, these have to be arrays $("#awardinfo_excludefromac").val([json.excludefromac]); $("#awardinfo_cwsfaward").val([json.cwsfaward]); $("#awardinfo_selfnominate").val([json.self_nominate]); $("#awardinfo_schedulejudges").val([json.schedule_judges]); /* Disable fields we don't want the user to edit * for downloaded awards */ if (json.award_source_fairs_id>0) { $("#awardinfo_name").attr('disabled', 'disabled'); $("#awardinfo_sponsors_id").attr('disabled', 'disabled'); $("#awardinfo_criteria").attr('disabled', 'disabled'); } /* Update the dialog title */ $('#popup_editor').dialog('option', 'title', "<?= i18n('Award') ?>: " + $('#awardinfo_name').val()); /* Update the status */ if ($('#awardinfo_award_source_fairs_id').val() != 0) { $('#popup_status').html("<?= addslashes(notice(i18n('This award was downloaded, some fields are not edittable'))) ?>"); } else { $('#popup_status').html(""); } }); } function awardinfo_save() { var reload = (award_id == -1) ? true : false; /* This is sneaky, we're going to make the awardinfo_save possibly emit * javascript to set a new award_id, so it will ALWAYS be correct * after the .load finishes */ $("#debug").load("<? $_SERVER['PHP_SELF'] ?>?action=awardinfo_save", $("#awardinfo").serializeArray(), function(responseText, textStatus, XMLHttpRequest) { /* At this point, award_id has been updated by the load */ /* We want to do this AFTER the load completes. * Somehow, the value of reload properly makes * it into this function */ if(reload) { $("#popup_editor").dialog('close'); popup_editor(award_id, ''); } }); return false; } function update_eligibility() { if(award_tab_update['eligibility'] == award_id) return; award_tab_update['eligibility'] = award_id; $.getJSON("<?= $_SERVER['PHP_SELF'] ?>?action=eligibility_load&id="+award_id, function(json){ $("[name=categories\\[\\]]").val(json.categories); $("[name=divisions\\[\\]]").val(json.divisions); }); } function prizelist_refresh() { //FIXME Table DnD remove CANNOT reorder prizes now or open to edit, create new award not working either (test the rest of the software) $("#prizelist").tableDnD({ onDrop: function(table, row) { var order = $.tableDnD.serialize(); $("#prizeinfo_info").load("<?= $_SERVER['PHP_SELF'] ?>?action=prize_order&"+order); /* Change the order */ var rows = table.tBodies[0].rows; for (var i=0; i<rows.length; i++) { $("#prizelist_order_"+rows[i].id).html(i); } }, dragHandle: "drag_handle" }); } function update_prizeinfo() { /* We can't do this filtering here, sometimes we need to fiorce * a prizeinfo reload */ // if(award_tab_update['prizeinfo'] == award_id) return; // award_tab_update['prizeinfo'] = award_id; /* This also works for the prize template, id=-1 */ $.getJSON("<?= $_SERVER['PHP_SELF'] ?>?action=prizeinfo_load&id="+award_id, function(json) { $(".prizelist_tr").remove(); for( var i in json ) { var p = json[i]; var oc = " onclick=\"edit_prize("+p.id+");\" "; $("#prizelist").append("<tr class=\"prizelist_tr\" id=\""+p.id+"\"><td class=\"drag_handle\" style=\"cursor:move; text-align:center;\" id=\"prizelist_order_"+p.id+"\">"+p.order+"</td>"+ "<td style=\"cursor:pointer; text-align:center;\" "+oc+" >"+p.number+"</td>"+ "<td style=\"cursor:pointer;\" "+oc+" >"+p.prize+"</td>"+ "<td style=\"cursor:pointer; width:4em; text-align:right; padding-left:2em; padding-right:2em;\" "+oc+">"+p.cash+"</td>"+ "<td style=\"cursor:pointer; width:4em; text-align:right; padding-left:2em; padding-right:2em;\" "+oc+">"+p.scholarship+"</td>"+ "<td style=\"cursor:pointer; width:4em; text-align:right; padding-left:2em; padding-right:2em;\" "+oc+">"+p.value+"</td>"+ "<td style=\"text-align:center;\">"+ " <a onclick=\"edit_prize("+p.id+");\" href=\"#\"><img border=\"0\" src=\"<?= $config['SFIABDIRECTORY'] ?>/images/16/edit.<?= $config['icon_extension'] ?>\"></a> "+ "<a onclick=\"prize_delete("+p.id+");\" href=\"#\" ><img border=0 src=\"<?= $config['SFIABDIRECTORY'] ?>/images/16/button_cancel.<?= $config['icon_extension'] ?>\"></a>"+ "</td></tr>"); } prizelist_refresh(); }); } function edit_prize(id) { $.getJSON("<?= $_SERVER['PHP_SELF'] ?>?action=prize_load&id="+id, function(json){ $("#prizeinfo_edit_header").html("<?= i18n('Edit Prize') ?>"); $("#prizeinfo_id").val(json.id); $("#prizeinfo_prize").val(json.prize); $("#prizeinfo_cash").val(json.cash); $("#prizeinfo_scholarship").val(json.scholarship); $("#prizeinfo_value").val(json.value); $("#prizeinfo_number").val(json.number); $("#prizeinfo_trophystudentkeeper").val([json.trophystudentkeeper]); $("#prizeinfo_trophystudentreturn").val([json.trophystudentreturn]); $("#prizeinfo_trophyschoolreturn").val([json.trophyschoolreturn]); $("#prizeinfo_trophyschoolkeeper").val([json.trophyschoolkeeper]); $("#prizeinfo_excludefromac").val([json.excludefromac]); $(".prizeinfo").removeAttr("disabled"); $("#prizeinfo_save").removeAttr("disabled"); }); } function eligibility_save() { $("#eligibility_award_awards_id").val(award_id); $("#debug").load("<? $_SERVER['PHP_SELF'] ?>?action=eligibility_save", $("#eligibility").serializeArray()); return false; } function prize_save() { $("#debug").load("<? $_SERVER['PHP_SELF'] ?>?action=prize_save", $("#prizeinfo").serializeArray(), function(responseText, textStatus, XMLHttpRequest) { update_prizeinfo(); }); return false; } function prize_delete(id) { var confirm = confirmClick('Are you sure you want to delete this prize?'); if(confirm == true) { $("#prizeinfo_info").load("<? $_SERVER['PHP_SELF'] ?>?action=prize_delete&id="+id,null, function(responseText, textStatus, XMLHttpRequest) { $(".prizelist_tr#"+id).fadeTo('slow', 0); $(".prizelist_tr#"+id).remove(); prizelist_refresh(); }); } return 0; } function prize_create() { $.getJSON("<?= $_SERVER['PHP_SELF'] ?>?action=prize_create&award_awards_id="+award_id, function(json){ $(".prizeinfo").val(""); $("#prizeinfo_id").val(json.id); $("#prizeinfo_edit_header").html("<?= i18n('New Prize') ?>"); $(".prizeinfo").removeAttr("disabled"); $("#prizeinfo_save").removeAttr("disabled"); update_prizeinfo(); }); } function update_feeder() { if(award_tab_update['feeder'] == award_id) return; award_tab_update['feeder'] = award_id; $("#editor_tab_feeder").load("<?= $_SERVER['PHP_SELF'] ?>?action=feeder_load&id="+award_id, '', function(responseText, textStatus, XMLHttpRequest) { /* Register buttons and handlers */ $("#feeder_enable").change(function() { update_feeder_enable(); }); $("#feeder_save").click(function() { $("#debug").load("<? $_SERVER['PHP_SELF'] ?>?action=feeder_save", $("#feeder_form").serializeArray()); return false; }); update_feeder_enable(); }); } function update_feeder_enable() { var checked = $('#feeder_enable:checkbox').is(':checked'); if(checked==true) { $('#feeder_en *').removeAttr('disabled'); } else { $("#feeder_en *").attr('disabled', 'disabled'); $('#feeder_enable').removeAttr('disabled'); } } /* Setup the popup window */ $(document).ready(function() { $("#popup_editor").dialog({ bgiframe: true, autoOpen: false, modal: true, resizable: false, draggable: false, create: function() { var $tabs = $('#editor_tabs').tabs(); var selected = $tabs.tabs('option', 'selected'); if(award_id == -1 && selected== 0) { notice_("<?= i18n('New Award Cancelled') ?>"); } } }); $("#editor_tabs").tabs({ create: function(event, ui) { update_awardinfo(); update_eligibility(); update_prizeinfo(); update_feeder(); }, activate: function( event, ui ) { update_awardinfo(); update_eligibility(); update_prizeinfo(); update_feeder(); }, active: -1 }); // $("#editor_tabs").tabs({ // show: function(event, ui) { // switch(ui.panel.id) { // case 'editor_tab_awardinfo': // update_awardinfo(); // break; // case 'editor_tab_eligibility': // update_eligibility(); // break; // case 'editor_tab_prizes': // update_prizeinfo(); // break; // case 'editor_tab_feeder': // update_feeder(); // break; // } // return true; // }, // collapsible: true, // selected: -1 /* None selected */ // }); }) </script> <? /* Begin popup */ ?> <div id="popup_editor" title="Award Editor" style="display: none"> <div id="popup_status"></div> <div id="editor_tabs"> <ul><li><a href="#editor_tab_awardinfo"><span><?= i18n('Award Info') ?></span></a></li> <li><a href="#editor_tab_eligibility"><span><?= i18n('Eligibility') ?></span></a></li> <li><a href="#editor_tab_prizes"><span><?= i18n('Prizes') ?></span></a></li> <li><a href="#editor_tab_feeder"><span><?= i18n('Feeder Fairs') ?></span></a></li> </ul> <div id="editor_tab_awardinfo"> <h4><?= i18n('Award Info') ?></h4> <form> <? /* * We dont' want to ever change this, but we want it's value, so put it in * a form by itself */ ?> <input type="hidden" name="award_source_fairs_id" id="awardinfo_award_source_fairs_id" value="0" /> </form> <form id="awardinfo"> <input type="hidden" name="id" id="awardinfo_id" value="0" /> <table class="editor"> <tr><td><?= i18n('Name') ?>:</td> <td><input class="translatable" type="text" id="awardinfo_name" name="name" value="Loading..." size="50" maxlength="128"> </td></tr> <tr><td><?= i18n('Sponsor') ?>:</td><td> <? $sq = $pdo->prepare('SELECT id,organization FROM sponsors ORDER BY organization'); $sq->execute(); echo '<select id="awardinfo_sponsors_id" name="sponsors_id">'; echo '<option value="">' . i18n('Choose a sponsor') . "</option>\n"; while ($sr = $sq->fetch(PDO::FETCH_OBJ)) { echo "<option value=\"$sr->id\">" . i18n($sr->organization) . '</option>'; } ?> </select></td></tr> <tr><td><?= i18n('Presenter') ?>:</td> <td><input type="text" id="awardinfo_presenter" name="presenter" value="Loading..." size="50" maxlength="128" /> </td></tr> <tr><td><?= i18n('Type') ?>:</td><td> <? $tq = $pdo->prepare("SELECT id,type FROM award_types WHERE year=? ORDER BY type"); $tq->execute([$config['FAIRYEAR']]); echo '<select id="awardinfo_award_types_id" name="award_types_id">'; // only show the "choose a type" option if we are adding,if we are editing, then they must have already chosen one. echo $firsttype; while ($tr = $tq->fetch(PDO::FETCH_OBJ)) { echo "<option value=\"$tr->id\">" . i18n($tr->type) . '</option>'; } ?> </select></td></tr> <tr><td><label><?= i18n('Criteria') ?>:</label></td> <td><textarea class="translatable" id="awardinfo_criteria" name="criteria" rows="3" cols="50">Loading...</textarea></td></tr> <tr><td><?= i18n('Description') ?>:</td> <td><textarea class="translatable" id="awardinfo_description" name="description" rows="3" cols="50">Loading...</textarea></td></tr> </table> <h4>Options</h4> <table class="editor"> <tr> <td><input type="checkbox" id="awardinfo_excludefromac" name="excludefromac" value="1"></td> <td><?= i18n('Exclude this award from the award ceremony script') ?></td> </tr><tr> <td><input type="checkbox" id="awardinfo_cwsfaward" name="cwsfaward" value="1"></td> <td><?= i18n('This award identifies the students that will be attending the Canada-Wide Science Fair') ?></td> </tr><tr> <td><input type="checkbox" id="awardinfo_selfnominate" name="self_nominate" value="yes"></td> <td><?= i18n('Students can self-nominate for this award (this is usually checked for special awards)') ?></td> </tr><tr> <td><input type="checkbox" id="awardinfo_schedulejudges" name="schedule_judges" value="yes"></td> <td><?= i18n('Allow the Automatic Judge Scheduler to assign judges to this award (usually checked)') ?></td> </tr></table> <input type="submit" onClick="awardinfo_save();return false;" value="Save" /> </form> </div> <? /* Next Tab */ ?> <div id="editor_tab_eligibility"> <h4><?= i18n('Eligibility') ?></h4> <br /> <form id="eligibility"> <input type="hidden" id="eligibility_award_awards_id" name="award_awards_id" value="" /> <table class="editor"> <tr><td><?= i18n('Age Categories') ?>:</td><td> <? // if(count($currentcategories)==0) $class="class=\"error\""; else $class=""; // now select all the categories so we can list them all $cq = $pdo->prepare('SELECT * FROM projectcategories WHERE year = :year ORDER BY mingrade'); $cq->bindParam(':year', $config['FAIRYEAR'], PDO::PARAM_INT); $cq->execute(); show_pdo_errors_if_any($pdo); while ($cr = $cq->fetch(PDO::FETCH_OBJ)) { echo "<input type=\"checkbox\" id=\"eligibility_categories_{$cr->id}\" name=\"categories[]\" value=\"$cr->id\" />" . i18n($cr->category) . '<br />'; } ?> </td></tr> <tr><td><?= i18n('Divisions') ?>:</td><td> <? $dq = $pdo->prepare('SELECT * FROM projectdivisions WHERE year = :year ORDER BY division'); $dq->bindParam(':year', $config['FAIRYEAR'], PDO::PARAM_INT); $dq->execute(); while ($dr = $dq->fetch(PDO::FETCH_OBJ)) { echo "<input type=\"checkbox\" id=\"eligibility_divisions_{$dr->id}\" name=\"divisions[]\" value=\"$dr->id\" />" . i18n($dr->division) . '<br />'; } // if(count($currentcategories)==0 || count($currentdivisions)==0) // echo "<tr><td colspan=\"2\" class=\"error\">".i18n("At least one age category and one division must be selected")."</td></tr>"; ?> </td></tr></table> <input type="submit" onClick="eligibility_save();return false;" value="Save" /> </form> </div> <? /* Next Tab */ ?> <div id="editor_tab_prizes"> <h4><?= i18n('Prizes') ?></h4> <br /> <table id="prizelist" class="tableview"> <tr class="nodrop nodrag"> <th style="width:4em"><?= i18n('Script Order') ?></th> <th><?= i18n('# Available') ?></th> <th style="width: 15em"><?= i18n('Prize Description') ?></th> <th><?= i18n('Cash') ?></th> <th><?= i18n('Scholarship') ?></th> <th><?= i18n('Value') ?></th> <th><?= i18n('Actions') ?></th> </tr></table> <br > * <?= i18n('Click on the Script Order and drag to re-order the prizes') ?> <br > <hr> <br /><h4 id="prizeinfo_edit_header">Click on a prize to edit</h4><br /> <form id="prizeinfo"> <input type="hidden" id="prizeinfo_id" name="id" value=""/> <input type="hidden" id="prizeinfo_award_awards_id" name="award_awards_id" value=""/> <table class="editor"> <tr> <td><?= i18n('Number available') ?>:</td> <td><input type="text" id="prizeinfo_number" class="prizeinfo" name="number" value="" size="3" maxlength="5" disabled="disabled" /></td> </tr><tr> <td><?= i18n('Prize Description') ?>:</td> <td><input type="text" id="prizeinfo_prize" class="prizeinfo translatable" name="prize" value="" size="40" maxlength="128" disabled="disabled"/></td> </tr><tr> <td><?= i18n('Cash Amount') ?> ($):</td> <td><input type="text" id="prizeinfo_cash" class="prizeinfo" name="cash" value="" size="10" maxlength="10" disabled="disabled" /></td> </tr><tr> <td><?= i18n('Scholarship Amount') ?> ($):</td> <td><input type="text" id="prizeinfo_scholarship" class="prizeinfo" name="scholarship" value="" size="10" maxlength="10" disabled="disabled" /></td> </tr><tr> <td><?= i18n('Prize Value') ?> ($):</td> <td><input type="text" id="prizeinfo_value" class="prizeinfo" name="value" value="" size="10" maxlength="10" disabled="disabled" /></td> </tr><tr> <td><?= i18n('Plaque/Trophy') ?>:</td> <td> <table> <tr> <td style="width:5%;"><input type="checkbox" id="prizeinfo_trophystudentkeeper" class="prizeinfo" name="trophystudentkeeper" value="1" disabled="disabled"></td> <td style="width:45%"><?= i18n('Student(s) keeper trophy') ?></td> <td style="width:5%;"><input type="checkbox" id="prizeinfo_trophystudentreturn" class="prizeinfo" name="trophystudentreturn" value="1" disabled="disabled"></td> <td style="width:45%"><?= i18n('Student(s) annual return/reuse trophy') ?></td> </tr><tr> <td style="width:5%;"><input type="checkbox" id="prizeinfo_trophyschoolkeeper" class="prizeinfo" name="trophyschoolkeeper" value="1" disabled="disabled"></td> <td style="width:45%;"><?= i18n('School keeper trophy') ?></td> <td style="width:5%;"><input type="checkbox" id="prizeinfo_trophyschoolreturn" class="prizeinfo" name="trophyschoolreturn" value="1" disabled="disabled"></td> <td style="width:45%;"><?= i18n('School annual return/reuse trophy') ?></td> </tr></table></td> </tr><tr> <td><?= i18n('Awards Ceremony') ?>:</td> <td><input type="checkbox" id="prizeinfo_excludefromac" class="prizeinfo" name="excludefromac" value="1" disabled="disabled"><?= i18n('Exclude this prize from the award ceremony script') ?></td> </tr> </table> </form> <br /> <form> <input type="submit" onClick="prize_create();return false;" value="<?= i18n('Create New Prize') ?>" /> <input type="submit" id="prizeinfo_save" onClick="prize_save();return false;" value="<?= i18n('Save Prize') ?>" disabled="disabled" /> </form> </div> <? /* Next Tab */ ?> <div id="editor_tab_feeder"></div> <? /* End tabs, end popup */ ?> </div></div> <? /* * Here's all the code for the award list, except for the AJAX queries which are * at the top of this file */ ?> <script type="text/javascript"> function popup_editor(id, mode) { var w = (document.documentElement.clientWidth * 0.8); var h = (document.documentElement.clientHeight * 0.8); award_id = id; /* We don't really need this, but we'll force all the tabs to reload on * activation anyway */ award_tab_update = new Array(); /* Force no tabs to be selected, need to set collapsible * to true first */ $('#editor_tabs').tabs('option', 'collapsible', true); $('#editor_tabs').tabs('option', 'selected', -1); /* Then we'll select a tab to force a reload */ switch(mode) { case 'new': $('#editor_tabs').tabs('option', 'disabled', [1, 2, 3]); $('#editor_tabs').tabs('option','active', 0); break; case 'template': $('#editor_tabs').tabs('option', 'disabled', [0, 1, 3]); $('#editor_tabs').tabs('option', 'active', 2); break; default: $('#editor_tabs').tabs('option', 'disabled', []); $('#editor_tabs').tabs('option','active', 0); break; } /* Don't let anything collapse */ $('#editor_tabs').tabs('option', 'collapsible', false); /* Force an awardinfo update, there's some info in there that we want now */ update_awardinfo(); /* Show the dialog */ $('#popup_editor').dialog('option', 'width', w); $('#popup_editor').dialog('option', 'height', h); $("#popup_editor").dialog('open'); return true; } function awardlist_refresh() { $("#awardlist").tableDnD({ onDrop: function(table, row) { var order = $.tableDnD.serialize(); // $(row).fadeTo('fast',1); $("#award_info").load("<?= $_SERVER['PHP_SELF'] ?>?action=award_order&"+order); /* Change the order */ var rows = table.tBodies[0].rows; for (var i=0; i<rows.length; i++) { $("#awardlist_order_"+rows[i].id).html(i); } }, onDragStart: function(table, row) { // $(row).fadeTo('fast',0.2); }, dragHandle: "drag_handle" }); } function award_delete(id) { var conf = confirmClick('<?= i18n('Are you sure you want to remove this award?') ?>'); if(conf == true) { $("#info_info").load("<? $_SERVER['PHP_SELF'] ?>?action=award_delete&id="+id); /* The TRs need to have just a numeric ID, which could conflict with other lists, so * tag each TR with a class too, and select both the class and the ID */ $(".awardlist_tr#"+id).fadeTo('slow', 0); $(".awardlist_tr#"+id).remove(); /* Rows changed, need to refresh the drag list */ awardlist_refresh(); } } $(document).ready(function() { awardlist_refresh(); }); </script> <div id="info_info"></div> <? /* List filtering */ if (get_value_from_array($_GET, 'sponsors_id') && $_GET['sponsors_id'] != 'all') $_SESSION['sponsors_id'] = $_GET['sponsors_id']; else if (get_value_from_array($_GET, 'sponsors_id') == 'all') unset($_SESSION['sponsors_id']); if (get_value_from_array($_GET, 'award_types_id') && $_GET['award_types_id'] != 'all') $_SESSION['award_types_id'] = $_GET['award_types_id']; else if (get_value_from_array($_GET, 'award_types_id') == 'all') unset($_SESSION['award_types_id']); /* * if($_GET['award_sponsors_confirmed'] && $_GET['award_sponsors_confirmed']!="all") * $_SESSION['award_sponsors_confirmed']=$_GET['award_sponsors_confirmed']; * * if($_GET['sponsors_id']=="all") * unset($_SESSION['sponsors_id']); * if($_GET['award_types_id']=="all") * unset($_SESSION['award_types_id']); * if($_GET['award_sponsors_confirmed']=="all") * unset($_SESSION['award_sponsors_confirmed']); */ $award_types_id = get_value_from_array($_SESSION, 'award_types_id'); $sponsors_id = get_value_from_array($_SESSION, 'sponsors_id'); // $award_sponsors_confirmed=$_SESSION['award_sponsors_confirmed']; echo '<br />'; echo i18n('Filter By:'); echo '<form method="get" action="award_awards.php" name="filterchange">'; echo '<table><tr><td colspan="2">'; $q = $pdo->prepare('SELECT id,organization FROM sponsors ORDER BY organization'); $q->execute(); echo '<select name="sponsors_id" onchange="document.forms.filterchange.submit()">'; echo '<option value="all">' . i18n('All Sponsors') . '</option>'; while ($r = $q->fetch(PDO::FETCH_OBJ)) { if ($r->id == $sponsors_id) { $sel = 'selected="selected"'; $sponsors_organization = $r->organization; } else $sel = ''; echo "<option $sel value=\"$r->id\">" . i18n($r->organization) . '</option>'; } echo '</select>'; echo '</td></tr>'; echo '<tr><td>'; $q = $pdo->prepare('SELECT id, type FROM award_types WHERE year = :year ORDER BY type'); $q->bindParam(':year', $config['FAIRYEAR'], PDO::PARAM_INT); $q->execute(); echo '<select name="award_types_id" onchange="document.forms.filterchange.submit()">'; echo '<option value="all">' . i18n('All Award Types') . '</option>'; while ($r = $q->fetch(PDO::FETCH_OBJ)) { if ($r->id == $award_types_id) { $sel = 'selected="selected"'; $award_types_type = $r->type; } else $sel = ''; echo "<option $sel value=\"$r->id\">" . i18n($r->type) . '</option>'; } echo '</select>'; echo '</td><td>'; /* * //FIXME: 'confirmed' no longer exists, we need to lookup their sponsorship record and check the status there, either pending, confirmed or received, dunno if it makes sense to put that here or not.. * * echo "<select name=\"award_sponsors_confirmed\" onchange=\"document.forms.filterchange.submit()\">"; * if($award_sponsors_confirmed=="all") $sel="selected=\"selected\""; else $sel=""; * echo "<option value=\"all\">".i18n("Any Status")."</option>"; * if($award_sponsors_confirmed=="yes") $sel="selected=\"selected\""; else $sel=""; * echo "<option $sel value=\"yes\">".i18n("Confirmed Only")."</option>"; * if($award_sponsors_confirmed=="no") $sel="selected=\"selected\""; else $sel=""; * echo "<option $sel value=\"no\">".i18n("Unconfirmed Only")."</option>"; * echo "</select>"; */ echo '</form>'; echo '</td></tr>'; echo '</table>'; ?> <br /> <form> <input type="button" onClick="popup_editor(-1, 'new');" value="<?= i18n('Create New Award') ?>" /> <input type="button" onClick="popup_editor(-1, 'template');" value="<?= i18n('Edit Generic Prize Template') ?>" /> </form> <br /><br /> <? /* * For some reason, this submit button opens the dialog then it closes right away, but it doesn't * if the entry is done through the a href */ // <input type="submit" onClick="award_create();" value="<?=i18n("Create New Award")>" /> $where_asi = $where_asi ?? ''; $where_ati = $where_ati ?? ''; if ($sponsors_id) $where_asi = "AND sponsors_id='$sponsors_id'"; if ($award_types_id) $where_ati = "AND award_types_id='$award_types_id'"; // if($award_sponsors_confirmed) $where_asc="AND award_sponsors.confirmed='$award_sponsors_confirmed'"; $orderby = $orderby ?? ''; if (!$orderby) $orderby = 'ORDER BY `order`'; $q = $pdo->prepare("SELECT award_awards.id, award_awards.name, award_awards.order, award_awards.award_source_fairs_id, award_types.type, sponsors.organization FROM award_awards LEFT JOIN sponsors ON sponsors.id = award_awards.sponsors_id LEFT JOIN award_types ON award_types.id = award_awards.award_types_id WHERE award_awards.year=? $where_asi $where_ati AND \taward_types.year=? $orderby "); $q->execute([$config['FAIRYEAR'],$config['FAIRYEAR']]); show_pdo_errors_if_any($pdo); if ($q->rowCount()) { echo '* ' . i18n('Click on the Script Order and drag to re-order the awards'); echo '<table id="awardlist" class="tableview" >'; echo '<tr class="nodrop nodrag">'; echo ' <th>' . i18n('Order') . '</th>'; echo ' <th>' . i18n('Sponsor') . '</th>'; echo ' <th>' . i18n('Type') . '</th>'; echo ' <th>' . i18n('Name') . '</th>'; echo ' <th>' . i18n('Prizes') . '</th>'; echo ' <th>' . i18n('Actions') . '</th>'; echo "</tr>\n"; $hasexternal = false; while ($r = $q->fetch(PDO::FETCH_OBJ)) { if ($r->award_source_fairs_id) { $cl = 'externalaward'; $hasexternal = true; } else $cl = ''; $eh = "style=\"cursor:pointer;\" onclick=\"popup_editor({$r->id},'');\""; echo "<tr class=\"$cl awardlist_tr\" id=\"{$r->id}\" >\n"; echo " <td id=\"awardlist_order_{$r->id}\" class=\"drag_handle\" style=\"cursor:move; text-align:right;\">{$r->order}</td>\n"; echo " <td $eh>{$r->organization}</td>\n"; echo " <td $eh>{$r->type}</td>\n"; echo " <td $eh>{$r->name}</td>\n"; $numq = $pdo->prepare("SELECT SUM(number) AS num FROM award_prizes WHERE award_awards_id=?"); $numq->execute([$r->id]); $numr = $numq->fetch(PDO::FETCH_ASSOC); if (!$numr['num']) $numr['num'] = 0; echo " <td $eh align=\"center\">{$numr['num']}</td>"; echo ' <td align="center">'; // echo "<img border=\"0\" src=\"{$config['SFIABDIRECTORY']}/images/16/edit.{$config['icon_extension']}\">"; // echo " "; echo "<a onclick=\"award_delete({$r->id});\" href=\"#\" ><img border=0 src=\"{$config['SFIABDIRECTORY']}/images/16/button_cancel.{$config['icon_extension']}\"></a>"; echo " </td>\n"; echo "</tr>\n"; } if ($hasexternal) echo '<tr class="externalaward"><td colspan="6">' . i18n('Indicates award imported from an external source') . '</td></tr>'; echo "</table>\n"; echo '</form>'; } echo '<br />'; // echo "<a href=\"award_prizes.php?award_awards_id=-1\">Edit prizes for the generic prize template</a>"; if ($_GET['action'] == 'edit_prize_template') { ?><script type="text/javascript"> $(document).ready(function() { popup_editor(-1,'template'); }); </script> <? } send_footer(); ?>