Préambule 1 - le nom

Vous aurez toujours le souci du choix du nom du plugin ainsi que de la dénomination du dossier qui le contiendra. Pour cette étape je n'ai pas de solution miracle.

Pour ma part, je préfère que le dossier possède le même nom que le plugin, j'aime bien jongler entre les minuscules/majuscules et utiliser des mots anglais, à vous de voir :-)

Pour cette série de billet j'ai choisi le mot tplPlugin pour template Plugin, soit en français modèle de module ...

Préambule 2 - l'identité visuelle

Deuxième casse-tête trouver l'image (pour les plus doués la créer). La encore à vous de voir :-) (toutefois pour ne pas risquer d'être embêté assurez-vous d'avoir le droit d'utiliser l'image que vous utiliserez). Pour ma part j'ai choisi une image au format PNG (chiné sur le net), que j'ai décliné de sa taille initiale (128x128) en :

tplPlugin-2.4.0-0.01-01.PNG

  • 16x16 pour la sidebar de l'admin et les favoris (mais aussi pour ma présentation dans l'admin)
  • 64x64 pour les favoris (mais aussi pour ma présentation dans l'admin)
  • 64x64 avec ajout d'un symbol activé, pour les favoris
  • 64x64 avec ajout d'un symbol désactivé pour les favoris

Pour ce faire, cela fait quelque temps maintenant que je suis passé à GIMP, mais au départ l'ergonomie de ce logiciel me gonflait méchamment LOL Je nomme toujours ces images du nom du plugin (tplPlugin) de leur résolution (-16x16 ou -64x64) et j'ajoute -No ou -Ok le cas échéant.

Préambule 3 - l'arborescence et les fichiers

Voici une arborescence des dossiers exhaustive (enfin je crois), mélange de ce qui est obligatoire et de ce qui m'est personnel : tplPlugin-2.4.0-0.01-02.PNG

  • les html dans le dossier default-templates
  • Je stocke les images utilisées côté admin dans le dossier img-admin
  • et les images utilisées côté public dans le dossier img-public
  • Je n'utilise jamais le dossier inc, dans lequel on met logiquement les fichiers de définition de class
  • Je stocke tous ce qui concerne le javascript (script, image, css, html ...) dans le dossier js (on pourrait concevoir de la même façon la présence d'un dossier flash)
  • les fichiers de traduction dans le dossier locales

Tous ces dossiers ne sont pas obligatoires loin de là, surtout que la plupart du temps il n'y a que le dossier img-admin.

Pour les fichiers : tplPlugin-2.4.0-0.01-03.PNG

  • _define.php : est obligatoire, c'est en quelque sorte la carte d'identité du plugin (nom, version, droits)
  • _install.php : l'essayer c'est l'adopter pour une bonne utilisation des paramètres et accessoirement faire le ménage.
  • _prepend.php : personnellement je l'utilise pour que mes variables soient systématiquement déclarées en sus d'_install.php
  • __params.php : celui-ci c'est moi qui l'ai inventé, il évite un doublon dans les fichiers _install.php et _prepend.php
  • _admin.php : systématique pour les icônes de favoris et si vous intervenez par les behaviors admin
  • index.php : la page d'administration de votre plugin (vous pouvez vous en passer en utilisant les behaviors admin sur la page de paramètrage du blog)
  • _widgets.php : à la fois pour le côté admin et le côté public si vous gérez un widget dans votre plugin.
  • _public.php : tous les behaviors côté public sont déclarés ici
  • class.*.php : si vous voulez éclater le code des class ...

Fin des préambules passons au code LOL

Le fichier _define.php

Intéressons nous au 12 premières lignes :

<?php
# -- BEGIN LICENSE BLOCK ----------------------------------
#
# This file is part of tplPlugin, a plugin for Dotclear 2.
#
# Copyright (c) 2011 AkhThoT 
#
# Licensed under the GPL version 2.0 license.
# See LICENSE file or
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# -- END LICENSE BLOCK ------------------------------------

Elles sont totalement facultatives, mais je préfère les mettre (comme beaucoup d'autres) dans tous les fichiers php, pour rappeler le nom du plugin, et le petit copyright sous licence GPL 2.0.

Ensuite nous avons :

if (!defined('DC_RC_PATH')) { return; }

$this->registerModule(
	/* Name */		"tplPlugin",
	/* Description*/	"template de Plugin",
	/* Author */		"AkhThoT",
	/* Version */		'2.4.0-0.01',
	/* Permissions */	null
);
?>

Tout d'abord un test pour éviter l’exécution du code en cas de mauvaise installation. Puis la carte d'identité de notre plugin :

  • le nom : unique, pouvant être indépendant du nom du dossier, ce que je préfère éviter (je me répète).
  • la description ...
  • le numéro de version : important pour de multiples raisons, faites attention au mélange chiffre / lettre, une comparaison logique de numéro de version doit toujours être possible. Depuis quelques temps je reprends la version de dotclear sur laquelle il a été développé puis un numéro séquentiel indépendant du numéro précédent.
  • les permissions séparées par des virgules :
    • null : seuls les super-administrateurs peuvent l'utiliser
    • admin : seuls les administrateurs du blog
    • contentadmin : seul ceux ayant accès à l'administration
    • usage : ...

Suite au prochaine épisode ... ;-)