Nous allons utiliser des onglets, un formulaire et des paramètres pour réaliser une page d'administration.
On utilise une case à cocher pour le paramètre example_active
:
<p><label class="classic"><?php echo( form::checkbox('example_active','1',$settings->example_active). ' '.__('Enable')); ?></label></p>
On l'insère dans un formulaire et dans un onglet dont l'identifiant est settings
:
<div class="multi-part" id="settings" title="<?php echo __('Settings'); ?>"> <form method="post" action="<?php echo($p_url); ?>"> <p><label class="classic"><?php echo( form::checkbox('example_active','1',$settings->example_active). ' '.__('Enable')); ?></label></p> <p><?php echo $core->formNonce(); ?></p> <p><input type="submit" name="saveconfig" value="<?php echo __('Save configuration'); ?>" /></p> </form> </div>
$settings→example_active
permet de cocher ou non la case lors de l'affichage de la page.
Pour pouvoir afficher un message de confirmation, on doit placer ce code dans la balise <body> </body>
, sous le <h2> </h2>
par exemple :
<?php if (!empty($msg)) {echo '<p class="message">'.$msg.'</p>';} ?>
Voici le code XHTML complet :
<html> <head> <title><?php echo(__('Example')); ?></title> <?php echo dcPage::jsPageTabs($default_tab); ?> </head> <body> <h2><?php echo html::escapeHTML($core->blog->name).' › '. __('Example'); ?></h2> <?php if (!empty($msg)) {echo '<p class="message">'.$msg.'</p>';} ?> <div class="multi-part" id="tab-1" title="<?php echo __('Tab 1'); ?>"> <?php echo(__('Hello World!')); ?> </div> <div class="multi-part" id="settings" title="<?php echo __('Settings'); ?>"> <form method="post" action="<?php echo($p_url); ?>"> <p><label class="classic"><?php echo( form::checkbox('example_active','1',$settings->example_active). ' '.__('Enable')); ?></label></p> <p><?php echo $core->formNonce(); ?></p> <p><input type="submit" name="saveconfig" value="<?php echo __('Save configuration'); ?>" /></p> </form> </div> </body> </html>
On va placer au début du fichier index.php
le code PHP dont on a besoin.
Pour éviter d'écrire $core→blog→settings plusieurs fois, on va créer un raccourci : la valeur $settings
:
$settings =& $core->blog->settings; $settings->setNameSpace('example');
On enregistre le paramètre example_active
:
$settings->put('example_active', !empty($_POST['example_active']), 'boolean','Enable Example');
Ensuite on redirige le navigateur vers la page d'administration, en ajoutant un paramètre $_GET
à l'URL qui servira à afficher un message de confirmation.
http::redirect($p_url.'&tab=settings&saveconfig=1');
Pour enregistrer les paramètres seulement quand le formulaire a été envoyé, on utilise ce code :
if (!empty($_POST['saveconfig'])) { ... }
Voici le bloc d'instruction en entier :
if (!empty($_POST['saveconfig'])) { $settings->put('example_active', !empty($_POST['example_active']), 'boolean','Enable Example'); # redirect to the page, avoid conflicts with old settings http::redirect($p_url.'&tab=settings&saveconfig=1'); }
Enfin, on définit le message de confirmation :
if (isset($_GET['saveconfig'])) { $msg = __('Configuration successfully updated.'); }
Voici le code PHP qu'on a utilisé :
<?php $default_tab = 'tab-1'; if (isset($_REQUEST['tab'])) { $default_tab = $_REQUEST['tab']; } $settings =& $core->blog->settings; $settings->setNameSpace('example'); if (!empty($_POST['saveconfig'])) { $settings->put('example_active', !empty($_POST['example_active']), 'boolean','Enable Example'); # redirect to the page, avoid conflicts with old settings http::redirect($p_url.'&tab=settings&saveconfig=1'); } if (isset($_GET['saveconfig'])) { $msg = __('Configuration successfully updated.'); } ?>
<?php $default_tab = 'tab-1'; if (isset($_REQUEST['tab'])) { $default_tab = $_REQUEST['tab']; } $settings =& $core->blog->settings; $settings->setNameSpace('example'); if (!empty($_POST['saveconfig'])) { $settings->put('example_active', !empty($_POST['example_active']), 'boolean','Enable Example'); # redirect to the page, avoid conflicts with old settings http::redirect($p_url.'&tab=settings&saveconfig=1'); } if (isset($_GET['saveconfig'])) { $msg = __('Configuration successfully updated.'); } ?><html> <head> <title><?php echo(__('Example')); ?></title> <?php echo dcPage::jsPageTabs($default_tab); ?> </head> <body> <h2><?php echo html::escapeHTML($core->blog->name).' › '. __('Example'); ?></h2> <?php if (!empty($msg)) {echo '<p class="message">'.$msg.'</p>';} ?> <div class="multi-part" id="tab-1" title="<?php echo __('Tab 1'); ?>"> <?php echo(__('Hello World!')); ?> </div> <div class="multi-part" id="settings" title="<?php echo __('Settings'); ?>"> <form method="post" action="<?php echo($p_url); ?>"> <p><label class="classic"><?php echo( form::checkbox('example_active','1',$settings->example_active). ' '.__('Enable')); ?></label></p> <p><?php echo $core->formNonce(); ?></p> <p><input type="submit" name="saveconfig" value="<?php echo __('Save configuration'); ?>" /></p> </form> </div> </body> </html>
Wiki powered by Dokuwiki.