Un lien interwiki permet de fabriquer simplement un lien vers un autre wiki, à l'aide d'un mot-clef, sans connaissance de son adresse physique.
Voici quelques exemples en illustration :
La syntaxe d'un lien interwiki est du type : [[Un_nom_de_site:une_valeur_de_requête]] soit :
- deux crochets ouvrant
- l'accronyme d'un site (voir sa définition ci-dessous)
- la valeur d'une requête : par exemple, le nom d'une page d'un wiki, l'identifiant d'un produit, le chapitre d'un ouvrage, etc.
Attention, sur WikiNi le nom de l'alias est sensible à la casse.
Pour cela il faut connaître l'acronyme du site wiki cible. Cet acronyme est défini dans le
fichier "interwiki.conf" situé à la racine du site. Chaque acronyme est défini de la manière suivante :
- le nom du site (qui peut être un nom non-wiki)
- suivi d'un espace
- suivi de l'URL de requête (attention : il ne s'agit pas de l'URL classique du site, mais d'une URL conduisant à une requête)
Quelques exemples :
Bible http://bible.gospelcom.net/bible?
Google http://www.google.com/search?q=
GoogleGroups http://groups.google.com/groups?q=
PhpWiki http://phpwiki.sourceforge.net/phpwiki/index.php?
RFC http://www.rfc.org.uk/cgi-bin/lookup.cgi?rfc=
WikiPedia http://www.wikipedia.com/wiki/wiki.phtml?title=
WikiNi http://www.wikini.net/wakka.php?wiki=
L'ensemble des alias disponibles sur
WikiNi.net se trouve à la page
ListeDesSitesInterWiki.
d'interwiki.conf dans le cvs.
Cette fonctionnalité est disponible sur de nombreux moteurs de wiki -- sans doute la majorité. On verra par exemple :
Il semble exister un consensus relatif sur la syntaxe du fichier interwiki. Les abbréviations utilisées sont également souvent les mêmes d'un moteur de wiki à l'autre. On verra :
Ailleurs
http://www.usemod.com/cgi-bin/mb.pl?InterWikiLinks
Autres formats ?
Pour l'affichage, je propose un truc plus fun que
UnWiki:UnePage (interwiki) comme par exemple
°UnWiki:UnePage° (il suffit de changer
wakka.php).
--
jexOm.
C'est ce qui avait plus ou moins à l'origine et le (interwiki) a été rajouté sans vraiment de discussion (ou alors je ne l'ai pas vu) lors d'une mise à jour d'optimisation de code. Après un temps d'adaptation j'avoue que maintenant je trouve cet affichage agréable : il permet d'identifier immédiatement ce type de lien bien particulier. --
DavidDelon
Moi j'aime bien la méthode avantages / inconvénients ;-) Pour la syntaxe UnWiki:UnePage (interwiki) :
Avantages :
- repérage facile des liens interwikis (pour tous les clients web)
- explicitation claire de la nature du lien
Inconvénients :
- la mention "(interwiki)" partage la même forme que le lien rendant sa lecture enigmatique par le débutant : il peut croire que (interwiki) fait partie du lien ; exemple si je parle de CraoWiki:Interwiki (interwiki) c'est un peu surprenant non ?
- la mention "(interwiki)" est longue et prend de la place
Question subsidiaires : pourquoi ne souligner que les liens interwiki ? Qu'ont-ils de si important ? Pourquoi ne pas souligner aussi les liens "(intrawiki)" et "(extrawiki)" (comme c'est d'ailleurs le cas sur certains moteur de wiki, à l'aide de symboles) ?
Je ne suis pas encore fixé sur tous ces problèmes mais au moins pourrions peut-être différencier la chaîne "(interwiki)" pour bien montrer qu'il s'agit d'une information éditoriale ?
Par exemples :
(Mais attention aux effets de bord : "(interwiki)" risque de devenir difficile à lire dans certaines circonstances.)
--
CharlesNepote
Les
WikiWikiWeb ont effectivement tous leur façon de traiter ce sujet. Voir par exemple les icones chez
SergeStinckwich.
Il y a effectivement trois types de liens :
- vers une page interne
- vers une page externe qui n'est pas un lien interwiki
- vers une page externe qui est un lien interwiki.
Je ne m'y connais pas trop en CSS, mais n'y aurait-il pas moyen de déléguer ça à la feuille de style ?
Pour revenir à "(interwiki)" : pour ma part, je trouve ça trop encombrant comme notation...
--
jexOm.
Oui il y a des solutions en CSS, en particulier :
La solution en CSS3 est particulièrement élégante puisqu'elle ne nécessite
aucune modification du code HTML ! (cf. exemples ci-dessous.)
On peut trouver des icônes :
Par ailleurs j'avais l'intention de lancer un appel sur la
liste CSS francophone pour trouver un
vrai graphiste capable de nous aider à améliorer tous ces aspects (pas seulement les problèmes de liens interwiki).
--
CharlesNepote
Voici un exemple de code CSS3, à insérer dans wakka.css, permettant d'obtenir une icône après le lien,
sans modification du code HTML :
a[href^="http:"] {
background: transparent url('http://i.a.cnn.net/cnn/.element/img/1.0/misc/icon.external.links.gif') 100% 100% no-repeat;
padding-right: 25px;
}
a[href^="http://votre-adresse.domaine"],
a[href^="http://localhost"] {
background: none;
padding: 0px;
}
Fonctionne parfaitement sur
MoZilla mais pas sur
InternetExplorer.
--
CharlesNepote
Est-ce que la syntaxe du fichier
interwiki.conf est figée dans le marbre ? Je me disais qu'on pourrait peut-être ajouter un troisième paramètre sur chaque ligne qui serait la classe CSS à choisir pour rendre le
<a href="..."> ... Ainsi, pour "personnaliser" un
WikiWikiWeb externe référençable par
LienInterWiki, il faudrait
- modifier la classe du lien dans interwiki.conf
- ajouter cette classe dans wakka.css
--
jexOm.
La syntaxe du fichier
interwiki.conf est globalement la même sur tous les moteurs de wiki. Pour ma part je ne tiens pas spécialement à nous marginaliser sur cet aspect là. Ce que tu propose est possible avec CSS3. (cf. mes exemples ci-dessus). --
CharlesNepote
- Pour ma part je l'ai un peu modifiée pour permettre l'insertion du tag n'importe où dans l'URL. J'ai fait cela en utilisant le symbole $ pour indiquer la position de l'insertion. Mon implémentation (voir en bas de page) est telle que toute ligne sans ce $ fonctionne toujours comme avant (ajout du tag à la fin). -- ProgFou
L'emplacement du fichier interwiki.conf pourrait t'il être un paramêtre? Ou serait t'il possible de définir dans wakkaconfig.php que c'est une page wiki qui contient ces liens? Les avantages que je perçois:
- On peut utiliser un fichier commun pour plusieurs wikini "voisins" qui souhaitent partager cette liste de liens préformatés... (ce qui est mon cas)
- On peut permettre aux utilisateurs néophites pour qui on a installé un wikini de modifier ce contenu en ligne
ha! je Vois qu'une proposition plus générale à été faite dans ce sens sur
ParametrerLeHeadDesDocumentsHTMLWikiNi
--
SimonDaron
- J'ai fait une proposition qui rejoint ta demande sur la page ConceptToutEstPage. Voir l'implémentation proposée ci-dessous. -- ProgFou
Proposition d'implémentation pour une configuration plus aisée
En ce qui me concerne, j'ai eu besoin de faire des liens "à la
InterWiki" mais qui ne concernaient pas des Wiki. J'ai donc légèrement amélioré (on dirait encore détourné) le système afin de répondre à mes besoins, tout en gardant une totale compatibilité avec le système existant. J'ai commencé par y ajouter la possibilité d'indiquer la position de l'insertion du
tag dans l'URL, via le symbole
$. Puis j'ai changé la procédure de chargement de la configuration
InterWiki afin de la récupérer depuis une page plutôt que depuis le fichier
interwiki.conf. J'ai également optimisé le code en ne faisant ce chargement que lorsqu'on accède à une page contenant un lien
InterWiki, plutôt que de le faire systématiquement pour chaque page lue.
Notes :
- le code ci-dessous remplace toute la section INTERWIKI STUFF
- remplacer var $interWiki = Array(); par var $interWiki; en début de classe Wiki
- supprimer l'appel $this->ReadInterWikiConfig(); dans la méthode Run de la classe Wiki
- les \ (backslash) devant les % n'ont été mis ici que pour éviter un problème d'affichage
- la page de configuration InterWiki s'appelle InterWikiConfig?
- exemple d'application possible : RFC http://www.faqs.org/rfcs/rfc$.html
<?php
// INTERWIKI STUFF
function ReadInterWikiConfig() {
$this->interWiki = Array();
if (!$page = $this->LoadPage('InterWikiConfig')) return;
$lines = explode("\n", $page['body']);
if (substr($lines[count($lines)-1], 1, 2) == "\%\%")
{
delete($lines[count($lines)-1]);
}
if (substr($lines[0], 1, 2) == "\%\%")
{
delete($lines[0]);
}
foreach ($lines as $line)
{
if ($line = trim($line))
{
list($wikiName, $wikiUrl) = explode(' ', $line);
$this->interWiki[$wikiName] = $wikiUrl;
}
}
}
function GetInterWikiUrl($name, $tag) {
$tag = urlencode($tag);
if (!isset($this->interWiki))
{
$this->ReadInterWikiConfig();
}
if (isset($this->interWiki[$name]))
{
if (strchr($this->interWiki[$name], '$'))
{
return str_replace('$', $tag, $this->interWiki[$name]);
}
return $this->interWiki[$name].$tag;
} else {
return 'http://'.$tag; //avoid xss by putting http:// in front of JavaScript:()
}
}
?>
--
ProgFou
Et les caractères non-alphanumériques ?
Je testais un peu la fonctionnalité pour voir, mais en fait les espaces ne fonctionnent pas, comme la plupart des caractères non-alphanumériques j'imagine... (je n'ai pas regardé les sources pour voir comment ça marche...) Par exemple si je veux proposer une recherche sur google de plusieurs mots, c'est impossible, il faut recopier le lien complet... par exemple:
Je propose de le permettre en utilisant les guillemets, comme ceci:
Google:"plusieurs mots" (ce qui ne fonctionne actuellement pas: Google:"plusieurs mots"), ou alors à la limite de permettre les carractères non alphabétiques utilisés fréquemment dans les urls, comme les
%, les
+ ou les
& (que les navigateurs remplaceront par un espace et ensuite un
+ ou un
%20 dans l'url finale, mais je ne suis pas certain que ce soit correct en XHTML 1.0...)
--
LordFarquaad
- Si Google était un Wiki ça se saurait ! ;-) La technique des LienInterWiki est faite à la base pour faire des liens entre les sites Wiki, même si je suis le premier à en abuser pour des liens vers l'Intranet de ma boîte... Ce qui explique que la syntaxe en partie droite reste assez stricte. Sinon, n'appelons plus cela des LienInterWiki mais plutôt des "liens paramétrés" ou quelque chose du genre, avec un cas particulier si la partie droite ressemble à un MotWiki, en gardant à l'esprit que cette définition peut varier beaucoup d'un Wiki à l'autre... -- ProgFou
- Google était juste un exemple qui me paraissait assez pertinant puisqu'il est dans la liste des alias interwiki de WikiNi par défaut. Mais cela est aussi valable pour des wiki comme WikiPedia, par exemple cette page (un peu prise au hasard): http://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Le_Bistro. Je pense que permettre des liens interwiki dans WikiNi ne devrait vraiment pas poser de problème, je vais faire quelques tests. Par contre pourquoi dis-tu qu'il faudrait faire un cas particulier lorsque la partie droite ressemble à un MotWiki ? La construction de l'url reste exactement la même... -- LordFarquaad
S'ajouter sur la liste...
Comment pourrais on centraliser la mise à jour de ce fichier afin que chacun puisse ajouter son site à la liste?
- -- Nicephore17
- J'imagine difficilement que l'on fasse une centralisation, sinon tous les WikiNi risquent de devenir dépendants d'un serveur qui gèrerait cette liste, mauvaise idée... Par contre rien n'empêche de créer une page contenant la liste actuelle, et chacun pourrait ajouter son site dedans. Au bout d'un moment cette liste serait recopiée dans interwiki.conf de WikiNi.net ainsi que dans la distribution... Mais peut-être faudrait-il alors un système d'approbation ? -- LordFarquaad
Autres suggestions
- Dans une prochaine version de WikiNi, serait il possible de définir dans wakka.config.php l'emplacement de interwiki.conf de manière à ce qu'il soit possible de pointer sur un autre site. Cela pourrait être intéressant dans le cadre d'un projet de partage d'interwiki.conf: au lieu de le mettre à jour régulièrement il serait possible de pointer sur un fichier mis à jour collaborativement.
- En fait pour faire cela il suffit d'éditer wakka.php et de chercher (vers la ligne 424) la function ReadInterWikiConfig(). Le nom du fichier est écrit là en toutes lettres, et comme il est ouvert avec file(), on peut placer là une url... A noter qu'à ce moment là il serait mieux de programmer une gestion de la mise en cache, d'une part pour réduire la bande passante (car sinon le fichier serait ouvert à chaque appel d'une page, ça revient cher...), et d'autre part pour parrer une indisponibilité du fichier distant... -- LordFarquaad
- L'interwiki.conf fourni de base dans la package de WikiNi... ne serait pas judicieux qu'il comporte au moins tous les sites inscrits comme utilisant le moteur WikiNi (SitesUtilisantWikini) -- Nicephore17
- Je n'ai pas l'impression que ce serait plus judicieux... ça allongerait fortement le fichier avec des liens dont on n'a, pour la plupart, pas besoin. En fait je trouve qu'il est préférable que chacun ajoute ceux qui lui plaisent à une liste relativement courte fournie de base, c'est à dire comme c'est le cas actuellement. Par contre je pense que cela pourrait être ajouté à l'InterfaceDAdministrationWikiNi, je vais d'ailleurs le proposer -- LordFarquaad
Requête...
le ficher Interwiki.conf de
WikiNi.net ne devrait-il pas contenir tout les sites utilisants
WikiNi de manière à ce qu'il soit plus facile pour les utilisateur de lier leur pages ici notamment dans le cas de rapport de bug ou de test de développement d'actions? --
Nicephore17
- Pas tous les sites car cela ne servirait vraiment pas, mais je pense que cela pourrait être utile aux habitués :-) Il serait bon de créer une page EvolutionDeLaListeInterWiki? pour y spécifier les liens qu'on aimerait voir ajoutés dans WikiNi de base et dans wikini.net -- LordFarquaad