Voici le détail des évolutions
Javascript
jQuery
- Mise à jour de jQuery en version 3.2 (dans SPIP 3.1 c’est jQuery 1.12). https://jquery.com/upgrade-guide/3.0
- intégration de
jQuery-migrate-3.0.1.js
pour faciliter les migrations des scripts utilisant jQuery. https://github.com/jquery/jquery-migrate/#README
Note importante : Ces changements impliquent qu’il est fortement conseillé de mettre à jour les scripts utilisant jQuery. Cela concerne principalement les modifications suivantes :
- bind() => on()
- unbind() => off()
- load() => on(’load’, ...)
- unload() => on(’unload’, ...)
- jQuery.isArray() => Array.isArray()
jQuery UI
- Mise à jour de jQuery UI en version 1.12 (dans SPIP 3.0 c’est jQuery UI 1.11). http://jqueryui.com/upgrade-guide/1.12/ . Changement d’implémentation au passage :
- tout jQuery UI est chargé dans l’espace privé par défaut.
- Dans l’espace public, dès lors qu’un élément de jQuery UI est demandé via le pipeline "jqueryui_plugins", tout le JS / CSS de jQuery UI est également chargé.
Note importante : Ces changements impliquent que les usages de javascript qui chargeaient des modules de jQuery UI avec
$.getScript()
ne fonctionneront plus. Vous pouvez soit charger globalement jQuery UI dans votre squelette, ou via le pipelinejqueryui_plugins
pour un plugin, soit utiliser$.getScript()
sur le chemin du fichier "jquery-ui.js" directement.Ainsi :
$.getScript("#CHEMIN{prive/javascript/ui/core.js}", function(){ $.getScript("#CHEMIN{prive/javascript/ui/widget.js}", function(){ $.getScript("#CHEMIN{prive/javascript/ui/mouse.js}", function(){ $.getScript("#CHEMIN{prive/javascript/ui/sortable.js}", function(){ // ... })})})});
Pourrait devenir :
$.getScript("#CHEMIN{prive/javascript/ui/jquery-ui.js}", function(){ // ... });
JS Cookie
- La librairie JS Cookies est intégrée en version 2.1.4. Elle remplace jQuery.cookie. https://github.com/js-cookie/js-cookie
- L’ancienne écriture
$.cookie()
fonctionne encore dans la plupart des usages mais il est conseillé de migrer :-
$.cookie(key)
devientCookies.get(key)
-
$.cookie(key, value)
devientCookies.set(key, value)
-
$.cookie(key, value, options)
devientCookies.set(key, value, options)
-
PHP
- Nombreuses notices PHP enlevées encore.
- Compatibilité PHP 7.1
Core
Tri des items de navigation & entrées favorites
Le fonctionnement du plugin « Menu privé alphabétique » est intégré :
- les sous-menus de navigation (au survol des menus « Édition », « Publication », « Activité », ...) sont maintenant triés par ordre alphabétique [1].
- dans ses préférences personnelles, il est maintenant possible de cocher des entrées de menus « favorites », qui s’afficheront alors en tête dans les sous-menus de navigation concernés.
- si un sous-menu contient plus de 20 entrées, il est alors affiché en 2 colonnes.
Simplification du « cookie de correspondance »
Le bouton pour activer ce cookie dans l’espace privé n’était pas explicite. Par ailleurs, le cookie se désactivait à terme si un auteur se connectait régulièrement sur un même site. La solution retenue est de supprimer la notion (et le bouton) de « cookie de correspondance », et de créer le cookie (dit d’admin) systématiquement lorsqu’un auteur se loge et a les droits d’accès à l’espace privé. Le cookie d’admin est renouvelé en même temps que le cookie de session. Et s’enlève en se déconnectant.
Tickets associés : #1740, #1710.
Dépendances des plugins à des extensions PHP
Il est maintenant possible d’indiquer dans un paquet.xml
qu’un plugin a besoin d’une extension PHP pour fonctionner. Ticket #3829. Une erreur sera affichée dans le cas contraire à l’activation du plugin. Syntaxe :
<necessite nom="php:curl" />
<necessite nom="php:xdebug" compatibilite="[2.0.0;]" />
Formulaire
La balise #FORMULAIRE_INSCRIPTION
s’enrichie de deux nouvelles possibilités :
- elle accepte un 3e argument pour indiquer la page vers laquelle on redirige la personne lorsqu’elle confirme son inscription ;
- Il est possible de forcer l’utilisation du lien de confirmation contenu dans l’email.
Les explications détaillées dans l’article FORMULAIRE_INSCRIPTION
Critères
- le critère
{par champ}
a été réécrit et tolère mieux les noms de champs provenant de tables de jointures, en harmonisant avec{par num champ}
et{par multi champ}
le fonctionnement. Des expressions{par expr champ}
peuvent maintenant être créées sans surcharger tout le critère, à toutes fins utiles. - ajout de
{par sinum champ}
qui met en premier les éléments ayant des numéros (hors0.
). Ainsi{par sinum titre, num titre, titre}
mettra les titres avec des numéros avant ceux n’en ayant pas (contrairement à{par num titre, titre}
), puis triera par numéro. Et contrairement à{par titre, num titre}
, le numéro 100 sera bien placé après le numéro 20.
Pipelines
- formulaire_receptionner : pipeline appelé au moment où un formulaire est posté par un visiteur, mais avant l’analyse des données postées par la fonction de vérification. https://core.spip.net/projects/spip/repository/revisions/23308
Divers tickets
- Inclusions, connect & pagination (Tickets #3823 et #3899) : les paginations ajax prennent en compte le paramètre
connect
qui était utilisé. Leconnect
explicité sur une inclusion est prioritaire sur celui provenant de l’URL. - Limiter le nombre de fichiers de session d’un auteur (Ticket #3807)
- Permettre d’envoyer un nouveau mot de passe à un auteur depuis l’interface privée (Ticket #2250)
Fichiers supprimés
- ecrire/inc/aider.php (déplacé dans plugins-dist/aide/inc/aide.php)
- ecrire/inc/pclzip.php (déplacé dans plugins-dist/archiviste/inc/pclzip.php)
Déplacements
- les filtres de dates sont maintenant dans inc/filtres_dates.php (déplacés depuis inc/filtres.php) (Ticket #3583).
Suppression
- les fonctions dépréciées
afficher_plus()
,debut_cadre_couleur_foncee()
,fin_cadre_couleur_foncee()
sont passées dans le plugin Grenier.
Plugins
Aide
- Nouveau plugin qui intègre la gestion de l’aide en ligne (fonctions déplacées depuis le Core ou plugin SVP)
Archiviste
- Nouveau plugin qui intègre la gestion des archives zip et tar (fonctions déplacées depuis le Core)
Filtres Images
- Suppression des fonctions et fichiers dépréciés depuis SPIP 2.1 (Ticket #3601). Les éléments ont été déplacés dans le plugin Grenier.
Grenier
- Accueil des fonctions dépréciées du plugin Filtres images.
- Accueil des fonctions dépréciées du Core
Médias
- Intégration du plugin Minidoc dans le plugin médias. Il permet différents affichages des listes de documents attachés aux objets éditoriaux. Ticket #3888
- Modification également de la présentation par défaut de ces listes documents attachés
- Intégration du plugin Ordoc dans le plugin médias. Ticket #3887. Il permet d’ordonner les listes de documents joints aux objets éditoriaux [2], et ajoute un champ "rang_lien" dans la table spip_documents_liens. Il devient alors possible d’utiliser des boucles telle que :
<BOUCLE_docs(DOCUMENTS){id_article}{par rang_lien, num titre, titre, date}>
.
- Changement de structure du code HTML attendu en retour du pipeline
afficher_metas_document
, qui par ailleurs envoie le code HTML des détails affichés pour le document plutôt que rien par défaut, ce qui permet de compléter la balise<table>
utilisée.
Mots
- Ajout d’une administration avancée sur les mots pour permettre de les fusionner ou de créer des associations/dissociations par rapport à un autre mot clé Commit 100448
Organiseur
- Mise à jour de la librairie FullCalendar en version 3.5.1 (auparavant en version 1.6). Pour migrer si vous utilisiez cette librairie dans l’espace public, se reporter à https://fullcalendar.io/wiki/Upgrading-to-v2/ ou https://fullcalendar.io/docs/
- Intégration de la librairie Moment.js (nécessaire à FullCalendar)
Sites
- Permettre de rechercher dans les articles syndiqués sur un site. Ticket #3859
SVP - Gestion des plugin
- Prise en compte de l’affichage des erreurs de dépendances sur les extensions PHP. Ticket #3819.
- Affichage plus compréhensible des versions sur les erreurs de dépendances.
- On peut maintenant télécharger un plugin sans l’activer. Dans ce cas on reste sur la page de recherche de plugin. Ticket #3471
- Afficher une barre de progression lors d’actions multiples (évite des erreurs de redirections). Ticket #3473
- Correction de l’absence de confirmation des actions lorsque des actions supplémentaires sont ajoutées automatiquement par SVP (par exemple activer ou désactiver des dépendances).
-
inc/pcltar.php
etlib/pcltar/
déplacés dans le plugin Archiviste.
URL Étendues
Les URLs Arborescentes (principalement) peuvent gérer du multilinguisme (champs multis sur les rubriques par exemple) et des parents multiples (polyhiérarchie).
- Tolérer plusieurs parents pour un objet. Commit 100814
- Ajout d’un champ
langue
sur la tablespip_urls
. Commit 100835 - Il est possible de définir une URL spécifique pour une certaine langue langue sur un objet éditorial en éditant l’URL. Pour ce faire, dans le champ de saisie, indiquer
[code langue]:[url propre]
tel queen:movies
etfr:videos
. Commit 100835 - La déclaration du « type » préfixant éventuellement l’URL d’un objet dans les URLs arborescentes (exemple : ’mot’ dans
mot/titre_du_mot
) peut recevoir une écriture à base de balise multi pour que le terme soit traduit en fonction de la langue Commit 100836 - Les URLs arborescentes peuvent gérer du multilinguisme, en ajoutant le code de langue dans l’URL, activable par la constante
_url_arbo_multilang
. Commit 100844.