Besoin
Une action intérressante pourrait être la redirection de page :
Par exemple dans la page LaPageDeTest, si on met l'action
{{redirect page="PagePrincipale"}} , et bien l'accès à la page LaPageDeTest renverait immediatement vers la page PagePrincipale. L'intêret est de pouvoir faire des "alias" de page, plusieurs page ayant le même nom mais affichant le même contenus. Une autre utilisation est le verouillage d'une page, elle est alors accessible uniquement en écriture jusqu'à ce que l'action en soit retirée.
J'ai écrit une tel action si elle vous intéresse....
--
GarfieldFr
Je ne vois aucun inconvénient à ajouter cette action mais je me questionne encore son utilité réelle.
- Peut-être dans le cas où une page a changé de nom pour un meilleur nom ; mais il existe une autre façon de gérer le problème : c'est un {{include}}. Bon OK, admettons.
- Je ne comprend pas ton histoire de "verouillage" : ce verrouillage est facile a obtenir à travers les ACL ("Éditer permissions psp parts").
- Il faut faire attention à ce que cette fonction soit accessible par tous les clients : un navigateur texte ou braille , par exemple, ne gère pas le renvoit par JavaScript...
Sur le principe je ne suis pas contre l'inclusion de l'action dans
WikiNi.
--
CharlesNepote
Au sujet de cette action, je suis un peu dubitatif, comme le souligne Charles, il est tout à fait possible d'utiliser une action {{include}} pour simuler ce comportement, en fait je voudrais évitér la multiplication de nouvelles actions sans exploiter au mieux les possibilités des actions existantes. Le débat est ouvert ... --
DavidDelon
Une utilisation : sur un site Wikini, j'ai mis une page qui redirige vers la page principale (
http://www.multiweb.be/GarfieldFr/wikini/ page
WikiPovray? ). Ca m'a permis d'avoir un "alias" de la page principale. Il est vrai que l'on aurais pu faire la même chose avec l'action {{include}} mais la différence est dans le titre ! Si la page "toto" inclus la page "titi", le titre affiché sera "toto" ! Avec une redirection, si "toto" est redirigée vers "titi", le titre affiché sera "titi". Pour le vérouillage, c'est vrai que l'on peut utilisé l'ACL de la page. L'idée de départ était de faire l'équivalent de la redirection au sens HTML.
--
GarfieldFr
Je vois vaguement une utilisation pour certains termes à l'orthographe variable, comme justement Persistance of Vision - qui devient
PoV?, POV,
PovRay?, POV-Ray... et certains Wiki voient donc deux pages apparaitre pour la même chose, avec du contenu trop élaboré pour être facilement reconciliable en une seule page.
Personnellement je pense que ces redirections automatiques ne sont pas nécessaires, car un simple lien FAQ : voir
FoireAuxQuestions? sur la page FAQ suffira en général. Les utilisateurs avancés d'un
WikiSite? prennent en général sur eux la réorganisation des pages quand ça en vaut la peine.
-- Gniarf
Une différence notable entre une inclusion et une redirection qui ne m'était pas apparu dés le début : lors d'une inclusion, le contenu de la page incluant une autre page peut être modifé, donc utilisé l'inclusion pour faire des alias de page ne me parait pas très sur car il risque d'apparaitre des divergence de contenu si c'est la page incluant une autre page qui est modifée. Par contre, une redirection
impose qu'une seule page est éditable et la cohérence de contenu est donc correct.
--
GarfieldFr
Synthèse des cas où cette action peut être utile :
- dans le cas où certains termes sont d'orthographe variable, comme justement Persistance of Vision - qui devient PoV?, POV, PovRay?, POV-Ray... et certains Wiki voient donc deux pages apparaitre pour la même chose, avec du contenu trop élaboré pour être facilement reconciliable en une seule page. [Gniarf]
- en cas de renommage d'une page (en fait le déplacement d'une page vers une autre page [
[
http://www.topsheung.com/ cell phone spare parts]]), l'ancien nom peut rediriger vers le nouveau nom ; ceci peut être particulièrement utile dans le cas où de très nombreuses pages pointe sur la page originelle, évitant ainsi de changer les liens dans chaque page
- redirection d'une page au nom wiki disgracieux vers une page au nom wiki plus lisible ; exemples : SpIp => Spip, DelPhine => Delphine, etc.
Typiquement, c'est à mon avis une action, qui même si elle ne semble pas être indispensable à tous le monde (y compris moi
ps3 parts) peut être incluse dans Wikini , pour les raisons suivantes :
- Elle est autonome (pas d'autres source de wikini impactés)
- Elle est légère
- Elle est déjà écrite et téstée.
- Elle ne pose pas de problème de sécurité (en tous cas j'en vois pas).
- D'autres raisons ?
(On peut même essayer de définir les critères qui font que l'on peut retenir ou écarter une nouvelle action dans
CriteresChoixAction? et ensuite évaluer une nouvelle proposition à l'aune de ces conditions, tout en restant souple bien sûr
Video Game Parts ).
--
DavidDelon
Ca veux dire que je la met dans le CVS ? Ou alors, on peut la proposer en "Addon" à
WikiNi dans une archive séparée, il faudrait alors prévoir une arborescence
AddOn? sur le CVS.
--
GarfieldFr
Si personne ne s'y oppose tu peux la mettre dans le CVS; a mon avis, pas besoin d'un
AddOn? pour ce type d'action. (Attends peut être 2 ou 3 jours pour laisser à tout le monde le temps de réagir) --
DavidDelon
Ok, je la mettrais en même temp que la coloration syntaxique Delphi --
GarfieldFr
Pour moi ça marche. --
CharlesNepote
Réalisation
Voici le code de l'action que je propose, il n'utilise pas de Javascript comme le pensait
CharlesNepote :
<?php
# Permet de faire une redirection vers une autre pages Wiki du site
#
# Paramètres : page : nom wiki de la page vers laquelle ont doit rediriger (obligatoire)
#
# exemple : {{redirect page="BacASable"}}
#
# copyrigth Eric Feldstein 2003
//recuperation du parametres
$redirPageName = $this->GetParameter("page");
if (empty($redirPageName)){
echo $this->Format("//Le paramètre \"page\" est manquant.//");
}else{
if (eregi("^".$redirPageName."$",$this->GetPageTag())){
echo $this->Format("//Impossible à une page de se rediriger vers elle même.//");
}else{
header("Location: wakka.php?wiki=$redirPageName");
exit;
}
}
?>
La même chose avec possibilité de débrayer la redirection pour modifier simplement la page et donc la redirection
Ca s'inspire de Wikipedia : pour afficher la page en debrayant la redirection, rajouter &redirect=no dans l'url, ca facilite la modif de la page (cliquer sur Editer cette page comme d'hab). Puis si la redirection n'est pas debrayee, une fois la redirection vers la destination effectuee, le titre de la page destination change : il est ajoute en plus "Redirection depuis la page MachinTruc" . Syntaxe :
{{redirect to="PageDestination"}}.
- fichier actions/redirect.php :
<?php
$dest = $this->GetParameter("to");
if (! $dest)
return;
if ($_REQUEST["redirect"] == "no")
{
echo "<b><i>[ Redirection active vers ".$this->ComposeLinkToPage($dest)." ]</i></b>\n";
return;
}
if ($dest == $this->GetPageTag())
{
echo "<b><i>[ Impossible de rediriger cette page vers elle-même ]</i></b>\n";
return;
}
// On enregistre dans la session la page d'ou on vient
$_SESSION["redirected_from"]=$this->GetPageTag();
// Redirection
header("Location: ".$this->config["base_url"].$dest);
exit;
?>
- fichier actions/header.php :
- Au niveau de l'affichage du titre de la page, j'ai rajouté ceci pour afficher la page source de la redirection :
<?php
if ($_SESSION["redirected_from"])
{
echo " <i>[ Redirection depuis <a href=\""
.$this->config["base_url"].$_SESSION["redirected_from"]
."&redirect=no\">".$_SESSION["redirected_from"]."</a> ]</i>\n";
}
?>
- fichier wakka.php :
- Juste après le switch dans la méthode Run, rajouter :
if ($this->GetPageTag() != $_SESSION["redirected_from"])
unset ($_SESSION["redirected_from"]);
--
DavidDecotigny
L'idée est bonne, mais je vois un inconvenient : l'action n'est plus modulaire car il faut modifier le corps de
WikiNi. Pour le message indiquant la redirection, il est très possible de faire une setmessage pour avoir une boite de dialogue qui s'ouvre lors de l'affichage de la page destination. Cela evite de modifier le fichier action/header.php et le fichier wakka.php car le message est effacé après sont affichage. Mais je n'avais pas trouvé cela très séduisant d'un point de vu graphique. --
GarfieldFr
Il est très possible de ne pas modifier le wakka.php : il suffit de rajouter le "unset(...)" juste après le
echo "redirection depuis..." dans le header.php. Avantage : ne modifie pas le moteur de rendu. Inconvénient : on ne peut plus déterminer si on est dans une redirection ou pas une fois qu'on a passé le header.php (note que perso je ne me sers pas de cette connaissance). Pour le header.php, il me semble qu'une des premieres choses qu'on fait tres couramment quand on installe un wiki, c'est de personnaliser le header.php et le footer.php.
--
DavidDecotigny
Pour le message "redirection depuis ...", bonne idée ! Par contre pour le &redirect=no je ne suis pas convaincu de son utilité ... rajouter /edit à l'url suffit non ? --
DavidDelon
A
DavidDelon : Oui, tout à fait David, cela suffit. Surtout que le paramètre &redirect=no implique une modification de la page appelante et donc une nouvelle version juste pour modifier la page appelée.
A
DavidDecotigny : Je suis pas d'accord, en principe, la première chose que tu fais quand tu installe
WikiNi est de modifier les fichiers CSS, pas le header.php. Par contre, je me demande si il ne faudrait pas découper en 2 le fichier header.php comme je l'avais fait pour mes tests de thèmes graphiques. Actuellement, dans le header.php il y a une partie purement fonctionnel et une partie qui est juste du "designe". --
GarfieldFr