On discute ici de l'accessibilité de
WikiNi au sens de l'interface et non de la facilité de prise en main (cf.
SiteAccessible).
L'accessibilité des sites web fait notamment l'objet de recommandations du W3C.
Références
Outils
Constat
Le validateur spécialisé du site acces-pour-tous.net, permet de donner une idée de l'accessibilité de
WikiNi :
http://www.acces-pour-tous.net/validateur/validateur.php?urlAVerif=http%3A%2F%2Fwebsemantique.org%2FPagePrincipale&Submit=Soumettre
On voit que les résultats ne sont pas mauvais du tout et que les rares erreurs sont faciles à corriger.
Besoin
Je propose de modifier
WikiNi afin d'obtenir le meilleurs résultat possible en matière d'accessibilité. Il semble que les modifications à mettre en oeuvre ne soit pas très complexes et profitent non seulement aux handicapés visuels, mais également au bon référencement d'un site.
--
CharlesNepote
Il faut notamment remplacer les barres de lien en haut et en bas des pages par des listes <ul> en complétant la feuille de style. Voir
http://www.pompage.net/pompe/portescoulissantes/ et aussi
http://listapart.com/ : les articles et le source de la page pour un exemple.
J'ai un patch en cours de développement.
Tout ceci est fortement lié à
WikiNiEnHTMLStrict. --
OlivierMengu?é
Solutions
Ajouter un label aux champs de formulaire
Ajouter un attribut label à tous les champs de formulaire (
http://www.la-grange.net/w3c/html4.01/interact/forms.html#h-17.9) :
- Recherche : <input name="phrase" size="15" class="searchbox" />
- deviendrait :
- <label for="phrase">Recherche :</label> <input name="phrase" size="15" id="searchbox" /> (attention au changement de "class" en "id")
- et même, si l'on y ajoute un raccourci clavier (cf. PropositionDeReglesDAccessibilite) :
- <label for="phrase" accesskey="4">Recherche :</label> <input name="phrase" size="15" id="searchbox" />
Référence :
Pré-renseigner les champs de formulaires
Il est conseillé de ne pas laisser "
les zones de saisie de vos formulaires vides car ceux-ci risquent d'être mal interprétés par les navigateurs en mode texte." Un peu de
JavaScript peut donner un petit effet intéressant :
<input id="zzz" name="xxx" value="Mot-clé" onfocus="if (this.value == 'Mot-clé') {this.value=''}" />
Pour la boite de recherche on aurrait donc :
- boite actuelle : Recherche : <input name="phrase" size="15" class="searchbox" />
- proposition 1 : Recherche : <input name="phrase" value="mot-clé" size="15" class="searchbox" onfocus="if (this.value == 'mot-clé') {this.value=''}" />
- proposition 2 (en ajoutant un raccourcis clavier) :
- Recherche : <input name="phrase" value="mot-clé" size="15" class="searchbox" onfocus="if (this.value == 'mot-clé') {this.value=''}" accesskey="4" />
(Il faudrait également tester la possibilité de supprimer l'attribut "size".)
Références :
Mettre en place un menu de navigation
Ce menu n'est pas affiché dans les navigateurs graphiques modernes mais il permet aux navigateurs texte et surtout au non-voyants de voir leur navigation facilité.
On pourra voir des exemples d'une telle solution chez Tristan Nitot (
http://www.standblog.org/) ou chez Olivier Meunier (
http://www.neokraft.net/blog/). Cela pourrait donner le code HTML suivant, à inclure dans le /actions/header.php :
<p id="prelude">
- <a href="#wkn_content">Aller au contenu</a>,
- <a href="#wkn_menu">aller au menu</a>,
- <a href="#wkn_searchbox">aller à la recherche</a>.
</p>
Naturellement, il faut modifier également quelque peu le code correspondant aux blocs référencés :
- <div class="header"> deviendrait <div class="wkn_menu">
- <div class="page"> deviendrait <div class="wkn_content">
- Recherche : <input name="phrase" size="15" class="searchbox" /> deviendrait
- <label for="phrase" accesskey="4">Recherche :</label> <input name="phrase" size="15" id="wkn_searchbox" /> (avec accesskey et label ; il faudrait en plus pré-renseigner le champ de formulaire)
Mettre en place des raccourcis clavier
Ajouter des accesskey, très simples à mettre en place puisqu'il s'agit d'un simple attribut HTML (
http://www.acces-pour-tous.net/fichiers_communs/access.php?rub=aides_nav ).
Selon la source citée en référence, l'usage voudrait qu'on utilise les touches suivantes :
- Le 0 pour ouvrir directement la page contenant les règles d'accessibilité du site : par exemple : celles de acces-pour-tous.net ; pour WikiNi je suggère une PropositionDeReglesDAccessibilite.
- Le 1 pour accéder à la page d'accueil du site.
- Le 2 pour accéder directement au corps de la page. Par corps, il ne faut pas entendre <body> mais bien ce qui (devrait) constituer l'intérêt de la page, à savoir l'information quelle contient.
- Le 4 pour accéder directement au formulaire de recherche (dans la perspective ou un moteur de recherche interne à votre site existe).
- Le 9 pour vous contacter par courrier électronique (formulaire ou lien mailto:)
Références :
[ Il faudrait pour cela modifier le code de formattage de
WikiNi. On peut envisager de mettre les raccourcis clavier "chiffres" pour la barre de liens en haut. C'est faisable, logique et générique (les liens chiffres seraient sur toutes les pages et pointeraient vers les mêmes pages). J'ai un patch en cous de développement. --
OlivierMengu?é ]
Chaque fonctionnalité de l'interface Wiki (navigation, édition) devrait avoir un raccourci d'accès (accesskey). Pour le contenu de la page, à part les titres, cela ne me paraît pas possible ni nécessaire. Il suffirait d'ajouter un lien tout en haut de la page (avant le titre) qui permette d'aller directement au début du contenu de la page en sautant la barre de navigation. --
OlivierMengu?é
Ajout d'attributs title
Il faut ajouter des attributs title là où cela peut donner de l'aide. Je pense en particulier aux liens "?" associés à un
MotWiki et permettant de créer la page manquante.
Dans
wakka.php, classe
Wiki, méthode
Link :
return ($this->LoadPage($tag) ? '<a href="'.$this->Href($method, $tag).'">'.$text.'</a>' : '<span class="missingpage">'.$text.'</span><a href="'.$this->Href("edit", $tag).'" title="Créez la page '.$tag.'">?</a>');
--
OlivierMengu?é
Excellente idée ! Je ne vois que des avantages : meilleure accessibilité, profite à tous, simple à mettre en oeuvre, influence sur négligeable sur les performances. Sauf avis contraires,
vendredi 5 mars. --
CharlesNepote
Supprimer les mises en page à base de tables
Il faut supprimer les mises en page utilisant <table> :
/actions/usersettings.php,
/setup/default.php... et utiliser plutôt <div> et les CSS.
Pas mal de boulot !
--
OlivierMengu?é
Attention ! Il y a des cas où les tables sont nécessaires. Je suis d'accord sur le fait de supprimer l'utilisation des tables à des fins de mise en page ; mais il y a peut-être des cas où les tables représentent des données tabulaires, comme par exemple dans les /revision.
Pages pour lesquelles on peut se poser la question :
Pages pour lesquelles on pourait simplement supprimer les tableaux :
--
CharlesNepote
Éliminer les tags non-sémantiques
Il faut éliminer <i>, <b>... au profit de <em>, <strong>...
Voir
EnCoursDeDeveloppement.
--
OlivierMengu?é
Dans le même ordre d'idée, supprimer la balise <u> par un <span class="sou"> (comme <s> est <span class="bar">) (
)
--
LawrencePritchardWaterhouse
Pour les <i> et <b> je suis OK. Pour les <u> et <s>, c'est une autre histoire...
Le problème, en utilisant <span class="sou"> et <span class="bar">, c'est que le code devient du coup "moins sémantique". Concrètement, je pense qu'un navigateur texte ou qu'un lecteur vocal pourrait rendre correctement <u> et <s> mais pas <span class="sou"> et <span class="bar">. L'idéal ça serait de pouvoir utiliser des balises sémantiques : <del> et <ins> mais qui posent d'autres problèmes : cf. mes recherches bloquées sur la page
EnCoursDeDeveloppement : "Utilisation des balises xhtml INS et DEL pour le diff". Je serais content d'avoir vos avis sur la question. --
CharlesNepote
<u> et <s> ne sont pas plus sémantique qu'un <span>, dans les deux cas la balise n'est là que pour appliquer style au texte. C'est juste que <u> et <s> sont obsolètes en xhtml.
Remplacer <s> par <del> est une bonne idée qui apporte effectivement du sens. Cela signifie que le trait au milieu du texte n'est plus une décoration mais bien la marque d'un ancien texte supprimé et/ou corrigé.
En revanche, il est plus difficile de trouver une valeur sémantique à un texte souligné. Le seul exemple qui me vienne à l'esprit est lorsque qu'on cite les référence d'un livre (ex:
Le Faucheur, Terry Pratchett). Je ne crois pas qu'il existe quoique ce soit de tel en xhtml.
--
LawrencePritchardWaterhouse
Lawrence: pour ton exemple de référence d'un livre, le tag sémantique approprié est <cite>.
Voir :
- http://www.w3.org/TR/REC-html40/struct/text.html#h-9.2.1 : la signification des tags em, strong, dfn, code, q, samp, kbd, var, cite, abbr, acronym, sub, sup.
- <cite> est conservé en XHTML 1.1 : http://www.w3.org/TR/xhtml11/xhtml11_dtd.html#a_xhtml11_customization
--
OlivierMengu?é
Utiliser les balises de paragraphe <p>...</p>
En regardant le html généré par
WikiNi je me suis apperçu qu'il n'y avait pas de balise
<p>...</p>. Ces balises permettent de délimiter un paragraphe ce qui me semble essentiel pour un utilisateur non/mal voyant (enfin il me semble car je n'ai pas d'experience dans ce domaine). La balise
<br /> est utilisée pour mettre un saut de ligne, mais un saut de ligne n'est pas une limite de paragraphe! Je pense que la solution serait de rajouter qu'une ligne vide délimite un paragraphe comme le fait
PhpWiki par exemple (je crois).
--
GarfieldFr
Totalement d'accord. Mais la solution n'est pas évidente.
Il y a un très intérassant débat sur
CraoWiki qui synthétise bien les problèmes :
http://wiki.crao.net/index.php/WikiSyntaxeUniverselle/Draft/Discussions/Paragraphes
Admettons que la solution soit :
- [Contenu] + 1 retour de ligne = [Contenu]<br />
- [Contenu] + 2 retours de ligne = <p>[Contenu]</p>
- [Autre bloc][Contenu] + 2 retours de ligne = <autre_bloc>[Autre bloc]</autre_bloc><p>[Contenu]</p>
- [Contenu] + 3 retours de ligne = <p>[Contenu]</p><p> </p>
On obtient bien alors le principe de mise en forme visuelle qui guide
WikiNi (le meilleur exemple étant l'indentation visuelle), qui me paraît assez intuitif.
Cependant, qu'est-ce qui empêche quelqu'un de ne jamais écrire avec des lignes vides ?
D'après ce que j'ai compris, la solution adoptée par
PhpWiki est que :
- [Contenu] + %%% = [Contenu]<br />
- [Contenu] + 1 retour de ligne + [Contenu] = [Contenu][Contenu]
- [Contenu] + 2 retours de ligne = <p>[Contenu]</p>
- [Autre bloc][Contenu] + 2 retours de ligne = <autre_bloc>[Autre bloc]</autre_bloc><p>[Contenu]</p>
- [Contenu] + n retours de ligne = <p>[Contenu]</p>
J'avoue que je suis dubitatif.
--
CharlesNepote
Je pencherais plutôt pour la 1ere solution qui a l'avantage de la simplicitée et est très proche d'une mise en forme intuitive. Je modifierais quand même par:
- un [Contenu] peut contenir des retours de ligne donc [Contenu] + 1 retour de ligne + [Contenu] = [Contenu]
- [Contenu] + 2 retours de ligne = <p>[Contenu]</p>
- [Autre bloc][Contenu] + 2 retours de ligne = <autre_bloc>[Autre bloc]</autre_bloc><p>[Contenu]</p>
- [Contenu] + 2 ou plus retours de ligne = <p>[Contenu]</p> (car cela reviendrait à faire de la mise en page dans le texte ce qui n'est pas l'optique de WikiNi puisque cela est fait par le fichier CSS. De plus, pour forcer le retour, il y a toujours ---.
Pour les [Autre bloc] je supose que tu ne parle que des titres car je ne vois pas d'autre type de bloc non suceptible d'être dans un paragraphe. Un exemple de code(balise %%)
est dans un paragraphe(idem pour une liste ) et ne forme pas un paragraphe à lui tous seul.
--
GarfieldFr
- Après vérification, il semble qu'une liste ne dois pas être dans un paragraphe (XHTML 1.0 Strict), donc on doit considérer une liste comme un paragraphe. --GarfieldFr
J'aime bien aussi cette dernière proposition. Toute la discussion sur cette page rejoint aussi
WikiNiEnHTMLStrict comme le disait
OlivierMengu?é plus haut. Pour moi ça me semble important de respecter la sémantique du XHTML, c'était à la base de l'invention de Tim Berners-Lee et il n'y a que des avantages il me semble (accessibilité, mise en page dans les CSS, moteurs de recherche, traduction vers d'autres formats, maintenabilité du code, etc.).
--
ToniN?