2.2 Mise en place de l'environnement de développement
Ce chapitre va vous permettre d'initialiser le module contenant le code source de votre application Dynacase.
2.2.1 Objectifs
- Télécharger le template de module
- Initialiser le module
- Faire un tour des différents répertoires, fichiers et de leur utilité,
- Faire une première traduction
- Déployer votre module
2.2.2 Partie théorique
Comme nous l'avons vu au chapitre précédent, Dynacase Control utilise le concept de module pour gérer les différents éléments constituants un contexte.
Un module est composé de :
- un fichier
info.xml
contenant les instructions d'installation ou de mise à jour du module, - des fichiers de code source et de paramétrage du module,
- de manière optionnelle :
- une ou plusieurs applications,
- une ou plusieurs familles
- un ou plusieurs styles,
- etc.
Dynacase Control utilise des modules au format webinst. Ce format permet de transporter le module sous la forme d'un seul fichier. Ce fichier, nommé paquet, est composé de la manière suivante :
- une archive tar.gz contenant :
- le fichier
info.xml
- une archive compressée content.tar.gz contenant le code source du module tel qu'il est déployé sur le serveur
- le fichier
Une fois le module fourni à Dynacase Control, celui-ci lit le fichier info.xml
, décompresse le contenu du content.tar.gz dans
le contexte et exécute les éventuelles instructions d'installation ou mise à jour.
2.2.3 Mise en place
Il vous faut tout d'abord télécharger le developer toolkit, cet outil vous permet :
- d’initialiser les sources d'un module Dynacase,
- d'ajouter des applications, des familles, des workflow à votre projet,
- de faire les traductions,
- de produire le fichier webinst.
L'installation du toolkit et de ses dépendances est décrite dans la documentation correspondante
Le developer toolkit est téléchargeable depuis notre site :
-
dynacase-devtool.phar
pour linux -
dynacase-devtool-win32.zip
pour windows
L'exécution des devtools diffère si vous êtes sous un système Linux ou Windows :
- Windows : lancer la console et appeler le fichier
dynacase-devtool.bat
, - Linux : lancer la console et appeler le fichier
dynacase-devtool.phar
(ou exécuterphp dynacase-devtool.phar
si le fichier n'est pas exécutable).
L'initialisation du module se fait au moyen de la commande :
<devtool> createModule
L'invite vous proposer les choix suivants :
You need to set the name of the application -n or --name You need to set the output path for the file -o or --output Usage: /usr/local/bin/devtool [options] [operands] Options: -o, --output <arg> output Path (needed) -n, --name <arg> name of the module (needed) -a, --application <arg> associated application (list of app name separeted by ,) -l, --lang <arg> list of locale (list of locale separeted by ,) default (fr,en) -x, --external with external file -s, --style with style directory -p, --api with api directory -i, --images with images directory -e, --enclosure [<arg>] enclosure of the CSV generated (default : " ) -d, --delimiter <arg> delimiter of the CSV generated (default : ; ) -h, --help show the usage message
Cette commande va initialiser pour vous une structure de module Dynacase type, pré-paramétrée.
Dans notre cas, vous rentrez les options suivantes :
<devtool> createModule -o . -n cogip-audit -a COGIP_AUDIT -xspi -e
Cela crée, dans le répertoire courant, la structure de fichiers suivante :
┊ ├─ API/ ├─ COGIP_AUDIT │ ├─ COGIP_AUDIT.app │ ├─ COGIP_AUDIT_init.php │ ├─ Images/ │ └─ Layout/ ├─ EXTERNALS/ ├─ STYLE/ ├─ locale/ ├─ Images/ ├─ build.json ├─ info.xml ┊
La structure générée contient les éléments suivants :
- build.json : ce fichier contient les instructions qui permettent au developper toolkit de builder le module et d'extraire les chaînes à traduire, vous pouvez en lire une description détaillée dans la documentation du developer toolkit
-
info.xml : ce fichier décrit les actions à effectuer lors de
l'installation et de la mise à jour du module. Il est initialisé avec les instructions pour enregistrer l'application
COGIP_AUDIT
-
COGIP_AUDIT : Ce répertoire contient les sources de l'application
COGIP_AUDIT
sur laquelle vous allez travailler. C'est dans ce répertoire que vous allez mettre les définitions des familles, les actions et les assets (fichiers images, CSS, JS) de cette application, -
COGIP_AUDIT/COGIP_AUDIT.app : Ce fichier contient la définition de l'application
COGIP_AUDIT
, -
COGIP_AUDIT/COGIP_AUDIT_init.php : Ce fichier contient les paramètres
applicatifs associés à l'application
COGIP_AUDIT
par défaut il contient le numéro de version de l'application.
Ouvrez le fichier COGIP_AUDIT/COGIP_AUDIT.app
$app_desc = array( "name" => "COGIP_AUDIT", "short_name" => N_("COGIP_AUDIT:COGIP_AUDIT"), "description" => N_("COGIP_AUDIT:COGIP_AUDIT"), "icon" => "COGIP_AUDIT.png", "displayable" => "N", "childof" => "" );
Nous voyons que par défaut une référence est ajoutée vers un fichier COGIP_AUDIT.png
ce fichier est à déposer dans le répertoire Images
à la racine du module. Cette image est utilisée pour représenter l'application dans les différentes interfaces Dynacase -menus, administration, etc-.
Toutes les chaînes de caractères qui sont inclues dans les fonction _
et N_
sont traduisibles, ce qui est ici le cas pour
short_name
et description
.
Vous pouvez ajouter l'image au répertoire, toutes les images du tutoriel peuvent-être trouvées ici.
2.2.4 Traduction
Vous allez lancer la procédure permettant l'extraction des clefs de traduction et compléter celles-ci.
Une première version des fichiers de traductions a été initialisée lors de la création du module.
La commande pour rafraîchir les po est :
<devtool> extractPo -s .
Le -s indique le path où se trouve les sources, dans l'exemple ci-dessus elles sont dans le path courant.
Les po sont dans la structure suivante.
┊ ├─┬─ locale ┊ ├─ en │ └─ LC_MESSAGES │ └─ src │ └─ COGIP_AUDIT_en.po └─ fr └─ LC_MESSAGES └─ src └─ COGIP_AUDIT_fr.po
Ces fichiers sont les dictionnaires de traductions et ils contiennent les clefs que nous avons identifiées ci-dessus ainsi que leurs traductions.
Il est créé les fichiers PO suivants :
- un fichier po par application,
- un fichier po pour le module (si besoin est),
- un fichier po par famille,
- un fichier po par contrôle de vue.
Le fichier COGIP_AUDIT_fr.po
contient :
# French translations for PACKAGE package. # Copyright (C) 2014 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2014. # msgid "" msgstr "" "Project-Id-Version: COGIP_AUDIT_fr\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-22 12:08+0200\n" "PO-Revision-Date: 2014-09-22 11:44+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" msgid "COGIP_AUDIT:COGIP_AUDIT" msgstr ""
Vous allez compléter la clef Cogip_audit
, ceci peut-être fait à l'aide votre IDE ou d'un logiciel
spécialisé tel que poedit (téléchargement).
Complétez avec Application d'audit de la cogip
.
Ce qui donne :
[...] msgid "COGIP_AUDIT:COGIP_AUDIT" msgstr "Application d'audit de la cogip"
Une fois les modifications faites, vous obtenez le fichier suivant :
# French translations for PACKAGE package. # Copyright (C) 2014 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2014. # msgid "" msgstr "" "Project-Id-Version: COGIP_AUDIT_fr\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-22 12:08+0200\n" "PO-Revision-Date: 2014-09-22 11:44+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" msgid "COGIP_AUDIT:COGIP_AUDIT" msgstr "Application d'audit de la cogip"
2.2.5 Production du paquet
Vous allez maintenant conclure ce chapitre en produisant le fichier contenant le paquet et en le déployant à l'aide de l'interface web.
Exécutez la commande :
<devtool> generateWebinst -s .
Un paquet cogip-audit-1.0.0-0.webinst
est alors produit dans le répertoire des sources.
Vous devez ensuite accéder à Dynacase control
pour le déployer.

Figure 11. Deploy webinst
Veuillez cliquer sur le bouton Import Module
et à l'aide du sélecteur de fichier sélectionnez le paquet cogip-audit-1.0.0-0.webinst
.
L'installeur vous demande le scénario que vous souhaitez utiliser.

Figure 12. Deploy webinst
Le module n'ayant pas encore été installé, veuillez cliquer sur Install
.
Dynacase control vous indique les différentes actions qu'il va exécuter.

Figure 13. Deploy webinst
Veuillez valider, l’installation se déroule et votre application est en place.
Vous pouvez ensuite vérifier que celle-ci est bien installée et que la traduction est en place. Pour cela, allez sur
http://<nomDeDomaine>/dynacase/admin.php
dans la catégorie Gestion des applications
, Les applications
.

Figure 14. Show application
Vous pouvez retrouver votre application dans la liste. En outre, la traduction que nous avons faite apparaît dans la colonne description.
2.2.6 Déploiement automatisé de paquet
Chaque fois que vous souhaiterez déployer vos développements sur le serveur de production, il faudra, comme indiqué ci-dessus :
- générer le webinst
- vous rendre sur l'interface web de Dynacase Control
- uploader le webinst
- choisir le scénario (install ou upgrade)
Afin de simplifier cette succession d'étapes, les devtool fournissent la commande deploy
.
Il faut préciser tous les paramètres de déploiement :
-
--sourcePath
,-s
: emplacement des sources -
--url
: l'url d'accès à Dynacase Control (sous la formehttp[s]://<user>:<password>@<host>/<path/to/control>
) -
--port
: le port d'accès à Dynacase Control -
--context
: le nom du contexte
soit :
<devtool> deploy -s . --url http://admin:anakeen@<nomDeDomaine>/dynacase-control/ --port <port> --context dynacase
2.2.7 Conclusion
Vous connaissez maintenant la structure des sources Dynacase, vous savez construire et déployer un module et avez abordé les principes des traductions.