Ce millésime 2010 s’annonce comme une cuvée exceptionnelle. Il a été fortement testé et dispose d’un jeu plus étendu de tests unitaires, qui permettent de coder de façon plus sure. Cette version 2.1 est un premier pas vers la modularisation des fonctionnalités de SPIP, et voit à ce titre l’apparition d’un répertoire « extensions ». Les plugins présents dans ce répertoire sont activés dès l’installation de SPIP et non désactivables, ce qui ouvre la voie à des distributions spécifiques de SPIP.
Principales améliorations apportées par la version 2.1
— plus rapide :
- meilleure gestion des accès disque
- cache sur les chemins calculés
- améliorations et extension du serveur SQL virtuel
— plus sécurisée :
- sha256 sur les mots de passe et actions
- vérification du fonctionnement des .htaccess
- détection automatique des mises à jour de SPIP
— plus belle :
- intégration (comme extension) du plugin « porte-plume » qui améliore grandement l’édition des champs texte et offre une prévisualisation en cours d’édition
- interface graphique par défaut plus légère et élégante
- possibilité de définir des thèmes graphiques (comme par exemple avec le plugin « themes_interface_privee »)
- meilleure gestion de la taille des champs texte (agrandissement conditionnel)
- gestion (configurable et désactivable) de la transparence PNG24 sous MSIE6 sur le site public
- retour des liens « modifier cet article » et « proposer cet article » lors de l’édition des articles
- nouvelle interface de gestion des plugins
- remodelage des procédures de sauvegarde/restauration
- possibilité de créer des URL accentuées en définissant
_TRANSLITTERER_URL
à « false » (attention à la configuration du serveur)
— plus à jour :
- compatibilité PHP 5.3
- intégration de la bibliothèque jQuery 1.4.2
- intégration de la bibliothèque pclzip 2.8.2
— plus svelte :
- premières mises en extensions de fonctionnalités du core : compresseur (js, css, html), porte-plume (barre d’outils), filtres images et couleurs (traitement d’image), safehtml (sécurisation des forums et pétitions), support pour vieux navigateurs
- gestion d’un nouveau répertoire (extensions/) pour y placer ces plugins actifs dès l’installation et non désactivables
— plus extensible :
- apparition de nouveaux points d’entrée pour les plugins
- remodelage de la gestion des plugins (et répertoire spécifique pour leur gestion : ecrire/plugins)
- les plugins peuvent être installés dans un ou des répertoire(s) supplémentaires si définis par la constante
_DIR_PLUGINS_SUPPL
(facilte leur usage en cas de mutualisation) - possibilité d’étendre l’aide en ligne pour y intégrer des sections personnalisées et gestion automatique de ses traductions
— plus structurée :
- mise en oeuvre d’une API d’authentification
- amélioration de l’interface LDAP
- refonte de l’API de notification
- homogénéisation des balises
#LOGO_
: les paramètres sont désormais passés entre accolades et disparition des « doubles pipes » (#LOGO_xxx||filtre
(écriture obsolète mais toutefois encore fonctionnelle) - apparition de nouvelles balises et fonctions :
#BOUTON_ACTION
,|balise_img
,|couleur_luminance
(similaire à|couleur_saturation
, mais agissant sur l’intensité lumineuse de la couleur) - possibilité pour les balises dynamiques (de type
#FORMULAIRE_
) de manipuler à l’exécution des valeurs qui ne sont connues que durant la compilation
— plus facile à débugger :
- amélioration du débuggueur désormais capable d’indiquer la ligne fautive dans un squelette
- le débuggueur informe désormais sur l’endroit précis de l’éventuelle mauvaise utilisation des balises dynamiques
- API du débuggueur plus fonctionnelle (possibilités d’appel et de personnalisations accrues)
- amélioration du mode inclure (
?var_mode=inclure
) affichant les différentes inclusions (intégration avec le plugin Skeleditor permettant de surcharger et d’éditer facilement en ligne des squelettes) - possibilité de surcharger la fonction
spip_log()
— plus geek :
- le compilateur offre une meilleure séparation entre le phraseur et l’arbre d’abstraction, permettant de créer de nouvelles syntaxes (pour les courageux)
- réapparition d’un décompilateur complet et paramétrable offrant la possibilité de créer et d’expérimenter de nouvelles syntaxes
Incompatibilités connues
Comme toute nouvelle version majeure, cette 2.1 s’accompagne de quelques
incompatibilités heureusement aisément corrigeables :
- Dans les boucles, le nom des tables SQL extérieures à SPIP doit être passé dans sa graphie réelle et non plus en majuscules :
<BOUCLE_a(MaTable)...
en lieu et place de<BOUCLE_a(MATABLE)...
<BOUCLE_a(mes_infos)...
en lieu et place de<BOUCLE_a(MES_INFOS)...
- Le filtre
|reduire_image
disparaît définitivement (il était déjà obsolète, remplacé par|image_reduire
) - Ajouter
include_spip("inc/filtres_images");
dans les scripts php faisant appel à des fonctions utilisant les filtres graphiques - S’inspirer des nouveaux fichiers de
ecrire/url/
pour écrire des scripts de personnalisation d’URL - Le pipeline
creer_chaine_url
disparait, remplacé par des pipelines spécifiques :propres_creer_chaine_url
,arbo_creer_chaine_url
, ... - Toute accolade ouvrante collée à une balise est désormais considérée comme fournissant des arguments à cette balise
exemple : dans une feuille de style :.rub_#ID_RUBRIQUE{font-size:1.2em;}
ne fonctionnera pas
il faut soit séparer l’accolade :.rub_#ID_RUBRIQUE {font-size:1.2em;}
soit utiliser la notation complète pour la balise :.rub_[(#ID_RUBRIQUE)]{font-size:1.2em;}
- Les appels jQuery du type
$("input[@name=prenom]")
, déjà obsolètes avec jQuery 1.3, ne fonctionnent plus avec la version 1.4.2 de jQuery, utilisée par SPIP 2.1 ; il faut désormais écrire :$("input[name=prenom]")
- L’écriture
#SET{variable,}
n’est plus acceptée (définir une variable comme vide) et doit être remplacée par#SET{variable, ''}
- Pour les plugins, la déclaration vide
<fonctions></fonctions>
dans le fichierplugin.xml
n’est plus acceptée - Pour utiliser une fonction spécifique d’un plugin seulement si ce plugin est activé (et sinon ne rien faire) il faut désormais écrire :
[(#BALISE|appliquer_filtre{fonction_specifique})]
en lieu et place de[(#BALISE|fonction_specifique)]
qui génèrera une erreur. - Pour les balises
#LOGO_xxx
[1], les faux filtres|fichier
et|lien
sont remplacés respectivement par l’écriture#LOGO_xxx**
et#LOGO_xxx*
.
Les faux filtres de positionnement (|top
,|left
,|right
,|center
et|bottom
) et les balises|#URL_yyy
en position de filtre sont à présent à écrire comme argument de la balise.
L’écriture[(#LOGO_xxx|left)]
est donc remplacée par#LOGO_xxx{left}
et l’écriture[(#LOGO_xxx|#URL_yyy)]
est remplacée par#LOGO_xxx{#URL_yyy}
. - Il est fortement recommandé d’utiliser
#INSERT_HEAD
pour que les extensions puissent fournir leur feuille de style et code javascript spécifique.