[spip-dev] r11871 - in spip: dist dist/formulaires dist/images dist/prive/editer ecrire/action ecrire/exec ecrire/inc

marcimat-GANU6spQydw@public.gmane.org a écrit :

Author: marcimat-GANU6spQydw@public.gmane.org
Date: 2008-06-25 01:03:29 +0200 (mer, 25 jun 2008)
New Revision: 11871

Log:
2 choses :
- 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.

Par ailleurs, voici une ébauche d'explication de la structure; remarques bienvenues...

---- Proposition de formulaires ----

Un formulaire commence par une div expliquant ce qu'il est.
Il comporte une classe avec le nom de l'objet, et une autre avec
l'id de l'objet en plus de son nom :

<div class="formulaire_editer formulaire_editer_site formulaire_editer_site-#ENV{new}">
</div>

S'lt

Peux tu completer, nettoyer, ... ?
http://www.spip.net/ecrire/?exec=articles&id_article=3791

Matthieu Marcillaud a écrit :

Par ailleurs, voici une ébauche d'explication de la structure; remarques bienvenues...

Je trouve ça vraiment super tout ce qui a été fait.
Sauf... je ne suis toujours pas d'accord sur le nom des classes : pourquoi diable faire des noms à rallonge "editer_titre", etc, alors que CSS permet de faire "editer titre", ce qui permet dans les styles de mettre "li.editer.titre" d'une part, mais qui permet d'autre part de pouvoir mutualiser certains styles pour "tous les editer" ou "tous les titre", etc.

C'est quand même plus propre et plus clair ensuite dans la CSS, non ?

+1

J'avais fait exactement les mêmes remarques dans la discussion lancée il y a quelque temps par Romy, sans succès :

http://article.gmane.org/gmane.comp.web.spip.devel/47536
http://article.gmane.org/gmane.comp.web.spip.devel/47548

-Nicolas

Non ca n'est pas pertinent si on prend la peine d'y réfléchir 2secondes

Dans la pratique
.titre sert a styler le rendu d'un titre, et porte donc nombre d'enrichissements stylistiques dont on n'a que faire dans un formulaire d'édition.
Dans ce que vous proposez, on ecrira deux fois plus de css pour annuler les styles de rendu dans les formulaires de saisie, puisque li.editer.titre heritera d'abord de li.titre
Au lieu de simplifier, on ne fera que complexifier les css.
Cédric

Je t'ai déjà répondu sur ce point :
http://romy.tetue.net/spip.php?article523#forum763

On ne parle pas CSS comme on parle français. En l'occurrence, les appellations simples constituée d'un seul mot, sont à l'usage bien plus confusionnantes. Des appellations complètes limitent les erreurs.

Euh... j'ai réfléchi déjà plus de 2 secondes lors de la discussion précédente, je te rassure, mais il semble que je n'ai pas été limpide dans mes explications.

Avec notre méthode, il suffit d'avoir un div englobant avec une classe "editer" ou "visualiser", et on pourra différencier très simplement ".editer .titre" et ".visualiser .titre", tout en pouvant donner des caractéristiques communes avec seulement ".titre".

Avec votre méthode, ce sera beaucoup plus pénible, notamment pour éviter les coquilles dans les noms de classes vu que le nom de l'une inclue les noms de toutes ses "mères" en cascade.

Bon, après, du moment que ça nous laisse toujours libre sur le front, peu importe, faites comme vous voulez.

-Nicolas

Ouais, c'est ce que j'ai longtemps fait et c'est nettement plus difficile à maintenir sur la durée. Une foultitude de petites class hyper polysémiques (chacun y comprend ce qu'il veut, les associe en tout sens, s'étonnant que le CSS ne suive pas, oh, comme c'est étrange), c'est le meilleur moyen d'aboutir un beau bordel reprisé de partout et incompréhensible d'ici un an.
Personnellement, ce n'est pas comme cela que je conçois un projet logiciel en équipe.

Avec notre méthode, il suffit d'avoir un div englobant avec une classe "editer" ou "visualiser", et on pourra différencier très simplement ".editer .titre" et ".visualiser .titre", tout en pouvant donner des caractéristiques communes avec seulement ".titre".

Ouais, c'est ce que j'ai longtemps fait et c'est nettement plus difficile à maintenir sur la durée. Une foultitude de petites class hyper polysémiques (chacun y comprend ce qu'il veut, les associe en tout sens, s'étonnant que le CSS ne suive pas, oh, comme c'est étrange), c'est le meilleur moyen d'aboutir un beau bordel reprisé de partout et incompréhensible d'ici un an.

Il n'y a pas franchement beaucoup de monde qui bosse sur le core de SPIP, donc j'ai du mal à voir comment ça pourrait être plus compliqué que votre méthode, mais une fois de plus « faites comme vous voulez », je ne vais pas me battre.

-Nicolas

oui mais la ce sont des formulaires utilisables dans le public
tout le monde peut mettre #FORMULAIRE_EDITER_ARTICLE dans son squelette public
et heritera alors de sa css qui est, a n'en pas douter, trufée de styles sur les .titre, .chapo, .texte, .ps etc ... dont il serait *vraiment* malvenu d'hériter ici
Cédric

Sauf que ".editer .titre { }" étant plus spécifique que ".titre { }", il n'y a pas ce risque sur les propriétés identiques. Il y a certes d'éventuels soucis sur les propriétés définies dans le ".titre { }" de la dist et celui de l'utilisateur, et cela selon l'ordre de chargement des CSS, mais je pense qu'il y a moyen de limiter les propriétés de ce type.

Je trouve dommage de montrer un usage des CSS n'en exploitant pas pleinement les riches possibilités, et incitant à reproduire dans le HTML et les CSS une soupe de classes.

Oups, j'avais dit que j'arrêtais de me battre... :wink:

-Nicolas

Nicolas Hoizey a écrit :

Oups, j'avais dit que j'arrêtais de me battre... :wink:

J'ajoute que IE6 ne comprends li.editer.titre comme li.titre tout court.
C'est une raison très valable de ne pas faire cela.

Nicolas Hoizey a écrit :

Oups, j'avais dit que j'arrêtais de me battre... :wink:

J'ajoute que IE6 ne comprends li.editer.titre comme li.titre tout court.

Ah bon ???

C'est une raison très valable de ne pas faire cela.

Franchement, faire encore aujourd'hui les choses en fonction des grosses lacunes de IE6, ça reste justifié ?

-Nicolas

Nicolas Hoizey a écrit :

Nicolas Hoizey a écrit :

Oups, j'avais dit que j'arrêtais de me battre... :wink:

J'ajoute que IE6 ne comprends li.editer.titre comme li.titre tout court.

Franchement, faire encore aujourd'hui les choses en fonction des grosses lacunes de IE6, ça reste justifié ?

Bah franchement, je m'en passerai bien !
Mais 27% d'utilisateurs, c'est pas rien : http://www.w3schools.com/browsers/browsers_stats.asp

Sinon, pour le li.editer.titre, cet exemple s'affiche 'vert' sous IE6 et non rouge.

<html>
<head>
<style>
p.toto.titi{color:red;}
p.toto{color:blue;}
p.titi{color:green;}
</style>
</head>
<body>
<p class='toto titi'>Coucou</p>
</body>
</html>

romy@rezo.net a écrit :

Une foultitude de petites class hyper polysémiques

c'est vrai ça.
C'est pas évident de faire simple et "toujours valable".
ça se baserait sur des "conventions"
mais seraient elles toujours reliées à des caractéristiques objectives
facilement délimitables ?

editer_titre, c'est plus lourd apparament,
mais c'est plus difficile de se leurrer avec.

JL

cedric.morin@yterium.com a écrit :

oui mais ca ne veut pas dire que p.toto.titi n'est pas compris par IE6, juste que le p.titi qui arrive apres le surcharge.
Les doubles classes marchent sous IE, a la seule condition que bien les utiliser dans le meme sens que dans leur declaration dans l'attribut class, et en faisant attention aux priorités des surcharges?

Non, pas sous IE6...

Je te donne un autre exemple plus compréhensible :

<html>
<head>
<style>
p.toto.titi{color:red;}
</style>
</head>
<body>
<p class='toto titi'>Coucou</p>
<p class='titi'>Nounou</p>
<p class='toto'>Boubou</p>
</body>
</html>

FF et consoeurs ne colorient en rouge que "Coucou"
IE6 colorie Coucou et Nounou parce qu'il interprete p.toto.titi comme p.titi simplement.

MM.