Carnet Wiki

Migrer de SPIP 3.2 à SPIP 4.0: le livre de cuisine

Version 36 — 1 month ago JLuc

Avant de mettre SPIP à jour

  • Vérifier votre version de PHP : Il faut PHP 7.3 minimum pour passer à SPIP 4.0
  • Ne pas oublier de mettre à jour les plugins, notamment SPIP-Bonux en version >= 3.7.1 pour éviter un conflit.
  • Vérifier la compatibilité 4.0 des plugins dans les fichiers paquet.xml (ou bien rajouter temporairement define('_DEV_VERSION_SPIP_COMPAT',"3.2.99"); dans mes_options).
    Pour vous aider à vérifier la compatibilité des plugins, vous pouvez utiliser le plugin Vérifier ses plugins avant un changement de version de SPIP
  • Les plugins du core breves, jquery_ui, organiseur, petitions, vertebres, squelettes_par_rubriques ont été retiré en SPIP 4.. [1]. Pensez à noter si vous avez utiliser l’un de ces plugins pour le réinstaller après le passage à SPIP 4..

Proposition d’ordre de migration

  1. Faire une sauvegarde ! (contenu des fichiers du serveur et la base de donneés)
  2. Faire vos tests dans une copie du site (ou acceptez l’audace directement)
  3. Migrer votre SPIP 3.2 dans sa dernière version stable si ce n’est pas déjà le cas >= 3.2.11 (il sera compatible jusqu’à PHP 7.4)
  4. Mettre à jour les plugins (particulièrement SPIP-Bonux en version >= 3.7.1)
  5. Basculer votre hébergement en PHP 7.3 ou 7.4
  6. (optionnellement pour tests) Définir la constante define('_DEV_VERSION_SPIP_COMPAT',"3.2.99"); dans mes options
  7. Installer SPIP 4.0 par dessus (via Spip-loader, checkout ou spip-cli)
  8. Supprimer plugins-dist/breves, organiseur, petitions, squelettes-par-rubriques (normalement, ç’a été fait par spip-loader)
  9. Se connecter à écrire et effectuer la migration de base de données
  10. Lancer une mise à jour des plugins
  11. Re-télécharger éventuellement les plugins breves, organiseur, petitions, squelettes-par-rubriques si votre squelette en a besoin.
  12. Tester tout ça...

Changement de gestion des documents

-  Les logos
-  Les modèles d’insertion
-  La notion de portfolio disparait

Voir : TODO Documentation pour SPIP4

Mise à jour des plugins et squelettes

Pagination : changement de syntaxe et d’arguments


-  En SPIP 3.2 on écrivait

  1. [<p class='pagination'>(#PAGINATION{prive})</p>]

-  En SPIP 4., il faut :

  1. [<nav class='pagination' role='navigation'>(#PAGINATION)</nav>]

Le changement porte sur la balise englobante, qui doit désormais être un nav
ET sur les arguments.
Il n’existe plus qu’un seul modèle de pagination, et les différences de pagination se font en lui passant des arguments :
-  afficher_lien_precedent=oui pour afficher le < vers les résultats précédents
-  afficher_lien_suivant=oui pour afficher le >
-  page=oui (à confirmer) pour afficher les n° de page
-  rang=oui (à confirmer) pour afficher les rangs des réponses
-  encore 1 ou 2 arguments à repêcher

De plus, la détection automatique de l’espace privé permet de paramétrer la pagination adaptée sans qu’il soit nécessaire de passer ce choix en argument.

N.B. Le nouveau code pour SPIP 4.0 fonctionne avec SPIP 3.2, on pourra donc, pour assurer la compatibilité (des squelettes, mais aussi des plugins), conserver l’argument de l’ancienne version ainsi:

  1. [<nav class='pagination' role='navigation'>(#PAGINATION{prive})</nav>]

Structure HTML des formulaires

  • Fin du support des ul/li. Il faut mettre un <div> à la place des <ul> et des <li>.
  • les saisies, case unique, checkbox, doivent être dans un fieldset avec légende, portant la classe. Dans certains cas, le <legend> remplace un <h3>

Exemple d’adaptation : https://git.spip.net/spip-contrib-extensions/sociaux/commit/d01708b6

FORMULAIRE_INSCRIPTION : changement de syntaxe

  • La legend porte la classe .label
  • Le fieldset porte la classe .editer

Les arguments changent, surtout le 3eme argument. Voir dans le forum de la partie privée sous la doc sur spip.net.

Images

Beaucoup d’images du privé au format gif ou png ont été transformé en SVG.
A priori rien à faire car SPIP détecte et s’adapte en créant un SVG à la taillle demandée.

Par contre certaines images (deplierhaut.gif, ....) ont été entièrement supprimées.

Si on veut faire les choses proprement:
-  on peut supprimer tous les png
-  on faut ajouter une icone au format SVG avec la convention de nommage suivante:
monplugin-64.png -> monplugin-xx.svg.
-  ( quelques conseils pour le graphisme des icones)

Fonctions dépréciées


-  lire_meta qui devient lire_config
-  recuperer_page qui devient recuperer_url
-  ...

Liste complète des nettoyages

Dans jQuery

-  size() est déprécié et provoque des erreurs. Il faut le remplacer par length comme conseillé dans la doc .size(). Exemple de remplacement

Supprimer les plugins.xml qui traînent

Avant de supprimer un plugin.xml il faut faire une branche de version en cours.
Puis donc dans la branche master = le supprimer + dans paquet.xml changer les bornes SPIP au minimum [3..0;4..*] + monter la version en x

Disparition de certains plugins-dist

Certains plugins (breves, petitions, etc voir la note de release) ne sont plus fournis avec SPIP. Si vos squelettes utilisent les tables créées et gérées par ces plugins, il faut
-  soit charger et activer ces plugins par SVP, si votre site les nécessite
-  soit, si leur usage est facultatif, adapter les squelettes pour une utilisation conditionnelle. Exemple d’adaptation

jQuery ui
jQuery ui sort des du plugins distribués avec le du core pour devenir un plugin dédié

Pour les fonctions de drag’n’drop, on peut aussi le remplacer avantageusement par sortable.js qui est embarqué dans le core, et qui peut aussi faire du drag’n’drop : https://sortablejs . github.io/Sortable/#cloning

Autres liens

-  Annonce SPIP 4.. : https://blog.spip.net/SPIP-4-0-tout-simplement.html
-  Changelog SPIP 4.. :  https://www.spip.net/6428
-  Annonce SPIP 4..0-beta : https://blog.spip.net/O-joie-C-est-SPIP-4-0-0-beta.html
-  Annonce SPIP 4..0-alpha : https://blog.spip.net/O-mega-c-est-SPIP-4-0-alpha.html
-  Documentation déjà publiées sur spip.net, portant sur des améliorations des balises, critères ou filtres pré-existantes : https://www.spip.net/spip.php?page=recherche&recherche=%22spip+4.0%22
-  Documentation sur https://programmer.spip.net concernant SPIP 4 alpha : https://www.spip.net/spip.php?page=recherche&recherche=%22spip+4.4%22

Attention : dans la documentation, SPIP 4 est encore parfois appelé SPIP 3.3le plus souvent .

Complément


-  voir les forums de la doc en cours sur spip.net