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

  [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

Reply #1 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

Reply #2 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

Reply #3 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

Reply #4 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

Reply #5 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

Reply #6 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

Reply #7 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 !

 
Page
  1. jShortener