Updated super/conferences to properly manage existing conferences, and touched up it's UI to fit the site theme

This commit is contained in:
jacob 2010-11-18 20:44:48 +00:00
parent 63178e596b
commit 0720cb0ae0

View File

@ -123,9 +123,83 @@ if(array_key_exists('formAction', $_POST)){
// check for an action by the normal method // check for an action by the normal method
if(array_key_exists('action', $_GET)){ if(array_key_exists('action', $_GET)){
switch($_GET['action']){ switch($_GET['action']){
case 'new': // this is a request to create a new conference case 'loadTable':
draw_conferences_list();
break;
case 'new':
// present them with a wizard in which to create a new conference
$_SESSION['conference_wizard'] = array(); $_SESSION['conference_wizard'] = array();
wizard_draw_step('start'); wizard_draw_step('start');
break;
case 'edit':
// give them an editor in which to modify an existing conference
$cid = $_POST['id'];
if(is_numeric($cid)){
$conf = mysql_fetch_assoc(mysql_query("SELECT * FROM conferences WHERE id = $cid"));
if(is_array($conf)){
echo "<table>";
echo "<tr><td>" . i18n('Name') . ":</td><td><input type=\"text\" id=\"confName\" value=\"{$conf['name']}\"></input></td></tr>";
echo "<tr><td>" . i18n('Conference Type') . ":</td><td>";
echo "<select id=\"confType\">";
echo "<option value=\"sciencefair\""; if($conf['type'] == 'sciencefair') echo " SELECTED"; echo ">" . i18n("Science Fair") . "</option>";
echo "<option value=\"scienceolympics\""; if($conf['type'] == 'scienceolympics') echo " SELECTED"; echo ">" . i18n("Science Olympics") . "</option>";
echo "</select>";
echo "</td></tr>";
echo "<tr><td>" . i18n('Status') . ":</td><td>";
$statuses = array('pending','running','ended');
echo "<select id=\"confStatus\">";
foreach($statuses as $status){
echo "<option value=\"$status\"";
if($conf['status'] == $status) echo " SELECTED";
echo ">$status</option>";
}
echo "</select>";
echo "</td></tr>";
echo "</table>";
}
}
break;
case 'save':
// save the new conference data for the conference that's being edited
$confId = $_POST['id'];
if(!is_numeric($confId)){
error_("invalid conference id");
}
// verify that the specified conference already exists
$countRecord = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) as tally FROM conferences WHERE id = $confId"), 0);
$tally = $countRecord['tally'];
if($tally == 1){
// ok, it's a valid conference id. Let's go ahead and update the data for it
$confType = mysql_real_escape_string($_POST['confType']);
$confName = mysql_real_escape_string($_POST['confName']);
$confStatus = mysql_real_escape_string($_POST['confStatus']);
mysql_query("UPDATE conferences SET type='$confType', name='$confName', status='$confStatus' WHERE id='$confId'");
$errMsg = mysql_error();
if($errMsg != null){
error_("SQL error: $errMsg");
}else{
happy_("Conference updated successfully");
}
}else{
error_("nonexistant conference id");
}
break;
case 'delete':
// delete the specified conference
$confId = $_POST['id'];
if(!is_numeric($confId)){
error_("invalid conference id");
}else{
mysql_query("UPDATE conferences set status='deleted' WHERE id = $confId");
$errMsg = mysql_error();
if($errMsg != null){
error_("SQL error: $errMsg");
}else{
happy_("Conference updated successfully");
}
}
break; break;
} }
exit; exit;
@ -139,29 +213,67 @@ send_header("Conferences Setup",
?> ?>
<script type="text/javascript"> <script type="text/javascript">
var wizard; var wizard;
$(document).ready(function() {
// $('#wizardBackdrop').fadeTo(0, 0);
});
function editConference(cid){ function editConference(cid){
alert('edit ' + cid); var editor = $('<div></div>');
$.post('conferences.php?action=edit', {'id':cid}, function(result){
editor.html(result);
editor.dialog({
'title':'<?=i18n("Edit")?>',
'modal':'true',
'buttons':{
'<?=i18n('Cancel')?>':function(){
editor.dialog('close');
editor.remove();
},
'<?=i18n('Ok')?>':function(){
$.post(
'conferences.php?action=save',
{
'id':cid,
'confStatus':$('#confStatus').val(),
'confType':$('#confType').val(),
'confName':$('#confName').val()
},
function(result){
editor.dialog('close');
editor.remove();
$('#conferences').load('conferences.php?action=loadTable');
}
);
}
}
});
});
} }
function dropConference(cid){ function dropConference(cid){
alert('drop ' + cid); var confirmation = $('<div></div>');
confirmation.append('<?=i18n("Are you sure you want to delete this conference?");?>');
confirmation.dialog({
'title': '<?=i18n("Are you sure");?>',
'modal': true,
'buttons':{
'<?=i18n('No')?>':function(){
$(this).dialog('close');
$(this).remove();
},
'<?=i18n('Yes')?>':function(){
$(this).dialog('close');
$.post('conferences.php?action=delete', {'id':cid}, function(result){
$('#conferences').load('conferences.php?action=loadTable');
});
$(this).remove();
}
}
});
} }
function openWizard(){ function openWizard(){
$('#addAnchor').hide();
/*
$('#wizardWrapper').css({'display':'block'});
$('#wizardBackdrop').css({'display':'block'});
$('#wizardBackdrop').fadeTo('slow', 0.8);
*/
wizard = $('<div></div>'); wizard = $('<div></div>');
$('#conferences').append(wizard); $('#conferences').append(wizard);
wizard.dialog(); wizard.dialog({'modal':'true'});
wizard.load('conferences.php?action=new'); wizard.load('conferences.php?action=new');
} }
@ -195,43 +307,37 @@ function handleSubmit(action){
</script> </script>
<a href='' onclick="openWizard(); return false;">Add a conference</a>
<hr/>
<div id="conferences"> <div id="conferences">
<?php draw_conferences_list(); ?> <?php draw_conferences_list(); ?>
<br/> <br/>
<hr/>
<a id="addAnchor" href='' onclick="openWizard(); return false;">Add a conference</a>
</div> </div>
<? <?
send_footer(); send_footer();
function draw_conferences_list(){ function draw_conferences_list(){
echo "<table>"; echo "<table class=\"summarytable\">";
$query = mysql_query("SELECT * FROM `conferences`"); echo "<thead><tr><th colspan=\"5\">" . i18n("Conferences") . "</th></tr></thead>";
$query = mysql_query("SELECT * FROM `conferences` WHERE status <> 'deleted'");
$rowNumbr = 0;
while($row = mysql_fetch_assoc($query)){ while($row = mysql_fetch_assoc($query)){
echo "<tr>"; echo '<tr class="';
if(($rowNumber++) % 2) echo 'odd';
else echo 'even';
echo '">';
echo "<td>{$row['name']}</td><td>{$row['type']}</td><td>{$row['status']}</td>"; echo "<td>{$row['name']}</td><td>{$row['type']}</td><td>{$row['status']}</td>";
echo "<td><button onclick=\"editConference({$row['id']});return false;\">" . i18n("Edit") . "&nbsp;<img src=\"/icons/16/edit.png\"/></button></td>"; echo "<td><img onclick=\"editConference({$row['id']});return false;\" alt=\"" . i18n("Edit") . "\" src=\"/icons/16/edit.png\"/></td>";
echo "<td><button onclick=\"dropConference({$row['id']});return false;\">" . i18n("Delete") . "&nbsp;<img src=\"/icons/16/button_cancel.png\"/></button></td>"; if($row['status'] == 'running'){
echo "<td></td>"; // can't delete a running conference
}else{
echo "<td><img onclick=\"dropConference({$row['id']});return false;\" alt=\"" . i18n("Delete") . "\" src=\"/icons/16/button_cancel.png\"/></td>";
}
echo "</tr>"; echo "</tr>";
} }
echo "</table>"; echo "</table>";
} }
/*
require("../tableeditor.class.php");
$editor=new TableEditor("conferences",
array(
"name"=>"Conference Name",
"type"=>"Type",
"status"=>"Status"
)
);
$editor->setPrimaryKey("id");
$editor->setDefaultSortField("id");
$editor->setRecordType("Conference");
$editor->execute();
*/
/************** Wizard handling functions *************/ /************** Wizard handling functions *************/
// draw an individual step in the wizard // draw an individual step in the wizard
function wizard_draw_step($step, $message = null){ function wizard_draw_step($step, $message = null){
@ -281,7 +387,7 @@ function wizard_close(){
echo " echo "
<script type=\"text/javascript\"> <script type=\"text/javascript\">
wizard.dialog('close'); wizard.dialog('close');
$('#addAnchor').show(); wizard.remove();
</script> </script>
"; ";
} }