Pour des applications web, ou des backends, on utilise l'élément html textarea pour pouvoir saisir du texte. L'un des plus gros reproche que me font les clients quand ils saisissent leur texte : ce n'est pas WYSIWYG. On ne peut pas mettre en gras, en italique ; On ne peut pas spécifier la police de caractère, choisir la taille des caractères, souligner etc.

La première solution serait de leur permettre de saisir du HTML. Mais c'est trop compliqué, nécessite de se former au langage, trop gros risque d'erreur, donc trop gros risque de voir les mises en pages détruites, inaccessibles etc... Je sais par expérience que la plupart du temps, les utilisateurs ne veulent pas entendre parler de HTML ou autre. Ils veulent comme dans Word. Point. Donc oublions cette solution.

La deuxième solution, dont je suis un adepte inconditionnel, et de permettre la saisie en syntaxe wiki. Ce n'est pas encore parfait pour l'utilisateur de base, il faut un léger apprentissage mais c'est déjà plus simple et plus "user friendly" que la saisie du code HTML. Au niveau implémentation, pas de problème, une petit coup de WikiRenderer en PHP, et hop, vous avez le source HTML valide (ou autre format) à integrer dans vos pages.

La troisième solution, c'est d'utiliser des scripts tels que Htmlarea, en Javascript, à intégrer dans votre formulaire. Là, c'est parfait pour l'utilisateur de base, c'est du 100% WYSIWYG. Il tape son texte comme il a l'habitude de faire dans Word. Il le transforme comme il le veut, il met les couleurs qu'il veut, les polices qu'il veut etc... En coulisse, Htmlarea produit du HTML.

Mais personnellement, je pense que ce n'est pas une super bonne idée. Passons sur le fait que cela ne produit pas forcément du code valide, surtout quand notre site est en strict (les balises font, center et compagnie, générées par Htmlarea ne sont pas les bienvenues). On peut je pense hacker Htmlarea pour qu'il produise un code plus propre (utiliser l'attribut style et y générer des CSS), même si l'implémentation risque d'être un poil plus compliquée ;-). Ce que je reproche le plus à ce genre de solution :

  1. C'est que cela permet à l'utilisateur de choisir lui même la présentation. De quoi mettre tout en l'air le design du site. Et le résultat peut aussi ne pas être en adéquation avec ce qu'à taper l'utilisateur : en effet, les CSS éventuellement utilisées sur le site risquent de modifier l'apparence une fois que le texte est affichée en situation réèlle (les backends n'ont pas forcément le même design que le site). Il faut prévoir une prévisualisation.
  2. On stocke le texte saisie, formaté en HTML, avec tout ses attributs et balises de présentation. Qu'en est-il de l'évolution du site ? Un jour on change le design du site, et voilà que la mise en page du texte saisie par Monsieur Duchmol, dans lequel il a mis fièrement un titre en Times New Roman 20pt, ne va absolument plus du tout avec le nouveau design : il faut reprendre un à un tous les textes saisies pour les remettre en page.
  3. La réutilisation des données dans un autre contexte ou un autre site pose un problème supplémentaire. On pourrait bien sûr utiliser par exemple XSLT pour transformer les textes saisies en d'autres format, mais il faut s'assurer que le html est bien formé et valide. Pas simple

Bref, des outils comme HtmlArea peuvent limiter serieusement l'usage de CSS, et surtout rendre problèmatique la pérénité des données. Je pense que si on utilise ce genre d'outil, il faut :

  1. être certain que cela produit du code valide
  2. limiter les possibilités de mise en page, en permettant seulement d'indiquer la structure du texte, comme en wiki : indiquer que ceci est un titre, cela est un paragraphe, une emphase ou encore une liste etc.. Et donc oublier les fonctionnalités gadgets comme choisir une couleur, une police de caractère, sa taille etc...

Voilà une bonne idée de hacking sur htmlarea, non ? ;-)