Templeet pas à pas
XV. L'écriture de nouveaux packages
Cette documentation traite de la version 3 du système de package.
Les packages permettent d'installer de nouvelles applications ou fonctionalités à Templeet.
Pour construire un package il est nécessaire de respecter quelques règles afin que
la gestion du package se fasse sans encombre.
Un package doit se trouver dans un répertoire qui porte son nom dans template/templeet_packages. Dans ce répertoire ce trouvent tous les fichiers du package.
Les fichiers nécessaires au fonctionnement du package:
- OK
- INFO.??
- install.tmpl
- version
OK
Ce fichier doit contenir une seule ligne:install:3
Ce fichier permet de définir la version du système de package.
INFO.??
Ces fichiers où les points d'interrogation sont remplacés par des codes langues ISO639-2 contiennent un petit descriptif de ce que fait le package.Par exemple pour le package cal les fichiers INFO sont:
INFO.fr
Le module CAL permet de générer un calendrier.
INFO.en
The CAL module handles calendars.
NOTE : ce descriptif est intégré dans une page dont le codage de caractère est en iso-8859-1, donc ce fichier doit utiliser le même encodage.
noinstall
Ce fichier est optionel. Il permet de définir un package comme non installable. C'est à dire que le package est présent, mais il n'est pas destiné à être installé dans un répertoire.
install.tmpl
Ce fichier contient les instructions qui permettent la gestion du package. Ce fichier est appelé par le gestionnaire de packages pour diverses opérations.Ce fichier est inclus par le gestionnaire avec un paramètre qui indique quelle est l'opération à effectuer.
Un fichier install.tmpl doit traiter obligatoirement quatre opérations de base qui sont:
- installable : doit renvoyer 0 si le package n'est pas installable, 1 dans le cas contraire.
- install : instructions à executer pour procéder à l'installation du package.
- remove : instructions pour la suppression du package.
- update : instructions pour la mise à jour du package.
Lors du traitement des commandes remove et update, il est possible de connaître le répertoire où est installé le package via la variable packagedir.
La structure générale d'un fichier install.tmpl est la suivante:
~switch(
ATTENTION:
~parseparam(1) == 'installable',
{
Le package est-il installable ?
},
ATTENTION:
~get_filenamevar(1) == 'install',
{
Instructions pour l'installation
},
~get_filenamevar(1) == 'remove',
{
Instructions pour la suppression
},
~get_filenamevar(1) == 'update',
{
Instructions pour la mise à jour
}
)
Lors des opérations sur le package l'enregsitrement des packages doit être tenu à jour. Cette gestion se fait à l'aide des fonctions package_register et package_unregister.
Syntaxe des fonctions:
~package_register(nom du package,répertoire d'installation) ~package_unregister(nom du package,répertoire d'installation)
Lorsqu'un package par nature ne s'installe pas dans un répertoire particulier, le paramètre répertoire doit être templeet.
Présentation du fichier install.tmpl du module cal:
~string(
~set('files',~array( <-- liste des fichiers à copier
~array('modules/cal.php','templeet/modules/'),
~array('doc/.*','template/templeet_doc/')
)
),
~defunc('remove_files', <-- fonction d'effacement des fichiers installés
{
~delete_files(~array('templeet/modules/cal.php',
'template/templeet_doc/cal.fr.html'))
}
),
~switch(
~parseparam(1) == 'installable',
!~file_exists('templeet/modules/cal.php'), <-- si le fichier le module est présent
alors le package n'est pas installable
~get_filenamevar(1) == 'install',{
~package_install(~get_filenamevar(2),~get('files')), <-- copie des fichiers
~uncache('templeet_doc/index.en.html','templeet_doc/index.fr.html'), <-- effacement du cache des pages
d'index de la documention à cause de
l'ajout de la documentation du module.
~set('res',~configurator("","","")), <-- prise en compte du nouveau module
~if(~get('res')<0,
{
~remove_files(),
~displaylang(~get('lang'),~array(
'fr' => "erreur à l'installation du package",
'en' => "error while installing package"
)
)
},
{
~package_register('cal','templeet'), <-- enregistrement du package
~displaylang(~get('lang'),~array(
'fr' => "package installé",
'en' => "package installed"
)
)
}
)
},
~get_filenamevar(1) == 'remove',{
~remove_files(), <-- effacer les fichiers
~package_unregister('cal','templeet'), <-- suppression du package de la base des
package installés
~set('res',~configurator("","","")), <-- prise en compte de la suppression du module
~displaylang(~get('lang'),~array(
'fr' => "package supprimé",
'en' => "package removed"
))},
~get_filenamevar(1) == 'update',{
~remove_files(), <-- effacer les fichiers
~package_unregister('cal','templeet'), <-- suppression du package de la base des
package installés
~package_install(~get_filenamevar(2),~get('files')), <-- copie des nouveaux fichiers
~uncache('templeet_doc/index.en.html','templeet_doc/index.fr.html'), <-- effacement du cache des pages
~package_register('cal','templeet'), <-- réenregistrement du package avec les
nouveaux paramètres
~set('res',~configurator("","","")), <-- prise en compte de la mise à jour du module
~displaylang(~get('lang'),~array(
'fr' => "package mis à jour",
'en' => "package updated"
))
}
)
)
Télécharger
FAQ
