dans la continuité de mon précédent post, je cherche à savoir comment faire pour avoir une liste de choix déroulante à la place du champ title sur une commande de type action/message
j’ai donc une cmd action/message, nommée ‹ ma super commande ›
lorsque je créé un scénario et que je sélectionne cette commande ‹ ma super commande › , les champs ‹ title › et ‹ message › s’affichent (classique), mais j’aimerais que ‹ title › soit une liste déroulante avec un ensemble de valeur qui aurait déjà été défini dans les param de la cmd.
Salut,
tu peux faire un « template » pour la comande pour le scénario je pense avec ton propre html pour ta commande, faut que je vérifie comment ca fonctionnait, je n’ai jamais vmt utilisé ca et je ne sais même pas si cela à passé la v4 ou pas, je suppose que oui.
Mais c’est beaucoup plus de code à maintenir que le title_possibility_list, faut voir la vrai valeur ajoutée juste pour un scénario ou si tu expliques bien dans la doc les gens devraient pouvoir s’en sortir IMHO
Non, mais on se fera un plaisir des les renvoyer dessus quand ils poseront la question
Donc pour faire un template pour la commande pour un scénario, il faut implémenter la fonction toHtml sur la commande, celle ci sera appelée chaque fois que la commande doit être affichée.
donc faut commencer par tester si on est dans le cas du scénario ou pas puis coder les replace etc
s’inspirer de cmd::toHtml() du core et du template du core ici core\template\scenario\cmd.action.message.default.html
public function toHtml($_version = 'dashboard', $_options = '') {
$_version = jeedom::versionAlias($_version);
if ($_version != 'scenario') return parent::toHtml(); // pour les view & dashboard
...
}
edit: attention que s’il y a existe une méthode toHtml par défaut les utilisateurs ne pourront plus choisir le template de la commande (même pour dashboard et mobile)
il faut penser à définir $_widgetPossibility en propriété de la class cmd;
par exemple:
je suppose (mais je suis curieux de la réponse): a savoir que si tu fais ton propre template tu es libre de rajouter d’autres champs comme on voit qui vont arriver dans le array $_options que donc tu peux gérer dans ton code cmd::execute du plugin après mais franchement je ne conseille pas du tout de le faire car alors tu casses interopérabilité avec les autres plugins gérant les messages: tous les plugins ayant des commandes messages gèrent title & message, notamment ceux permettant d’organiser les flow de notifications comme notification manager ou notification queue.
Donc si plusieurs champs c’est mieux de les « serialiser » dans le title sous forme key=value par exemple ainsi cela peut fonctionner en mode « dégradé » => l’utilisateur pourra toujours formater son title comme attendu par le plugin même s’il n’a pas le bon template affiché
je suis preneur aussi de ton code @Mips. J’utilise aussi la méthode @Thibaut_T.
je l’ai fait dans le #plugin-freebox_os pour uniquement les scénarios. C’est peut-être pas la bonne méthode c’est peut-être l’occasion que je le mette correct
J’avais pas mis le sujet en surveillé. Erreur de ma part.
Alors ma méthode était d’overide une fonction de la class cmd. Cela permet de revoyez du code HTML différents au scénario et donc de faire a peux prêt ce que tu veux.
Je pense pas que sa soit la méthode la plus propre.
Mais c’est la seul que j’ai trouvé.
Elle a également un petit défaut, c’est la charge de travail pour la rendre compatible avec la sauvegarde des scénarios.
PS : je vais regarder dans les plugin de @Mips pour voir comment il faut et savoir si cela peux être mieux.
Donc c’est presque la même technique que mips mais je pleure a chaque fois que je dois en faire
Pas de soucis @Mips l’essentiel c’est que l on arrive à trouver qq chose de correct
Merci de ton retour @Thibaut_T Quand tu as trouvé la solution
Bonne journée