Chapitre: Migration depuis une version précédente de jelix
« Nouveautés | ^ Introduction |
− Table des matières
Lors d'une migration d'une version Jelix à une autre, il y a toujours au moins ces étapes à faire :
- Remplacer le répertoire
lib/
de jelix par celui contenu dans le paquet jelix. - Ne pas oublier de remettre dans le nouveau répertoire
lib/
vos éventuelles bibliothèques personnelles si vous en aviez mis dans l'ancien. - supprimer tous les fichiers dans le répertoire
temp/votre_appli
- adapter votre code en suivant les instructions indiquées pour chaque ancienne version de Jelix. Voir ci-dessous.
Mettre à jour depuis Jelix 1.3 et inférieur ¶
Suivez les indications de migration de chaque version intermédiaire (voir les manuels correspondant), avant de mettre à jour pour jelix 1.4.
Mettre à jour depuis Jelix 1.4.x ¶
Voici les instructions à suivre dans l'ordre.
Sauvegarde ¶
Tout d'abord, faites une sauvegarde de votre base de données, de vos fichiers de configuration etc.
Répertoires temporaires ¶
Comme d'habitude, vous devez vider le contenu de votre répertoire temp/votreapp/
.
Appliquer le patch pour jelix 1.5.8 ¶
Depuis la dernière version de la branche 1.5, il y a eu quelques correctifs dans les scripts de migrations, mais qui n'ont pas été publié dans une nouvelle version de Jelix 1.5, faute d'avoir un PHP assez vieux pour regénérer les paquets.
Téléchargez donc https://download.jelix.org/jelix/releases/1.5.x/1.5.8/jelix_1.5.8_patch.zip, et dézippez-le
à partir du répertoire parent de lib/
. Cela remplacera quelques fichiers. Vous pouvez trouvez ceci également ici
https://github.com/jelix/jelix/tree/jelix-1.5.x/build/patch .
Suppression de fichiers ¶
Modifications générales ¶
À propos de jAcl2 ¶
La classe jAcl2 a été déplacée dans un nouveau module jacl2. Vous devez l'activer :
[modules]
jacl2.access=1
L'installateur de jelix changera d'autres choses automatiquement. N'hésitez pas à déclarer la dépendance à ce module dans vos modules qui utilisent jAcl2.
À propos de jPref ¶
La classe jPref a été déplacée dans un nouveau module jpref. Vous devez l'activer si vous utilisez jPref :
[modules]
jpref.access=1
N'hésitez pas à déclarer la dépendance à ce module dans vos modules qui l'utilisent.
À propos de jForms ¶
Le constructeur de formulaire (builder) de jForms a été remplacé par un nouveau
système plus extensible. Les plugins implémentant les builders doivent donc
implémenter la nouvelle API. Aussi, Jelix s'attend à ce que le plugin que l'on indique dans la
configuration au niveau de defaultJformsBuilder
ou en paramètre aux tags
{form}
dans les templates, correspond au nouveau type de plugin.
cependant, les plugins anciennes générations (héritant donc de jFormsBuilderBase)
sont toujours utilisable. Il suffit de prefix le nom du plugin par "legacy."
dans defaultJformsBuilder
ou {form}
. Bien sûr, cela ne peut être qu'une
solution de transition. Le mieux est de réécrire le plugin en suivant la nouvelle
API. Voir le chapitre correspondant.
Notez aussi que jFormsBuilderBase n'est plus une classe autochargée. Il faut donc faire un require si vous l'utilisez en dehors de jForms.
Support de PDF avec TCPDF ¶
TCPDF, ses fontes, l'objet réponse jResponseTcpdf
et la classe
jTcpdf
ont été intégré dans un module séparé. Si votre application utilise
ces objets, il faut installer ce nouveau module jtcpdf, disponible en
téléchargement. Il n'y a en principe rien à faire d'autre, sauf à changer les
chemins d'inclusions si vous avez fait des classes héritant de
jResponseTcpdf
.
Support de SOAP ¶
Si vous utilisez les fonctionnalités SOAP de Jelix (points d'entrée, jWSDL...), vous devez faire les changements suivants :
- Dans la configuration, vous devez enlever l'activation du module jWSDL puisqu'il n'existe plus, et activer le module jsoap:
[modules]
jWSDL.access=2 ; <- enlever cette ligne
jsoap.access=2 ; <- ajouter cette ligne
- Dans votre soap.php (ou autre points d'entrées pour soap), vous devez changer leur contenu comme ceci:
require_once ('../application.init.php');
checkAppOpened();
jApp::loadConfig('soap/config.ini');
ini_set("soap.wsdl_cache_enabled", "0");
jClasses::inc('jsoap~jSoapCoordinator');
jClasses::inc('jsoap~jSoapRequest');
$jelix = new jSoapCoordinator();
jApp::setCoord($jelix);
$jelix->request = new jSoapRequest();
$jelix->request->initService();
$jelix->processSoap();
- Si vous générez des liens pour jWSDL, changez dans les selecteurs les noms de module "jWSDL" en "jsoap".
- Reconfigurez tout vos clients soap qui interroge votre application, pour changer l'url du WSDL
Mise à jour des modules ¶
Mettez à jour les sources des modules tiers que vous avez installés, et qui sont compatibles avec Jelix 1.5.
Et pour vos propres modules, vous devez adapter le code source en faisant les modifications suivantes :
- Dans les fichiers
module.xml
, indiquez que le module est compatible avec Jelix 1.5 (changer l'attributmaxversion
). Exemple :
<jelix minversion="1.4" maxversion="1.5.*"/>
- Les méthodes
jCoordinator::isModuleEnabled()
andjCoordinator::getModulePath()
sont désormais obsolète, elles ont été copiée dansjApp
, il faut donc utiliser celle de jApp. - Dans vos pages statiques HTML (via jResponseBasicHtml) et page d'erreur statiques (error.en_US.php etc) la variable $basePath doit être renommée en $BASEPATH. (Jelix 1.4.1)
Lisez la liste détaillée des changements pour savoir la liste des nouvelles classes et méthodes que vous pouvez utiliser.
Mise à jour de Jelix ¶
Après toutes les modifications effectuées, vous devez lancer le script installer.php de votre application. Le module jelix fera le reste des modifications.