====== Exemple d'une page avec des onglets et un formulaire pour enregistrer des paramètres ======
Nous allons utiliser des [[.:tabs|onglets]], un [[.:forms|formulaire]] et des [[..:settings|paramètres]] pour réaliser une page d'administration.
===== L'affichage XHTML =====
On utilise une [[.:forms#case-a-cocher|case à cocher]] pour le paramètre ''example_active'' :
On l'insère dans un formulaire et dans un onglet dont l'identifiant est ''settings'' :
''$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 ''
'.$msg.'';} ?>
Voici le code XHTML complet :
blog->name).' › '.
__('Example'); ?>
'.$msg.'';} ?>
===== Le traitement par PHP =====
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é :
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.');
}
?>
===== Résultat et code complet =====
{{:2.0:resources:plugins:admin:example:example.png|}}
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.');
}
?>
blog->name).' › '.
__('Example'); ?>
'.$msg.'';} ?>
===== Télécharger un plugin exemple =====
[[http://lab.dotclear.org/raw-attachment/wiki/plugin/adminExample/plugin-adminExample.zip|plugin-adminExample.zip]]