Vous n'êtes pas identifié(e).
Pour le module zdiaporama.
Ce module a besoin de fichiers dispatchés en /deco, /tinymce/plugins/zdiaporama et /zite/module.
Ce module a également besoin de quelques modifs dans /zite/tinymce.php.
J'aimerai utiliser les fonctions On() et Off() de la classe Tmodule (et dans le même temps m'initier aux joies de l'héritage en php !) pour faire et défaire toutes ces modifs.
Questions :
1- Puisque je dois réécrire ces fonctions dans ma classe Tzdiaporama, quand dois-je faire un appel à parent::On() ou parent::Off() ? Dés le début de ma fonction, ou au contraire juste à la fin? Je précise que si mon script devait échouer (je vais devoir parser tinymce.php...), j'aimerai que l'activation/désactivation du module s'interrompe, et que je puisse annuler les modifs.
2- Si j'installe une nouvelle version de mon module par dessus l'ancienne, est-ce que ces fonctions sont appelées? Ou s'agit-il d'un bête écrasement des fichiers?
3- Y a-t-il un moyen de supprimer les fichiers dans /deco et dans /tinymce/plugins au moment de la suppression du module? Si je ne m'abuse, la fonction Off() s'exécute également lors d'une désactivation, et je ne veux pas supprimer les fichiers à ce moment là.
Merci
Hors ligne
J'aimerai utiliser les fonctions On() et Off() de la classe Tmodule (et dans le même temps m'initier aux joies de l'héritage en php !) pour faire et défaire toutes ces modifs.
Bonne idée
Questions :
1- Puisque je dois réécrire ces fonctions dans ma classe Tzdiaporama, quand dois-je faire un appel à parent::On() ou parent::Off() ? Dés le début de ma fonction, ou au contraire juste à la fin? Je précise que si mon script devait échouer (je vais devoir parser tinymce.php...), j'aimerai que l'activation/désactivation du module s'interrompe, et que je puisse annuler les modifs.
La réponse dépend fortement de comment tu vas organiser les choses: ziteplus n'impose rien, tu peux l'appeler avant ou après, l'important c'est de l'appeler
Il faut te poser les bonnes questions: par exemple, si ton module est succeptible d'afficher un message d'erreur provenant du fichier .ini alors il faut appeler Le On() parent en début de ta fonction On() et le Off() Parent à la fin de ta fonction dérivé Off().
Et surtout penser à intercepter les erreurs si tu ton code peut en générer.
Après, si une erreur survient, pour défaire les changements, tu peux appeler le Off() à la fin de ta procédure On();
2- Si j'installe une nouvelle version de mon module par dessus l'ancienne, est-ce que ces fonctions sont appelées? Ou s'agit-il d'un bête écrasement des fichiers?
Ces fonctions ne sont pas appelées, car le module ne change pas d'état (activé ou désactivé).
C'est le module d'installation (selectmodule) qui devrait appeler une fonction de mise à jour de module ... mais pour l'instant il ne le fait pas
3- Y a-t-il un moyen de supprimer les fichiers dans /deco et dans /tinymce/plugins au moment de la suppression du module? Si je ne m'abuse, la fonction Off() s'exécute également lors d'une désactivation, et je ne veux pas supprimer les fichiers à ce moment là.
C'est le module d'installation (selectmodule) qui se charge de supprimer les fichiers.
Pour l'instant il ne supprime que les fichiers ini et php du module à désinstaller.
a+
Jean-Paul
Hors ligne
Merci pour ces éclaircissements.
Y a-t-il un moyen, dans la fonction Off(), de s'avoir si il s'agit d'une suppression ou d'une désactivation?
Si non, je pense qu'il serait intéressant de faire remonter cette info, par exemple via une variable membre (pour une future version de ziteplus?).
A+
Adrien
Hors ligne
Autre question : Faut-il renvoyer une erreur si notre fonction On() échoue? Si oui, comment? Cette fonction ne renvoie rien, et je n'ai rien vu de tel dans le module selectmodule...
Hors ligne
Y a-t-il un moyen, dans la fonction Off(), de s'avoir si il s'agit d'une suppression ou d'une désactivation?
Au moment ou cette fonction est appelée, il s'agit toujours d'une désactivation
C'est le module "selectmodule" qui se charge des installations/suppression de module.
Si non, je pense qu'il serait intéressant de faire remonter cette info, par exemple via une variable membre (pour une future version de ziteplus?).
non non, car ce n'est pas le rôle de la fonction Off();
De la même façon d'ailleurs que la fonction On() n'est pas appelée à l'installation du module
Je me suis posé, à l'époque de la création des modules, la question de savoir si des membres Install() et Remove() seraient utiles ... et cela ne m'a pas paru LA priorité a implémenter
Attention, je ne dis pas que c'est inutile ...
Mais, si cela est implémenté dans une prochaine version de ZitePLUS, je pense que cela le sera sous cette forme (install et remove)
Autre question : Faut-il renvoyer une erreur si notre fonction On() échoue? Si oui, comment? Cette fonction ne renvoie rien, et je n'ai rien vu de tel dans le module selectmodule...
Effectivement, car les fonctions On() de ZitePLUS n'échoue jamais ... elles sont programmées pour la réussite
Plus sérieusement, une fonction On() ne doit pas échouer !
Si ta fonction peut provoquer des erreurs fatales au script php, il faut les intercepter, les gérer et si l'activation n'est pas possible => ne pas activer le module et le signaler à l'utilisateur par la fonction self::$cms->msgShow() par exemple.
De la même façon, il n'est pas interdit d'activer un module déjà activé ou de désactiver un module inactif.
a+
Jean-Paul
Hors ligne
Super_chemist a écrit :Si non, je pense qu'il serait intéressant de faire remonter cette info, par exemple via une variable membre (pour une future version de ziteplus?).
non non, car ce n'est pas le rôle de la fonction Off();
De la même façon d'ailleurs que la fonction On() n'est pas appelée à l'installation du moduleJe me suis posé, à l'époque de la création des modules, la question de savoir si des membres Install() et Remove() seraient utiles ... et cela ne m'a pas paru LA priorité a implémenter
Attention, je ne dis pas que c'est inutile ...
Mais, si cela est implémenté dans une prochaine version de ZitePLUS, je pense que cela le sera sous cette forme (install et remove)
En fait, quand on installe un module (en particulier le zdiaporama.zip que nous massacrons snypi et moi) qui contient d'autres fichiers que les classiques module.php et module.ini, tous ces fichiers sont copiés à leur place dans l'arborescence (par exemple dans le dossier /tinymce).
Le problème est que ce comportement (bien pratique) n'a pas de pendant "suppression", et les fichiers restent quand on veux supprimer le module (et ne parlons pas d'une mise à jour du module!)...
Super_chemist a écrit :Autre question : Faut-il renvoyer une erreur si notre fonction On() échoue? Si oui, comment? Cette fonction ne renvoie rien, et je n'ai rien vu de tel dans le module selectmodule...
Effectivement, car les fonctions On() de ZitePLUS n'échoue jamais ... elles sont programmées pour la réussite
Plus sérieusement, une fonction On() ne doit pas échouer !
Si ta fonction peut provoquer des erreurs fatales au script php, il faut les intercepter, les gérer et si l'activation n'est pas possible => ne pas activer le module et le signaler à l'utilisateur par la fonction self::$cms->msgShow() par exemple.
De la même façon, il n'est pas interdit d'activer un module déjà activé ou de désactiver un module inactif.
Par "ne pas activer le module", tu veux dire "ne pas exécuter parent:: On() ou exécuter parent:: On puis parent:: Off", c'est bien ça?
Hors ligne