Systeme de Plugins » History » Version 9
Simon, 07/03/2012 06:45 PM
1 | 1 | Simon | h1. Système de Plugins |
---|---|---|---|
2 | |||
3 | 5 | Simon | |
4 | 7 | Simon | h2. Téléchargement d'un plugin |
5 | |||
6 | Pour télécharger un plugin, utilisez svn. Par exemple : |
||
7 | |||
8 | <pre> |
||
9 | svn co http://dev.linea21.com/svn/linea21-plugins/trunk/l21_gotoTop/ |
||
10 | </pre> |
||
11 | |||
12 | 8 | Simon | La liste des plugins disponibles est accessible via le "dépôt":http://dev.linea21.com/projects/linea21/repository/linea21-plugins?path[]=trunk. |
13 | |||
14 | 6 | Simon | h2. Installation d'un plugin |
15 | 5 | Simon | |
16 | *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. |
||
17 | 1 | Simon | Dès lors que le *MOD_PLUGIN* est activé, le sous-menu _Plugins_ apparaît dans l'onglet _Configurer_. |
18 | 5 | Simon | |
19 | 7 | Simon | # Placez le plugin téléchargé (par exemple _l21_gotoTop_) dans le dossier /plugins/ de l'application |
20 | 6 | Simon | # 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 : |
21 | 1 | Simon | * <code>chown www-data:www-data /plugins/l21_monplugin/</code> |
22 | 5 | Simon | * <code>chmod -R 0755 /plugins/l21_monplugin/</code> |
23 | # 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é! |
||
24 | 6 | Simon | |
25 | 5 | Simon | |
26 | |||
27 | 1 | Simon | h2. Architecture d'un plugin |
28 | |||
29 | L'architecture d'un plugin doit se conformer à quelques règles. |
||
30 | |||
31 | # D'abord en ce qui concerne le nommage, le plugin doit nécessairement être préfixé de *l21_* |
||
32 | 2 | Simon | # Il doit contenir un fichier <code>plugin.xml</code> qui renseignera les méta-informations (nom, auteur, compatibilité, date de sortie, portée du plugin ...) |
33 | # Il doit nécessairement disposé d'un fichier nommé <code>__init__.php</code>. Ce fichier sera exécuté à chaque appel de page. C'est lui qui instancie le plugin et permettra donc son exécution. |
||
34 | 1 | Simon | # 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. |
35 | 2 | Simon | # La présence d'un fichier <code>__install__.php</code> permettra lors de l'installation du plugin d'effectuer des actions relative à sa mise en oeuvre, par exemple, l'ajout d'une table dans la base de données, la modification d'un fichier, ... |
36 | 1 | Simon | |
37 | 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. |
||
38 | |||
39 | 4 | Simon | |
40 | h2. L'objet plugin |
||
41 | |||
42 | Chaque plugin est instancié par la classe "plugin":http://dev.linea21.com/projects/linea21/repository/changes/trunk/v1/class/class.plugin.php. Les propriétés de l'objet sont ainsi rendues disponibles via la variable globale <code>$plug</code>. |
||
43 | |||
44 | Par exemple : |
||
45 | 9 | Simon | <pre><code class="php"> |
46 | 4 | Simon | echo $plug->getVar('name'); |
47 | echo $plug->getVar('shortname'); |
||
48 | |||
49 | // renverra le nom du plugin |
||
50 | // puis le nom du plugin privé du préfixe l21_ |
||
51 | </code> |
||
52 | </pre> |
||
53 | |||
54 | Référez-vous à "la classe":http://dev.linea21.com/projects/linea21/repository/changes/trunk/v1/class/class.plugin.php pour connaître les attributs de l'objet et les méthodes qui y sont liées. |
||
55 | |||
56 | |||
57 | 1 | Simon | h2. Exemple de fichier plugin.xml |
58 | |||
59 | <pre><code class="xml"> |
||
60 | <?xml version="1.0" encoding="UTF-8"?> |
||
61 | <plugin> |
||
62 | <pluginname>l21_gotoTop</pluginname> |
||
63 | <description>Add a go to Top button on each pages</description> |
||
64 | <version>1</version> |
||
65 | <date>22-01-2012</date> |
||
66 | <compatibility>1.5 +</compatibility> |
||
67 | <author>Simon Georget</author> |
||
68 | <homepage>http://www.empreinte-urbaine.eu</homepage> |
||
69 | <default_language>fr</default_language> |
||
70 | 4 | Simon | <image>plugin.png</image> |
71 | 1 | Simon | <apps> |
72 | <app>public</app> |
||
73 | <app>admin</app> |
||
74 | </apps> |
||
75 | </plugin> |
||
76 | </code> |
||
77 | </pre> |
||
78 | |||
79 | La balise <apps> définit la portée du plugin. Elle peut comporter un ou plusieurs tags, selon que le plugin est utile à l'interface publique, à l'interface d'administration ou au deux -comme dans l'exemple ci-dessus. |
||
80 | |||
81 | |||
82 | h2. Exemple de l'architecture d'un plugin |
||
83 | |||
84 | 3 | Simon | 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. |
85 | 1 | Simon | |
86 | 3 | Simon | !plugin.png! |
87 | |||
88 | |||
89 | Pour accéder au code source du plugin, "suivez le lien":http://dev.linea21.com/projects/linea21/repository/show/trunk/v1/plugins/l21_gotoTop. |