Cette version sort trois ans après SPIP 3.0 et offre essentiellement aux développeurs :
- une mise à jour des bibliothèques JavaScript qui accompagnent le cœur de SPIP et les plugins fournis, avec notamment jQuery et jQuery UI ;
- une actualisation du thème graphique de l’espace public. Ce thème intègre la base CSS Tiny Typo ; Lire Présentation de la dist (SPIP3.1)
- une actualisation légère du thème graphique de l’espace privé ;
- des nouveautés et de nombreux bugs corrigés.
SPIP 3.1 : des nouveautés
Les rédacteurs et administrateurs pourront trouver utile :
- un bouton supplémentaire sur les barres d’outils d’édition qui permet d’éditer le texte en plein écran, avec sa prévisualisation directe sur le côté ;
- le lecteur multimédia HTML5 http://mediaelementjs.com fourni en standard pour lire directement vidéos et sons ;
- l’ajout d’une vidéo calcule, ses dimensions et sa durée (intégration partielle du plugin getID3 dans le plugin médias) ;
- les forums de discussion dans l’espace privé peuvent se greffer sur n’importe quel objet éditorial via un formulaire de configuration ;
- les statistiques peuvent être affichées soit sous forme de graphique, soit sous forme de tableau ;
- la page plan de l’espace privé est améliorée et permet de déplacer des éléments par glisser/déposer ;
- une nouvelle option dans les préférences personnelles des webmestres pour afficher ou non le menu « Développement » ;
- des améliorations de l’ergonomie du multilinguisme par secteur.
SPIP 3.1 : l’écriture des squelettes est facilitée
Critères
- le critère
{age}
est modifié, code simplifié et débogué pour certaines durées ; - le critère
{tri}
accepte un 3e argument avec le nom commençant par ’session’ et indiquant que le sens et l’élément trié doivent être sauvés dans la session de l’utilisateur ; - le critère
{branche}
accepte un second argument pour préciser la ou les rubriques à parcourir.
Balises
- la balise
#MODELE
accepte le paramètreenv
transmettant l’environnement complet ; - la balise
#INCLURE
transmet l’éventuel paramètreconnect
présent dans l’URL, tout comme le fait déjà l’inclusion<INCLURE...>
Filtres
- le nouveau filtre |setenv
Logos et images
-
filtre_inactif
au lieu deno_image_filtrer
; - la classe
.spip_logo
sur les documents à la place de.spip_logos
(.spip_logos
supporté encore quelques temps) ; - l’action d’édition des logos a évolué :
- la hauteur ou largeur maximale des logos peuvent être définies seules ;
- si un logo ou une image téléversée dépasse la taille maximale autorisée, et que les miniatures sont autorisées, on réduit le logo ou l’image transmise à la taille maximale plutôt que renvoyer une erreur ;
- si un document dépasse la taille exploitable par le serveur, une erreur est affichée sans poser de problème ajax.
Plugins
- meilleure ergonomie de l’interface de gestion des plugins ;
- nouvelles balises dans le paquet.xml ;
-
script
pour ajouter un script JavaScript dans le header public ou privé ; -
style
pour ajouter un fichier CSS ; -
genie
pour exécuter une tache cron simplement ; -
procure
pour indiquer qu’un plugin procure des fonctionnalités.
-
SPIP 3.1 : sous le capot
Certaines modifications mineures du core peuvent intéresser les hébergeurs ou webmestres de sites SPIP :
- les sessions anonymes de SPIP utilisent maintenant les sessions PHP ;
- le cache des vignettes d’images est stocké dans 256 sous-répertoires (#3277), ce qui peut améliorer les performances sur les disques NAS ;
- lors de l’utilisation d’une base MySQL, les fonctions PHP
mysqli_*
sont utilisées à la place des fonctionsmysql_*
. Il faut donc que les fonctionsmysqli
soient présentes sur le serveur hébergeant le site (elles sont actives par défaut dans PHP depuis la version 5.0) ; - les tables MySQL utilisent maintenant MyISAM par défaut (les versions récentes de MySQL s’installaient en INNODB) ;
- la gestion du cache a été améliorée en reprenant la méthode filecache du plugin mémoization ;
- les révisions des objets éditoriaux ne sont plus stockées de façon compressée afin d’éviter des problèmes lors de la restauration de sauvegardes de la base de données ;
- intégration des fonctions d’import/export de fichiers CSV du plugin SPIP-Bonux ;
- API
objet_inserer()
plus consistante avec le second paramètre$set
; - API de rôles sur les liens : aux liens entre objets peuvent être associés des rôles.
SPIP 3.1 : un code source plus beau
Un gros travail sur la présentation du code source a été effectué :
- adoption des normes de codage PSR2 personnalisées ;
- annotation de nombreuses fonctions PHP au format phpDoc [1] qui permet de générer automatiquement une documentation technique du code source ;
- nombreuses « notices » PHP corrigées.
SPIP 3.1 : les performances web coté client
Dans une optique de performance, la méthode getScript
de la bibliothèque JavaScript jQuery est surchargée pour utiliser le cache navigateur. En effet, par défaut, jQuery ne met pas en cache ces éléments. Il est par conséquent conseillé dans un squelette SPIP, utilisant jQuery.getScript(...)
, d’appliquer le filtre timestamp
au fichier demandé, de sorte qu’une modification du fichier source entraîne une actualisation du cache navigateur.
Exemple :
jQuery.getScript('[(#CHEMIN{prive/javascript/ui/widget.js}|timestamp)]', function(){
...
});
Un header Link est envoyé dans les en-têtes HTTP pour annoncer la feuille de style compressée pour qu’elle soit chargée plus rapidement par le navigateur.
Bibliothèque jQL dans le plugin Compresseur
Il est également possible d’activer via la constante _JS_ASYNC_LOAD
un chargement asynchrone du JavaScript compressé de l’espace public par l’intermédiaire de la bibliothèque jQL intégrée au compresseur. Il faut que les scripts « inline » soient compatibles.
Mettre à jour un site existant vers SPIP 3.1
Vérifier la compatibilité de ses plugins
Avant le lancer la mise à jour par les méthodes habituelles (FTP, Spip loader, Subversion), il est conseillé de mettre à jour ses plugins.
Le plugin suivant permet aussi de vérifier si les plugins de votre site sont bien compatibles avec SPIP 3.1
http://contrib.spip.net/Verifier-ses-plugins-pour-le-passage-a-SPIP-3-1
Passer un plugin SPIP 3.0 vers SPIP 3.1
À ce sujet, consulter l’article de spip-contrib.
Au sommaire :
- Bibliothèques JavaScript jQuery et jQuery UI
- Formulaires CVT
- Jointures
- Manipulation des logos
- Balise
#FICHIER
- Une fois testé et approuvé...
Évolution des bibliothèques JavaScript
La mise-à-jour des bibliothèques JavaScript intégrées à SPIP 3.1 peut dans certains cas nécessiter une mise-à-jour des squelettes ou plugins lors d’une migration depuis SPIP 3.0. Particulièrement, pour les mises-à-jour de jQuery et jQuery UI.
Vous pouvez regarder les conseils de mise-à-jour de ces bibliothèques respectives :
- jQuery est mis à jour de 1.7.2 à 1.11.3 . Voir jquery 1.8, jQuery 1.9, jquery 1.9 guide de mise-à-jour, jQuery 1.10, jQuery 1.11 ;
- jQuery UI est mis à jour de 1.8.21 à 1.11.4. Voir les guides de migration. Notez également que les emplacement des fichiers JavaScript et CSS dans jQuery UI comme dans le plugin SPIP jQuery UI ont changé. Les inclusions de ces scripts dans les squelettes devront donc probablement être réécrites.