- 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