====== Création de widgets ======
===== Introduction =====
Les widgets Dotclear sont des petits bouts de code très simples permettant d'afficher diverses informations dans les bandeaux latéraux d'un blog.
Nous allons voir ici comment réaliser un widget très simple.
===== Conception du plugin =====
==== Définition ====
Comme toujours, on commence par créer un répertoire dans le répertoire des plugins et on crée un fichier **_define.php** :
registerModule(
/* Name */ "My first widget",
/* Description*/ "This is my first widget",
/* Author */ "Peter McAlloway",
/* Version */ '1.0',
/* Permissions */ 'admin'
);
?>
==== Création du widget et administration ====
Ceci fait, nous allons faire un fichier particulier appelé **_widgets.php** dans lequel nous allons écrire le code suivant :
addBehavior('initWidgets',
array('myWidgetBehaviors','initWidgets'));
class myWidgetBehaviors
{
public static function initWidgets($w)
{
$w->create('MyWidget',__('My first widget'),
array('publicMyWidget','myWidget'));
}
}
?>
Ce premier code est très simple. La première ligne appelle le comportement **initWidgets** et indique d'appeler la méthode statique **initWidgets** de la classe **myWidgetBehaviors**. La classe est définie juste en dessous et la méthode en question se contente de créer le widget.
La fonction initWidgets reçoit l'objet contenant les widgets en argument. L'unique ligne de cette méthode lance la création du widget.
La méthode **create** de l'objet passé en argument prend les paramètres suivants :
* L'identifiant du widget
* Le nom du widget
* Un callback valide pour l'affichage du widget sur la partie publique du blog.
En clair nous disons ici : créer un widget identifié par **MyWidget**, nommé **My first widget** et appelant la méthode statique **myWidget** de la classe **publicMyWidget**.
Vous pouvez dès lors voir votre widget dans la liste des widgets disponibles. Il nous manque encore cependant un élément essentiel : ce que fait le widget sur la partie publique du blog.
==== Affichage du widget ====
Nous créons un fichier **_public.php** dans lequel nous allons écrire le code suivant :
Hello World!
addBehavior('initWidgets',
array('myWidgetBehaviors','initWidgets'));
class myWidgetBehaviors
{
public static function initWidgets($w)
{
$w->create('MyWidget',__('My first widget'),
array('publicMyWidget','myWidget'));
$w->MyWidget->setting('title',__('Title:'),
'default value','text');
$w->MyWidget->setting('checked',__('checkbox'),
true,'check');
$w->MyWidget->setting('text',__('Text:'),
'','textarea');
$w->MyWidget->setting('option',__('Options:'),
null,'combo',array('opt1' => 1, 'opt2' => 2));
}
}
?>
Vous aurez remarqué la présence de 4 nouvelles lignes dans le code. Chacune ajoute une option différente au widget **MyWidget**. Pour ajouter une option à un widget on appelle la méthode **$w->MyWidget->setting()** ou MyWidget est l'identifiant du widget. Voici ce que font ces quatres lignes :
* On ajoute une option **title** nommée "Title:" ayant pour valeur par défaut "default value" et de type **text** (champ texte simple).
* On ajoute une option **checked** nommée "checkbox", cochée par défaut et de type **check** (case à cocher).
* On ajoute une option **text** nommée "Text:" avec aucune valeur par défaut et de type **textarea** (champs de texte long).
* On ajoute une option **option** nommée "Options:" n'ayant pas de valeur par défaut et de type **combo** (liste de choix).
Ce code donne tous les types d'options possibles pour un widget.
Title: '.$w->title.'';
}
}
?>
Vous l'aurez compris, pour obtenir la valeur d'une option d'un widget, il suffit d'appeler $w->identifiant_option. Dans notre cas, nous pourrions appeler $w->checked, $w->text, $w->option.
Vous savez maintenant (presque) tout. Bons widgets !