SPIP 3.2

SPIP 3.2 est une version améliorée de SPIP 3.1, qui comprend une mise à jour des bibliothèques JavaScript embarquées, une meilleure ergonomie de l’espace privé ainsi que de nombreuses améliorations.

Voici le détail des évolutions

Javascript

jQuery

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 pipeline jqueryui_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) devient Cookies.get(key)
    • $.cookie(key, value) devient Cookies.set(key, value)
    • $.cookie(key, value, options) devient Cookies.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 accepte un 3e argument pour indiquer la page vers laquelle on redirige la personne lorsqu’elle confirme son inscription.
    [(#FORMULAIRE_INSCRIPTION{6forum,0,#URL_PAGE{bienvenue}})]

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 (hors 0.). 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}. Et contrairement à {par titre, num titre}, le numéro 100 sera bien placé après le numéro 20.

Pipelines

Divers tickets

  • Inclusions, connect & pagination (Tickets #3823 et #3899) : les paginations ajax prennent en compte le paramètre connect qui était utilisé. Le connect 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

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 et lib/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 table spip_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 que en:movies et fr: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.

Notes

[1Auparavant, l’ordre pouvait dépendre d’une position souhaitée, mais aussi de l’ordre dont s’activaient les plugins

[2Pour les sites qui utilisaient le plugin Mosaique pour cela, un plugin de migration existe

Auteur Matthieu Marcillaud, peetdu, tofulm Publié le : Mis à jour : 27/10/17

Traductions : عربي, English, français, Nederlands