From b3271b9aa47f8bf1e787add69c23bccebbc088b3 Mon Sep 17 00:00:00 2001 From: Jenkins Date: Wed, 5 Mar 2025 05:46:40 +0000 Subject: [PATCH] [Jenkins] Updated documentation --- en_US/dev/core4.0.md | 2 +- en_US/dev/core4.1.md | 2 +- en_US/dev/core4.2.md | 2 +- en_US/dev/daemon_plugin.md | 8 +- en_US/dev/documentation_plugin.md | 4 +- en_US/dev/plugin_template.md | 78 ++--- en_US/dev/publication_plugin.md | 2 +- en_US/dev/tutorial_plugin.md | 122 +++---- en_US/dev/widget_plugin.md | 30 +- fr_FR/dev/i18n/en_US.json | 514 +++++++++++++++--------------- 10 files changed, 382 insertions(+), 382 deletions(-) diff --git a/en_US/dev/core4.0.md b/en_US/dev/core4.0.md index f96d6c32e30..cddd30b6fa6 100644 --- a/en_US/dev/core4.0.md +++ b/en_US/dev/core4.0.md @@ -74,7 +74,7 @@ - : - : - : -- . : ::::all() +- .php : ::::all() - . diff --git a/en_US/dev/core4.1.md b/en_US/dev/core4.1.md index e6c56cc3687..15101814b07 100644 --- a/en_US/dev/core4.1.md +++ b/en_US/dev/core4.1.md @@ -24,7 +24,7 @@ En v4.1 l'affichage de la sélection de l'objet parent d'un équipement a été revu et unifié. La liste est indentée en fonction du parent, et ordonnée comme dans le menu **Accueil → Dashboard**, tel que définit dans **Outils → Objets**, Vue d'ensemble. -Pour avoir la même logique dans les plugins, fichier plugindesktopphpplugin. : +Pour avoir la même logique dans les plugins, fichier plugindesktopphpplugin.php : ````php ' @@ -305,12 +305,12 @@ Dernier point: un exemple plus complet avec type et sous-type de commande : $('#table_cmd tbody').append(tr) $('#table_cmd tbody tr:last').setValues(_cmd, '.cmdAttr') - (.configuration.requestType)) { + if (.configuration.requestType)) { $('#table_cmd tbody tr:last .cmdAttr[data-l1key=configuration][data-l2key=requestType]').value(init(_cmd.configuration.requestType)) $('#table_cmd tbody tr:last .cmdAttr[data-l1key=configuration][data-l2key=requestType]').trigger('change') } - (.type)) { + if (.type)) { $('#table_cmd tbody tr:last .cmdAttr[data-l1key=type]').value(init(_cmd.type)) } jeedom.cmd.changeType($('#table_cmd tbody tr:last'), init(_cmd.subType)) @@ -330,17 +330,17 @@ Dernier point: un exemple plus complet avec type et sous-type de commande : - ``saveEqLogic`` : ````php - + ```` Le premier argument donne le dossier dans lequel le trouver (attention c'est le dossier père du dossier JS), le deuxième le nom de votre javascript, le troisième indique à Jeedom que c'est un fichier et le dernier dans quel plugin il se trouve. ## CSS -Ce dossier contient vos fichiers CSS (il ne devrait pas être trop utilisé) , vo comment les inclure sur votre page : +Ce dossier contient vos fichiers CSS (il ne devrait pas être trop utilisé) , vohere comment les inclure sur votre page : ````php - + ```` . @@ -357,11 +357,11 @@ $('#md_modal').dialog({title: "{{Classe du périphérique}}"}).load('index.php?v La première ligne permet de mettre un titre à votre modal -La deuxième ligne charge votre modal et l'affichage. : plugin, l' de votre plugin, modal, le nom de votre modal sans le et ensuite les paramètres que vous voulez lui passer +La deuxième ligne charge votre modal et l'affichage. : plugin, l' de votre plugin, modal, le nom de votre modal sans le php et ensuite les paramètres que vous voulez lui passer ## API JS -Ce n'est pas un dossier mais dans les dernières versions de Jeedom celui-ci offre au développeur toute une api javascript (cela évite d'écrire des appels dans tous les sens). J'essayerai de faire un article pour expliquer les différentes fonctionnalités mais vous pouvez déjà trouver le code . +Ce n'est pas un dossier mais dans les dernières versions de Jeedom celui-ci offre au développeur toute une api javascript (cela évite d'écrire des appels dans tous les sens). J'essayerai de faire un article pour expliquer les différentes fonctionnalités mais vous pouvez déjà trouver le code here. Voilà pour les détails du . Je me doute qu'il n'est pas des plus complets (j'essayerai de le compléter en fonction des différentes demandes reçues) mais j'espère que grâce à lui vous pourrez commencer à faire des plugins pour Jeedom. @@ -425,7 +425,7 @@ $('body').delegate('.helpSelectCron','click',function() { - (!')) { + if (!')) { } @@ -448,7 +448,7 @@ Dossier très important, c'est le moteur de votre plugin. C'est là que viennent - ```` - ``Cmd`` -La première devant hériter de la classe eqLogic et la deuxième de cmd. Vo un template : +La première devant hériter de la classe eqLogic et la deuxième de cmd. Vohere un template : ````php getEqLogic() @@ -527,36 +527,36 @@ class plugin_idCmd extends cmd { assez simple mais complet, le principe est le suivant, si la commande est une action ou une info (mais pas en événement seulement et que son est dépassé) alors jeedom appelle cette méthode. -Dans notre exemple c'est une commande pour faire parler S.A.R.A.H, où le plugin récupère les paramètres dans \$\_options (attention c'est un tableau et ses attributs changent en fonction du sous-type de la commande : color pour un sous-type color, slider pour un sous-type slider, title et message pour un sous-type message et vide pour un sous-type other). +Dans notre exemple here c'est une commande pour faire parler S.A.R.A.H, où le plugin récupère les paramètres dans \$\_options (attention c'est un tableau et ses attributs changent en fonction du sous-type de la commande : color pour un sous-type color, slider pour un sous-type slider, title et message pour un sous-type message et vide pour un sous-type other). Voila pour la partie obligatoire, voila maintenant ce qui peut être utilisé à coté (avec exemple) : ### toHtml(\$\_version = 'dashboard') -Fonction utilisable dans la commande ou dans l'équipement, en fonction des besoins, vo un exemple pour l'équipement +Fonction utilisable dans la commande ou dans l'équipement, en fonction des besoins, vohere un exemple pour l'équipement ````php public function toHtml($_version = 'dashboard') { $replace = $this->preToHtml($_version) - (!is_array($replace)) { + if (!is_array($replace)) { return $replace } $version = jeedom::versionAlias($_version) $replace['#forecast#'] = '' - ($version != 'mobile' || $this->getConfiguration('fullMobileDisplay', 0) == 1) { + if ($version != 'mobile' || $this->getConfiguration('fullMobileDisplay', 0) == 1) { $forcast_template = getTemplate('core', $version, 'forecast', 'weather') for ($i = 0 $i < 5 $i++) { $replaceDay = array() $replaceDay['#day#'] = date_fr(date('l', strtotime('+' . $i . ' days'))) - ($i == 0) { + if ($i == 0) { $temperature_min = $this->getCmd(null, 'temperature_min') } else { $temperature_min = $this->getCmd(null, 'temperature_' . $i . '_min') } $replaceDay['#low_temperature#'] = is_object($temperature_min) ? $temperature_min->execCmd() : '' - ($i == 0) { + if ($i == 0) { $temperature_max = $this->getCmd(null, 'temperature_max') } else { $temperature_max = $this->getCmd(null, 'temperature_' . $i . '_max') @@ -564,7 +564,7 @@ public function toHtml($_version = 'dashboard') { $replaceDay['#hight_temperature#'] = is_object($temperature_max) ? $temperature_max->execCmd() : '' $replaceDay['#tempid#'] = is_object($temperature_max) ? $temperature_max->getId() : '' - ($i == 0) { + if ($i == 0) { $condition = $this->getCmd(null, 'condition') } else { $condition = $this->getCmd(null, 'condition_' . $i) @@ -592,17 +592,17 @@ public function toHtml($_version = 'dashboard') { $sunrise = $this->getCmd(null, 'sunrise') $replace['#sunrise#'] = is_object($sunrise) ? $sunrise->execCmd() : '' $replace['#sunid#'] = is_object($sunrise) ? $sunrise->getId() : '' - (strlen($replace['#sunrise#']) == 3) { + if (strlen($replace['#sunrise#']) == 3) { $replace['#sunrise#'] = substr($replace['#sunrise#'], 0, 1) . ':' . substr($replace['#sunrise#'], 1, 2) - } else (strlen($replace['#sunrise#']) == 4) { + } else if (strlen($replace['#sunrise#']) == 4) { $replace['#sunrise#'] = substr($replace['#sunrise#'], 0, 2) . ':' . substr($replace['#sunrise#'], 2, 2) } $sunset = $this->getCmd(null, 'sunset') $replace['#sunset#'] = is_object($sunset) ? $sunset->execCmd() : '' - (strlen($replace['#sunset#']) == 3) { + if (strlen($replace['#sunset#']) == 3) { $replace['#sunset#'] = substr($replace['#sunset#'], 0, 1) . ':' . substr($replace['#sunset#'], 1, 2) - } else (strlen($replace['#sunset#']) == 4) { + } else if (strlen($replace['#sunset#']) == 4) { $replace['#sunset#'] = substr($replace['#sunset#'], 0, 2) . ':' . substr($replace['#sunset#'], 2, 2) } @@ -615,7 +615,7 @@ public function toHtml($_version = 'dashboard') { $condition = $this->getCmd(null, 'condition_now') $sunset_time = is_object($sunset) ? $sunset->execCmd() : null $sunrise_time = is_object($sunrise) ? $sunrise->execCmd() : null - (is_object($condition)) { + if (is_object($condition)) { $replace['#icone#'] = self::getIconFromCondition($condition->execCmd(), $sunrise_time, $sunset_time) $replace['#condition#'] = $condition->execCmd() $replace['#conditionid#'] = $condition->getId() @@ -625,7 +625,7 @@ public function toHtml($_version = 'dashboard') { $replace['#condition#'] = '' $replace['#collectDate#'] = '' } - ($this->getConfiguration('modeImage', 0) == 1) { + if ($this->getConfiguration('modeImage', 0) == 1) { $replace['#visibilityIcon#'] = "none" $replace['#visibilityImage#'] = "block" } else { @@ -646,7 +646,7 @@ public function toHtml($_version = 'dashboard') { $_version = jeedom::versionAlias($_version) ```` -Récupération d'un template de commande, le template de commande : pluginsweathercoretemplate\$\_versionforecast. (\$\_version valant mobile ou dashboard) +Récupération d'un template de commande, here le template de commande : pluginsweathercoretemplate\$\_versionforecast. (\$\_version valant mobile ou dashboard) ````php $forcast_template = getTemplate('core', $_version, 'forecast', 'weather') @@ -674,7 +674,7 @@ Passage important: cela permet de récupérer les personnalisations faites par l ````php $parameters = $this->getDisplay('parameters') - (is_array($parameters)) { +if (is_array($parameters)) { foreach ($parameters as $key => $value) { $replace['#' . $key . '#'] = $value } @@ -717,7 +717,7 @@ return $html ````php () { $weatherCmd = $this->getCmd(null, 'temperature') - (!)) { + if (!)) { $weatherCmd = new weatherCmd() } $weatherCmd->setName(__('Température', __FILE__)) @@ -731,7 +731,7 @@ return $html $weatherCmd->save() $cron = cron::byClassAndFunction('weather', 'updateWeatherData', array('weather_id' => intval($this->getId()))) - (!)) { + if (!)) { $cron = new cron() $cron->setClass('weather') $cron->setFunction('updateWeatherData') @@ -749,7 +749,7 @@ Ici la méthode updateWeatherData (simplifiée aussi) : ````php public static function updateWeatherData($_options) { $weather = weather::byId($_options['weather_id']) - (is_object($weather)) { + if (is_object($weather)) { foreach ($weather->getCmd('info') as $cmd) { $weather->checkAndUpdateCmd($cmd,$cmd->execute()) } diff --git a/en_US/dev/publication_plugin.md b/en_US/dev/publication_plugin.md index fa185b5eedc..983e9350eba 100644 --- a/en_US/dev/publication_plugin.md +++ b/en_US/dev/publication_plugin.md @@ -2,7 +2,7 @@ ## -- [](https://www.jeedom.com/site/fr/dev.html). +- [here](https://www.jeedom.com/site/fr/dev.html). - . - ". - ). diff --git a/en_US/dev/tutorial_plugin.md b/en_US/dev/tutorial_plugin.md index 42977811301..112fffb8f48 100644 --- a/en_US/dev/tutorial_plugin.md +++ b/en_US/dev/tutorial_plugin.md @@ -1,8 +1,8 @@ # -> **** +> **IMPORTANT** > -> . [](https:forum.jeedom.comviewtopic.php?f=27&t=37630#p621495) +> . [here](https:forum.jeedom.comviewtopic.php?f=27&t=37630#p621495) . . .() @@ -21,7 +21,7 @@ . -> **** +> **IMPORTANT** > >. >. @@ -187,7 +187,7 @@ php php () { $ = $this->getCmd(null, 'story') - (!)) { + if (!)) { $ = new vdmCmd() $info->setName(__('Histoire', __FILE__)) } @@ -198,7 +198,7 @@ php $info->save() $refresh = $this->getCmd(null, 'refresh') - (!)) { + if (!)) { $refresh = new vdmCmd() $refresh->setName(__('Rafraichir', __FILE__)) } @@ -252,10 +252,10 @@ html {% raw %} * * ) { - (!)) { + if (!)) { : {} } } - (!)) { + if (!)) { } . @@ -359,7 +359,7 @@ php } -C'est qu'on va définir ce qu'il va se passer quand on actionne la commande « Rafraîchir ». ) +C'est here qu'on va définir ce qu'il va se passer quand on actionne la commande « Rafraîchir ». ) On vérifie le logical de la commande lancée et si « refresh » on lance les actions @@ -464,7 +464,7 @@ $cmd = $vdm->getCmd(null, 'refresh') php - (!)) { +if (!)) { continue } $cmd->execCmd() @@ -476,7 +476,7 @@ php () { :: $cmd = $vdm->getCmd(null, 'refresh') retourne la commande "refresh" si elle existe - (! + if (! } $cmd->execCmd() la commande existe on la lance @@ -522,13 +522,13 @@ php ) { $eqLogics = self::byType('vdm', true) - } ) + } else { //The function has the argument id(unique) of a device(eqLogic) $eqLogics = array(self::byId($_eqLogic_id)) } - ) { + foreach ($eqLogics as $vdm) { $cmd = $vdm->getCmd(null, 'refresh') retourne la commande "refresh si elle existe - (! + if (! } $cmd->execCmd() la commande existe on la lance @@ -536,45 +536,45 @@ php } -. +Afterwards you can change the frequency of the cron according to the importance of your information to be retrieved. - ==> [](https:doc.jeedom.comdevphpdoc4.1) +I can only invite you to take the time to go to this page to find out more ==> [here](https:doc.jeedom.comdevphpdoc4.1) - ==> [](https:github.comjeedomcore) +And even better to go to the core github ==> [HERE](https:github.comjeedomcore) - . +Get your nose in it to master even more . -. +The plugin is functional as is. - . +I will take the time to add how to set up a custom cron depending on the equipment . -# +# The widget -. +Not an easy task the widget but we will stick with the default widget for the moment. -. . +If you have not touched anything, equipment activated and visible, the widget takes the entire width of the screen. So we're going to change it. La commande qui apparaît est la commande «story» de info, sous- string. -. :D - +My pleasure is to get up in the morning and read a VDM when I wake up. It allows me to see that there are people worse off than me :D +But I don't have my glasses and currently the rendering on the widget doesn't allow me to read it Donc on va changer le style en affectant un template à la commande « story» -. +Nothing could be simpler. - ==> [](https:github.comjeedomcoretreealphacoretemplatedashboard) +I will see ==> [HERE](https:github.comjeedomcoretreealphacoretemplatedashboard) -.) .) +I am looking for a template for cmd.info.string( our command is of type info subtype string) .Not difficult there are only two (default or tile)) J'applique le template « cmd.info.string.tile.html » à ma commande. -.php , fonction postSave() et j'ajoute le template « tile » pour la commande « story » en appliquant la méthode setTemplate() +For this I open the vdm.class file.php , fonction postSave() et j'ajoute le template « tile » pour la commande « story » en appliquant la méthode setTemplate() php $ = $this->getCmd(null, 'story') - (!)) { +if (!)) { $ = new vdmCmd() $info->setName(__('Histoire', __FILE__)) } @@ -586,51 +586,51 @@ $info->setSubType('string') $info->save() -. - -. . défaut la largeur du widget de l'équipement(eqLogic) et la hauteur sont à « auto ». +Refresh the dashboard. - .. +It's better but the widget still takes the width of the dashboard. So we will correct. défaut la largeur du widget de l'équipement(eqLogic) et la hauteur sont à « auto ». +We will therefore change the width of the widget (equipment => eqLogic) using the setDisplay() method inherited from the eqLogic class .We leave the height in auto. +To do this, simply add php $this->setDisplay("width","800px") - !! . . ? +Yes, but !! Because there is a but. Try adding this in the postsave() or postUpdate() function and it doesn't take the change into account. For what ? Well, you have to read the docs for the template plugin ==>HERE -() +Now that you have read it well you know that you must use the preSave method() php -() { +public function preSave() { $this->setDisplay("width","800px") } -. +Save equipment and refresh the dashboard. -# . +# The settings. The options -> **** +> **IMPORTANT** > -> . +> This is an important chapter and it must be understood before moving on. - : . .. +For the moment, we have therefore used 3 classes from the Jeedom core : EqLogic, cmd, cron. Go for info, we add a 4th one with the plugin class in the vdm file.php that you open and leave open because we are going to edit it. php $plugin = plugin::byId('vdm') appelle la classe plugin du core -. +We must understand that everything is done to make our task easier. -: . : +For a parameter/option internal to the plugin, we will use one of the methods of the core eqLogic class: setConfiguration() adding the desired parameters. For example: php $this->setConfiguration("type","mon_type") si on veut définir un paramètre de valeur mon_type. Comme on a défini la largeur du widget via la méthode setDisplay() -. :D +To give the user a choice, we return to the desktop file.php that you left open because you are following this TP to the letter :D Cherchez @@ -638,27 +638,27 @@ html - +And replace with html - de laisser la classe eqLogicAttr + Important de laisser la classe eqLogicAttr -). +Save and go to a plugin equipment that you have already created by following this TP (Refresh if necessary)). Dans le champs «Paramètre» d'un équipement, tapez «aléatoire» et sauvegardez. -. +Perfect the setting is saved. ![image](imagestutorial_parametre1.png) -? . C'est pourquoi il ne faut surtout pas toucher à cette ligne de code comme indiqué dans le premier menu « test ». +It's simple, right?? . C'est pourquoi il ne faut surtout pas toucher à cette ligne de code comme indiqué dans le premier menu « test ». He is the one who does all the work php Chargement du fichier corejsplugin.template.js (en partant de la racine du site) -. +If you look more closely at the desktop file.php there is html retourne l'id(unique) de l'eqLogic(équipement) que l'on va pouvoir récupérer via $this->getId() @@ -670,7 +670,7 @@ html Etc… -. +If you have understood all of this well, we can move on to the next step. But first we will change in the desktop.php file html {% raw %}