- 1
[Opened] jShortener
Posted by foxmask on 07/05/2011 07:32
Bonjour,
je suis entrain de finir un racourcisseur d'url mais j'ai un soucis conceptuel.
qd j'ai une url
- http://localhost/a23EfTV pour obtenir la "longue" url
et
- http://localhost/add pour ajouter une longue url
jelix ne sait pas distinguer l'action que j'ai mis dans l'urls.xml et le parmètre url
vala mon suburls
<suburls xmlns="http://jelix.org/ns/suburls/1.0">
<code>
<url pathinfo="/:shorturl" action="default:index">
<param name="shorturl"/>
</url>
<url pathinfo="/add" action="default:addShortener"/>
</suburls>
</code>
meme en mettant un pathinfo comme ceci
<code>
<url pathinfo="/add/short" action="default:addShortener"/>
</code>
la conséquence de tout cela c'est que j'ai des redirections infinies car ma methode index renvoi à l'action add qd mon url est vide mais comme le moteur d'url, ne sait pas distinguer /add et /foobar, renvoi à index qui renvoi à add et ainsi de suite
<code>
function index() {
$urlShort = $this->param('shorturl');
if ($urlShort != '') {
...
}
else {
$rep = $this->getResponse('redirect');
$rep->action = 'addShortener';
return $rep;
}
}
</code>
Dois-je en passer par un urlHandler maison ?
j'ai fait un test
<code>
<url handler="jshortener~jshortener" module="jshortener" action="xxx" />
</code>
mais a-t-on un urlHandler par action ??? ou est-ce un urlHandler unique et donc une action unique aussi pour le coup ?
@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !
[Opened] jShortener
Posted by Shagshag on 07/05/2011 11:03
Salut,
Pourquoi ne pas faire ?
<code>
function index() {
$urlShort = $this->param('shorturl');
if (($urlShort == 'add') || ($urlShort == '')) {
$this->addShortener();
}
else {
$this->redirectTo($urlShort);
}
}
</code>
[Opened] jShortener
Posted by foxmask on 07/05/2011 12:38
Parce que cela produit ceci
response is missing (action jshortener~default:index@classic)
bon en meme temps je me heurte à un bins, dans
<code>
if ($urlShort != '') {
...
}
</code>
je comptais faire un header('location :xxxxxx'); mais je me rends compte que j'ai le meme pb que pour le this->addShortener et si ce je un $rep = $this->getResponse('html'); ; le header() est courtcircuité.
Va falloir que je fasse un plugin coord je sens...
@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !
[Opened] jShortener
Posted by Shagshag on 07/05/2011 12:42
Plutôt dans ce cas:
<code>
function index() {
$urlShort = $this->param('shorturl');
if (($urlShort == 'add') || ($urlShort == '')) {
return $this->addShortener();
}
else {
return $this->redirectTo($urlShort);
}
}
</code>
[Opened] jShortener
Posted by foxmask on 07/05/2011 16:19
en fait ca marche mais c'est reculer pour mieux sauter ... dans une autre boucle.
dans addShortener si j'ai un pb lors de la validation du form, je fais un jMessage::add pour prevenir l'utilisateur + $rep->action = 'index' .... et comme l'url contient est de nouveau vide ...
@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !
[Opened] jShortener
Posted by foxmask on 07/06/2011 00:27
pour arreter de perdre du temps là dessus j'ai fait un path pare action et basta pour le casse tete.
ca donne donc ca https://bitbucket.org/foxmask/depot_de_miel/src//modules-jelix-1.3/jshortener/
@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !
[Opened] jShortener
Posted by foxmask on 07/06/2011 23:15
Après moult tests et un bon coup de main de Loïc et Brice j'ai pu mettre la touche finale au module qui marche nickel à présent.
Suffit de faire un
php cmd.php installmodule jshortener
et hop :)
@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !
[Opened] jShortener
Posted by foxmask on 07/08/2011 21:28
Je l'ai finalement mis sur son propre dépot ici https://bitbucket.org/foxmask/jshortener
@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !
- 1

