<?php
function my_plugin_menu() {
// Add a new top-level menu (ill-advised):
add_menu_page('Extension Bontiv', 'Modules', 'administrator', 'bontiv-admin', 'bontiv_admin_module');
// Add a submenu to the custom top-level menu:
add_submenu_page('bontiv-admin', 'Calendrier', 'Calendrier', 'administrator', 'bontiv-calendar', 'bontiv_admin_calendar');
}
function bontiv_admin_head(){
echo '<script type="text/javascript" src="../wp-content/plugins/bontivCalendar/adminExt.js"></script>';
echo '<link rel=\'stylesheet\' href=\'../wp-content/plugins/bontivCalendar/admin.css\' type=\'text/css\' media=\'all\' />';
}
function admin_echo(){
echo "<li><a href=\"?page=bontiv-calendar\">Calendrier</a></li>";
}
function test_ajax(){
if (isset($_GET['calendaraction']) && $_GET['calendaraction'])
{
global $wpdb;
$table_name = $wpdb->prefix . "bontivCalendar";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
header('content-type: application/xml');
echo '<?xml version="1.0"?>';
echo '<ajax>';
switch ($_GET['calendaraction'])
{
case 'new':
if (!isset($_POST['start_month'],$_POST['title'],$_POST['start_year'],
$_POST['start_day'],$_POST['start_houre'],$_POST['start_min'],$_POST['fullday'],$_POST['text']))
{
echo "<popup>Insertion faillure</popup>";
echo "<display>NewEvent</display>";
}
else
{
$sql = "INSERT INTO `$table_name`
(
`title`,
`dateStart`,
`dateEnd`,
`text`
)
VALUES (";
$sql .= '\''.$wpdb->escape($_POST['title']).'\',';
$sql .= '\''
.$wpdb->escape($_POST['start_year'])
.'-'.$wpdb->escape($_POST['start_month'])
.'-'.$wpdb->escape($_POST['start_day'])
.' '.$wpdb->escape($_POST['start_houre'])
.':'.$wpdb->escape($_POST['start_min'])
.':00\',';
if ($_POST['fullday'] == 'false')
{
$sql .= 'NULL,';
}
else
{
$sql .= '\''
.$wpdb->escape($_POST['end_year'])
.'-'.$wpdb->escape($_POST['end_month'])
.'-'.$wpdb->escape($_POST['end_day'])
.' '.$wpdb->escape($_POST['end_houre'])
.':'.$wpdb->escape($_POST['end_min'])
.':00\',';
}
$sql .= '\''.$wpdb->escape($_POST['text']).'\')';
$results = $wpdb->query($sql);
if ($results === false)
{
echo "<popup>Insertion faillure</popup>";
echo "<display>NewEvent</display>";
}
else
{
echo "<popup>Enregistré</popup>";
echo "<update />";
}
break;
}
case 'update':
echo "<elements>";
$rows = $wpdb->get_results( "SELECT * FROM `$table_name` ORDER BY `dateStart` DESC" );
foreach($rows as $row)
{
echo "<event id=\"$row->event_id\">
<title>$row->title</title>
<start>$row->dateStart</start>
<text><![CDATA[$row->text]]></text>
</event>";
}
echo "</elements>";
echo "<display>Table</display>";
break;
case 'delete':
$sql = "DELETE FROM `$table_name` WHERE `event_id` = \"".$wpdb->escape($_GET['event']).'" LIMIT 1';
$results = $wpdb->query($sql);
if ($results === false)
{
echo "<popup>Erreur lors de la suppression</popup>";
echo "<display>Table</display>";
}
else if ($results == 0)
{
echo "<popup>Aucun element n'a été supprimé</popup>";
echo "<update />";
}
else
{
echo "<popup>Element supprimé</popup>";
echo "<update />";
}
break;
default:
echo "<popup>Aucune action n'a pu être prise.</popup>";
}
echo '</ajax>';
exit;
}
}
function bontiv_admin_module() {
echo '<div class="wrap">';
echo '<p>Ceci est le panneau de contrôle des extentions crée par bontiv. Liste des extentions installé et managés :</p>';
echo '<ul>';
do_action('bontiv_getAdminList');
echo '</ul></div>';
}
/*
* Affiche les champs pour créer une date
* @param string $id préfixe des ID html
* @param bool $disable désactiver les champs ?
* @return void
*/
function ShowDate($id, $disable = false){
echo '<select name="'.$id.'_day" id="'.$id.'_day"';
if ($disable)
echo ' disable';
echo '>';
for ($day = 1; $day <= 31; $day++)
echo "<option>$day</option>";
echo '</select>/<select name="'.$id.'_month" id="'.$id.'_month"';
if ($disable)
echo ' disable';
echo '>';
for ($day = 1; $day <= 12; $day++)
echo "<option>$day</option>";
echo '</select>/<select name="'.$id.'_year" id="'.$id.'_year"';
if ($disable)
echo ' disable';
echo '>';
echo '<option selected>'.date('Y').'</option>';
for ($day = 1; $day <= 4; $day++)
echo '<option>'.($day + date('Y')).'</option>';
echo '</select> heure <select name="'.$id.'_houre" id="'.$id.'_houre" disabled>';
for ($day = 1; $day <= 24; $day++)
echo "<option>$day</option>";
echo '</select> : <select name="'.$id.'_min" id="'.$id.'_min" disabled>';
for ($day = 0; $day <= 59; $day++)
echo "<option>$day</option>";
echo '</select>';
}
function bontiv_admin_calendar(){
$post = get_default_post_to_edit();
?>
<div class="wrap">
<div id="Table">
<p><a class="button" href="javascript:void(0);" onclick="Action.Display('NewEvent');">Ajouter</a></p>
<table width="100%" style="border: 3px double black;">
<thead><tr>
<td>Titre</td>
<td>Date</td>
<td>Supprimer</td>
</tr></thead>
<tbody id="EventList">
</tbody>
</table>
</div>
<div id="load"><p>Nous rassemblons les informations, veuillez patienter...</p></div>
<div id="confirm"><span id="confirmText"></span><br />Etes-vous sûr de vouloir effectuer cette action ?<br />
<a class="button" href="javascript:void(0);" onclick="Action.yes();">Oui</a> <a class="button" href="javascript:void(0);" onclick="Action.no();">Non</a>
</div>
<div id="NewEvent">
<form name="NewEvent" onsubmit="return false;">
<table class="form">
<tr><td class="def"><label for="title">Titre</label></td><td><input type="text" name="title" id="title" /></td></tr>
<tr><td class="def"><label for="yes">Jour entier ?</label></td><td><input class="radio" onchange="Action.setNo();" type="radio" value="no" name="fullday" id="no" checked /><label for="no">Non</label> <input class="radio" onchange="Action.setYes();" type="radio" value="yes" name="fullday" id="yes" /><label for="yes">oui</label></td></tr>
<tr><td class="def"><label for="start_day">Date</label></td><td><?php ShowDate('start'); ?></td></tr>
<tr><td class="def"><label for="end_day">Fin</label></td><td><?php ShowDate('end', true); ?></td></tr>
</table>
<textarea name="text" id="text"></textarea>
<p><a class="button" href="javascript:void(0);" onclick="Action.Go();">Envoyer</a> <a class="button" href="javascript:void(0);" onclick="Action.Display('Table');Action.Reset();">Annuler</a></p>
</form>
</div>
<p id="credit">Mod par Bontiv (Remi Bonnet), <a href="http://remi.bonnetchangai.free.fr">http://remi.bonnetchangai.free.fr</a>. Accélération de la page par Ajax (by Bontiv).</p>
<script type="text/javascript">//<!--
Update();
//--></script>
</div>
<?php
}
?>