- 1
[Opened] [résolu]Surcharge fonctionnelle du module jcommunity
Posted by willy on 04/20/2011 15:35
Salut,
J'utilise jelix 1.2 et le module jcommunity.
Dans mon projet, j'ai actuellement deux modules : jcommunity et le module par défaut créé automatiquement lors de la création de mon projet en ligne de commande.
J'aimerai surchargé le formulaire d'authentification en y ajoutant des champs supplémentaires parmi lesqueles des listes déroulantes. j'aimerai initialiser ces champs à l'ouverture de la fenêtre. Pour cela, j'ai besoin d'étendre la fonctionnalité d'initlisation dont l'action est index du controleur loginCtrl de jcommunity.
Par ailleurs, j'aimerai également étendre la fonctionnalité d'authentification. car j'aimerai effectuer quelques traitements juste après connexion réussie de l'utilisateur.
J'ai lu le lien suivant : https://bitbucket.org/laurentj/jcommunity/wiki/extending_jcommunity
J'ai également lu dans la documentation qu'il faut déclarer un listener et le créer.
Mais ce que je ne comprends pas c'est où faut-il le faire ? Est-ce dans mon module par défaut que je dois créer un fichier events.xml et la classe qui doit hériter de jEventListener ?
Je peine à comprendre où les placer et même le fonctionnement d'extension des fonctionnalités d'un module.
Aidez-moi à comprendre s'il vous plait !
[Opened] Surcharge fonctionnelle du module jcommunity
Posted by foxmask on 04/20/2011 17:56
Bonjour,
- le fichier events.xml se met dans le dossier de son module.
- ensuite on créé bel et bien une classe etendant jEventListener. Les methodes de cette classes sont les noms des "events" décrit dans notre events.xml
par exemple de listener authhavefnubb.listener.php et de fichiers events.xml
ps : le titre n'est pas adequate ; surcharge signifie remplacement ; là on étend les fonctionnalité :)
@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !
[Opened] Surcharge fonctionnelle du module jcommunity
Posted by laurentj on 04/21/2011 09:50
Bonjour,
tu crée le listener et le event.xml dans ton module à toi. Lire la doc sur le système d’événement.
[Opened] Surcharge fonctionnelle du module jcommunity
Posted by willy on 04/21/2011 12:08
Merci pour toutes ces réponses.
J'ai créé le fichier event.xml à la racine par défaut.
Mais je voudrai savoir comment donner les noms aux événements dans la balise <event name="" />
Y'a-t-il une règle pour donner les noms des événements? Si oui comment le fait-on de façon générale ?
[Opened] Surcharge fonctionnelle du module jcommunity
Posted by laurentj on 04/21/2011 12:20
tu indiques le nom de l’événement que tu écoutes. Si tu donnes n'importe quoi, ton listener ne sera pas appelé.
[Opened] Surcharge fonctionnelle du module jcommunity
Posted by willy on 04/25/2011 11:52
J'ai trois modules : jcommunity, logapp et login.
Dans le module logapp, j'ai créé le fichier events.xml dont le contenu est le suivant :
<?xml version="1.0" encoding="utf-8"?> <events xmlns="http://jelix.org/ns/events/1.0"> <code> <listener name="authulog"> <event name="AuthBeforeLogin" /> </listener></events> </code>
Dans le répertoire classes du module logapp, j'ai créé le fichier authulog.listener.php. Cette classe contient la fonction onAuthBeforeLogin.
Mais lorsque la page de connexion s'affiche, je saisis le compte, et je valide, j'ai l'erreur bloquante suivante :
Fatal error: require_once() function.require: Failed opening required 'C:\www\jelix\logapp\modules/login/classes/authulog.listener.php' (include_path='.;C:\xampp\php\PEAR') in C:\www\jelix\lib\jelix\events\jEvent.class.php on line 181
Lorsque j'ai vu cette erreur, je me suis dit qu'il fallait peut-être déclarer dans le module login les mêmes fichiers que dans le module logapp (events.xml et authulog.listener.php). Mais lorsque je le fais, j'ai une autre erreur bloquante selon laquelle on ne peut pas redéclarer la classe.
Je ne comprends pas et je ne sais plus quoi faire.
SVP aidez-moi à résoudre ce soucis afin de faire fonctionner mon extension fonctionnelle.
[Opened] Surcharge fonctionnelle du module jcommunity
Posted by foxmask on 04/25/2011 12:08
le nom du fichier est faux ou le nom de la classe dans le fichier ne colle pas a la classe attendue
@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !
[Opened] Surcharge fonctionnelle du module jcommunity
Posted by willy on 04/25/2011 13:36
Je ne comprends pas. Je ne vois pas où l'erreur serait dans le nom du fichier ou le nom de la classe.
Dans le fichier modules/logapp/event.xml, j'ai <listener name="authulog">. Et dans le répertoire, modules/logapp/classes, le nom du fichier est authulog.listener.php. Il me semble que ce nom est correct d'après ce que j'ai lu dans la documentation.
Dans le fichier modules/logapp/classes/authulog.listener.php, j'ai par exemple ceci :
<codeclass authulogListener extends jEventListener{
function onAuthBeforeLogin ($event) { }
}
</code>Là aussi je ne vois pas ce qui est incorrect quant au nom de la classe.
Mais dans l'erreur que j'obtiens, la classe est recherchée dans un autre module (login) et non dans le module logapp dans lequel elle est définie. Je dis cela par rapport à l'erreur :
... Failed opening required 'C:\www\jelix\logapp\modules/login/classes/authulog.listener.php ...
D'après cette erreur, la classe est recherchée dans le module login et non dans le module logapp. Pourquoi cela ? Y a-t-il une configuration à faire pour que ça marche ? Je ne parviens pas à résoudre le problème. SVP, aidez-moi !
[Opened] Surcharge fonctionnelle du module jcommunity
Posted by foxmask on 04/25/2011 14:12
JEvent parcourt les dossiers des modules a la recherche du fichier events.xml et quand il le trouve , en fonction du listener, recherche le fichier du même nom. Donc vous avez mis un fichier events.xml dans le module login mais vous n'avez pas le listener dans le dossier classe. Donc il vous faut retirer ce events.xml ou tout du moins ce listener du events.xml
ps : le svo aidez moi n'est pas utile ;)
@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !
[Opened] Surcharge fonctionnelle du module jcommunity
Posted by willy on 04/25/2011 17:13
Merci, c'est résolu.
j'avais la même erreur bien qu'il n'y ait pas de fichier events.xml et le listener dans le module login. j'ai vidé le répertoire temp, particulièrement le contenu du répertoire ayant le même nom que celui d projet.
Puis j'ai testé à nouveau et ça marche.
- 1