diff --git a/admin/winners.php b/admin/winners.php index cbce6c9c..c77d2a10 100644 --- a/admin/winners.php +++ b/admin/winners.php @@ -22,365 +22,565 @@ */ ?> number; - - $q=mysql_query("SELECT COUNT(*) AS count FROM winners WHERE awards_prizes_id='".$_POST['prize_id']."'"); - echo mysql_Error(); - $r=mysql_fetch_object($q); - $count=$r->count; - - if($count<$number) - { - mysql_query("INSERT INTO winners (awards_prizes_id,projects_id,year) VALUES ('".$_POST['prize_id']."','".$_POST['winner']."','".$config['FAIRYEAR']."')"); - $notice = 'added'; - } - else - { - $notice = 'nomore'; - $notice_data = array($number); - } - } - $action="edit"; +/* Load fairs */ +$fairs = array(); +$q = mysql_query("SELECT * FROM fairs WHERE type='feeder' ORDER BY name"); +while(($f = mysql_fetch_assoc($q))) { + $fairs[$f['id']] = $f; } -if($action=="delete") -{ - if($_GET['prize_id'] && $_GET['project_id']) - { - mysql_query("DELETE FROM winners WHERE awards_prizes_id='".$_GET['prize_id']."' AND projects_id='".$_GET['project_id']."'"); - $notice = 'removed'; + +switch($action) { +case 'addwinner': + $prize_id = intval($_GET['prize_id']); + $projects_id = intval($_GET['projects_id']); + + if(!$prize_id || !$projects_id) { + error_("Illegal Assignment"); + exit; } - $action="edit"; -} + + //first check how many we are allowed to have + $q=mysql_query("SELECT number FROM award_prizes WHERE id='$prize_id'"); + echo mysql_error(); + $r=mysql_fetch_assoc($q); + $number=$r['number']; -if($action=="edit" && $edit) -{ - send_header("Choose Projects", - array('Committee Main' => 'committee_main.php', - 'Administration' => 'admin/index.php', - 'Enter Winning Projects' => 'admin/winners.php'), - "enter_winning_projects" - ); + /* Get the award info */ + $q = mysql_query("SELECT * FROM award_awards WHERE id='$award_awards_id'"); + echo mysql_error(); + $a=mysql_fetch_assoc($q); - switch($notice) { - case 'removed': - echo happy(i18n("Winning project removed")); - break; - case 'nomore': - echo error(i18n("This prize cannot accept any more winners. Maximum: %1",$notice_data)); - break; - case 'added': - echo happy(i18n("Winning project added")); - break; + /* Get the project */ + $q = mysql_query("SELECT fairs_id FROM projects WHERE id='$projects_id'"); + echo mysql_error(); + $p=mysql_fetch_assoc($q); + $fairs_id = $p['fairs_id']; + + /* Quick sanity check don't let a fair user do an assignment for someone not + * in their fair */ + if($auth_type == 'fair' && $fairs_id != $_SESSION['fairs_id']) { + error_("Illegal Assignemnt"); + exit; } + if($a['per_fair'] == 'yes') { + /* Count is the number of this fair already assigned */ + $q=mysql_query("SELECT COUNT(*) AS count FROM winners + LEFT JOIN projects ON winners.projects_id=projects.id + WHERE + projects.fairs_id='$fairs_id' + awards_prizes_id='$prize_id'"); + echo mysql_error(); + $r=mysql_fetch_assoc($q); + $count=$r['count']; + } else { + /* Count is the total number assigned */ + $q=mysql_query("SELECT COUNT(*) AS count FROM winners WHERE awards_prizes_id='$prize_id'"); + echo mysql_error(); + $r=mysql_fetch_assoc($q); + $count=$r['count']; + } + + if($count<$number) { + mysql_query("INSERT INTO winners (awards_prizes_id,projects_id,year) VALUES ('$prize_id','$projects_id','{$config['FAIRYEAR']}')"); + happy_("Winning project added"); + } else { + error_("This prize cannot accept any more winners. Maximum: %1",$number); + } + + exit; + +case 'deletewinner': + $prize_id = intval($_GET['prize_id']); + $projects_id = intval($_GET['projects_id']); + + if($prize_id && $projects_id) { + mysql_query("DELETE FROM winners WHERE awards_prizes_id='$prize_id' AND projects_id='$projects_id'"); + happy_("Winning project removed"); + } + exit; +case 'award_load': + $fairs_id = intval($_GET['fairs_id']); + /* Load the award */ $q=mysql_query("SELECT award_awards.id, award_awards.name, award_awards.criteria, award_awards.order AS awards_order, + award_awards.per_fair, award_types.type FROM - award_awards, + award_awards , award_types WHERE - award_awards.year='".$config['FAIRYEAR']."' + award_awards.year='{$config['FAIRYEAR']}' AND award_awards.award_types_id=award_types.id - AND award_awards.id='$edit' + AND award_types.year=award_awards.year + AND award_awards.id='$award_awards_id' "); echo mysql_error(); - if($r=mysql_fetch_object($q)) - { - - echo "
"; - //get the projets that are eligible for the award, given the award ID ($r->id) - if($r->type=="Special" && !$_GET['eligible']) - { - $projects=getProjectsNominatedForSpecialAward($r->id); - } - else - $projects=getProjectsEligibleForAward($r->id); - - $winq=mysql_query("SELECT - winners.projects_id - FROM - winners,award_prizes,award_awards - WHERE - award_awards.id='$r->id' - AND award_prizes.award_awards_id=award_awards.id - AND winners.awards_prizes_id=award_prizes.id - ORDER BY - projects_id - "); - echo mysql_error(); - $alreadywinners=array(); - while($winr=mysql_fetch_object($winq)) - { - $alreadywinners[]=$winr->projects_id; - } - //print_r($alreadywinners); - /* - echo "projects:"; - echo nl2br(print_r($projects,true)); - echo "
"; - */ - -// echo ""; - echo "{$r->type} - {$r->name}
"; - echo "{$r->criteria}
"; - - $pq=mysql_query("SELECT - award_prizes.prize, - award_prizes.number, - award_prizes.id, - award_prizes.cash, - award_prizes.scholarship, - winners.projects_id, - projects.projectnumber, - projects.title - FROM - award_prizes - LEFT JOIN winners ON winners.awards_prizes_id=award_prizes.id - LEFT JOIN projects ON projects.id=winners.projects_id - WHERE - award_awards_id='$r->id' - AND award_prizes.year='".$config['FAIRYEAR']."' - ORDER BY - `order`"); - echo mysql_error(); - $prevprizeid=-1; - while($pr=mysql_fetch_object($pq)) - { - if($prevprizeid!=$pr->id) - { - echo "
"; - echo " "; - echo " "; - echo ""; - echo "$pr->prize"; - if($pr->cash || $pr->scholarship) - { - echo " ("; - if($pr->cash && $pr->scholarship) - echo "\$$pr->cash cash / \$$pr->scholarship scholarship"; - else if($pr->cash) - echo "\$$pr->cash cash"; - else if($pr->scholarship) - echo "\$$pr->scholarship scholarship"; - echo ")"; - - } - - $cq=mysql_query("SELECT COUNT(*) AS count FROM winners WHERE awards_prizes_id='$pr->id'"); - echo mysql_Error(); - $cr=mysql_fetch_object($cq); - $count=$cr->count; - - if($count<$pr->number) $color="red"; else $color="green"; - echo " [".$count."/".$pr->number."]"; - echo ""; - $prevprizeid=$pr->id; - - if($count<$pr->number) - { - echo "
"; - echo ""; - echo "id\">"; - echo ""; - echo ""; - echo ""; - echo "
"; - echo "Show All Eligible"; - echo "
"; - } - else - echo "
"; - - } - - if($pr->projectnumber) - { - echo " "; - echo " "; - echo " "; - echo " "; - echo "id&project_id=$pr->projects_id\">"; - echo " ($pr->projectnumber) $pr->title"; - echo "
"; - } - } - + if(mysql_num_rows($q) != 1) { + echo i18n("Invalid award to load $award_awards_id"); + exit; } -} -else -{ - send_header("Enter Winning Projects", - array('Committee Main' => 'committee_main.php', - 'Administration' => 'admin/index.php'), - "enter_winning_projects" - ); + $r=mysql_fetch_assoc($q); + print_award($r, $fairs_id); + exit; - switch($notice) { - case 'removed': - echo happy(i18n("Winning project removed")); - break; - case 'nomore': - echo error(i18n("This prize cannot accept any more winners. Maximum: %1",$notice_data)); - break; - case 'added': - echo happy(i18n("Winning project added")); - break; - } +case 'edit_load': + $fairs_id = intval($_GET['fairs_id']); + + /* Force the fair user to only edit their fair */ +// if($auth_type == 'fair') $fairs_id = $_SESSION['fairs_id']; + /* Load the award */ $q=mysql_query("SELECT award_awards.id, award_awards.name, + award_awards.criteria, award_awards.order AS awards_order, - award_types.type, - sponsors.organization + award_awards.per_fair, + award_types.type FROM - award_awards, - award_types, - sponsors + award_awards , + award_types WHERE - award_awards.year='".$config['FAIRYEAR']."' + award_awards.year='{$config['FAIRYEAR']}' AND award_awards.award_types_id=award_types.id - AND award_types.year='".$config['FAIRYEAR']."' - AND award_awards.sponsors_id=sponsors.id - ORDER BY awards_order"); + AND award_types.year=award_awards.year + AND award_awards.id='$award_awards_id' + "); echo mysql_error(); - if(mysql_num_rows($q)) - { - echo "
"; - echo i18n("Choose an award to assign winners"); - echo "
"; - echo "
"; - while($r=mysql_fetch_object($q)) - { - echo "id\">"; -// echo ""; - echo " $r->type - \n"; - echo " $r->name \n"; - echo ""; - echo " (".$r->organization.")
"; + if(mysql_num_rows($q) != 1) { + echo i18n("Invalid award to edit $award_awards_id"); + exit; + } - $pq=mysql_query("SELECT - award_prizes.prize, - award_prizes.number, - award_prizes.id, - award_prizes.cash, - award_prizes.scholarship, - winners.projects_id, - projects.projectnumber, - projects.title - FROM - award_prizes - LEFT JOIN winners ON winners.awards_prizes_id=award_prizes.id - LEFT JOIN projects ON projects.id=winners.projects_id - WHERE - award_awards_id='$r->id' - AND award_prizes.year='".$config['FAIRYEAR']."' - ORDER BY - `order`"); - echo mysql_error(); - $prevprizeid=-1; - while($pr=mysql_fetch_object($pq)) - { - if($prevprizeid!=$pr->id) - { - echo " "; - echo " "; - echo ""; - echo "$pr->prize"; - if($pr->cash || $pr->scholarship) - { - echo " ("; - if($pr->cash && $pr->scholarship) - echo "\$$pr->cash cash / \$$pr->scholarship scholarship"; - else if($pr->cash) - echo "\$$pr->cash cash"; - else if($pr->scholarship) - echo "\$$pr->scholarship scholarship"; - echo ")"; - - } - $cq=mysql_query("SELECT COUNT(*) AS count FROM winners WHERE awards_prizes_id='$pr->id'"); - echo mysql_Error(); - $cr=mysql_fetch_object($cq); - $count=$cr->count; + $r=mysql_fetch_assoc($q); - if($count<$pr->number) $color="red"; else $color="green"; - echo " [".$count."/".$pr->number."]"; - echo ""; - echo "
"; - $prevprizeid=$pr->id; - } + $editor_data = array(); - if($pr->projectnumber) - { - echo " "; - echo " "; - echo " "; - echo " "; - echo "($pr->projectnumber) $pr->title"; - echo "
"; - } - else - { - /* - echo " "; - echo " "; - echo " "; - echo " "; - echo "No winner(s) specified"; - */ - } - } - echo "
"; + /* Load projects */ + if($r['type'] == 'Special') { + $editor_data['projects_nominated'] = getProjectsNominatedForSpecialAward($r['id']); + $editor_data['disable_nominated'] = false; + } else { + $editor_data['projects_nominated'] = array(); + $editor_data['disable_nominated'] = true; + } + $editor_data['projects_eligible'] = getProjectsEligibleForAward($r['id']); + + /* Print the award header */ + echo "
"; + if($fairs_id) echo "

Winners from $fairs_id:{$fairs[$fairs_id]['name']}

"; + echo "{$r['type']} - {$r['name']}
"; + echo "{$r['criteria']}
"; + + /* Print the award with editor */ + print_award($r, $fairs_id, true, $editor_data); + exit; +} + + +if($auth_type == 'fair') { + send_header("Enter Winning Projects", + array('Science Fair Main' => 'fair_main.php'), + "enter_winning_projects" + ); +} else { + send_header("Enter Winning Projects", + array('Committee Main' => 'committee_main.php', + 'Administration' => 'admin/index.php'), + "enter_winning_projects" + ); +} + +?> + + + +"; +echo i18n("Choose an award to assign winners"); +echo "
"; +echo "
"; + +$fairs_id = ($auth_type == 'fair') ? $_SESSION['fairs_id'] : 0; + +while($r=mysql_fetch_assoc($q)) { + if($r['per_fair'] == 'yes' && $auth_type != 'fair') { +?> - + ()
+$f) { +?> +
+
+ +"; + } + } else { +?> + - + ()
+
+"; + } + echo '
'; +} + + + +function print_award(&$r, $fairs_id, $editor=false, $editor_data=array()) +{ + global $config, $auth_type; + +// echo "fair=$fairs_id"; + + /* Setup the winner filter, we don't want to restrict this + * to a specific fair for the 'fair' user */ + $fairs_where = ''; + if($r['per_fair'] == 'yes') { + if($fairs_id == 0) { + echo "blank fairs_id for per-fair award. bug.\n"; + exit; + } + /* For per-fair awards, filter the results */ + $fairs_where = "AND projects.fairs_id='$fairs_id'"; + } + + /* Force the 'fair' user to only edit their own fair */ + if($auth_type == 'fair') $fairs_id = $_SESSION['fairs_id']; + + + /* Load prizes for this award */ + $q=mysql_query("SELECT + award_prizes.prize, + award_prizes.number, + award_prizes.id, + award_prizes.cash, + award_prizes.scholarship + FROM + award_prizes + WHERE + award_awards_id='{$r['id']}' + AND award_prizes.year='{$config['FAIRYEAR']}' + ORDER BY + `order`"); + echo mysql_error(); + + while($pr=mysql_fetch_object($q)) { + + if($editor == true) { + echo '

'; } + echo "  {$pr->prize}"; + if($pr->cash || $pr->scholarship) { + echo " ("; + if($pr->cash && $pr->scholarship) + echo "\${$pr->cash} cash / \${$pr->scholarship} scholarship"; + else if($pr->cash) + echo "\${$pr->cash} cash"; + else if($pr->scholarship) + echo "\${$pr->scholarship} scholarship"; + echo ")"; + } + + /* Load winners for this prize */ + $cq=mysql_query("SELECT winners.projects_id, + projects.projectnumber, + projects.title, + projects.fairs_id + FROM + winners + LEFT JOIN projects ON projects.id=winners.projects_id + WHERE + winners.awards_prizes_id='{$pr->id}' + $fairs_where "); + echo mysql_error(); + $count = mysql_num_rows($cq); +// echo "winners=$count"; + + /* Print count */ + $colour = ($count < $pr->number) ? 'red' : 'green'; + echo " [$count/{$pr->number}]"; + echo ""; + echo "
"; + + + /* List current winners for this prize */ + $winners = array(); + while($w = mysql_fetch_assoc($cq)) { + if($w['projectnumber']) { + echo "    "; + if($editor == true) { + /* Print the delete X before the project */ + if($auth_type == 'fair' && $w['fairs_id'] != $fairs_id) { + /* show a blank so everything lines up */ + echo '    '; + } else { + echo "id},{$w['projects_id']});return false;\" href=\"#\" >"; + echo ""; + echo ' '; + } + $winners[] = $w['projects_id']; + } + echo "({$w['projectnumber']}) {$w['title']}"; + echo "
"; + } else { + /* echo "    "; + echo "No winner(s) specified"; */ + } + } + + /* Unlist all the winners we just printed from ALL lists */ + if($editor == true) { + echo ""; + } + + /* Print the select box if we need it */ + if($editor == true && $count < $pr->number) { + $n_nom = 0; + $n_eli = 0; +?> +
+
+     + + + +
    + : + + + - +
+ + + diff --git a/projects.inc.php b/projects.inc.php index dfd14e2c..3fca08b7 100644 --- a/projects.inc.php +++ b/projects.inc.php @@ -32,7 +32,8 @@ function getProjectsEligibleForAward($award_id) award_awards_projectdivisions.projectdivisions_id, projects.projectnumber, projects.title, - projects.id AS projects_id + projects.id AS projects_id, + projects.fairs_id FROM award_awards, award_awards_projectcategories, @@ -55,7 +56,8 @@ function getProjectsEligibleForAward($award_id) $projects[$prjr->projectnumber]=array( "id"=>$prjr->projects_id, "projectnumber"=>$prjr->projectnumber, - "title"=>$prjr->title + "title"=>$prjr->title, + "fairs_id"=>$prjr->fairs_id ); } return $projects; @@ -143,7 +145,8 @@ function getSpecialAwardsNominatedForProject($projectid) award_awards.id, award_awards.name, award_awards.criteria, - projects.id AS projects_id + projects.id AS projects_id, + projects.fairs_id FROM award_awards, project_specialawards_link, @@ -163,7 +166,8 @@ function getSpecialAwardsNominatedForProject($projectid) $awards[$r->id]=array( "id"=>$r->id, "criteria"=>$r->criteria, - "name"=>$r->name + "name"=>$r->name, + "fairs_id"=>$r->fairs_id ); } return $awards; diff --git a/theme/classic/sfiab.css b/theme/classic/sfiab.css index b3da0463..3928a549 100644 --- a/theme/classic/sfiab.css +++ b/theme/classic/sfiab.css @@ -418,3 +418,27 @@ div.ui-tabs ul.ui-tabs-nav { .ui-datepicker { z-index: 1003; } + +.text-link { + cursor: pointer; + color: #5C6F90; + text-decoration: underline; +} + +.text-link-selected { + font-weight: bold; + cursor: default; + text-decoration: none; + color: #000000; +} + +.text-link-disabled { + font-weight: none; + cursor: default; + text-decoration: none; + color: #c0c0c0; +} + + + + diff --git a/theme/default/sfiab.css b/theme/default/sfiab.css index b3da0463..3928a549 100644 --- a/theme/default/sfiab.css +++ b/theme/default/sfiab.css @@ -418,3 +418,27 @@ div.ui-tabs ul.ui-tabs-nav { .ui-datepicker { z-index: 1003; } + +.text-link { + cursor: pointer; + color: #5C6F90; + text-decoration: underline; +} + +.text-link-selected { + font-weight: bold; + cursor: default; + text-decoration: none; + color: #000000; +} + +.text-link-disabled { + font-weight: none; + cursor: default; + text-decoration: none; + color: #c0c0c0; +} + + + +