Salut tout le monde !
la version 1.8.2 de SPIP est disponible à l’adresse
Il s’agit de la dernière version de la série 1.8, car le développement de SPIP change de système (nous passons de CVS à SVN), et des ruptures importantes seront décidées — notamment, le passage des fichiers en extensions .php3
aux extensions .php
, la réorganisation des répertoires, etc.
Cette version corrige la majeure partie des bugs (connus) de la version 1.8.1, et devrait être en général plus fiable.
Principales nouveautés :
Interface et rendu
- De nombreuses améliorations de compatibilité XHTML dans la fonction
propre()
et au niveau de l’intégration des documents dans le texte.
- Meilleure « accessibilité » des tableaux.
- Suivi par RSS des forums internes du site, de la messagerie personnelle, et des articles/brèves etc proposés à la publication.
- Options supplémentaires pour la syndication de sites : on peut « dépublier » automatiquement les liens qui ne figurent plus dans le fichier de syndication du site syndiqué, et/ou les effacer de la base de données après une certaine période. Par ailleurs la lecture des fichiers de syndication sait lire plus d’éléments, et notamment :
- les documents distants (podcasting ou enclosure, voir plus bas) ;
- les dates de mise à jour
- les changements de titre ou de contenu
- La possibilité, dans l’espace privé, de régler de manière plus fine l’heure (et non plus seulement le jour) de publication d’un article.
Gestion des documents
- Documents distants.
Dans le bloc qui permet de télécharger un document associé à un article, il est désormais possible de mentionner l’URL d’un document « distant », qui sera alors intégré dans la base de données comme s’il s’agissait d’un document « local », mais sans que le fichier lui-même soit dans le répertoire IMG/
Ces documents distants sont référencés de la même manière que les documents locaux : on peut modifier leur titre, leur descriptif ; SPIP contrôle l’existence de ces fichiers et leur taille, et, dans le cas d’images, en ramène une copie localement pour en fabriquer automatiquement les vignettes réduites.
Il est possible de rapatrier systématiquement ces documents distants, à partir d’un filtre à ajouter dans les squelettes : |copie_locale
. Ce filtre procède de la manière suivante : après avoir, le cas échéant, fait une copie locale du document (ce qui peut être long, si le document fait plusieurs Mo), il retourne simplement l’adresse locale du document.
Enfin, SPIP intègre cette notion de document distant dans la syndication : d’une part, il lit les flux de syndication indiquant des documents joints (podcasting), d’autre part, le squelette dist/backend.html
publie au même format les documents associés à l’article et qui ne figurent pas dans le texte de l’article (autrement dit, l’équivalent ce qui apparaît, dans l’espace privé, dans la partie portfolio / documents joints de l’article).
- Indexation des documents. Les titres et descriptifs de tous les documents sont indexés, et donc utilisables dans une<BOUCLE(DOCUMENTS){recherche}{par points}{inverse}>
Quand c’est possible, SPIP essaie aussi d’indexer le contenu des documents (notamment pour les documents aux formats HTML, TXT, PDF, RTF et DOC). Cette fonctionnalité est extensible à d’autres formats en développant des scripts « extracteurs » (on peut facilement imaginer de tels scripts pour les formats MP3 ou OpenOffice).
- Zip à l’upload. Lorsqu’on télécharge un document « interdit », ou en tous cas pas prévu dans la table spip_types_documents (par exemple un fichier .php), SPIP propose désormais de « zipper » le document. (Auparavant il ignorait silencieusement la demande d’upload.)
Calendrier dans l’espace public
SPIP 1.8.2 permet de visualiser dans l’espace public les calendriers de l’espace privé, et de construire des agendas bénéficiant des outils de mise en page de ces calendriers. Cette possibilité est fournie par un nouveau critère de boucle et trois nouveaux filtres.
Pour en savoir plus, lire l’article « article 3182 ».
Nouveaux filtres
- Nouveau filtre |inserer_attribut{variable, valeur}
, qui permet de forcer un attribut d’un tag HTML.
Exemple d’utilisation :[(#LOGO_ARTICLE|#URL_ARTICLE||inserer_attribut{alt,#TITRE})]
- Nouveau filtre |alterner
, qui permet de faire des alternances de couleurs dans une liste — via, par exemple, [(#COMPTEUR_BOUCLE|alterner{1,2,3})]
; le nombre d’arguments donne la périodicité de l’alternance, qui n’est donc pas forcément une succession de type « pair/impair ». Exemples :
-
[(#COMPTEUR_BOUCLE|alterner{'yellow','blue'})]
peut être utilisé pour mettre des couleurs différentes sur les lignes paires et impaires d’un tableau. - Cette boucle affiche une table d’au maximum 17 articles, sur 5 lignes et 4 colonnes, en complétant d’une case vide sur la dernière ligne si nécessaire :
<B_ar>
<table border="1">
<BOUCLE_ar(ARTICLES){0,17}{par hasard}>
[(#COMPTEUR_BOUCLE|alterner{'<tr>','','',''})]
<td>#ID_ARTICLE</td>
[(#COMPTEUR_BOUCLE|alterner{'','','','</tr>'})]
</BOUCLE_ar>
[(#TOTAL_BOUCLE|alterner{'<td colspan="3"></td></tr>','<td colspan="2"></td></tr>','<td></td></tr>',''})]
</table>
</B_ar>
Remarque : ce filtre étant purement « numérique », si on l’applique sur [(#ID_ARTICLE|alterner{1,2})]
, il affichera 1 pour les articles dont l’identifiant est impair, et 2 pour les identifiants pairs.
- Filtres d’URL « absolues ». Tous les liens proposés par SPIP (à partir des raccourcis [->article 11]
ou des balises du type #URL_ARTICLE
) sont des liens « relatifs », qui n’indiquent pas l’adresse complète de la ressource liée. Or, pour certains usages, comme par exemple la syndication, il est utile d’avoir l’adresse absolue. Pour cela deux filtres ont été introduits :
- |url_absolue
qui s’applique aux URL : [(#URL_ARTICLE|url_absolue)]
;
- |liens_absolus
qui s’applique aux textes et transforme l’adresse des liens et des images : [(#TEXTE|liens_absolus)]
.
(Le filtre |abs_url
résume ces deux filtres en un seul, et applique |url_absolue
sur les #URL_ARTICLE
, et |liens_absolus
sur les éléments de type #TEXTE
.)
- Le filtre |reduire_image
est désormais capable de réduire les images à l’intérieur d’un texte, et peut donc être appliqué à la balise #TEXTE
. Autre modification de ce filtre : si l’on indique la longueur 0 en vertical ou en horizontal, cela signifie que seule l’autre dimension doit être prise en compte pour la réduction. Ainsi [(#LOGO_ARTICLE||reduire_image{60,0})]
passera le logo à une dimension horizontale de 60 pixels maximum (la dimension verticale étant calculée de façon à conserver les proportions).
Amélioration de la syntaxe des squelettes
- Les squelettes par défaut passent au format XHTML 1.0 transitional.
- Une balise #DOSSIER_SQUELETTE
permet de livrer un peu plus facilement des jeux de squelettes faciles à installer dans des sous-répertoires.
- #FORMULAIRE_FORUM
accepte un argument qui indique la page où le visiteur qui poste un forum doit être renvoyé. Par défaut, en effet, cet endroit était devenu #URL_FORUM
; mais certains usages peuvent exiger un retour sur la même page (notation : [(#FORMULAIRE_FORUM{#SELF})]
), ou vers une page spécifique ([(#FORMULAIRE_FORUM{merci.php})]
).
- Généralisation des constructions de la forme [(#BALISE|filtre{[(#AUTRE_BALISE|autre_filtre)]})]
à un niveau d’imbrication quelconque. Cette possibilité s’étend également aux critères dans les boucles, les crochets n’étant alors pas nécessaires (et même refusés).
- Pour des raisons d’uniformisation de syntaxe, la balise #EXPOSE
vient remplacer l’ancienne balise #EXPOSER
. La seule différence réside dans le fait qu’il faut écrire [(#EXPOSE{on,off})]
et non plus [(#EXPOSER|on,off)]
- Lorsqu’une boucle utilise le critère {statut}
, le réglage par défaut du statut des éléments liés à cette boucle disparaît. Autrement dit, si les boucles (ARTICLES) normales continuent à ne sélectionner que les articles dont le statut est 'publie'
, une boucle <BOUCLE_a(ARTICLES){statut=prop}>
ira sélectionner les articles proposés.
De même la boucle <BOUCLE_indy(BREVES){statut IN prop, publie}>
sélectionnera toutes les brèves proposées ou publiées ; la balise #STATUT
permet d’afficher pour chacune le statut correspondant (et par exemple de donner une class css différente en fonction du statut).
- le critère {par ...}
accepte à présent des noms de champs SQL spécifiés dynamiquement, notamment par la balise #ENV
, et leur absence ne déclenche pas d’erreur SQL. En outre, ce critère admet à présent la syntaxe {!par ...}
pour trier en ordre inverse toutes les colonnes indiquées (ceci peut remplacer le critère {inverse}
, notamment lorsqu’on veut faire un tri complexe portant sur plusieurs colonnes). Pour avoir un tri en ordre croissant pour certaines colonnes et décroissant pour d’autres, il suffit d’écrire plusieurs critères par
.
Tout ceci permet d’écrire facilement des squelettes de présentation d’une table à plusieurs colonnes intégrant des boutons de tri sur chacune des colonnes, comme dans un tableur. Un exemple en est donné ici.
* *
Comme à l’habitude, ces nouveautés seront progressivement reportées dans la documentation.