Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [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 smile


@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 !

 
Page
  1. jShortener