Ticket #896 (closed enhancement: fixed)
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: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: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: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
comment:13 Changed 15 years ago by xave
- Status changed from new to closed
- Resolution set to fixed
A voir si on ne peut pas faire un 2 en 1 avec le ticket #503