Project

General

Profile

Actions

Système de Plugins

Téléchargement d'un plugin

Pour télécharger un plugin, utilisez svn. Par exemple :

svn co http://dev.linea21.com/svn/linea21-plugins/trunk/l21_gotoTop/

La liste des plugins disponibles est accessible via le dépôt.

Installation d'un plugin

Pré-requis : Avant d'installer un plugin, vous devez vous assurer que le MOD_PLUGIN est bien actif. Pour cela, depuis l'interface d'administration, allez sur Configurer > Système. Déplier l'onglet Configuration système (define_release). Passez en mode édition et changez la valeur de MOD_PLUGIN à 1. Enregistrez les modifications.
Dès lors que le MOD_PLUGIN est activé, le sous-menu Plugins apparaît dans l'onglet Configurer.

  1. Placez le plugin téléchargé (par exemple l21_gotoTop) dans le dossier /plugins/ de l'application
  2. Donner les permissions nécessaires à l'utilisateur apache sur le dossier. Cette étape est nécessaire car l'application doit pouvoir écrire dans le répertoire. Par exemple : * chown www-data:www-data /plugins/l21_monplugin/ * chmod -R 0755 /plugins/l21_monplugin/
  3. Vous pouvez à présent vous rendre sur la page des plugins en cliquant sur Configurer > Plugins. Le plugin nouvellement installé doit apparaître. Vous devez à présent l'activer en cliquant sur le lien adéquat. Votre plugin est installé!

Architecture d'un plugin

L'architecture d'un plugin doit se conformer à quelques règles.

  1. D'abord en ce qui concerne le nommage, le plugin doit nécessairement être préfixé de l21_
  2. Il doit contenir un fichier plugin.xml qui renseignera les méta-informations (nom, auteur, compatibilité, date de sortie, portée du plugin ...)
  3. Il doit nécessairement disposé d'un fichier nommé __init__.php. Ce fichier sera exécuté à chaque appel de page. C'est lui qui instancie le plugin et permettra donc son exécution.
  4. Si le plugin fait appel à des fichiers de langue, il doit impérativement reproduire la structure applicative. Il contient alors un répertoire nommé languages et autant de sous-répertoires pour les langues (par exemple fr et en). Tous les fishiers contenus dans les sous-répertoires seront chargés lors de l'instanciation du plugin.
  5. La présence d'un fichier __install__.php permettra lors de l'installation du plugin d'effectuer des actions relatives à sa mise en oeuvre, par exemple, l'ajout d'une table dans la base de données, la modification d'un fichier, ...
  6. Le fichier __uninstall__.php permettra lors de la désactivation du plugin d'effectuer des actions particulières : par exemple, la suppression d'une table dans la base de données ou d'un fichier, ...

Pour le reste, vous avez une totale liberté dans l'organisation de votre plugin. Veillez toutefois à proposer une structure claire, afin que celui-ci puisse être amélioré ou repris par un autre utilisateur.

L'objet plugin

Chaque plugin est instancié par la classe plugin. Les propriétés de l'objet sont ainsi rendues disponibles via la variable globale $plug.

Par exemple :

echo $plug->getVar('name');
echo $plug->getVar('shortname');

// renverra le nom du plugin
// puis le nom du plugin privé du préfixe l21_

Référez-vous à la classe pour connaître les attributs de l'objet et les méthodes qui y sont liées.

Balises standards

  • pluginname : nom du plugin
  • description : description du plugin au format texte
  • version : numéro de version
  • date : date de la version du plugin
  • compatibility : versions avec lesquelles le plugin est compatible
  • author : nom de l'auteur
  • homepage : Lien vers la page web de l'auteur
  • default_language : Langage utilisé par défaut par le plugin (dans le cas où la langue courante n'est pas pris en charge)
  • apps : La balise <apps> définit la portée du plugin. Elle peut comporter un ou plusieurs tags enfants (<app>), selon que le plugin est utile à l'interface publique, à l'interface d'administration ou au deux -comme dans l'exemple ci-dessous.
  • image (optionnelle) : nom du fichier pointant vers l'image illustrant le plugin
  • settings (optionnelle) : prend la valeur 0 ou 1. Indique si le plugin est configurable ou non. S'il l'est, l'auteur du plugin doit fournir la logique applicative et l'interface (fichier index.php).
  • load_on_settings (optionnelle) : prend la valeur 0 ou 1. Indique si le plugin doit être éxécuté lors de la consultation de la page de configuration.
  • restricted_edition (optionnelle) : par défaut, les fichiers de plugins sont accessibles en lecture/écriture depuis l'éditeur en ligne. La balise <restricted_edition> permet de spécifier des fichiers à ignorer, via l'utilisation de balises enfants <file>

Exemple de fichier plugin.xml

<?xml version="1.0" encoding="UTF-8"?>
<plugin>
    <pluginname>l21_gotoTop</pluginname>
    <description>Add a go to Top button on each pages</description>
    <version>1</version>
    <date>22-01-2012</date>
    <compatibility>1.5 +</compatibility>
    <author>Simon Georget</author>
    <homepage>http://www.empreinte-urbaine.eu</homepage>
    <default_language>fr</default_language>
        <image>plugin.png</image>
    <apps>
        <app>public</app>
        <app>admin</app>
    </apps>
    <restricted_edition>
        <file>config.php</file>
        <file>mypaswwords.php</file>
    </restricted_edition>
</plugin>

Exemple de l'architecture d'un plugin

La capture d'écran ci-dessous décrit l'architecture du plugin l21_gotoTop affichant une flèche permettant à l'utilisateur de revenir en haut de page à tout moment.

Pour accéder au code source du plugin, suivez le lien.

Le stockage et l'accès aux données d'un plugin

Depuis la version 1.6, Linea21 permet de stocker des informations relatives au plugin en base de données. La table l21_plugins permet de stocker un tableau sérialisé de paramètres dans le champ plugin_values (au format TEXT).

Les méthodes storesValues() et retrieveValues() disponibles dans la classe class.plugin.php permettent aisément de manipuler les données.

Plugin - Structure de la base de données

Updated by Simon over 9 years ago · 14 revisions