Dotclear

Ticket #896 (closed enhancement: fixed)

Opened 16 years ago

Last modified 15 years ago

Ajout de behaviors sur l'attribut $args pour chaque urlHandler

Reported by: Tomtom33 Owned by: xave
Priority: normal Milestone: 2.2
Component: module:core Version: 2.1
Severity: normal Keywords:
Cc:

Description

Lors du développement de pageMaker (pour la pagination des billets + commentaires), j'ai du redéfinir l'handler post pour matcher les paramètres passés dans l'url. Je développe aussi en ce moment un plugin pour faire des filtres sur n'importe quel type de liste de billets. Le problème, c'est que pour chaque type, il faut que je redéfinisse le handler associé.

Il suffirai d'ajouter un behavior avant l'entrée de chaque handler, permettant de toucher au paramètre $args, pour ne pas avoir à faire ça mais récupérer correctement les données puis effacer ce qu'il faut du $args.

Change History

comment:1 Changed 16 years ago by Tomtom33

A voir si on ne peut pas faire un 2 en 1 avec le ticket #503

comment:2 Changed 15 years ago by Tomtom33

Je reviens à la charge sur ce ticket qui me serait trèèèèès favorable :)

Après avoir regardé plus en détail, il suffirait de surcharger la méthode getDocument() de class.url.handler.php dans lib.url.handler.php afin d'y ajouter un appel à un behavior après la ligne

$this->getArgs($part,$type,$args);

Qu'est ce vous en pensez?

comment:3 Changed 15 years ago by xave

Pour le moment, j'en pense surtout que je ne trouve pas ton fichier, et je ne trouve pas cette ligne là dans celui que j'ai trouvé dont le nom ressemble ... (mais il est tard)

comment:4 Changed 15 years ago by Tomtom33

Je me suis basé sur la branche bazar, révision 3049. Je parle du fichier /inc/clearbricks/url.handler/class.url.handler.php. La fonction getDocument est à la ligne 75. Je proposais de copier cette méthode dans le fichier /inc/public/lib.url.handler.php pour y ajouter des behaviors afin de pouvoir agir sur le $args passé aux handlers.

comment:5 Changed 15 years ago by xave

Un rapport avec [882] ?

comment:6 Changed 15 years ago by Tomtom33

Nop, il parte du post_url des billets. Moi je te parle de pouvoir modifier à la volée les arguments passés à chaque urlhandler et pour ça, il faudrait simplement copier la fonction getDocument() dans /inc/public/lib.url.handler.php et y ajouter un behavior

comment:7 Changed 15 years ago by xave

Euh, je voulais dire #882, bien entendu...

comment:8 Changed 15 years ago by Tomtom33

Yep, c'est bien ce que je me suis dit.

Bon par contre, petit problème car la classe dcUrlHandlers n'étend pas la classe urlHandler. Est-ce voulu? Est-ce que je peux l'étendre pour surcharger la fonction getDocument()

comment:9 Changed 15 years ago by xave

Ah ben voilà. Au moment où j'allais te donner le feu vert, tu me poses une autre question que je ne comprends pas. Ça fait quoi comme différence ?

comment:10 Changed 15 years ago by Tomtom33

Rien si ce n'est que les méthodes non statiques de la classe dcUrlHandlers seront maintenant accessible via l'objet $core->url

Je viens de faire le test en local et tout passe bien, je récupère correctement le $args et $type via le behavior mais... même si je change les valeurs dans le behavior, elles ne sont pas affectées au retour (donc dans getDocument, après l'appel du behavior). Or les variables sont passées en référence pourtant. J'ai loupé un truc?

comment:11 Changed 15 years ago by xave

Je ne peux pas t'aider sans voir ta modif.

comment:12 Changed 15 years ago by Tomtom33

(In [3121]) Added behavior urlHandlerGetArgsDocument to playing with URL args, addresses #896

comment:13 Changed 15 years ago by xave

  • Status changed from new to closed
  • Resolution set to fixed

(In [3123]) Merged from Bazar: Added behavior urlHandlerGetArgsDocument to playing with URL args, closes #896.

Note: See TracTickets for help on using tickets.

Sites map