Changements entre 3.0.17 et 3.0.19

Fichiers du core

70 fichiers impactés :
-  CHANGELOG.txt
-  config/ecran_securite.php
-  ecrire/action/referencer_traduction.php
-  ecrire/auth/spip.php
-  ecrire/base/dump.php
-  ecrire/base/objets.php
-  ecrire/base/trouver_table.php
-  ecrire/inc_version.php
-  ecrire/inc/autoriser.php
-  ecrire/inc/cvt_configurer.php
-  ecrire/inc/distant.php
-  ecrire/inc/filtres.php
-  ecrire/inc/lang_liste.php
-  ecrire/inc/lang.php
-  ecrire/inc/lien.php
-  ecrire/inc/log.php
-  ecrire/inc/minipres.php
-  ecrire/inc/pipelines_ecrire.php
-  ecrire/inc/pipelines.php
-  ecrire/inc/presentation_mini.php
-  ecrire/inc/queue.php
-  ecrire/inc/session.php
-  ecrire/inc/texte_mini.php
-  ecrire/inc/traduire.php
-  ecrire/inc/urls.php
-  ecrire/inc/utils.php
-  ecrire/iterateur/data.php
-  ecrire/lang/ecrire_oc_ni.php
-  ecrire/lang/public_oc_ni.php
-  ecrire/lang/spip_fr.php
-  ecrire/paquet.xml
-  ecrire/public/compiler.php
-  ecrire/public/sandbox.php
-  ecrire/req/mysql.php
-  ecrire/req/pg.php
-  ecrire/req/sqlite_generique.php
-  prive/echafaudage/contenu/objet.html
-  prive/formulaires/dater.html
-  prive/formulaires/editer_auteur.php
-  prive/formulaires/editer_logo.html
-  prive/formulaires/recherche_ecrire.html
-  prive/formulaires/selecteur/ajax_fonctions.php
-  prive/formulaires/selecteur/inc-nav-rubriques_fonctions.php
-  prive/formulaires/selecteur/navigateur_fonctions.php
-  prive/formulaires/traduire.html
-  prive/javascript/ajaxCallback.js
-  prive/javascript/layer.js
-  prive/objets/liste/articles-trad.html
-  prive/objets/liste/articles.html
-  prive/squelettes/contenu/article.html
-  prive/squelettes/contenu/auteur.html
-  prive/squelettes/contenu/rubrique.html
-  prive/squelettes/hierarchie/infos_perso.html
-  prive/squelettes/inclure/barre-nav.html
-  prive/themes/spip/clear.css
-  prive/themes/spip/icons.css.html
-  prive/themes/spip/images/aide-rtl-12.png
-  prive/themes/spip/images/aide-rtl-16.png
-  prive/themes/spip/lists.css.html
-  prive/themes/spip/minipres.css
-  prive/themes/spip/typo.css.html
-  squelettes-dist/css/clear.css
-  squelettes-dist/css/form.css
-  squelettes-dist/css/spip.css
-  squelettes-dist/css/typo.css
-  squelettes-dist/formulaires/ecrire_auteur.html
-  squelettes-dist/formulaires/mot_de_passe.php
-  squelettes-dist/inc-rss-item.html
-  squelettes-dist/paquet.xml
-  squelettes-dist/robots.txt.html

26 tickets fermés :
#2013, #2855, #2884, #3084, #3099, #3233, #3260, #3263, #3270, #3272, #3276, #3278, #3282, #3289, #3309, #3325, #3326, #3327, #3339, #3353, #3368, #3380, #3381, #3384, #3409, #3412

révision 21529
ecrire/inc/autoriser.php

Pas d’onglet dans le nom de la fonction d’autorisation. Permet à un redacteur de pouvoir remodifier la langue et la couleur dans l’espace privé.

révision 21531
ecrire/inc/minipres.php

Eviter des "illegal offset" si l’utilisateur n’est pas connecté (déjà corrigé en 3.1).

révision 21536
ecrire/inc/cvt_configurer.php

Oups : mauvais "type" appelé pour la fonction d’autorisation pour celleux qui veulent la personnaliser : il ne faut pas garder le "configurer_" qui est déjà dans le "faire" !
Cela ne change rien à la sécurité, c’est toujours l’autorisation "configurer" qui est appelée par défaut.

révision 21539
ecrire/inc/autoriser.php

le filtrage /auteur du statut de previsu introduit par r21500 n’etait pas pris en compte dans autoriser_previsualiser_dist() ce qui ne rendait plus visible le lien de prévisu sur les articles en cours de redaction.
Ferme le ticket #2013

révision 21542
prive/themes/spip/typo.css.html
prive/themes/spip/clear.css

report de r21541 : maj url contrib (Francky)

révision 21543
ecrire/inc/texte_mini.php

Suite à http://forum.spip.net/fr_258607.html, retour partiel sur http://core.spip.org/projects/spip/repository/revisions/21272. On retire <math> de _PROTEGE_BLOCS car cela casse le fonctionnement annoncé dans la doc (http://www.spip.net/fr_article3016.html: "on peut en réalité ajouter <math>...</math> de manière très large (en clair : on peut ajouter <math> tout au début du texte, et </math> tout à la fin...).). L’incompatibilité perdure en 3.1-dev => revoir la doc ou revoir la rupture de compat ou proposer une màj élégante dans les textes ?

révision 21544
ecrire/inc/autoriser.php

pétouille (d’ailleurs je me demande pourquoi on ne colle toujours pas d’accents dans nos commentaires ?)

révision 21555
prive/formulaires/recherche_ecrire.html

accessibilité : ce onkeypress provoquait un submit lorsqu’on quittait le focus de la recherche, en navigation au clavier. Il n’est pas necessaire, on le vire (Armony)

révision 21556
ecrire/inc/pipelines_ecrire.php

la page infos_perso est une variante de la page auteur avec un id_auteur implicite. On la traite de maniere derogatoire pour que les plugins y ajoutent leurs blocs comme sur la page auteur (Philippe)

révision 21557
prive/javascript/ajaxCallback.js
ecrire/inc/filtres.php

Accessibilité : quand un formulaire est dans une zone aria-live="true", le screen reader vocalise chaque frappe de caractere par une relecture complete du bloc, ce qui est absolument insupportable. On devrait pouvoir ameliorer cela avec un aria-relevant adapté sur la zone, mais à tester/affiner. En attendant on pose un aria-live="off" sur les balises <form> contenues dans les blocs ajax, ce qui rétablit un confort d’utilisation acceptable (Armony)
On pose tous ces attributs aria en JS, pour ne pas risquer d’avoir l’un sans l’autre.

révision 21558
prive/objets/liste/articles-trad.html
ecrire/lang/spip_fr.php

Accessibilité : expliciter la fonction du bouton qui fixe la reference des traductions (balise alt de <img> et title du <button> qui le contient) (Armony)

révision 21559
prive/formulaires/dater.html
prive/formulaires/traduire.html

Accessibilité : il y a plusieurs liens "Changer" sur la page article, qui ne sont pas contextualisés quand lus par un lecteur d’écran. On ajoute en complément ce sur quoi chacun porte, en class="over" car ils ne sont pas visuellement nécessaires (Armony)

révision 21560
prive/echafaudage/contenu/objet.html
prive/squelettes/contenu/article.html
prive/squelettes/contenu/rubrique.html
prive/squelettes/contenu/auteur.html

Accessibilite : ajouter un <h2> en tete de la zone wysiwyg pour permettre d’y acceder rapidement avec un lecteur d’ecran (Armony)
Il faudra revoir la structure des hn mais c’est deja mieux comme ca.

révisions 21568, 21570
prive/themes/spip/lists.css.html
prive/objets/liste/articles.html

eviter que la liste devienne impraticable si un article a une centaine d’auteurs (ou plus)

révision 21575
ecrire/inc/queue.php
ecrire/inc/utils.php
ecrire/inc/pipelines.php

Lorsque le cron a plus de 5min de retard, on double la requete http par une image background (ou un lancement force si c’est un bot) car c’est sans doute que l’hebergement n’autorise pas les http sortant
Devrait ameliorer le fonctionnement des crons sur les sites a faible trafic ou hebergement limite

révision 21589
ecrire/public/sandbox.php

Report de r21588 : Lors de l’utilisation dans un squelette d’un filtre ’|Classe::methode...’ une erreur bloquante était générée par PHP. (merci witi).
Ferme le ticket #3282

révision 21595
ecrire/inc/texte_mini.php

Les modeles block interrompent les enumerations parce que le <div class="base64" ..> qui les echappe est suivi de \n\n interprete comme une fin de liste
il suffit de ne pas inserer ces deux retour lignes qui etaient initialement la pour aider le paragraphage mais ne s’averent plus necessaires pour le bon fonctionnement de tous les raccourcis
Les tests de textwheel permettent de verifier qu’on ne casse rien

Ferme le ticket #2884

révision 21596
ecrire/inc/session.php

quand on a trop de sessions ouvertes (plus de 1000, personalisable par la constante _MAX_NB_SESSIONS_OUVERTES) on purge toutes les sessions anonymes de plus de 3h pour ne pas flooder le tmp/sessions.
(Mecanisme de protection contre les bots qui postent sur le formulaire d’abonnement newsletter qui provoque la creation d’une session anonyme avec session_email)
Cela permet de ne pas changer le comportement par defaut des sessions anonymes sauf en cas d’attaque/spam. Les gros sites pourront augmenter le seuil si besoin.

Ferme le ticket #3276

révision 21612
ecrire/inc/lang_liste.php

Le khmer c’est le khmer

révision 21616
prive/formulaires/selecteur/ajax_fonctions.php
prive/formulaires/selecteur/navigateur_fonctions.php

2 fichiers _fonctions manquant pour le selecteur ajax en squelette (patch plus doux que la version 3.1)
Ferme le ticket #3099

révision 21646
ecrire/req/mysql.php

Le sql_mode à la création d’une table mysql n’était pas ajouté.

révision 21647
ecrire/req/mysql.php

Le doit être défini ici.

révision 21664
prive/squelettes/hierarchie/infos_perso.html

mettre un fil d’ariane vide pour la page infos_perso
Ferme le ticket #3309

révision 21672
ecrire/req/mysql.php
ecrire/req/sqlite_generique.php

lire correctement les index a longueur fixee, et conserver la longueur qui est utile pour re-creer la table lors d’un dump
Ferme le ticket #3260

révision 21687
ecrire/inc/urls.php

Bugfix : certains raccourisseurs d’URL transorment les ?articleXX en ?articleXX= ce qui provoquait le bug suivant
quand on demande spip.php ?article6434 :
-  on regarde le cache : rien en cache
-  du coup on analyse l’URL : ça matche articleXXX donc on redirige vers l’article XXX
quand on demande spip.php ?article6434= (noter le "=" à la fin de l’URL)
-  on regarde le cache : rien en cache
-  du coup on analyse l’URL : ça matche PAS articleXXX à cause du "="
-  on calcule la page => pas d’id article en url ni autre => page sommaire
-  on met en cache
Le coup suivant, on demande spip.php ?article6434
-  on regarde en cache : et là subtilité, le contexte du cache est le même que pour l’URL spip.php ?article6434= :
array(’article6434’ => ’’, ’lang’=>’fr’)
du coup on a bien une page en cache, on la ressort et on l’envoie. Manque de bol c’était le sommaire !

révision 21712
ecrire/req/mysql.php
ecrire/req/sqlite_generique.php

Bugfix de la regexp introduite par r21633 et r21572 utilisee par show_table ; elle ne savait pas lire une table simple sans aucun index (une seule parenthèse)

révisions 21735, 21885, 21887
prive/javascript/layer.js

bugfix sur le selecteur ajax de rubriques quand la page contient plusieurs input id_parent
Ferme le ticket #3233

révision 21747
prive/themes/spip/images/aide-rtl-12.png
prive/themes/spip/images/aide-rtl-16.png

l’icone d’aide rtl n’était pas utilisée (George)
Ferme le ticket #3289

révision 21752
ecrire/base/dump.php

Un bug serieux sur la sauvegarde : lors de l’insertion on ne comptait pas sur la table destination mais sur la table source, ce qui entrainait systematiquement une double insertion (une fois en multi puis une fois un par un)
Pouvait provoquer une erreur avec abandon qui manquait de log et n’etait pas signale dans le status. On corrige donc les consequences d’une telle erreur.

révision 21754
ecrire/public/compiler.php

Respecter les CACA et les PROUT de Rastapopoulos dans la pagination (dont le modele peut être dynamique)
(ie argumenter_inclure ignorait tous les arguments dynamiques qui suivaient un argument sans partie "x=", comme #INCLURE#ENVX,inclure/pied,id_article qui est une inclusion directe d’un fichier, dont le contenu brut du fichier #ENVX,inclure/pied est importé, le reste du contexte ne servant pas
+ un modificateur m manquant sur la regexp pour ne pas ingorer les valeurs multilignes

Ferme le ticket #3327

révision 21756
prive/formulaires/editer_auteur.php

on repasse par email_valide dans le traiter pour enregistrer en base un email "valide" et éviter les "Marie Toto <Marie@toto.com>" ou "Marie@toto.com "
Ferme le ticket #3326

révision 21758
ecrire/base/dump.php

Une fonction base_prefixe_tables pour afficher le prefixe de la table sauvegardee dans l’interface

révision 21759
ecrire/base/trouver_table.php

Quand table_spip=false, ne pas se rabattre sur la description declaree dans l’API SPIP, ni essayer de prefixer par spip_
+ flag exist true/false dans le resultat pour distinguer quand on a pris la declaration fallback ou quand on a trouve la table

révision 21760
ecrire/base/dump.php

trouver la description de la vraie table meme si le prefixe n’est pas spip_
Faisait echouer les backup apres migration a cause du champ extra dans la vraie table mais pas dans la declaration sur laquelle on se basait

Ferme le ticket #3270

révisions 21767, 21857, 21859
ecrire/iterateur/data.php

cast recursif sur le object -> array en sortie de YQL
Ferme le ticket #3325

révision 21768
ecrire/base/trouver_table.php
ecrire/base/dump.php

On evite de risquer de la casse dans la version 3.0.x et on continue a ne peupler le flag exist que si il vaut true

révisions 21794, 21798
ecrire/auth/spip.php

simplifier car l’imbrication (function($)$(function() console.log($) ;))(jQuery) renvoit jQl et pas jQuery quand elle est lancee par jQl ; bug js potentiel sur le formulaire de login : il attendre document.ready pour manipuler le DOM (Alexis)

révision 21803
config/ecran_securite.php

id_base est une variable de la config des widgets de WordPress

révision 21807
ecrire/inc_version.php

le define _IS_BOT de fallback est fait apres l’inclusion de l’eventuel ecran de securite, qui est toujours plus a jour

révision 21808
config/ecran_securite.php

2 bots de plus detectes par le radar : Genieo et InfegyAtlas

révision 21809
ecrire/inc_version.php

Mise a jour de la detection des bots d’apres celle de l’ecran de securite

révisions 21813, 21814
ecrire/inc/autoriser.php

Correction des autorisations pour configurer ses infos persos : pour voir les deux formulaires configurer_langage et configurer_preferences c’est toujours ok. Pour voir les deux onglets des pages qui les contiennent, on calque les autorisations sur les deux précédentes.
Ferme le ticket #3339

révision 21820
ecrire/inc/session.php

La globale "visiteur_session" doit être initialisée au tableau vide et non à la chaîne vide, sinon on se prend un avertissemnent "Illegal string offset" dans les squelettes l’utilisant sur un visiteur non authentifié.

révision 21833
ecrire/req/mysql.php

Un warning PHP en moins sur les $GLOBALS[’debug’][’aucasou’]
Ferme le ticket #3353

révision 21837
prive/formulaires/dater.html

{}

révisions 21838, 21840
prive/formulaires/editer_logo.html

Permettre de passer valider via pipeline si par exemple on est amené à rajouter des champs dans ce formulaire

révision 21844, 21845
config/ecran_securite.php

- MSIE 6.0 est un botnet, on le traite comme un bot
-  securite sur une variable mal protegee du plugin contact (il faut upgrader le plugin pour retrouver toutes les fonctionnalites)

révisions 21849, 21851
ecrire/inc/filtres.php

orthographe

révision 21852
ecrire/inc/queue.php

L’ouverture/fermeture immédiate d’une socket pour lancer le cron en async peut bloquer un process apache sur le serveur, qui reste en attente betement. Il suffit alors d’avoir beaucoup de site sur un serveur pour arriver parfois à consommer le MaxClient Apache, ce qui est embêtant.
On essaye donc autant que possible de lire la réponse du serveur pour fermer proprement et libererer la connexion, en se donnant un timeout de 200ms. De temps en temps il arrivera qu’on parte comme un sauvage sans le faire, mais tant que ça reste statistiquement occasionnel c’est pas grave.

révision 21861
ecrire/inc/lang.php

Le Dari (http://fr.wikipedia.org/wiki/Dari) est aussi une langue rtl

révision 21880
ecrire/base/objets.php

id_table_objet() sur les tables non spip ne trouvait plus la clé primaire depuis r20312, un peu trop restrictif. On corrige en regardant la cle primaire du moment que la table est dans la base, qu’elle soit SPIP ou non

révision 21894
ecrire/inc/lien.php

Si une fonction wrap_embed_html est definie, on l’appelle en lui passant le contenu source et le html qu’on s’apprete a embed dans le contenu riche.
Cette fonction peut etre utilisee pour encapsuler ce contenu dans un markup qui l’indique comme non editable dans un editeur wysiwyg et qui porte la trace du raccourci source pour permettre la conversion html=>raccourcis SPIP

révision 21899
ecrire/auth/spip.php

perf issue : eviter une requete SQL a chaque affichage du formulaire de login anonyme

révision 21900
prive/themes/spip/icons.css.html

Voir le lien ajouter une image dans le cas de deux icones sur la même ligne
Ferme le ticket #3384

révision 21903
ecrire/inc/lang_liste.php

nissart mistralien

révision 21911
ecrire/action/referencer_traduction.php

typo et indentation

révisions 21918, 21919
ecrire/inc/session.php

Bugfix : un unset sur une valeur de session ne doit pas generer un cache de session pour un visiteur anonyme sans session (effet papillon d’un petit bug sur session_set qui provoque une generation du cache à l’infini).
Cas typique :
-  le plugin panier verifie a chaque hit si le visiteur a un panier en session et sinon par precaution appelle session_set(’id_panier’) pour unset une evenuelle valeur
-  session_set peuple la valeur a null et appelle ajouter_session()
-  ajouter_session voit que le visiteur n’a pas de cookie session et genere un hash de session
-  il inspecte le tableau de session voit qu’il n’y a rien a enregistrer et rend la main ni vu ni connu (croyait-il).
Mais comme on a renseigne $_COOKIE[spip_session] celui-ci est pris en compte dans la fonction spip_session() et genere un cache sessionné. Le plus drole c’est qu’on ne pose le cookie. Donc on recommence au hit suivant avec un nouvel identifiant de session, ce qui est une catastrophe en performance si le site utilise des balises #SESSION. Chaque hit sur le site génére un nouveau cache (donc calcul, donc ecriture sur le disque, donc gonflement du cache etc.)
Pour mémoire quand on joue avec les sessions dans les plugins et les squelettes il faut toujours verifier que au final un curl anonyme sur le site est servi sans aucun "Calcul" ni "Ecriture du cache" dans spip.log.

révision 21959
ecrire/inc/distant.php

ssl :// a vecu, il faut utiliser tls :// car sinon les requetes https ne passent plus sur les serveurs avec une lib OpenSSL recente

révision 21965
ecrire/iterateur/data.php

Eviter une notice dans le critère par si il est composé uniquement de deux éléments (ce qui est le cas le plus fréquent).

révision 21967
ecrire/inc/log.php

Insérer la date du log en y intégrant clairement l’année : c’est plus lisible.

révision 21975
prive/themes/spip/minipres.css

win_width.htc n’existe pas (enfin si, mais dans squelettes-dist) et donc il renvoie des erreurs 404 ici et à priori, celui de squelettes-dist ne concerne que ie5.5 à priori, je pense donc qu’il n’est pas pertinent de le dupliquer pour ce navigateur seulement

révision 21984
/prive/javascript/ajaxCallback.js

spécifier l’unité des valeurs pour left et top appliqués au p inséré par ajaxcallback en fin de page (chankalan)

révision 21985
ecrire/inc/distant.php

Une constante pour le timeout de connexion a la socket (par defaut a 10s au lieu de 30s)
+ une globale pour interdire le fallback par fopen quand on ne veut pas risquer un double timeout si on sait que le host peut nous bloquer avec son firewall

révision 22001
prive/formulaires/selecteur/inc-nav-rubriques_fonctions.php

dans certains cas particuliers, les filtres ne sont pas chargés par le selecteur. on les charge donc.
Ferme le ticket #3381

révision 22006
prive/squelettes/inclure/barre-nav.html

corriger le title du lien vers la config du site dans le bandeau (klaus)

révisions 22007, 22008, 22009, 22010, 22012, 22016, 22017, 22019, 22079

release SPIP 3.0.18 et revert

révision 22019
ecrire/lang/public_oc_ni.php
ecrire/lang/ecrire_oc_ni.php

occitan niçard mistralien

révision 22036
ecrire/req/pg.php

corriger le bug des espaces dans les mots de passe
Ferme le ticket #3409

révision 22049
ecrire/inc/traduire.php

Lorsque des clés de langue sont définis dans local_xx.php, ils n’étaient plus toujours pris en compte dans la recherche de traduction dans certains cas. Ainsi le cas <:toto :> avec lang/local_fr.php et lang/local_en.php (ayant ’toto’ => ’...’), avec la langue du site en anglais et une demande de ’toto’ en sw ignorait local_en.php. Effectivement dans ce cas, charger_lang() modifiait idx_lang car sw n’est pas présent dans un des modules de spip (public ou ecrire ou spip) et chargeait donc la langue principale du site (en). La clé de langue n’étant pas trouvé dedans, inc_traduire_dist est relancé avec la langue ’en’ principale, mais étant déjà chargée, les fichiers locaux ’local_en’ n’étaient pas ajoutés. On corrige donc ce problème.

révision 22069
ecrire/inc/lang_liste.php

L’arménien s’écrit Հայերեն dans sa langue

révision 22080
ecrire/inc/lien.php

il faut utiliser sql_get_select() pour beneficier de la traduction des noms de table
Ferme le ticket #3412

révisions 22081, 22085, 22086, 22088
CHANGELOG.txt
ecrire/inc/presentation_mini.php
ecrire/paquet.xml

SPIP 3.0.19

révision 84541
squelettes-dist/css/clear.css
squelettes-dist/css/form.css
squelettes-dist/css/spip.css
squelettes-dist/css/typo.css

Ce n’est plus spip-contrib.mais contrib.spip

révision 84996
squelettes-dist/formulaires/ecrire_auteur.html

utiliser |ancre_url pour poser une ancre
Ferme le ticket #3272

révision 86810
squelettes-dist/inc-rss-item.html

les urls de la forme ​http://spip.net/spip.php?page=article&id_article=5427 posent un problème de validation, les liens doivent être de la forme ​http://spip.net/spip.php?page=article&id_article=5427
Ferme le ticket #3368

révision 87340
squelettes-dist/formulaires/mot_de_passe.php

Gerer une erreur eventuelle sur le formulaire mot de passe au lieu de faire croire que tout s’est bien passe

révisions 87399, 87400, 87854
squelettes-dist/paquet.xml
squelettes-dist/formulaires/mot_de_passe.php

Quand on vient de saisir 2 fois son nouveau mot de passe, on peut faire le cadeau de connexter directement l’utilisateur plutot que lui demander de le saisir une 3eme fois dans le formulaire de login (puisque de toute facon on lui rappelle son login, il a bien tout ce qu’il faut pour se connecter)

révision 88103
squelettes-dist/robots.txt.html

autoriser la lecture de css pour l’évalution du site en "mobile friendly" - https&#58//google.com/webmasters/tools/mobile-friendly/

Fichiers de plugins-dist

BREVES
révision 85789

Tester l’existence du flag exist ET sa valeur

COMPRESSEUR
révisions 86686, 86688

Quand on minifie une CSS squelette, il faut prendre l’url de cette css, et pas l’url de la page courante comme base pour les urls absolues. il faut fournir une url de 1er niveau publique si on est dans le public, et ecrire/ si on est dans ecrire/ puisque le fond css est calculé dans ce cas depuis ecrire/ et donc avec des urls relatives a ecrire/

révision 87125

Un cache CSS qui ne dependait pas du host en cours, et donc qui entrainait parfois des injection croisees de domaine dans les css pour les sites etant visites sur plusieurs domaines

DUMP
révision 85743

Quand on backup un SPIP qui utilise un prefixe de tables différent de ’spip’, l’afficher pour rassurer le webmestre qui sait qu’ il y a un prefixe et qui s’inquiète de ce que SPIP sauvegarde bien les bonnes tables.

révision 85745

Afficher les erreurs rencontrees lors de la sauvegarde au lieu d’un message de reussite en cas d’echec

révision 85750

eviter une erreur fatale eventuelle (si plugin migration present dans une vieille version)

FILTRES_IMAGES
révision 84853

image_recadre peut recadrer une image pour respecter une proportion. Le premier argument est le ratio largeur:hauteur demandé, le second argument est alors un ’+’ pour agrandir avec des bandes ou un ’-’ pour reduire l’image.
Exemple
[(#LOGO_ARTICLE|image_recadre16:9,’-’)]
Permet d’avoir un logo au format 16:9 en recadrant l’image le moins possible.
Cela permet de conserver l’image la plus grande possible qui respecte une proportion.

révision 85973

Il ne s’agit pas de savoir si une methode dont on ignore le nom n’est pas de type private, mais de savoir si la methode rotateImage() existe. Evitons une erreur de type ’Non-static method Imagick::rotateimage() cannot be called statically’ (Merci Philivert)

révision 86211

readfile renvoie false quand le path contient un paramètre (timestamp), comme filesize

révision 89145

Toute petite modification de la couleur recuperee par couleur_extraire => mise a jour du tests

FORUM
révision 85969

pas de raison que les forums privés ne réagissent pas au réglage de taille minimale

révision 86007

ne pas generer une session anonyme a chaque POST de forum mais uniquement si un fichier a ete poste et si c’est une option autorisee
+ generer toute de suite une erreur si un POST a ete fait alors que l’option n’est pas autorisee (car des BOTs qui spamment)
(evite de generer des sessions anonymes en nombre pour rien)

révision 87489

Bugfix : sur les secteurs on affiche une icone pour voir tous les forums proposes sur les articles du secteur mais la page controler_forum n’affichait pas les resultats correspondants
on declare la jointure sur spip_articles pour le critere id_secteur
on filtre les messages sur id_secteur quand il est dans l’URL
on modifie l’url du lien pour passer les bons arguments et arriver sur les messages proposes dont le decompte correspond a ce qui est annonce sur l’icone.

MEDIABOX
révision 84541

Ce n’est plus spip-contrib.mais contrib.spip

révision 84938

utiliser :hover et pas .hover comme selecteur CSS

Ferme le ticket #3278
révision 84939

n’initialiser le padding de la box qu’au premier lancement et pas au chargement de la page car sinon certains navigateurs chargeent les images de background au chargement de la page, meme si la box ne sert jamais

révision 84940

initialisation des dimensions de la box ne se faisait pas dans le cas modalbox, on deplace cette initialisation

révisions 85219, 85817

version 0.8.9 : il faut aussi définir cette propriété pour cboxLoadedContent (on pourrait l’appliquer directement à tous les éléments contenus dans la box mais ça peut poser problème)

révision 86970

bugfix avec legendes longues sur la mediabox black-simple

MEDIAS
révision 86358

coquille

révision 86681

eviter une erreur si extension n’est pas renseigne (cas tordus)

révision 87248

bugfix formulaire edition sur les modeles emb qui ont du js ou php

révision 87758

Déclarer le pipeline ’renseigner_document’

révision 88861

Vignettes des portfolios en 150x150 (au lieu de 60x60).

révision 88869

Corriger placement des vignettes (ajouter une classe .vignette).

révisions 89155, 89156

il faut verifier les droits d’associer/dissocier les documents a un objet dans le formulaire editer objet.
Pour cela on cree 2 autorisations associerdocuments et dissocierdocuments qui par defaut reposent sur autoriser(modifier).
+ n’afficher le lien ’modifier’ sur un document que si on a bien le droit de le modifier

Ferme le ticket #3380

MOTS
révision 84552

presenter les groupes dans l’ordre de la numerotation, puis par multi titre si pas de numerotation

révision 85789

Tester l’existence du flag exist ET sa valeur

ORGANISEUR
révision 85122

Chaîne de langue manquante.

révision 85789

Tester l’existence du flag exist ET sa valeur

PORTE_PLUME
révision 84541

Ce n’est plus spip-contrib.mais contrib.spip

REVISIONS
révision 85789

Tester l’existence du flag exist ET sa valeur

révision 86545

Bugfix temporisation 10s sur les revisions enfin trouve : la comparaison 0.0+titre_version < $date etait parfois vrai avec poutant titre_version qui contient $date, on rajoute donc une condition de non egalite au format texte pour exclure ce cas

SITES
révision 84541

Ce n’est plus spip-contrib.mais contrib.spip

révision 85789

Tester l’existence du flag exist ET sa valeur

STATISTIQUES
révision 85114

les vignettes se calculent par leur URL, pas par le nom en clair du site (il est identique pour les sites courants mais pas pour les moteurs de recherche connus)
Ferme le ticket #3263

révision 85789

Tester l’existence du flag exist ET sa valeur

révisions 86418, 86419

Le header X-Spip-Visites ne fonctionnait plus depuis SPIP 3.0 suite a une salade de variables dans le pipeline affichage_entetes_final. On corrige.

révisions 87514, 87721

Ajout des moteurs de recherche Wow.com et Assentice.com

SVP
révision 84151

verifier au moment de l’insertion en base si le depot n’y est pas deja, generer une erreur dans le cas contraire
Ferme le ticket #3084

révision 84541

Ce n’est plus spip-contrib.mais contrib.spip

révision 88571

#DESCRIPTION passe déjà par propre, pas la peine de le faire 2 fois.

révision 88974

Par défaut, la recherche des plugins se fait sur tous les états et non plus les états stables.
Une classe nonstable est ajoutée sur les plugins trouvés dont l’état n’est pas stable.
Cela permet de styler ces plugins pour l’instant juste avec une opacity moindre mais on pourra améliorer.

révision 89102

On backporte la fonction de calcul de l’url de démo introduite en 3.1 afin de permettre que les plugins utilise cette nouvelle feature en 3.0 aussi sans poser de souci sur Plugins SPIP.
Pour l’instant étant donné que l’on ne dispose pas d’item de langue demo en 3.0 dans SVP ou dans SPIP on n’affiche pas le lien (à voir avant de releaser)

TEXTWHEEL
révisions 84152, 84162

etre sur de ne pas risquer d’echapper une vraie balise html qui contiendrait un < dans un attribut.
Ferme le ticket #2855

révisions 84170, 84179, 84181, 84182, 84183, 84190

Un premier jeu de tests unitaire de propre() construit a partir du comportement existant.
Chaque fichier .txt contient du texte avec raccourcis SPIP, et le .html du meme nom contient la sortie attendue

Ce premier jeu de test est execute en lang en pour eviter la prise en charge de raccourcis typo invasifs

Tous les tests ne sont pas OK, car quand la sortie constatee ne semblait pas normale, on a corrige la sortie attendue dans le test.
Notamment les points suivants :
un <quote> commencant par un retour ligne genere un <p><br /> en debut de blockquote
un retour ligne dans une liste ne genere pas d’autobr
un <p>paragraphe</p> html dans une liste SPIP l’interrompt (confirmer que c’est un bug ?)
quelques bugs autour du gras/italique dans le title d’un raccourci lien SPIP

A noter aussi les curiosites suivantes, non considerees comme des bugs ici, mais peut etre a discuter :
plusieurs espaces insecables de suite avec le raccourci tilde ou avec sont remplaces par un seul in fine
dans une note, un autolink disparait du title mais pas un lien explicite avec raccourci SPIP
Le raccourci hr ---- n’interrompt pas une liste au contraire du <p>
le raccourci liste tiret-asterisque-espace genere un li qui commence par un espace, et tiret-asterisque seul genere un li qui commence sans espace

mais le raccourci tiret-espace ou tiret tout seul generent une puce suivie d’un espace insecable dans les deux cas

A partir de ces tests de base, on va decliner des variantes avec
lang fr chaine avec ponctuation dans les differents textes pour verifier la bonne prise en compte/non prise en compte de la typographie
des modeles de type inline et block dans les differents textes pour verifier que cela ne perturbe pas la sortie.

jeu de tests avec un modele inline du type <textwheel1|inline> pour verifier qu’il est bien interprete la ou il faut uniquement, et ne casse pas le paragraphage
Ferme le ticket #2884

révision 86014

la bonne inclusion sur memoization

révision 87162

Si une fonction wrap_embed_html est definie, on l’appelle en lui passant le contenu source et le html qu’on s’apprete a embed dans le contenu riche.
Cette fonction peut etre utilisee pour encapsuler ce contenu dans un markup qui l’indique comme non editable dans un editeur wysiwyg et qui porte la trace du raccourci source pour permettre la conversion html=>raccourcis SPIP

révision 87162

Si une fonction wrap_embed_html est definie, on l’appelle en lui passant le contenu source et le html qu’on s’apprete a embed dans le contenu riche.
Cette fonction peut etre utilisee pour encapsuler ce contenu dans un markup qui l’indique comme non editable dans un editeur wysiwyg et qui porte la trace du raccourci source pour permettre la conversion html=>raccourcis SPIP

révision 87634

Les raccourcis glossaires sont deja personalisables avec une fonction glossaire_xxxx quand on mets une ancre #xxxx sur le raccourci glossaire.
On etend un peu pour que si une ancre inconnue est passee on se rabatte sur la fonction glossaire_ si elle existe (c’est deja elle qui etait appelee si elle existait, en l’absence d’ancre)
Du coup on passe l’ancre en 3eme argument pour que la fonction standard puisse l’utiliser pour savoir quoi faire.

révision 89158

il faut utiliser sql_get_select() pour beneficier de la traduction des noms de table
Ferme le ticket #3412

URLS_ETENDUES
révision 84942

r83376 avait ressucité du code mort, mais manque de chance c’etait un bug en puissance et pas une feature : le resultat de la fonction depend d’un define qui n’est pas un argument de la fonction, on ne peut donc pas memoizer en fonction de ses arguments. Cela empechait la mise a jour des URLs, on retire donc cette appel (go0uz)

révision 84944

version 1.4.25 : passer la taille max des urls propres et arbos à 80 caractères

révision 85789

Tester l’existence du flag exist ET sa valeur

révision 86132

On force partout où cela semble utile une utilisation d’échappements SQL de textes : sql_quote($url_propre, ’’, ’TEXT’)

Auteur denisb Publié le : Mis à jour : 15/08/21