- encoding (utf8)
- eof_ending (saut le ligne en fin de fichier)
- elseif (pas else if)
- function_call_space (espaces sur fonctions)
- function_declaration (pareil)
- function_typehint_space (pareil)
+ factorisation de la fonction de titrage
Pour les auteurs, on reprend aussi email ou login (si fournis) pour le nom, mais on ne créé pas des "Auteur N°xx" car cela n'a pas de sens...
et en particulier de sa valeur 4 qui n'existe plus (feu oo),
l'accessibilite n'etant pas un mode degrade, mais une propriete intrinseque
de l'interface commune a tous.
Je profite de cette écriture massive pour normaliser quelque chose de trompeur lorsqu'on compare deux versions, savoir l'usage de " ou ' dans le premier argument de define et defined. Comme les chaînes entre apostrophes sont plus rapidement analysées que celles entre guillemets, je choisis l'apostrophe.
Dépot obtenu avec le script Shell:
{{{
a=$(find . -name "*.php" |grep -v extensions/ | grep -v /config/ | grep -v index.php | grep -v public.php | grep -v prive.php )
echo -n "Fichiers: "
echo $a|wc -w
for i in $a
do
sed -f ~/Sites/spip/spip.sed $i > /tmp/f.php
if diff -q $i /tmp/f.php
then
:
else
diff $i /tmp/f.php
# echo $i; php /tmp/f.php
# mv /tmp/f.php $i
fi
done
}}}
et le script Sed:
{{{
s/Copyright (c) 2001-20../Copyright (c) 2001-2011/
s,\(if [(]!*\)*\(defined* *[(]\)"\([^"]*\)"\(.*\);[[:space:]]*[#/]*.*$,\1\2'\3'\4;,
}}}
celle-ci peut etre polluee par une variable postee dans le formulaire.
Du coup les arguments changent et la balise #FORMULAIRE ne reconait pas le formulaire responsable du post. La seule solution etait de forcer la prise en compte du POST, ce qui interdit d'avoir plusieurs formulaires sur la meme page.
Pour y remedier, on introduit en sus des 3 fonctionc charger, verifier, traiter, une fonction optionnelle identifier qui est chargee de retourner une signature en fonction des arguments du formulaire, en ignorant ceux qui ne reprensentent pas l'objet saisi.
On aurait pu demander a charger de retourner cette signature dans la table des valeurs, mais ca aurait oblige a faire un double appel a la fonction charger() du formulaire.
Il reste des occurences dans le forum (Cédric s'en occupe) et dans le fichier prive/javascript/spip_barre.js qui pourrait presque disparaître du coup.
Ajout dans la distribution du plugin "porte plume" pour gérer les barres d'outils.
- ajout du formulaire_ecrire_auteur en CVT
- modification de la structure et de la présentation des formulaires d'édition
* Le formulaire ecrire auteur a une petite différence avec ce qu'il y avait précédemment : on ne peut pas changer le statut dans l'édition, mais simplement après la validation (les 2 étaient possible avant), et cela car le javascript qui gère le statut ne permet de gérer dans la page qu'un seul bloc de changement de statut, or, ces changements impliquent qu'il en faudrait 2 en même temps (l'un est hidden quand l'autre est actif)
* La modification de la structure (surtout du nom des classes) et de la présentation des formulaires vise 2 choses :
- alléger visuellement l'interface
- fournir des classes css permettant de styler indépendament chaque champ
Cet essai de nouvelle structure n'a plus besoin du javascript pour le inline-block, peut ne pas avoir de premier fieldset, conserve le chainage ul/li, et chaque li possède une classe indiquant le type de champ de formulaire (exemple : li.editer_titre)
On essaie au maximum de ne pas donner de styles graphiques aux champs de formulaires pour qu'ils gardent l'apparence de celle donnée par le navigateur par défaut, dont les utilisateurs sont habitués.
cela ne semble lie qu'a certains navigateurs (IE ?), il serait bon de ne pas l'activer sur les autres
desactiver l'ajax de articles_edit pour le moment (seuls cas d'utilisation = les controles md5)
inc/editer_article disparait, remplace par formulaires/editer_article/charger
pour editer un article
charge, verifie (par md5, en renvoyant sur le meme formulaire avec message si erreur), traite
La balise ne fait pas de gestion de droit, c'est a la charge du squelette appelant de decider si l'auteur peut editer l'article
etape suivante : utiliser ce formulaire dans l'espace prive
Toutes les occurrences de ecrire_metas ont été retirées, et elle passe en vieilles_def comme ne faisant rien. Pour les quelques occurrences où ecrire_metas n'était pas explicitement précédée de ecrire_meta ou effacer_meta, son ancienne définition a été insérée, mais je doute que cela soit utile.
* introduction de {{{define('_RENOUVELLE_ALEA', 3600 << 2);}}} qui détermine la validité de l'alea pour les cookie, avec conséquence automatique sur l'option "rester connecter qq jours". A n'allonger que dans des contextes où la sécurité est assurée par des voies externes mais encore plus fiables.
* migration du code en ligne danc inc/meta dans la fonction spip_initialisation de inc/utils: c'est donc cette dernière qui garantit que les meta ont été lues et l'alea est valide (sauf grosse acrobatie dans mes_options, ce changement devrait etre transparent).
* révision générale des include(inc/meta), qui n'interviennent plus que si les fonctions lire_meta, ecrire_meta ou ecrire_metas sont nécessaires dans le code qui suit.
on peut declarer une <version_base>xx</version_base> dans le plugin.xml en plus du <install></install> et spip gere la fonction _install tout seul, seules les fonction
xx_upgrade($nom_meta_base_version,$version_cible)
et
xx_vider_tables($nom_meta_base_version)
restant a implementer
(la definition de toute l'install par une fonction _install est toujours possible pour les cas compliqués)
Auparavant ces scripts concernaient des actions assez marginales de la vie du site. Maintenant qu'ils se démultiplient pour permettre des actions en AJAX et des pages de présentation conformes au modèle REST pour tous les formulaires de l'espace privé, il devient plus important de se protéger contre le tristement célèbre "homme du milieu". En conséquence, le protocole de vérification de la recevabilité de l'action demandée est à présent plus strict.
Normalement cela devrait etre transparent aux utilisateurs honnetes, toutefois il est plus prudent d'essayer cette version localement avant un déploiement sur site.