- 1
[Opened] jShortener
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
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
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
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
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
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
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
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