Raccourcis : Contenu - rubriques - sous rubriques
EN FR
Jelix 1.5.7

Chapitre: Migration depuis une version précédente de jelix

« Nouveautés ^ Introduction
Changer de langue : EN

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'attribut maxversion). Exemple :

        <jelix minversion="1.4" maxversion="1.5.*"/>
  • Les méthodes jCoordinator::isModuleEnabled() and jCoordinator::getModulePath() sont désormais obsolète, elles ont été copiée dans jApp, 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.