MarcWiki

Le wiki de Marc Meurrens
connexion :
Help > Home > Tech > Casiwi >
(no edit access)

Tag et fonction LoadPage()

Resp. Mise à jour 20 Décembre 2009 à 16h55 par
Logiciel Casiwi version ≥ 9.12

La fonction LoadPage()
Usage des caractères diacritiques et des séparateurs de mots dans les tags des pages.
Comparaison avec Wikipedia.
Modifications proposées pour la version 9.12 de Casiwi.
Action complémentaire simplify_tags

Introduction

Contexte

Un visiteur nous écrit:
Un des premiers conseils qu'on donne aux concepteurs de sites web est de
ne pas utiliser de signes diacritiques dans leurs URL.

Je me suis toujours demandé pourquoi Wikipedia et d'autres wiki, qui se veulent pourtant des
modèles en matière d'utilisation du web, les utilisent systématiquement
dans les URL de leurs pages francophones.

Cela oblige à des contorsions chaque fois qu'on veut faire, sur une de
ses propres pages, un lien vers une page wiki ...


Tag

Le tag d'une page = son pseudo chemin
Exemple :
Poètes/Víctor_Jara
(avec un accent grave sur E, un accent aigu sur I, et le signe underscore)
ou, dans une forme qui évite des caractères diacritiques dans une URL :
Poetes/Victor_Jara
ou encore :
Poetes/VictorJara qui correspond à notre propre habitude
ou encore :
Poetes/Victor_Jara
(sans accent, avec underscore) une forme simplifiée tout aussi respectable.

A noter qu'il peut exister d'autres conventions et que nous n'en privilégions a priori aucune, la forme la plus courte utilisant le jeu de caractères le plus court étant toutefois retenue, de manière interne à l'implémentation, c'est à dire soit poetes/victorjara, soit poetes/victor_jara .

Casiwi ≤ 9.11

Linguistiquement correcte

L'URL (qui correspond à une page réelle) :
http://wiki.meurrens.org/VíctorJara (avec l'accent sur le I)
correspond à une approche linguistiquement correcte mais il faut craindre que le visiteur francophone
n'oublie l'accent sur le I et que, pour certaines langues, il ne sache comment introduire un caractère particulier au clavier.

Indifférence à la case

Avec Casiwi, tant dans les versions ≤ 9.11 que dans les versions 9.12, il est possible d'écrire, par exemple :
http://wiki.meurrens.org/víctorJARA
(avec un V minuscule, l'accent sur le I, et JARA entièrement en majuscules), l'URL étant indifférente à la case.

Caractères diacritiques

L'URL http://wiki.meurrens.org/VíctorJara
une fois copiée-collée deviendra :
http://wiki.meurrens.org/Po%C3%A8tes/V%C3%ADctor
ce qui n'est pas très beau, difficilement recopiable, et donc source d'erreurs.

Simplification

Une URL simplifiée (sans accent)
http://wiki.meurrens.org/VictorJara
est moins correcte pour un hispanophone mais plus proche des règles du web qui visent à écarter les caractères diacritiques des URL's.
Elle nécessite toutefois la création de la page VictorJara
contenant une simple redirection :
{{VíctorJara::redirect}}

Slash final

Il faut encore craindre qu'un visiteur bien intentionné, ne voyant point d'extension telle que .php ou .html, n'écrive
http://wiki.meurrens.org/VictorJara/
Le slash étant un caractère comme un autre, il se verra suggérer la création de la page VictorJara/, ce qui ne manquera pas de le déconcerter.
Une solution est de prévoir d'emblée une page VictorJara/ contenant :
{{VíctorJara::redirect}}

mediaWiki

Avec le logiciel mediaWiki utilisé par Wikipedia, les exemples ci-dessus deviennent :

Ceci suppose, tout comme dans Casiwi ≤ 9.11, la création d'une page Victor_Jara (sans accent) contenant :
#REDIRECT [[Víctor Jara]]
(avec accent et sans underscore)

A noter que, contrairement aux fonctionnalités de Casiwi, la case est importante pour mediaWiki.
Dès lors, VíctorJara n'y a rien à voir avec víctorJARA.

Casiwi ≥ 9.12

Linguistiquement correcte

S'il existe une page Thé_à_la_menthe et, donc, une URL linguistiquement correcte :
http://wiki.meurrens.org/Thé_à_la_menthe
un visiteur utilisant cette URL obtiendra, bien entendu cette page.

A noter qu'un visiteur qui introduirait
http://wiki.meurrens.org/the_a_la_menthe
ou
http://wiki.meurrens.org/theALaMenthe
n'arrivera pas sur la bonne page, le logiciel ne devinant pas où introduire des underscores et s'il faut remplacer E par é ou par ê pour retrouver la bonne page.

Il n'y a là rien de changé par rapport aux versions 9.11

Simplification

S'il existe une page theALaMenthe et donc une URL simplifiee :
http://wiki.meurrens.org/theALaMenthe
par ailleurs équivalente, si on y tient, à
http://wiki.meurrens.org/Thealamenthe
ces URL's conduiront, bien entendu, à la bonne page.

En outre, si l'utilisateur, plus fidèle au français, introduit l'URL :
http://wiki.meurrens.org/Théàlamenthe
ou même :
http://wiki.meurrens.org/Thé_à_lamenthe (avec des underscores)
ou encore :
http://wiki.meurrens.org/Thé_à_lamenthe/ (avec un slash final malencontreux)
il sera également renvoyé à la page theALaMenthe

Risque de collision

Toutefois, s'il existe simultanément une page Thé_à_la_menthe et une page theALaMenthe, les URL's précises
http://wiki.meurrens.org/Thé_à_la_menthe
et
http://wiki.meurrens.org/Thé_à_la_Menthe
conduiront, elles, à la première de ces deux pages, respectant ainsi la volonté du rédacteur et du visiteur.

Dans la majorité des cas, la page theALaMenthe contenait d'ailleurs probablement une redirection vers Thé_à_la_menthe!
Cas particulier
L'URL :
http://wiki.meurrens.org/Thé_À_La_Menthe
conduira toutefois à la seconde des deux pages ci-dessus, la conversion majuscule/minuscule n'étant pas évidente dans toutes les langues.

Conclusion provisoire

La version 9.12 offre donc une beaucoup plus grande liberté au visiteur (pour autant toutefois que le rédacteur ait pensé à nommer sa page en utilisant une forme simplifiée, ou pour autant que, ce qui est heureusement le cas, le logiciel créent automatiquement les redirections nécessaires)

La forme simplifiée pour le tag d'une page Poète/Víctor_Jara (avec E et I accentués, avec underscore) est, conventionnellement, la forme la plus courte et la plus simple, c'est à dire poete/victorjara.
A noter qu'une autre simplification, moins radicale car conservant la séparation des mots, coexiste si il y a lieu, c'est à dire, pour notre exemple : poete/victor_jara.

Elle n'offre, à ce stade, aucun bénéfice pour d'anciennes pages nommées selon d'autres conventions.

Action simplify_tags

Cette action "simplifie" les tags, depuis leur orthographe actuelle, vers une forme simplifiée afin de rendre pleinement utile la modification introduite dans la version 9.12 et décrite ci-dessus.

En fait, il ne s'agit pas, à proprement parler d'une "conversion": les tags existants ne sont pas remplaçés par des tags simplifiés.
Mais de nouvelles (toutes petites) pages sont créées pour rediriger, à partir d'une URL simplifiée, vers la page avec un nom linguistiquement correct.

Elle est surtout utile pour les pages pré-existantes nommées par leurs auteurs selon diverses conventions qui leur appartiennent.
Prudemment, la simplification n'est toutefois effectuée que si elle ne conduit à aucune confusion :
  • s'il n'existe pas encore de page poete/victorjara, la page Poète/VíctorJara (page qui subsistera telle qu'elle) sera verra adjoindre une nouvelle page poete/victorjara qui redirige vers la première.
  • s'il existe déjà une page the_a_la_cerise, les pages Thé_à_la_cerise et the_a_la_cerise resteront deux pages distinctes.

Si la "vrai" page est nommée en utilisant des underscores, par exemple, Mes_poètes_préférés/Víctor_Jara, deux pages de redirection sont générées (pour autant, bien sûr, qu'elles n'existent pas déjà), à savoir, pour notre exemple: mes_poetes_preferes/victor_jara (sans accent) et mespoetespreferes/victorjara (sans accent, ni underscore).

Usage

Dans une page
L'usage, dans une page, en est le suivant :
  1. {{::simplify-tags}} : simplification des tags pour la page courante et, récursivement, pour toutes les 'sous-pages'.
  2. {{MaPage::simplify-tags}} : simplification des tags pour la page MaPage et, récursivement, pour toutes les 'sous-pages'.
  3. {{::simplify-tags=self}} ou {{MaPage::simplify-tags=self}} : simplification du tag de la page courante ou de la page MaPage
  4. {{::simplify-tags=all}} ou {{MaPage::simplify-tags=all}} : simplification du tag de toutes les pages.

Dans une URL
L'usage, via l'URL, en est le suivant :
  1. http://wiki.me.org/MaPage::simplify-tags : simplification du tag de MaPage et, récursivement de toutes les sous-pages.
  2. http://wiki.me.org/MaPage::simplify-tags=self : simplification du tag de MaPage mais pas des sous-pages.
  3. http://wiki.me.org/::simplify-tags ou http://wiki.me.org/::simplify-tags=all : simplification du tag de toutes les pages.

Conclusions

Pour le rédacteur

Le rédacteur crée, en général, directement une page Poete/VictorJara (ou Poete/Victor_Jara) nommées sans accent, avec ou sans underscore.

Il peut aussi créer (ou avoir créé précédemment) Poète/VíctorJara (ou Poète/Víctor_Jara) avec accents.

De toute manière, si possible et si utile, des pages de redirection poete/victorjara et poete/victor_jara auront été créées automatiquement au passage offrant ainsi une plus grande liberté au visiteur et facilitant aux autres webmestres la création de liens vers la page du wiki.

Pages existantes
Le rédacteur devra utiliser l'action simplify_tags pour assurer une conversion s'il désire offrir une plus grande liberté au visiteur et faciliter aux autres webmestres la création de liens vers des pages existantes.

Cette petite opération ne devra être faite qu'une seule fois sauf cas particuliers (effacement ou renommage de pages, etc).
De toute manière, relancer l'opération plusieurs fois est tout au plus inutile mais est sans danger.

Pour le visiteur

Le visiteur introduit indifféremment
http://wiki.me.org/VíctorJara (avec accent)
ou
http://wiki.me.org/victorJARA (sans accent)
Il peut aussi introduire, par exemple :
http://wiki.me.org/Víctor_JARA (avec accent et underscore)

Pour un webmestre

Le webmester d'un autre site introduit, vers notre page, un lien comme par exemple:
http://wiki.me.org/Victor_Jara (sans accent, avec underscore)

Implémentation

régler l'apostrophe "d'Aquitaine" !!!
les 2 fonctions ...CreateRedirectPage()


Outre, bien entendu, l'ajout de l'action de mise à niveau simplify_tags (avec design OO), la version 9.12 modifie la fonction LoadPage() et l'éclate en deux fonctions: LoadPage() (un simple scheduler) et DoLoadPage() (qui correspond au LoadPage() des versions précédentes).
En outre 3 variables d'instance sont ajoutées pour gérer les regex
utilisées dans une nouvelle fonction: getStandardTag()
Enfin, les fonctions DoEventuallyCreateRedirectPage() et DoCreateRedirectPage() ont également été ajoutées.

Lors du passage à PHP5, ces fonctions seront revues (voir ma classe String), les 3 variables d'instances seront des public static, la fonction DoLoadPage() (qui n'est appellée que par LoadPage()) deviendra protected, etc.

Lorsqu'un visiteur introduit une URL, par exemple
http://wiki.me.org/Eléonore_d'Aquitaine (avec accent, underscore et apostrophe), LoadPage() procède comme suit :
  • s'il existe une page Eléonore_d'Aquitaine (avec un accent et underscore), cette page serait alors fournie même si par ailleurs une page Eleonore_d'Aquitaine (sans accent) existe aussi. La volonté du lecteur et du rédacteur est alors respectée.
  • si la page Eléonore_d'Aquitaine n'existe pas, il ne sera pas immédiatement proposé au visiteur de la créer (contrairement à ce qui se passe sur Wikipedia ou avec les versions ≤ 9.11 de Casiwi)
  • LoadPage() recherche s'il existe une page eleonore_d'aquitaine (à la case près) et, si elle existe, la fournit bien entendu.
  • à nouveau, en cas d'absence, il n'est pas proposé de créer cette page.
  • LoadPage() recherche finalement s'il existe une page eleonoredaquitaine et la fournit le cas échéant.
  • si cette page n'existe pas, LoadPage()
    • crée d'office et à tout hasard une page eleonore_d'aquitaine et une page eleonoredaquitaine qui font une redirection vers une éventuelle future page Eléonore_d'Aquitaine telle qu'orthographiée par le visiteur (et possiblement futur rédacteur).
    • propose au visiteur de créer la page Eléonore_d'Aquitaine nommée selon l'orthographe utilisée par le visiteur.