diff --git a/.gitignore b/.gitignore index 6d5cee4..c73d88b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ test.php core/config/common.config.php plugins sftp-config.json -.project \ No newline at end of file +.project +.vscode/settings.json diff --git a/core/class/script.class.php b/core/class/script.class.php index 604f4ad..0dcb313 100644 --- a/core/class/script.class.php +++ b/core/class/script.class.php @@ -50,93 +50,6 @@ public static function cron() { } - public static function shareOnMarket(&$market) { - $cibDir = calculPath(config::byKey('userScriptDir', 'script') . '/' . $market->getLogicalId()); - if (!file_exists($cibDir)) { - throw new Exception(__('Impossible de trouver le script :', __FILE__) . $cibDir); - } - $tmp = dirname(__FILE__) . '/../../../../tmp/' . $market->getLogicalId() . '.zip'; - if (file_exists($tmp)) { - if (!unlink($tmp)) { - throw new Exception(__('Impossible de supprimer : ', __FILE__) . $tmp . __('. Vérifiez les droits', __FILE__)); - } - } - if (!create_zip($cibDir, $tmp)) { - throw new Exception(__('Echec de création du zip. Répertoire source : ', __FILE__) . $cibDir . __(' / Répertoire cible : ', __FILE__) . $tmp); - } - return $tmp; - } - - public static function getFromMarket(&$market, $_path) { - $cibDir = calculPath(config::byKey('userScriptDir', 'script')); - if (!file_exists($cibDir)) { - throw new Exception(__('Impossible d\'installer le script. Le dossier n\'existe pas : ', __FILE__) . $cibDir); - } - $zip = new ZipArchive; - $res = $zip->open($_path); - if ($res === true) { - $zip->extractTo($cibDir . '/'); - $zip->close(); - } else { - switch ($res) { - case ZipArchive::ER_EXISTS: - $ErrMsg = "Le fichier existe déjà."; - break; - case ZipArchive::ER_INCONS: - $ErrMsg = "L'archive est inconsistante."; - break; - case ZipArchive::ER_MEMORY: - $ErrMsg = "Echec d'allocation mémoire (malloc)."; - break; - case ZipArchive::ER_NOENT: - $ErrMsg = "Le fichier n'existe pas."; - break; - case ZipArchive::ER_NOZIP: - $ErrMsg = "Ce n'est pas une archive zip."; - break; - case ZipArchive::ER_OPEN: - $ErrMsg = "Le fichier ne peut pas être ouvert."; - break; - case ZipArchive::ER_READ: - $ErrMsg = "Erreur de lecture."; - break; - case ZipArchive::ER_SEEK: - $ErrMsg = "Erreur de recherche."; - break; - default: - $ErrMsg = "Unknow (Code $res)"; - break; - } - throw new Exception(__('Impossible de décompresser l\'archive zip : ', __FILE__) . $_path . 'Erreur : ' . $ErrMsg); - } - $scriptPath = realpath(dirname(__FILE__) . '/../../../../' . config::byKey('userScriptDir', 'script') . '/' . $market->getLogicalId()); - if (!file_exists($scriptPath)) { - throw new Exception(__('Echec de l\'installation. Impossible de trouver le script ', __FILE__) . $scriptPath); - } - chmod($scriptPath, 0770); - } - - public static function removeFromMarket(&$market) { - $scriptPath = calculPath(config::byKey('userScriptDir', 'script') . '/' . $market->getLogicalId()); - if (!file_exists($scriptPath)) { - return true; - } - unlink($scriptPath); - if (!file_exists($scriptPath)) { - throw new Exception(__('Echec de la désinstallation. Impossible de supprimer le script ', __FILE__) . $scriptPath); - } - } - - public static function listMarketObject() { - $return = array(); - foreach (ls(calculPath(config::byKey('userScriptDir', 'script')), '*') as $logical_id) { - if (is_file(calculPath(config::byKey('userScriptDir', 'script')) . '/' . $logical_id)) { - $return[] = $logical_id; - } - } - return $return; - } - /* * *********************Méthodes d'instance************************* */ public function postSave() { @@ -390,21 +303,54 @@ public function execute($_options = null) { } $json = json_decode($json_str, true); if ($json === null) { + $json = json_decode($json_str, true, 512, JSON_INVALID_UTF8_IGNORE); + if ($json === null) { throw new Exception(__('Json invalide ou non décodable : ', __FILE__) . $json_str); + } } + log::add('script', 'debug', 'tags : ' . $request); + log::add('script', 'debug', 'json : ' . json_encode($json)); $tags = explode('>', $request); foreach ($tags as $tag) { $tag = trim($tag); + log::add('script', 'debug', 'tag : ' . $tag); if (isset($json[$tag])) { $json = $json[$tag]; + } elseif (strpos($tag,'@')!==false && strpos($tag,'=')!==false) { + $tag = ltrim($tag,"@"); + $conditions = explode('&', $tag); + foreach ($json as $json_element) { + $found = true; + foreach ($conditions as $condition) { + $condition_kv = explode('=',$condition,2); + $condition_k = trim($condition_kv[0]); + $condition_v = trim($condition_kv[1]); + if ($json_element[$condition_k]==$condition_v) { + $found = $found && true; + } else { + $found = false; + } + } + if ($found) { + $json = $json_element; + break; + } + } + if(!$found) { + $json = ''; + log::add('script', 'debug', 'tag not found'); + break; + } } elseif (is_numeric(intval($tag)) && isset($json[intval($tag)])) { $json = $json[intval($tag)]; } elseif (is_numeric(intval($tag)) && intval($tag) < 0 && isset($json[count($json) + intval($tag)])) { $json = $json[count($json) + intval($tag)]; } else { $json = ''; + log::add('script', 'debug', 'tag not found'); break; } + log::add('script', 'debug', 'json : ' . json_encode($json)); } if($this->getType() == 'info'){ return (is_array($json)) ? json_encode($json) : $json; diff --git a/core/config/.htaccess b/core/config/.htaccess new file mode 100644 index 0000000..c485725 --- /dev/null +++ b/core/config/.htaccess @@ -0,0 +1,5 @@ +Order allow,deny + + allow from all + +Deny from all diff --git a/core/i18n/de_DE.json b/core/i18n/de_DE.json index 46863ae..7f3e318 100644 --- a/core/i18n/de_DE.json +++ b/core/i18n/de_DE.json @@ -8,22 +8,29 @@ "Gestion": "Verwaltung", "Ajouter": "Hinzufügen", "Configuration": "Konfiguration", - "Market": "Markt", "Mes Scripts": "Meine Skripte", + "Aucun équipement trouvé, cliquer sur \"Ajouter\" pour commencer": "Keine Ausrüstung gefunden, klicken Sie zum Starten auf \"Hinzufügen\"", "Rechercher": "Suchen nach", + "Equipement visible": "Sichtbare Ausrüstung", + "Equipement non visible": "Ausrüstung nicht sichtbar", "Configuration avancée": "Erweiterte Konfiguration", "Dupliquer": "Duplikat", "Sauvegarder": "Speichern", "Supprimer": "Löschen", "Equipement": "Gerät", "Commandes": "Befehle", - "Nom de l'équipement script": "Name der Skriptausrüstung", + "Paramètres généraux": "Allgemeine Einstellungen", + "Nom de l'équipement": "Ausrüstungsname", "Objet parent": "Übergeordnetes Objekt", "Aucun": "Ohne", "Catégorie": "Kategorie", + "Options": "Optionen", "Activer": "Aktivieren", "Visible": "Sichtbar", - "Auto-actualisation (cron)": "Selbstaktualisierung (cron)", + "Paramètres spécifiques": "Spezifische Parameter", + "Auto-actualisation": "Selbstauffrischung", + "Fréquence de rafraîchissement des commandes infos de l'équipement": "Aktualisierungsrate des Ausrüstungsinfo-Befehls", + "Cliquer sur ? pour afficher l'assistant cron": "Klicke auf ? um den Cron-Helfer anzuzeigen", "Délai avant d'actualiser les infos suite à une action (en secondes)": "Zeit vor dem Aktualisieren der Informationen nach einer Aktion (in Sekunden)", "Ajouter une commande script": "Fügen Sie einen Skriptbefehl hinzu", " Sous type :": "Untertyp:", @@ -35,24 +42,25 @@ "Type script": "Skripttyp", "Type": "Typ", "Requête": "Petition", - "Options": "Optionen", - "Divers": "Verschiedene", - "Paramètres": "Einstellungen" + "Paramètres": "Einstellungen", + "Etat": "Bundesland", + "Actions": "Anteile" }, "plugins\/script\/desktop\/js\/script.js": { "Etes-vous sûr de vouloir supprimer le script :": "Möchten Sie das Skript wirklich löschen:", - "Vous devez d\\'abord sélectioner un script": "Sie müssen zuerst ein Skript auswählen", - "Partager sur le market": "Auf dem Markt Teilen", "Script": "Skript", "HTTP": "Http", "HTML": "HTML", "XML": "Xml", "JSON": "Json", + "Nom de la commande": "Befehlsname", + "Choisir une icône": "Wählen Sie ein Symbol aus", + "Commande info liée": "Verknüpfter Info-Befehl", + "Aucune": "Keiner", "Parcourir": "Reise", "Editer": "Bearbeiten", "Nouveau": "Neu", "Supprimer": "Löschen", - "Partager": "Aktie", "Vérifier SSL": "Überprüfen Sie SSL", "Retour vide": "Leere Rückgabe", "Pas d\\'erreurs": "Keine Fehler", @@ -62,16 +70,16 @@ "Maximum d\\'essai": "Maximaler Test", "Mot de passe": "Passwort", "Essais au maximum": "Maximale Prüfung", - "Unité": "Unit", + "Afficher": "Anzeige", + "Historiser": "Chronik", + "Inverser": "Umgekehrt", "Min": "Niedrig", "Max": "Max", + "Unité": "Unit", "Liste de valeur|texte séparé par ;": "Werteliste | Text getrennt durch;", "Liste": "Auflistung", - "Afficher": "Anzeige", - "Historiser": "Chronik", - "Inverser": "Umgekehrt", - "Configuration de la commande": "Befehl Konfiguration", - "Tester": "Test" + "Commande d\\'information à mettre à jour": "Bestellinformationen zu aktualisieren", + "Valeur de l\\'information": "Informationswert" }, "plugins\/script\/core\/ajax\/script.ajax.php": { "401 - Accès non autorisé": "401 - Nicht autorisierter Zugriff", @@ -87,15 +95,6 @@ "plugins\/script\/core\/class\/script.class.php": { "Erreur pour ": "Fehler für", "Expression cron non valide pour ": "Ungültiger Cron-Ausdruck für", - "Impossible de trouver le script :": "Das Skript konnte nicht gefunden werden:", - "Impossible de supprimer : ": "Löschen nicht möglich:", - ". Vérifiez les droits": "Überprüfen Sie die Rechte", - "Echec de création du zip. Répertoire source : ": "Fehler beim Erstellen der Zip. Quellverzeichnis:", - " \/ Répertoire cible : ": "\/ Zielverzeichnis:", - "Impossible d\\'installer le script. Le dossier n\\'existe pas : ": "Das Skript kann nicht installiert werden. Der Ordner existiert nicht:", - "Impossible de décompresser l\\'archive zip : ": "Das Zip-Archiv kann nicht dekomprimiert werden:", - "Echec de l\\'installation. Impossible de trouver le script ": "Installation fehlgeschlagen. Das Skript konnte nicht gefunden werden", - "Echec de la désinstallation. Impossible de supprimer le script ": "Deinstallation fehlgeschlagen. Skript kann nicht gelöscht werden", "Rafraichir": "Aktualisieren", "Le champ requête ne peut pas être vide": "Das Anforderungsfeld darf nicht leer sein", "Le champ requête type ne peut pas être vide": "Das Standardanforderungsfeld darf nicht leer sein", @@ -104,5 +103,8 @@ "Le message et le sujet ne peuvent pas être vide": "Nachricht und Betreff dürfen nicht leer sein", "La réponse ne contient pas ": "Die Antwort enthält nicht", "Json invalide ou non décodable : ": "Json ungültig oder nicht dekodierbar:" + }, + "info.json": { + "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom": "Plugin zur Unterstützung von Skripten in Jeedom. Skripte sind Programme in Python \/ PHP \/ Shell \/ Ruby usw., mit denen Sie Jeedom Funktionen hinzufügen können" } } \ No newline at end of file diff --git a/core/i18n/en_US.json b/core/i18n/en_US.json index df816f8..053992f 100644 --- a/core/i18n/en_US.json +++ b/core/i18n/en_US.json @@ -8,22 +8,29 @@ "Gestion": "Management", "Ajouter": "Add", "Configuration": "Setup", - "Market": "Market", "Mes Scripts": "My Scripts", + "Aucun équipement trouvé, cliquer sur \"Ajouter\" pour commencer": "No equipment found, click \"Add\" to start", "Rechercher": "Search", + "Equipement visible": "Visible equipment", + "Equipement non visible": "Equipment not visible", "Configuration avancée": "Advanced configuration", "Dupliquer": "Duplicate", "Sauvegarder": "Save", "Supprimer": "Delete", - "Equipement": "Device", + "Equipement": "Equipment", "Commandes": "Commands", - "Nom de l'équipement script": "Script equipment name", + "Paramètres généraux": "General settings", + "Nom de l'équipement": "Equipment name", "Objet parent": "Parent object", "Aucun": "None", "Catégorie": "Category", + "Options": "Options", "Activer": "Activate", "Visible": "Visible", - "Auto-actualisation (cron)": "Self-updating (cron)", + "Paramètres spécifiques": "Specific parameters", + "Auto-actualisation": "Self-refresh", + "Fréquence de rafraîchissement des commandes infos de l'équipement": "Equipment Info Command Refresh Rate", + "Cliquer sur ? pour afficher l'assistant cron": "Click on ? to display the cron helper", "Délai avant d'actualiser les infos suite à une action (en secondes)": "Time before updating the info following an action (in seconds)", "Ajouter une commande script": "Add a script command", " Sous type :": "Sub type:", @@ -35,43 +42,44 @@ "Type script": "Script type", "Type": "Type", "Requête": "Request", - "Options": "Options", - "Divers": "Various", - "Paramètres": "Settings" + "Paramètres": "Settings", + "Etat": "State", + "Actions": "Shares" }, "plugins\/script\/desktop\/js\/script.js": { "Etes-vous sûr de vouloir supprimer le script :": "Are you sure you want to delete the script:", - "Vous devez d\\'abord sélectioner un script": "You must first select a script", - "Partager sur le market": "Share on Market", "Script": "Script", "HTTP": "HTTP", - "HTML": "L'opération à mener", + "HTML": "HTML", "XML": "XML", "JSON": "JSON", + "Nom de la commande": "Command name", + "Choisir une icône": "Choose an icon", + "Commande info liée": "Linked info command", + "Aucune": "None", "Parcourir": "Browse", "Editer": "Edit", "Nouveau": "New", "Supprimer": "Delete", - "Partager": "Share", "Vérifier SSL": "Verify SSL", "Retour vide": "Empty return", - "Pas d\\'erreurs": "No errors", + "Pas d\\'erreurs": "No error", "La réponse doit contenir": "The answer must contain", "Timeout (s)": "Timeout (s)", "Utilisateur": "User", "Maximum d\\'essai": "Maximum test", "Mot de passe": "Password", - "Essais au maximum": "Maximum testing", - "Unité": "Unit", + "Essais au maximum": "Maximum tests", + "Afficher": "Show", + "Historiser": "Historize", + "Inverser": "Invert", "Min": "Min", "Max": "Max", + "Unité": "Unit", "Liste de valeur|texte séparé par ;": "List of values | text separated by;", "Liste": "List", - "Afficher": "Show", - "Historiser": "Historize", - "Inverser": "Invert", - "Configuration de la commande": "Command setup", - "Tester": "Test" + "Commande d\\'information à mettre à jour": "Order information to update", + "Valeur de l\\'information": "Information value" }, "plugins\/script\/core\/ajax\/script.ajax.php": { "401 - Accès non autorisé": "401 - Unauthorized access", @@ -87,15 +95,6 @@ "plugins\/script\/core\/class\/script.class.php": { "Erreur pour ": "Error for", "Expression cron non valide pour ": "Invalid cron expression for", - "Impossible de trouver le script :": "Unable to find the script:", - "Impossible de supprimer : ": "Unable to delete:", - ". Vérifiez les droits": "Check the rights", - "Echec de création du zip. Répertoire source : ": "Failed to create the zip. Source directory:", - " \/ Répertoire cible : ": "\/ Target directory:", - "Impossible d\\'installer le script. Le dossier n\\'existe pas : ": "Unable to install the script. The folder does not exist:", - "Impossible de décompresser l\\'archive zip : ": "Unable to decompress the zip archive:", - "Echec de l\\'installation. Impossible de trouver le script ": "Installation failed. Unable to find the script", - "Echec de la désinstallation. Impossible de supprimer le script ": "Uninstall failed. Unable to delete script", "Rafraichir": "Refresh", "Le champ requête ne peut pas être vide": "Request field cannot be empty", "Le champ requête type ne peut pas être vide": "The standard request field cannot be empty", @@ -104,5 +103,8 @@ "Le message et le sujet ne peuvent pas être vide": "Message and subject cannot be empty", "La réponse ne contient pas ": "The answer does not contain", "Json invalide ou non décodable : ": "Json invalid or not decodable:" + }, + "info.json": { + "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom": "Plugin adding scripting support in Jeedom. Scripts are programs in Python \/ PHP \/ Shell \/ Ruby etc ... which allow you to add functions to Jeedom" } } \ No newline at end of file diff --git a/core/i18n/es_ES.json b/core/i18n/es_ES.json index 8f854d5..406427c 100644 --- a/core/i18n/es_ES.json +++ b/core/i18n/es_ES.json @@ -8,22 +8,29 @@ "Gestion": "Gestión", "Ajouter": "Añadir", "Configuration": "Configuración", - "Market": "Mercado", "Mes Scripts": "Mis guiones", + "Aucun équipement trouvé, cliquer sur \"Ajouter\" pour commencer": "No se encontró ningún equipo, haga clic en \"Agregar\" para comenzar", "Rechercher": "Buscar", + "Equipement visible": "Equipos visibles", + "Equipement non visible": "Equipo no visible", "Configuration avancée": "Configuración avanzada", "Dupliquer": "Duplicar", "Sauvegarder": "Guardar", "Supprimer": "Borrar", "Equipement": "Dispositivos", "Commandes": "Comandos", - "Nom de l'équipement script": "Nombre del equipo de script", + "Paramètres généraux": "Configuración general", + "Nom de l'équipement": "Nombre del equipo", "Objet parent": "Objeto padre", "Aucun": "Ninguna", "Catégorie": "Categoría", + "Options": "Opciones", "Activer": "Activar", "Visible": "Visible", - "Auto-actualisation (cron)": "Actualización automática (cron)", + "Paramètres spécifiques": "Parámetros específicos", + "Auto-actualisation": "Actualización automática", + "Fréquence de rafraîchissement des commandes infos de l'équipement": "Frecuencia de actualización del comando de información del equipo", + "Cliquer sur ? pour afficher l'assistant cron": "Haga clic en ? para mostrar el ayudante de cron", "Délai avant d'actualiser les infos suite à une action (en secondes)": "Tiempo antes de actualizar la información después de una acción (en segundos)", "Ajouter une commande script": "Agregar un comando de script", " Sous type :": "Subtipo:", @@ -35,24 +42,25 @@ "Type script": "Tipo de script", "Type": "Tipo", "Requête": "Petición", - "Options": "Opciones", - "Divers": "Diverso", - "Paramètres": "Configuraciones" + "Paramètres": "Configuraciones", + "Etat": "Estado", + "Actions": "Comparte" }, "plugins\/script\/desktop\/js\/script.js": { "Etes-vous sûr de vouloir supprimer le script :": "¿Está seguro de que desea eliminar el script?", - "Vous devez d\\'abord sélectioner un script": "Primero debes seleccionar un script", - "Partager sur le market": "Compartir en el Market", "Script": "Guión", "HTTP": "Http", "HTML": "HTML", "XML": "XML", "JSON": "JSON", + "Nom de la commande": "Nombre del comando", + "Choisir une icône": "Elige un icono", + "Commande info liée": "Comando de información vinculada", + "Aucune": "Ninguna", "Parcourir": "Recorrer", "Editer": "Editar", "Nouveau": "Nuevo", "Supprimer": "Borrar", - "Partager": "Compartir, repartir", "Vérifier SSL": "Verificar SSL", "Retour vide": "Retorno vacío", "Pas d\\'erreurs": "Sin errores", @@ -62,16 +70,16 @@ "Maximum d\\'essai": "Prueba máxima", "Mot de passe": "Contraseña", "Essais au maximum": "Pruebas máximas", - "Unité": "Unidad", + "Afficher": "Mostrar", + "Historiser": "Guardar historial", + "Inverser": "Invertir", "Min": "Bajo", "Max": "Max", + "Unité": "Unidad", "Liste de valeur|texte séparé par ;": "Lista de valores | texto separado por;", "Liste": "Lista", - "Afficher": "Mostrar", - "Historiser": "Guardar historial", - "Inverser": "Invertir", - "Configuration de la commande": "Configuración del comando", - "Tester": "Probar" + "Commande d\\'information à mettre à jour": "Información del pedido para actualizar", + "Valeur de l\\'information": "Valor de la información" }, "plugins\/script\/core\/ajax\/script.ajax.php": { "401 - Accès non autorisé": "401 - Acceso no autorizado", @@ -87,15 +95,6 @@ "plugins\/script\/core\/class\/script.class.php": { "Erreur pour ": "Error para", "Expression cron non valide pour ": "Expresión cron inválida para", - "Impossible de trouver le script :": "No se puede encontrar el script:", - "Impossible de supprimer : ": "No se puede eliminar:", - ". Vérifiez les droits": "Comprueba los derechos", - "Echec de création du zip. Répertoire source : ": "Error al crear el zip. Directorio de origen:", - " \/ Répertoire cible : ": "\/ Directorio de destino:", - "Impossible d\\'installer le script. Le dossier n\\'existe pas : ": "No se puede instalar el script. La carpeta no existe:", - "Impossible de décompresser l\\'archive zip : ": "No se puede descomprimir el archivo zip:", - "Echec de l\\'installation. Impossible de trouver le script ": "La instalación falló. No se puede encontrar el guión", - "Echec de la désinstallation. Impossible de supprimer le script ": "La desinstalación falló. No se puede eliminar el script", "Rafraichir": "Refrescar", "Le champ requête ne peut pas être vide": "El campo de solicitud no puede estar vacío", "Le champ requête type ne peut pas être vide": "El campo de solicitud estándar no puede estar vacío", @@ -104,5 +103,8 @@ "Le message et le sujet ne peuvent pas être vide": "El mensaje y el asunto no pueden estar vacíos", "La réponse ne contient pas ": "La respuesta no contiene", "Json invalide ou non décodable : ": "Json inválido o no decodificable:" + }, + "info.json": { + "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom": "Complemento que agrega compatibilidad con scripts en Jeedom. Los scripts son programas en Python \/ PHP \/ Shell \/ Ruby, etc., que le permiten agregar funciones a Jeedom" } } \ No newline at end of file diff --git a/core/i18n/fr_FR.json b/core/i18n/fr_FR.json index 319ec36..4dc5cc5 100644 --- a/core/i18n/fr_FR.json +++ b/core/i18n/fr_FR.json @@ -8,22 +8,29 @@ "Gestion": "Gestion", "Ajouter": "Ajouter", "Configuration": "Configuration", - "Market": "Market", "Mes Scripts": "Mes Scripts", + "Aucun équipement trouvé, cliquer sur \"Ajouter\" pour commencer": "Aucun équipement trouvé, cliquer sur \"Ajouter\" pour commencer", "Rechercher": "Rechercher", + "Equipement visible": "Equipement visible", + "Equipement non visible": "Equipement non visible", "Configuration avancée": "Configuration avancée", "Dupliquer": "Dupliquer", "Sauvegarder": "Sauvegarder", "Supprimer": "Supprimer", "Equipement": "Equipement", "Commandes": "Commandes", - "Nom de l'équipement script": "Nom de l'équipement script", + "Paramètres généraux": "Paramètres généraux", + "Nom de l'équipement": "Nom de l'équipement", "Objet parent": "Objet parent", "Aucun": "Aucun", "Catégorie": "Catégorie", + "Options": "Options", "Activer": "Activer", "Visible": "Visible", - "Auto-actualisation (cron)": "Auto-actualisation (cron)", + "Paramètres spécifiques": "Paramètres spécifiques", + "Auto-actualisation": "Auto-actualisation", + "Fréquence de rafraîchissement des commandes infos de l'équipement": "Fréquence de rafraîchissement des commandes infos de l'équipement", + "Cliquer sur ? pour afficher l'assistant cron": "Cliquer sur ? pour afficher l'assistant cron", "Délai avant d'actualiser les infos suite à une action (en secondes)": "Délai avant d'actualiser les infos suite à une action (en secondes)", "Ajouter une commande script": "Ajouter une commande script", " Sous type :": " Sous type :", @@ -35,24 +42,25 @@ "Type script": "Type script", "Type": "Type", "Requête": "Requête", - "Options": "Options", - "Divers": "Divers", - "Paramètres": "Paramètres" + "Paramètres": "Paramètres", + "Etat": "Etat", + "Actions": "Actions" }, "plugins\/script\/desktop\/js\/script.js": { "Etes-vous sûr de vouloir supprimer le script :": "Etes-vous sûr de vouloir supprimer le script :", - "Vous devez d\\'abord sélectioner un script": "Vous devez d\\'abord sélectioner un script", - "Partager sur le market": "Partager sur le market", "Script": "Script", "HTTP": "HTTP", "HTML": "HTML", "XML": "XML", "JSON": "JSON", + "Nom de la commande": "Nom de la commande", + "Choisir une icône": "Choisir une icône", + "Commande info liée": "Commande info liée", + "Aucune": "Aucune", "Parcourir": "Parcourir", "Editer": "Editer", "Nouveau": "Nouveau", "Supprimer": "Supprimer", - "Partager": "Partager", "Vérifier SSL": "Vérifier SSL", "Retour vide": "Retour vide", "Pas d\\'erreurs": "Pas d\\'erreurs", @@ -62,16 +70,16 @@ "Maximum d\\'essai": "Maximum d\\'essai", "Mot de passe": "Mot de passe", "Essais au maximum": "Essais au maximum", - "Unité": "Unité", + "Afficher": "Afficher", + "Historiser": "Historiser", + "Inverser": "Inverser", "Min": "Min", "Max": "Max", + "Unité": "Unité", "Liste de valeur|texte séparé par ;": "Liste de valeur|texte séparé par ;", "Liste": "Liste", - "Afficher": "Afficher", - "Historiser": "Historiser", - "Inverser": "Inverser", - "Configuration de la commande": "Configuration de la commande", - "Tester": "Tester" + "Commande d\\'information à mettre à jour": "Commande d\\'information à mettre à jour", + "Valeur de l\\'information": "Valeur de l\\'information" }, "plugins\/script\/core\/ajax\/script.ajax.php": { "401 - Accès non autorisé": "401 - Accès non autorisé", @@ -87,15 +95,6 @@ "plugins\/script\/core\/class\/script.class.php": { "Erreur pour ": "Erreur pour ", "Expression cron non valide pour ": "Expression cron non valide pour ", - "Impossible de trouver le script :": "Impossible de trouver le script :", - "Impossible de supprimer : ": "Impossible de supprimer : ", - ". Vérifiez les droits": ". Vérifiez les droits", - "Echec de création du zip. Répertoire source : ": "Echec de création du zip. Répertoire source : ", - " \/ Répertoire cible : ": " \/ Répertoire cible : ", - "Impossible d\\'installer le script. Le dossier n\\'existe pas : ": "Impossible d\\'installer le script. Le dossier n\\'existe pas : ", - "Impossible de décompresser l\\'archive zip : ": "Impossible de décompresser l\\'archive zip : ", - "Echec de l\\'installation. Impossible de trouver le script ": "Echec de l\\'installation. Impossible de trouver le script ", - "Echec de la désinstallation. Impossible de supprimer le script ": "Echec de la désinstallation. Impossible de supprimer le script ", "Rafraichir": "Rafraichir", "Le champ requête ne peut pas être vide": "Le champ requête ne peut pas être vide", "Le champ requête type ne peut pas être vide": "Le champ requête type ne peut pas être vide", @@ -104,5 +103,8 @@ "Le message et le sujet ne peuvent pas être vide": "Le message et le sujet ne peuvent pas être vide", "La réponse ne contient pas ": "La réponse ne contient pas ", "Json invalide ou non décodable : ": "Json invalide ou non décodable : " + }, + "info.json": { + "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom": "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom" } } \ No newline at end of file diff --git a/core/i18n/id_ID.json b/core/i18n/id_ID.json index 426cb01..5e3f45c 100644 --- a/core/i18n/id_ID.json +++ b/core/i18n/id_ID.json @@ -1,108 +1,110 @@ { "plugins\/script\/plugin_info\/configuration.php": { - "Chemin des scripts utilisateur": "", - "Collapser le code à l'ouverture": "" + "Chemin des scripts utilisateur": "Chemin des scripts utilisateur", + "Collapser le code à l'ouverture": "Collapser le code à l'ouverture" }, "plugins\/script\/desktop\/php\/script.php": { "401 - Accès non autorisé": "401 - Akses tidak sah", "Gestion": "Manajemen", "Ajouter": "Tambahan", "Configuration": "Konfigurasi", - "Market": "", - "Mes Scripts": "", + "Mes Scripts": "Mes Scripts", + "Aucun équipement trouvé, cliquer sur \"Ajouter\" pour commencer": "Aucun équipement trouvé, cliquer sur \"Ajouter\" pour commencer", "Rechercher": "Pencarian", + "Equipement visible": "Equipement visible", + "Equipement non visible": "Equipement non visible", "Configuration avancée": "Konfigurasi lanjutan", "Dupliquer": "Duplikat", "Sauvegarder": "Menyimpan", "Supprimer": "Menghapus", "Equipement": "Peralatan", "Commandes": "Perintah", - "Nom de l'équipement script": "", + "Paramètres généraux": "Paramètres généraux", + "Nom de l'équipement": "Nom de l'équipement", "Objet parent": "Objek induk", "Aucun": "Tak ada", "Catégorie": "Kategori", + "Options": "Pilihan", "Activer": "Mengaktifkan", "Visible": "Terlihat", - "Auto-actualisation (cron)": "", - "Délai avant d'actualiser les infos suite à une action (en secondes)": "", - "Ajouter une commande script": "", - " Sous type :": "", - "Curseur : mettre #slider# pour récupérer la valeur": "", - "Couleur : mettre #color# pour récupérer la valeur": "", - "Message : mettre #title# et #message#": "", - "Liste : value|display;": "", + "Paramètres spécifiques": "Paramètres spécifiques", + "Auto-actualisation": "Auto-actualisation", + "Fréquence de rafraîchissement des commandes infos de l'équipement": "Fréquence de rafraîchissement des commandes infos de l'équipement", + "Cliquer sur ? pour afficher l'assistant cron": "Cliquer sur ? pour afficher l'assistant cron", + "Délai avant d'actualiser les infos suite à une action (en secondes)": "Délai avant d'actualiser les infos suite à une action (en secondes)", + "Ajouter une commande script": "Ajouter une commande script", + " Sous type :": "Sous type :", + "Curseur : mettre #slider# pour récupérer la valeur": "Curseur : mettre #slider# pour récupérer la valeur", + "Couleur : mettre #color# pour récupérer la valeur": "Couleur : mettre #color# pour récupérer la valeur", + "Message : mettre #title# et #message#": "Message : mettre #title# et #message#", + "Liste : value|display;": "Liste : value|display;", "Nom": "Nama", - "Type script": "", + "Type script": "Type script", "Type": "Jenis", - "Requête": "", - "Options": "Pilihan", - "Divers": "Serba Serbi", - "Paramètres": "Parameter²" + "Requête": "Requête", + "Paramètres": "Parameter²", + "Etat": "Etat", + "Actions": "Actions" }, "plugins\/script\/desktop\/js\/script.js": { - "Etes-vous sûr de vouloir supprimer le script :": "", - "Vous devez d\\'abord sélectioner un script": "", - "Partager sur le market": "Pangsa di Market", + "Etes-vous sûr de vouloir supprimer le script :": "Etes-vous sûr de vouloir supprimer le script :", "Script": "Skrip", - "HTTP": "", - "HTML": "", - "XML": "", - "JSON": "", - "Parcourir": "", + "HTTP": "HTTP", + "HTML": "HTML", + "XML": "XML", + "JSON": "JSON", + "Nom de la commande": "Nom de la commande", + "Choisir une icône": "Choisir une icône", + "Commande info liée": "Commande info liée", + "Aucune": "Aucune", + "Parcourir": "Parcourir", "Editer": "Mengedit", "Nouveau": "Baru", "Supprimer": "Menghapus", - "Partager": "", - "Vérifier SSL": "", - "Retour vide": "", - "Pas d\\'erreurs": "", - "La réponse doit contenir": "", - "Timeout (s)": "", + "Vérifier SSL": "Vérifier SSL", + "Retour vide": "Retour vide", + "Pas d\\'erreurs": "Pas d\\'erreurs", + "La réponse doit contenir": "La réponse doit contenir", + "Timeout (s)": "Timeout (s)", "Utilisateur": "Pengguna", - "Maximum d\\'essai": "", + "Maximum d\\'essai": "Maximum d\\'essai", "Mot de passe": "Password", - "Essais au maximum": "", - "Unité": "Satuan", - "Min": "", - "Max": "", - "Liste de valeur|texte séparé par ;": "", - "Liste": "", + "Essais au maximum": "Essais au maximum", "Afficher": "Memenitikan", "Historiser": "Historicize", "Inverser": "Membalikkan", - "Configuration de la commande": "Set Kontrol", - "Tester": "Coba" + "Min": "Min", + "Max": "Max", + "Unité": "Satuan", + "Liste de valeur|texte séparé par ;": "Liste de valeur|texte séparé par ;", + "Liste": "Liste", + "Commande d\\'information à mettre à jour": "Commande d\\'information à mettre à jour", + "Valeur de l\\'information": "Valeur de l\\'information" }, "plugins\/script\/core\/ajax\/script.ajax.php": { "401 - Accès non autorisé": "401 - Akses tidak sah", - "Aucun fichier trouvé : ": "", - "Impossible de lire : ": "", - "Impossible de lire un dossier : ": "", - "Impossible d\\'écrire dans : ": "", - "Impossible d\\'écrire un dossier : ": "", - "Impossible de supprimer un dossier : ": "", - "Impossible de supprimer le fichier : ": "", + "Aucun fichier trouvé : ": "Aucun fichier trouvé :", + "Impossible de lire : ": "Impossible de lire :", + "Impossible de lire un dossier : ": "Impossible de lire un dossier :", + "Impossible d\\'écrire dans : ": "Impossible d\\'écrire dans :", + "Impossible d\\'écrire un dossier : ": "Impossible d\\'écrire un dossier :", + "Impossible de supprimer un dossier : ": "Impossible de supprimer un dossier :", + "Impossible de supprimer le fichier : ": "Impossible de supprimer le fichier :", "Aucune méthode correspondante à : ": "Aucune methode correspondante à :" }, "plugins\/script\/core\/class\/script.class.php": { - "Erreur pour ": "", - "Expression cron non valide pour ": "", - "Impossible de trouver le script :": "", - "Impossible de supprimer : ": "", - ". Vérifiez les droits": "", - "Echec de création du zip. Répertoire source : ": "", - " \/ Répertoire cible : ": "", - "Impossible d\\'installer le script. Le dossier n\\'existe pas : ": "", - "Impossible de décompresser l\\'archive zip : ": "", - "Echec de l\\'installation. Impossible de trouver le script ": "", - "Echec de la désinstallation. Impossible de supprimer le script ": "", + "Erreur pour ": "Erreur pour", + "Expression cron non valide pour ": "Expression cron non valide pour", "Rafraichir": "Dingin", - "Le champ requête ne peut pas être vide": "", - "Le champ requête type ne peut pas être vide": "", - "Vous ne pouvez pas avoir un script de type XML et action": "", - "La requête ne peut pas être vide : ": "", - "Le message et le sujet ne peuvent pas être vide": "", - "La réponse ne contient pas ": "", - "Json invalide ou non décodable : ": "" + "Le champ requête ne peut pas être vide": "Le champ requête ne peut pas être vide", + "Le champ requête type ne peut pas être vide": "Le champ requête type ne peut pas être vide", + "Vous ne pouvez pas avoir un script de type XML et action": "Vous ne pouvez pas avoir un script de type XML et action", + "La requête ne peut pas être vide : ": "La requête ne peut pas être vide :", + "Le message et le sujet ne peuvent pas être vide": "Le message et le sujet ne peuvent pas être vide", + "La réponse ne contient pas ": "La réponse ne contient pas", + "Json invalide ou non décodable : ": "Json invalide ou non décodable :" + }, + "info.json": { + "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom": "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom" } } \ No newline at end of file diff --git a/core/i18n/it_IT.json b/core/i18n/it_IT.json index fc38e32..de86520 100644 --- a/core/i18n/it_IT.json +++ b/core/i18n/it_IT.json @@ -1,108 +1,110 @@ { "plugins\/script\/plugin_info\/configuration.php": { - "Chemin des scripts utilisateur": "", - "Collapser le code à l'ouverture": "" + "Chemin des scripts utilisateur": "Chemin des scripts utilisateur", + "Collapser le code à l'ouverture": "Collapser le code à l'ouverture" }, "plugins\/script\/desktop\/php\/script.php": { "401 - Accès non autorisé": "401 - Accesso non autorizzato", "Gestion": "Gestione", "Ajouter": "Aggiungi", "Configuration": "Configurazione", - "Market": "Mercato", - "Mes Scripts": "", + "Mes Scripts": "Mes Scripts", + "Aucun équipement trouvé, cliquer sur \"Ajouter\" pour commencer": "Aucun équipement trouvé, cliquer sur \"Ajouter\" pour commencer", "Rechercher": "Ricercare", + "Equipement visible": "Equipement visible", + "Equipement non visible": "Equipement non visible", "Configuration avancée": "Configurazione avanzata", "Dupliquer": "Duplicato", "Sauvegarder": "Salva", "Supprimer": "Rimuovere", "Equipement": "Dispositivo", "Commandes": "Comandi", - "Nom de l'équipement script": "", + "Paramètres généraux": "Paramètres généraux", + "Nom de l'équipement": "Nom de l'équipement", "Objet parent": "Oggetto padre", "Aucun": "Nessuno", "Catégorie": "Categoria", + "Options": "Opzioni", "Activer": "Attivare", "Visible": "Visibile", - "Auto-actualisation (cron)": "", - "Délai avant d'actualiser les infos suite à une action (en secondes)": "", - "Ajouter une commande script": "", - " Sous type :": "", - "Curseur : mettre #slider# pour récupérer la valeur": "", - "Couleur : mettre #color# pour récupérer la valeur": "", - "Message : mettre #title# et #message#": "", - "Liste : value|display;": "", + "Paramètres spécifiques": "Paramètres spécifiques", + "Auto-actualisation": "Auto-actualisation", + "Fréquence de rafraîchissement des commandes infos de l'équipement": "Fréquence de rafraîchissement des commandes infos de l'équipement", + "Cliquer sur ? pour afficher l'assistant cron": "Cliquer sur ? pour afficher l'assistant cron", + "Délai avant d'actualiser les infos suite à une action (en secondes)": "Délai avant d'actualiser les infos suite à une action (en secondes)", + "Ajouter une commande script": "Ajouter une commande script", + " Sous type :": "Sous type :", + "Curseur : mettre #slider# pour récupérer la valeur": "Curseur : mettre #slider# pour récupérer la valeur", + "Couleur : mettre #color# pour récupérer la valeur": "Couleur : mettre #color# pour récupérer la valeur", + "Message : mettre #title# et #message#": "Message : mettre #title# et #message#", + "Liste : value|display;": "Liste : value|display;", "Nom": "Nome", - "Type script": "", + "Type script": "Type script", "Type": "Tipo", - "Requête": "", - "Options": "Opzioni", - "Divers": "Vario", - "Paramètres": "Impostazioni" + "Requête": "Requête", + "Paramètres": "Impostazioni", + "Etat": "Etat", + "Actions": "Actions" }, "plugins\/script\/desktop\/js\/script.js": { - "Etes-vous sûr de vouloir supprimer le script :": "", - "Vous devez d\\'abord sélectioner un script": "", - "Partager sur le market": "Condividi sul Market", + "Etes-vous sûr de vouloir supprimer le script :": "Etes-vous sûr de vouloir supprimer le script :", "Script": "Copione", - "HTTP": "", - "HTML": "", - "XML": "", - "JSON": "", - "Parcourir": "", + "HTTP": "HTTP", + "HTML": "HTML", + "XML": "XML", + "JSON": "JSON", + "Nom de la commande": "Nom de la commande", + "Choisir une icône": "Choisir une icône", + "Commande info liée": "Commande info liée", + "Aucune": "Aucune", + "Parcourir": "Parcourir", "Editer": "Modifica", "Nouveau": "Nuovo", "Supprimer": "Rimuovere", - "Partager": "", - "Vérifier SSL": "", - "Retour vide": "", - "Pas d\\'erreurs": "", - "La réponse doit contenir": "", - "Timeout (s)": "", + "Vérifier SSL": "Vérifier SSL", + "Retour vide": "Retour vide", + "Pas d\\'erreurs": "Pas d\\'erreurs", + "La réponse doit contenir": "La réponse doit contenir", + "Timeout (s)": "Timeout (s)", "Utilisateur": "Utente", - "Maximum d\\'essai": "", + "Maximum d\\'essai": "Maximum d\\'essai", "Mot de passe": "Password", - "Essais au maximum": "", - "Unité": "Unità", - "Min": "", - "Max": "", - "Liste de valeur|texte séparé par ;": "", - "Liste": "", + "Essais au maximum": "Essais au maximum", "Afficher": "Mostra", "Historiser": "Storicizza", "Inverser": "Inverti", - "Configuration de la commande": "Impostazione comando", - "Tester": "Prova" + "Min": "Min", + "Max": "Max", + "Unité": "Unità", + "Liste de valeur|texte séparé par ;": "Liste de valeur|texte séparé par ;", + "Liste": "Liste", + "Commande d\\'information à mettre à jour": "Commande d\\'information à mettre à jour", + "Valeur de l\\'information": "Valeur de l\\'information" }, "plugins\/script\/core\/ajax\/script.ajax.php": { "401 - Accès non autorisé": "401 - Accesso non autorizzato", - "Aucun fichier trouvé : ": "", - "Impossible de lire : ": "", - "Impossible de lire un dossier : ": "", - "Impossible d\\'écrire dans : ": "", - "Impossible d\\'écrire un dossier : ": "", - "Impossible de supprimer un dossier : ": "", - "Impossible de supprimer le fichier : ": "", + "Aucun fichier trouvé : ": "Aucun fichier trouvé :", + "Impossible de lire : ": "Impossible de lire :", + "Impossible de lire un dossier : ": "Impossible de lire un dossier :", + "Impossible d\\'écrire dans : ": "Impossible d\\'écrire dans :", + "Impossible d\\'écrire un dossier : ": "Impossible d\\'écrire un dossier :", + "Impossible de supprimer un dossier : ": "Impossible de supprimer un dossier :", + "Impossible de supprimer le fichier : ": "Impossible de supprimer le fichier :", "Aucune méthode correspondante à : ": "Nessun metodo corrispondente a:" }, "plugins\/script\/core\/class\/script.class.php": { - "Erreur pour ": "", - "Expression cron non valide pour ": "", - "Impossible de trouver le script :": "", - "Impossible de supprimer : ": "Impossibile eliminare:", - ". Vérifiez les droits": "Controlla i diritti", - "Echec de création du zip. Répertoire source : ": "", - " \/ Répertoire cible : ": "", - "Impossible d\\'installer le script. Le dossier n\\'existe pas : ": "", - "Impossible de décompresser l\\'archive zip : ": "Impossibile decomprimere l'archivio zip:", - "Echec de l\\'installation. Impossible de trouver le script ": "", - "Echec de la désinstallation. Impossible de supprimer le script ": "", + "Erreur pour ": "Erreur pour", + "Expression cron non valide pour ": "Expression cron non valide pour", "Rafraichir": "Aggiorna", - "Le champ requête ne peut pas être vide": "", - "Le champ requête type ne peut pas être vide": "", - "Vous ne pouvez pas avoir un script de type XML et action": "", - "La requête ne peut pas être vide : ": "", - "Le message et le sujet ne peuvent pas être vide": "", - "La réponse ne contient pas ": "", - "Json invalide ou non décodable : ": "" + "Le champ requête ne peut pas être vide": "Le champ requête ne peut pas être vide", + "Le champ requête type ne peut pas être vide": "Le champ requête type ne peut pas être vide", + "Vous ne pouvez pas avoir un script de type XML et action": "Vous ne pouvez pas avoir un script de type XML et action", + "La requête ne peut pas être vide : ": "La requête ne peut pas être vide :", + "Le message et le sujet ne peuvent pas être vide": "Le message et le sujet ne peuvent pas être vide", + "La réponse ne contient pas ": "La réponse ne contient pas", + "Json invalide ou non décodable : ": "Json invalide ou non décodable :" + }, + "info.json": { + "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom": "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom" } } \ No newline at end of file diff --git a/core/i18n/ja_JP.json b/core/i18n/ja_JP.json index 0558321..861995b 100644 --- a/core/i18n/ja_JP.json +++ b/core/i18n/ja_JP.json @@ -1,108 +1,110 @@ { "plugins\/script\/plugin_info\/configuration.php": { - "Chemin des scripts utilisateur": "", - "Collapser le code à l'ouverture": "" + "Chemin des scripts utilisateur": "Chemin des scripts utilisateur", + "Collapser le code à l'ouverture": "Collapser le code à l'ouverture" }, "plugins\/script\/desktop\/php\/script.php": { "401 - Accès non autorisé": "401-不正アクセス", "Gestion": "管理", "Ajouter": "加えます", "Configuration": "コンフィギュレーション", - "Market": "市場", - "Mes Scripts": "", + "Mes Scripts": "Mes Scripts", + "Aucun équipement trouvé, cliquer sur \"Ajouter\" pour commencer": "Aucun équipement trouvé, cliquer sur \"Ajouter\" pour commencer", "Rechercher": "検索", + "Equipement visible": "Equipement visible", + "Equipement non visible": "Equipement non visible", "Configuration avancée": "高度な構成", "Dupliquer": "重複", "Sauvegarder": "セーブ", "Supprimer": "取り除きます", "Equipement": "設備", "Commandes": "コマンド", - "Nom de l'équipement script": "", + "Paramètres généraux": "Paramètres généraux", + "Nom de l'équipement": "Nom de l'équipement", "Objet parent": "親オブジェクト", "Aucun": "何でもありません", "Catégorie": "カテゴリ", + "Options": "オプション", "Activer": "アクティブ", "Visible": "目に見えます", - "Auto-actualisation (cron)": "", - "Délai avant d'actualiser les infos suite à une action (en secondes)": "", - "Ajouter une commande script": "", - " Sous type :": "", - "Curseur : mettre #slider# pour récupérer la valeur": "", - "Couleur : mettre #color# pour récupérer la valeur": "", - "Message : mettre #title# et #message#": "", - "Liste : value|display;": "", + "Paramètres spécifiques": "Paramètres spécifiques", + "Auto-actualisation": "Auto-actualisation", + "Fréquence de rafraîchissement des commandes infos de l'équipement": "Fréquence de rafraîchissement des commandes infos de l'équipement", + "Cliquer sur ? pour afficher l'assistant cron": "Cliquer sur ? pour afficher l'assistant cron", + "Délai avant d'actualiser les infos suite à une action (en secondes)": "Délai avant d'actualiser les infos suite à une action (en secondes)", + "Ajouter une commande script": "Ajouter une commande script", + " Sous type :": "Sous type :", + "Curseur : mettre #slider# pour récupérer la valeur": "Curseur : mettre #slider# pour récupérer la valeur", + "Couleur : mettre #color# pour récupérer la valeur": "Couleur : mettre #color# pour récupérer la valeur", + "Message : mettre #title# et #message#": "Message : mettre #title# et #message#", + "Liste : value|display;": "Liste : value|display;", "Nom": "表題", - "Type script": "", + "Type script": "Type script", "Type": "タイプ", - "Requête": "", - "Options": "オプション", - "Divers": "諸", - "Paramètres": "設定" + "Requête": "Requête", + "Paramètres": "設定", + "Etat": "Etat", + "Actions": "Actions" }, "plugins\/script\/desktop\/js\/script.js": { - "Etes-vous sûr de vouloir supprimer le script :": "", - "Vous devez d\\'abord sélectioner un script": "", - "Partager sur le market": "市場でシェア", + "Etes-vous sûr de vouloir supprimer le script :": "Etes-vous sûr de vouloir supprimer le script :", "Script": "スクリプト", - "HTTP": "", - "HTML": "", - "XML": "", - "JSON": "", - "Parcourir": "", + "HTTP": "HTTP", + "HTML": "HTML", + "XML": "XML", + "JSON": "JSON", + "Nom de la commande": "Nom de la commande", + "Choisir une icône": "Choisir une icône", + "Commande info liée": "Commande info liée", + "Aucune": "Aucune", + "Parcourir": "Parcourir", "Editer": "編集します", "Nouveau": "新しいです", "Supprimer": "取り除きます", - "Partager": "", - "Vérifier SSL": "", - "Retour vide": "", - "Pas d\\'erreurs": "", - "La réponse doit contenir": "", - "Timeout (s)": "", + "Vérifier SSL": "Vérifier SSL", + "Retour vide": "Retour vide", + "Pas d\\'erreurs": "Pas d\\'erreurs", + "La réponse doit contenir": "La réponse doit contenir", + "Timeout (s)": "Timeout (s)", "Utilisateur": "ユーザー", - "Maximum d\\'essai": "", + "Maximum d\\'essai": "Maximum d\\'essai", "Mot de passe": "パスワード", - "Essais au maximum": "", - "Unité": "団結", - "Min": "低いです", - "Max": "マックス", - "Liste de valeur|texte séparé par ;": "", - "Liste": "", + "Essais au maximum": "Essais au maximum", "Afficher": "ディスプレイ", "Historiser": "Historicize", "Inverser": "逆", - "Configuration de la commande": "設定された制御", - "Tester": "テスト" + "Min": "低いです", + "Max": "マックス", + "Unité": "団結", + "Liste de valeur|texte séparé par ;": "Liste de valeur|texte séparé par ;", + "Liste": "Liste", + "Commande d\\'information à mettre à jour": "Commande d\\'information à mettre à jour", + "Valeur de l\\'information": "Valeur de l\\'information" }, "plugins\/script\/core\/ajax\/script.ajax.php": { "401 - Accès non autorisé": "401-不正アクセス", - "Aucun fichier trouvé : ": "", - "Impossible de lire : ": "", - "Impossible de lire un dossier : ": "", - "Impossible d\\'écrire dans : ": "", - "Impossible d\\'écrire un dossier : ": "", - "Impossible de supprimer un dossier : ": "", - "Impossible de supprimer le fichier : ": "", + "Aucun fichier trouvé : ": "Aucun fichier trouvé :", + "Impossible de lire : ": "Impossible de lire :", + "Impossible de lire un dossier : ": "Impossible de lire un dossier :", + "Impossible d\\'écrire dans : ": "Impossible d\\'écrire dans :", + "Impossible d\\'écrire un dossier : ": "Impossible d\\'écrire un dossier :", + "Impossible de supprimer un dossier : ": "Impossible de supprimer un dossier :", + "Impossible de supprimer le fichier : ": "Impossible de supprimer le fichier :", "Aucune méthode correspondante à : ": "以下に対応するメソッドはありません:" }, "plugins\/script\/core\/class\/script.class.php": { - "Erreur pour ": "", - "Expression cron non valide pour ": "", - "Impossible de trouver le script :": "", - "Impossible de supprimer : ": "削除できません:", - ". Vérifiez les droits": "。権利を確認する", - "Echec de création du zip. Répertoire source : ": "", - " \/ Répertoire cible : ": "", - "Impossible d\\'installer le script. Le dossier n\\'existe pas : ": "", - "Impossible de décompresser l\\'archive zip : ": "Zipアーカイブを解凍できません:", - "Echec de l\\'installation. Impossible de trouver le script ": "", - "Echec de la désinstallation. Impossible de supprimer le script ": "", + "Erreur pour ": "Erreur pour", + "Expression cron non valide pour ": "Expression cron non valide pour", "Rafraichir": "クール", - "Le champ requête ne peut pas être vide": "", - "Le champ requête type ne peut pas être vide": "", - "Vous ne pouvez pas avoir un script de type XML et action": "", - "La requête ne peut pas être vide : ": "", - "Le message et le sujet ne peuvent pas être vide": "", - "La réponse ne contient pas ": "", - "Json invalide ou non décodable : ": "" + "Le champ requête ne peut pas être vide": "Le champ requête ne peut pas être vide", + "Le champ requête type ne peut pas être vide": "Le champ requête type ne peut pas être vide", + "Vous ne pouvez pas avoir un script de type XML et action": "Vous ne pouvez pas avoir un script de type XML et action", + "La requête ne peut pas être vide : ": "La requête ne peut pas être vide :", + "Le message et le sujet ne peuvent pas être vide": "Le message et le sujet ne peuvent pas être vide", + "La réponse ne contient pas ": "La réponse ne contient pas", + "Json invalide ou non décodable : ": "Json invalide ou non décodable :" + }, + "info.json": { + "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom": "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom" } } \ No newline at end of file diff --git a/core/i18n/pt_PT.json b/core/i18n/pt_PT.json index 4ba78cc..ec54fba 100644 --- a/core/i18n/pt_PT.json +++ b/core/i18n/pt_PT.json @@ -8,22 +8,29 @@ "Gestion": "Gestão", "Ajouter": "Adicionar", "Configuration": "Configuração", - "Market": "Mercado", "Mes Scripts": "Meus scripts", + "Aucun équipement trouvé, cliquer sur \"Ajouter\" pour commencer": "Nenhum equipamento encontrado, clique em \"Adicionar\" para iniciar", "Rechercher": "Pesquisa", + "Equipement visible": "Equipamento visível", + "Equipement non visible": "Equipamento não visível", "Configuration avancée": "Configuração avançada", "Dupliquer": "Duplicar", "Sauvegarder": "Salvar", "Supprimer": "Remover", "Equipement": "Equipamento", "Commandes": "Comandos", - "Nom de l'équipement script": "Nome do equipamento de script", + "Paramètres généraux": "Configurações Gerais", + "Nom de l'équipement": "Nome do equipamento", "Objet parent": "Objeto pai", "Aucun": "Nemhum", "Catégorie": "Categoria", + "Options": "Opções", "Activer": "Ativar", "Visible": "Visivél", - "Auto-actualisation (cron)": "Atualização automática (cron)", + "Paramètres spécifiques": "Parâmetros específicos", + "Auto-actualisation": "Atualização automática", + "Fréquence de rafraîchissement des commandes infos de l'équipement": "Taxa de atualização do comando de informações do equipamento", + "Cliquer sur ? pour afficher l'assistant cron": "Clique em ? para exibir o auxiliar cron", "Délai avant d'actualiser les infos suite à une action (en secondes)": "Tempo antes de atualizar as informações após uma ação (em segundos)", "Ajouter une commande script": "Adicionar um comando de script", " Sous type :": "Subtipo:", @@ -35,24 +42,25 @@ "Type script": "Tipo de script", "Type": "Tipo", "Requête": "Pedido", - "Options": "Opções", - "Divers": "Vário", - "Paramètres": "Configurações" + "Paramètres": "Configurações", + "Etat": "Estado", + "Actions": "Ações" }, "plugins\/script\/desktop\/js\/script.js": { "Etes-vous sûr de vouloir supprimer le script :": "Tem certeza de que deseja excluir o script:", - "Vous devez d\\'abord sélectioner un script": "Você deve primeiro selecionar um script", - "Partager sur le market": "Compartilhar no mercado", "Script": "Escrita", "HTTP": "HTTP", "HTML": "Html", "XML": "Xml", "JSON": "JSON", + "Nom de la commande": "Nome do comando", + "Choisir une icône": "Escolha um ícone", + "Commande info liée": "Comando de informações vinculadas", + "Aucune": "Nenhum", "Parcourir": "Procurar", "Editer": "Editar", "Nouveau": "Novo", "Supprimer": "Remover", - "Partager": "Compartilhe", "Vérifier SSL": "Verificar SSL", "Retour vide": "Retorno vazio", "Pas d\\'erreurs": "Sem erros", @@ -62,16 +70,16 @@ "Maximum d\\'essai": "Teste máximo", "Mot de passe": "Senha", "Essais au maximum": "Testes máximos", - "Unité": "Unidade", + "Afficher": "Display", + "Historiser": "Historicizar", + "Inverser": "Inverter", "Min": "Baixo", "Max": "Máx.", + "Unité": "Unidade", "Liste de valeur|texte séparé par ;": "Lista de valores | texto separado por;", "Liste": "Lista", - "Afficher": "Display", - "Historiser": "Historicizar", - "Inverser": "Inverter", - "Configuration de la commande": "Set Controle", - "Tester": "Teste" + "Commande d\\'information à mettre à jour": "Informações do pedido para atualizar", + "Valeur de l\\'information": "Valor da informação" }, "plugins\/script\/core\/ajax\/script.ajax.php": { "401 - Accès non autorisé": "401 - Acesso não autorizado", @@ -87,15 +95,6 @@ "plugins\/script\/core\/class\/script.class.php": { "Erreur pour ": "Erro para", "Expression cron non valide pour ": "Expressão cron inválida para", - "Impossible de trouver le script :": "Não foi possível encontrar o script:", - "Impossible de supprimer : ": "Não foi possível excluir:", - ". Vérifiez les droits": "Verifique os direitos", - "Echec de création du zip. Répertoire source : ": "Falha ao criar o zip. Diretório de origem:", - " \/ Répertoire cible : ": "\/ Diretório de destino:", - "Impossible d\\'installer le script. Le dossier n\\'existe pas : ": "Não foi possível instalar o script. A pasta não existe:", - "Impossible de décompresser l\\'archive zip : ": "Não foi possível descompactar o arquivo zip:", - "Echec de l\\'installation. Impossible de trouver le script ": "Falha na instalação. Não foi possível encontrar o script", - "Echec de la désinstallation. Impossible de supprimer le script ": "Falha na desinstalação. Não foi possível excluir o script", "Rafraichir": "Legal", "Le champ requête ne peut pas être vide": "O campo de solicitação não pode estar vazio", "Le champ requête type ne peut pas être vide": "O campo de solicitação padrão não pode estar vazio", @@ -104,5 +103,8 @@ "Le message et le sujet ne peuvent pas être vide": "A mensagem e o assunto não podem estar em branco", "La réponse ne contient pas ": "A resposta não contém", "Json invalide ou non décodable : ": "Json inválido ou não decodificável:" + }, + "info.json": { + "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom": "Plugin adicionando suporte a scripts no Jeedom. Scripts são programas em Python \/ PHP \/ Shell \/ Ruby, etc ... que permitem adicionar funções ao Jeedom" } } \ No newline at end of file diff --git a/core/i18n/ru_RU.json b/core/i18n/ru_RU.json index 07e429a..a6d8ce6 100644 --- a/core/i18n/ru_RU.json +++ b/core/i18n/ru_RU.json @@ -1,108 +1,110 @@ { "plugins\/script\/plugin_info\/configuration.php": { - "Chemin des scripts utilisateur": "", - "Collapser le code à l'ouverture": "" + "Chemin des scripts utilisateur": "Chemin des scripts utilisateur", + "Collapser le code à l'ouverture": "Collapser le code à l'ouverture" }, "plugins\/script\/desktop\/php\/script.php": { "401 - Accès non autorisé": "401 - Несанкционированный доступ", "Gestion": "Управление", "Ajouter": "Добавить", "Configuration": "Конфигурация", - "Market": "Маркет", - "Mes Scripts": "", + "Mes Scripts": "Mes Scripts", + "Aucun équipement trouvé, cliquer sur \"Ajouter\" pour commencer": "Aucun équipement trouvé, cliquer sur \"Ajouter\" pour commencer", "Rechercher": "поиск", + "Equipement visible": "Equipement visible", + "Equipement non visible": "Equipement non visible", "Configuration avancée": "Расширенные настройки", "Dupliquer": "дубликат", "Sauvegarder": "Сохранить", "Supprimer": "удаление", "Equipement": "Оборудование", "Commandes": "Команды", - "Nom de l'équipement script": "", + "Paramètres généraux": "Paramètres généraux", + "Nom de l'équipement": "Nom de l'équipement", "Objet parent": "Родительский объект", "Aucun": "Нет", "Catégorie": "категория", + "Options": "Опции", "Activer": "активировать", "Visible": "Видимый", - "Auto-actualisation (cron)": "", - "Délai avant d'actualiser les infos suite à une action (en secondes)": "", - "Ajouter une commande script": "", - " Sous type :": "", - "Curseur : mettre #slider# pour récupérer la valeur": "", - "Couleur : mettre #color# pour récupérer la valeur": "", - "Message : mettre #title# et #message#": "", - "Liste : value|display;": "", + "Paramètres spécifiques": "Paramètres spécifiques", + "Auto-actualisation": "Auto-actualisation", + "Fréquence de rafraîchissement des commandes infos de l'équipement": "Fréquence de rafraîchissement des commandes infos de l'équipement", + "Cliquer sur ? pour afficher l'assistant cron": "Cliquer sur ? pour afficher l'assistant cron", + "Délai avant d'actualiser les infos suite à une action (en secondes)": "Délai avant d'actualiser les infos suite à une action (en secondes)", + "Ajouter une commande script": "Ajouter une commande script", + " Sous type :": "Sous type :", + "Curseur : mettre #slider# pour récupérer la valeur": "Curseur : mettre #slider# pour récupérer la valeur", + "Couleur : mettre #color# pour récupérer la valeur": "Couleur : mettre #color# pour récupérer la valeur", + "Message : mettre #title# et #message#": "Message : mettre #title# et #message#", + "Liste : value|display;": "Liste : value|display;", "Nom": "Имя", - "Type script": "", + "Type script": "Type script", "Type": "Тип", - "Requête": "", - "Options": "Опции", - "Divers": "Различный", - "Paramètres": "настройки" + "Requête": "Requête", + "Paramètres": "настройки", + "Etat": "Etat", + "Actions": "Actions" }, "plugins\/script\/desktop\/js\/script.js": { - "Etes-vous sûr de vouloir supprimer le script :": "", - "Vous devez d\\'abord sélectioner un script": "", - "Partager sur le market": "Участвовать в Маркете", + "Etes-vous sûr de vouloir supprimer le script :": "Etes-vous sûr de vouloir supprimer le script :", "Script": "Скрипт", - "HTTP": "", - "HTML": "", - "XML": "", - "JSON": "", - "Parcourir": "", + "HTTP": "HTTP", + "HTML": "HTML", + "XML": "XML", + "JSON": "JSON", + "Nom de la commande": "Nom de la commande", + "Choisir une icône": "Choisir une icône", + "Commande info liée": "Commande info liée", + "Aucune": "Aucune", + "Parcourir": "Parcourir", "Editer": "Редактировать", "Nouveau": "Новый", "Supprimer": "удаление", - "Partager": "", - "Vérifier SSL": "", - "Retour vide": "", - "Pas d\\'erreurs": "", - "La réponse doit contenir": "", - "Timeout (s)": "", + "Vérifier SSL": "Vérifier SSL", + "Retour vide": "Retour vide", + "Pas d\\'erreurs": "Pas d\\'erreurs", + "La réponse doit contenir": "La réponse doit contenir", + "Timeout (s)": "Timeout (s)", "Utilisateur": "Пользователь", - "Maximum d\\'essai": "", + "Maximum d\\'essai": "Maximum d\\'essai", "Mot de passe": "Пароль", - "Essais au maximum": "", - "Unité": "Устройство", - "Min": "Мин", - "Max": "Макс", - "Liste de valeur|texte séparé par ;": "", - "Liste": "", + "Essais au maximum": "Essais au maximum", "Afficher": "дисплей", "Historiser": "История", "Inverser": "Обратный", - "Configuration de la commande": "управляющий набор", - "Tester": "Тест" + "Min": "Мин", + "Max": "Макс", + "Unité": "Устройство", + "Liste de valeur|texte séparé par ;": "Liste de valeur|texte séparé par ;", + "Liste": "Liste", + "Commande d\\'information à mettre à jour": "Commande d\\'information à mettre à jour", + "Valeur de l\\'information": "Valeur de l\\'information" }, "plugins\/script\/core\/ajax\/script.ajax.php": { "401 - Accès non autorisé": "401 - Несанкционированный доступ", - "Aucun fichier trouvé : ": "", - "Impossible de lire : ": "", - "Impossible de lire un dossier : ": "", - "Impossible d\\'écrire dans : ": "", - "Impossible d\\'écrire un dossier : ": "", - "Impossible de supprimer un dossier : ": "", - "Impossible de supprimer le fichier : ": "", + "Aucun fichier trouvé : ": "Aucun fichier trouvé :", + "Impossible de lire : ": "Impossible de lire :", + "Impossible de lire un dossier : ": "Impossible de lire un dossier :", + "Impossible d\\'écrire dans : ": "Impossible d\\'écrire dans :", + "Impossible d\\'écrire un dossier : ": "Impossible d\\'écrire un dossier :", + "Impossible de supprimer un dossier : ": "Impossible de supprimer un dossier :", + "Impossible de supprimer le fichier : ": "Impossible de supprimer le fichier :", "Aucune méthode correspondante à : ": "Aucune methode correspondante à :" }, "plugins\/script\/core\/class\/script.class.php": { - "Erreur pour ": "", - "Expression cron non valide pour ": "", - "Impossible de trouver le script :": "", - "Impossible de supprimer : ": "", - ". Vérifiez les droits": "", - "Echec de création du zip. Répertoire source : ": "", - " \/ Répertoire cible : ": "", - "Impossible d\\'installer le script. Le dossier n\\'existe pas : ": "", - "Impossible de décompresser l\\'archive zip : ": "", - "Echec de l\\'installation. Impossible de trouver le script ": "", - "Echec de la désinstallation. Impossible de supprimer le script ": "", + "Erreur pour ": "Erreur pour", + "Expression cron non valide pour ": "Expression cron non valide pour", "Rafraichir": "Обновить", - "Le champ requête ne peut pas être vide": "", - "Le champ requête type ne peut pas être vide": "", - "Vous ne pouvez pas avoir un script de type XML et action": "", - "La requête ne peut pas être vide : ": "", - "Le message et le sujet ne peuvent pas être vide": "", - "La réponse ne contient pas ": "", - "Json invalide ou non décodable : ": "" + "Le champ requête ne peut pas être vide": "Le champ requête ne peut pas être vide", + "Le champ requête type ne peut pas être vide": "Le champ requête type ne peut pas être vide", + "Vous ne pouvez pas avoir un script de type XML et action": "Vous ne pouvez pas avoir un script de type XML et action", + "La requête ne peut pas être vide : ": "La requête ne peut pas être vide :", + "Le message et le sujet ne peuvent pas être vide": "Le message et le sujet ne peuvent pas être vide", + "La réponse ne contient pas ": "La réponse ne contient pas", + "Json invalide ou non décodable : ": "Json invalide ou non décodable :" + }, + "info.json": { + "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom": "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom" } } \ No newline at end of file diff --git a/core/i18n/tr.json b/core/i18n/tr.json index feac3c6..7104135 100644 --- a/core/i18n/tr.json +++ b/core/i18n/tr.json @@ -1,108 +1,110 @@ { "plugins\/script\/plugin_info\/configuration.php": { - "Chemin des scripts utilisateur": "", - "Collapser le code à l'ouverture": "" + "Chemin des scripts utilisateur": "Chemin des scripts utilisateur", + "Collapser le code à l'ouverture": "Collapser le code à l'ouverture" }, "plugins\/script\/desktop\/php\/script.php": { "401 - Accès non autorisé": "401 - Yetkisiz erişim", "Gestion": "Idare", "Ajouter": "Ekle", "Configuration": "Ayar", - "Market": "Pazar", - "Mes Scripts": "", + "Mes Scripts": "Mes Scripts", + "Aucun équipement trouvé, cliquer sur \"Ajouter\" pour commencer": "Aucun équipement trouvé, cliquer sur \"Ajouter\" pour commencer", "Rechercher": "Arayın", + "Equipement visible": "Equipement visible", + "Equipement non visible": "Equipement non visible", "Configuration avancée": "Gelişmiş ayarlar", "Dupliquer": "Kopyala", "Sauvegarder": "Kaydet", "Supprimer": "Sil", "Equipement": "Cihaz", "Commandes": "Komutalar", - "Nom de l'équipement script": "", + "Paramètres généraux": "Paramètres généraux", + "Nom de l'équipement": "Nom de l'équipement", "Objet parent": "Üst nesne", "Aucun": "Hiçbir", "Catégorie": "Kategori", + "Options": "Opsiyonlar", "Activer": "Etkinleştir", "Visible": "Görülebilir", - "Auto-actualisation (cron)": "", - "Délai avant d'actualiser les infos suite à une action (en secondes)": "", - "Ajouter une commande script": "", - " Sous type :": "", - "Curseur : mettre #slider# pour récupérer la valeur": "", - "Couleur : mettre #color# pour récupérer la valeur": "", - "Message : mettre #title# et #message#": "", - "Liste : value|display;": "", + "Paramètres spécifiques": "Paramètres spécifiques", + "Auto-actualisation": "Auto-actualisation", + "Fréquence de rafraîchissement des commandes infos de l'équipement": "Fréquence de rafraîchissement des commandes infos de l'équipement", + "Cliquer sur ? pour afficher l'assistant cron": "Cliquer sur ? pour afficher l'assistant cron", + "Délai avant d'actualiser les infos suite à une action (en secondes)": "Délai avant d'actualiser les infos suite à une action (en secondes)", + "Ajouter une commande script": "Ajouter une commande script", + " Sous type :": "Sous type :", + "Curseur : mettre #slider# pour récupérer la valeur": "Curseur : mettre #slider# pour récupérer la valeur", + "Couleur : mettre #color# pour récupérer la valeur": "Couleur : mettre #color# pour récupérer la valeur", + "Message : mettre #title# et #message#": "Message : mettre #title# et #message#", + "Liste : value|display;": "Liste : value|display;", "Nom": "İsim", - "Type script": "", + "Type script": "Type script", "Type": "Çeşit", - "Requête": "", - "Options": "Opsiyonlar", - "Divers": "Diğer", - "Paramètres": "Ayarlar ( Séçenekler )" + "Requête": "Requête", + "Paramètres": "Ayarlar ( Séçenekler )", + "Etat": "Etat", + "Actions": "Actions" }, "plugins\/script\/desktop\/js\/script.js": { - "Etes-vous sûr de vouloir supprimer le script :": "", - "Vous devez d\\'abord sélectioner un script": "", - "Partager sur le market": "Marketde paylaşın", + "Etes-vous sûr de vouloir supprimer le script :": "Etes-vous sûr de vouloir supprimer le script :", "Script": "Senaryo", - "HTTP": "", - "HTML": "", - "XML": "", - "JSON": "", - "Parcourir": "", + "HTTP": "HTTP", + "HTML": "HTML", + "XML": "XML", + "JSON": "JSON", + "Nom de la commande": "Nom de la commande", + "Choisir une icône": "Choisir une icône", + "Commande info liée": "Commande info liée", + "Aucune": "Aucune", + "Parcourir": "Parcourir", "Editer": "Düzenle", "Nouveau": "Yeni", "Supprimer": "Sil", - "Partager": "", - "Vérifier SSL": "", - "Retour vide": "", - "Pas d\\'erreurs": "", - "La réponse doit contenir": "", - "Timeout (s)": "", + "Vérifier SSL": "Vérifier SSL", + "Retour vide": "Retour vide", + "Pas d\\'erreurs": "Pas d\\'erreurs", + "La réponse doit contenir": "La réponse doit contenir", + "Timeout (s)": "Timeout (s)", "Utilisateur": "Kullanıcı", - "Maximum d\\'essai": "", + "Maximum d\\'essai": "Maximum d\\'essai", "Mot de passe": "Şifre", - "Essais au maximum": "", - "Unité": "Ünite", - "Min": "Minimum", - "Max": "Maximum", - "Liste de valeur|texte séparé par ;": "", - "Liste": "", + "Essais au maximum": "Essais au maximum", "Afficher": "Göster", "Historiser": "Tarihe göre sırala", "Inverser": "Ters çevir", - "Configuration de la commande": "Komutanın ayarları", - "Tester": "Test et" + "Min": "Minimum", + "Max": "Maximum", + "Unité": "Ünite", + "Liste de valeur|texte séparé par ;": "Liste de valeur|texte séparé par ;", + "Liste": "Liste", + "Commande d\\'information à mettre à jour": "Commande d\\'information à mettre à jour", + "Valeur de l\\'information": "Valeur de l\\'information" }, "plugins\/script\/core\/ajax\/script.ajax.php": { "401 - Accès non autorisé": "401 - Yetkisiz erişim", - "Aucun fichier trouvé : ": "", - "Impossible de lire : ": "", - "Impossible de lire un dossier : ": "", - "Impossible d\\'écrire dans : ": "", - "Impossible d\\'écrire un dossier : ": "", - "Impossible de supprimer un dossier : ": "", - "Impossible de supprimer le fichier : ": "", + "Aucun fichier trouvé : ": "Aucun fichier trouvé :", + "Impossible de lire : ": "Impossible de lire :", + "Impossible de lire un dossier : ": "Impossible de lire un dossier :", + "Impossible d\\'écrire dans : ": "Impossible d\\'écrire dans :", + "Impossible d\\'écrire un dossier : ": "Impossible d\\'écrire un dossier :", + "Impossible de supprimer un dossier : ": "Impossible de supprimer un dossier :", + "Impossible de supprimer le fichier : ": "Impossible de supprimer le fichier :", "Aucune méthode correspondante à : ": "Aşağıdakilere karşılık gelen bir yöntem yok:" }, "plugins\/script\/core\/class\/script.class.php": { - "Erreur pour ": "", - "Expression cron non valide pour ": "", - "Impossible de trouver le script :": "", - "Impossible de supprimer : ": "Silinemiyor:", - ". Vérifiez les droits": "Hakları kontrol edin", - "Echec de création du zip. Répertoire source : ": "", - " \/ Répertoire cible : ": "", - "Impossible d\\'installer le script. Le dossier n\\'existe pas : ": "", - "Impossible de décompresser l\\'archive zip : ": "Zip arşivi açılamıyor:", - "Echec de l\\'installation. Impossible de trouver le script ": "", - "Echec de la désinstallation. Impossible de supprimer le script ": "", + "Erreur pour ": "Erreur pour", + "Expression cron non valide pour ": "Expression cron non valide pour", "Rafraichir": "Yenile", - "Le champ requête ne peut pas être vide": "", - "Le champ requête type ne peut pas être vide": "", - "Vous ne pouvez pas avoir un script de type XML et action": "", - "La requête ne peut pas être vide : ": "", - "Le message et le sujet ne peuvent pas être vide": "", - "La réponse ne contient pas ": "", - "Json invalide ou non décodable : ": "" + "Le champ requête ne peut pas être vide": "Le champ requête ne peut pas être vide", + "Le champ requête type ne peut pas être vide": "Le champ requête type ne peut pas être vide", + "Vous ne pouvez pas avoir un script de type XML et action": "Vous ne pouvez pas avoir un script de type XML et action", + "La requête ne peut pas être vide : ": "La requête ne peut pas être vide :", + "Le message et le sujet ne peuvent pas être vide": "Le message et le sujet ne peuvent pas être vide", + "La réponse ne contient pas ": "La réponse ne contient pas", + "Json invalide ou non décodable : ": "Json invalide ou non décodable :" + }, + "info.json": { + "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom": "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom" } } \ No newline at end of file diff --git a/3rdparty/jquery.fileTree/jqueryFileTree.php b/core/php/jqueryFileTree.php similarity index 99% rename from 3rdparty/jquery.fileTree/jqueryFileTree.php rename to core/php/jqueryFileTree.php index d372781..f9e69f9 100644 --- a/3rdparty/jquery.fileTree/jqueryFileTree.php +++ b/core/php/jqueryFileTree.php @@ -46,4 +46,4 @@ echo ""; } } -?> \ No newline at end of file +?> diff --git a/desktop/js/script.js b/desktop/js/script.js index d1aeff8..de26702 100644 --- a/desktop/js/script.js +++ b/desktop/js/script.js @@ -1,521 +1,494 @@ - -/* This file is part of Jeedom. -* -* Jeedom is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* Jeedom is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with Jeedom. If not, see . -*/ - - -editor = null; - -$("#md_browseScriptFile").dialog({ - autoOpen: false, - modal: true, - height: (jQuery(window).height() - 250), - width: (jQuery(window).width() - 450), - closeText: '' -}); - -$("#table_cmd tbody").delegate(".cmdAttr[data-l1key=configuration][data-l2key=requestType]", 'change', function (event) { - $(this).closest('tr').find('.requestTypeConfig').hide(); - $(this).closest('tr').find('.requestTypeConfig[data-type=' + $(this).value() + ']').show(); - if($(this).value() == 'script'){ - $(this).closest('tr').find('.browseScriptFile').show(); - $(this).closest('tr').find('.editScriptFile').show(); - $(this).closest('tr').find('.removeScriptFile').show(); - $(this).closest('tr').find('.newScriptFile').show(); - $(this).closest('tr').find('.bt_shareOnMarket').show(); - - $(this).closest('tr').find('.tdRequest').attr('colspan', '2'); - $(this).closest('tr').find('.tdOptions').hide(); - }else{ - $(this).closest('tr').find('.browseScriptFile').hide(); - $(this).closest('tr').find('.editScriptFile').hide(); - $(this).closest('tr').find('.removeScriptFile').hide(); - $(this).closest('tr').find('.newScriptFile').hide(); - $(this).closest('tr').find('.bt_shareOnMarket').hide(); - - $(this).closest('tr').find('.tdRequest').attr('colspan', '1'); - $(this).closest('tr').find('.tdOptions').show(); - } -}); - -$("#table_cmd tbody").delegate(".browseScriptFile", 'click', function (event) { - var tr = $(this).closest('tr'); - $("#md_browseScriptFile").dialog('open'); - $('#div_browseScriptFileTree').fileTree({ - root: '/', - script: 'plugins/script/3rdparty/jquery.fileTree/jqueryFileTree.php?root=' + encodeURIComponent(userScriptDir), - folderEvent: 'click' - }, function (file) { - $("#md_browseScriptFile").dialog('close'); - if(userScriptDir.slice(-1) == '/' && file.slice(0,1) == '/'){ - file = file.slice(1); - } - tr.find('.cmdAttr[data-l1key=configuration][data-l2key=request]').value(userScriptDir+file); - }); -}); - -$("#table_cmd").sortable({axis: "y", cursor: "move", items: ".cmd", placeholder: "ui-state-highlight", tolerance: "intersect", forcePlaceholderSize: true}); - -$("#md_editScriptFile").dialog({ - autoOpen: false, - modal: true, - height: (jQuery(window).height() - 150), - width: (jQuery(window).width() - 150), - closeText: '' -}); - -$('#bt_cronGenerator').on('click',function(){ - jeedom.getCronSelectModal({},function (result) { - $('.eqLogicAttr[data-l1key=configuration][data-l2key=autorefresh]').value(result.value); - }); -}); - -$("#table_cmd tbody").delegate(".editScriptFile", 'click', function (event) { - var tr = $(this).closest('tr'); - var path = tr.find('.cmdAttr[data-l1key=configuration][data-l2key=request]').val(); - if (path.indexOf(' ') > 0) { - path = path.substr(0, path.indexOf(' ')); - } - var data = loadScriptFile(path); - if (data === false) { - return; - } - - if (editor != null) { - editor.getDoc().setValue(data.content); - editor.setOption("mode", data.mode); - setTimeout(function () { - editor.refresh(); - }, 1); - } else { - $('#ta_editScriptFile').val(data.content); - setTimeout(function () { - editor = CodeMirror.fromTextArea(document.getElementById("ta_editScriptFile"), { - styleActiveLine: true, - lineNumbers: true, - lineWrapping: true, - matchBrackets: true, - autoRefresh: true, - foldGutter: true, - gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"], - mode: data.mode - }); - editor.getWrapperElement().style.height = ($('#md_editScriptFile').height()) + 'px'; - editor.setOption("extraKeys", { - "Ctrl-Y": cm => CodeMirror.commands.foldAll(cm), - "Ctrl-I": cm => CodeMirror.commands.unfoldAll(cm) - }) - - $('.ui-dialog[aria-describedby="md_editScriptFile"] .CodeMirror-wrap').css("height", $(window).height() - 80) - - editor.refresh(); - - $('.ui-dialog[aria-describedby="md_editScriptFile"]').resize(function() { - editor.getWrapperElement().style.height = ($('#md_editScriptFile').height()) + 'px'; - editor.refresh() - }) - - if (foldOnStart == "1") { - CodeMirror.commands.foldAll(editor) - } - }, 1); - } - - $("#md_editScriptFile").dialog('option', 'buttons', { - "Annuler": function () { - $(this).dialog("close"); - }, - "Enregistrer": function () { - saveScriptFile(path, editor.getValue()); - } - }); - $("#md_editScriptFile").dialog('open'); -}); - - -$("#table_cmd tbody").delegate(".newScriptFile", 'click', function (event) { - var tr = $(this).closest('tr'); - bootbox.prompt("Nom du script ?", function (result) { - if (result !== null) { - var path = addUserScript(result); - if (path !== false) { - tr.find('.cmdAttr[data-l1key=configuration][data-l2key=request]').val(path); - $('#md_newUserScript').modal('hide'); - tr.find('.editScriptFile').click(); - } - } - }); -}); - -$("#table_cmd tbody").delegate(".removeScriptFile", 'click', function (event) { - var tr = $(this).closest('tr'); - var path = tr.find('.cmdAttr[data-l1key=configuration][data-l2key=request]').val(); - if (path.indexOf(' ') > 0) { - path = path.substr(0, path.indexOf(' ')); - } - if (path.indexOf('?') > 0) { - path = path.substr(0, path.indexOf('?')); - } - $.hideAlert(); - bootbox.confirm('{{Etes-vous sûr de vouloir supprimer le script :}} ' + path + ' ?', function (result) { - if (result) { - removeScript(path); - tr.find('.cmdAttr[data-l1key=configuration][data-l2key=request]').val(''); - } - }); -}); - -$("#table_cmd tbody").delegate('.bt_shareOnMarket', 'click', function () { - var tr = $(this).closest('tr'); - var path = tr.find('.cmdAttr[data-l1key=configuration][data-l2key=request]').val(); - var logicalId = getLogicalIdFromPath(path); - if (logicalId == '') { - $('#div_alert').showAlert({message: '{{Vous devez d\'abord sélectioner un script}}', level: 'danger'}); - return; - } - $('#md_modal').dialog({title: "{{Partager sur le market}}"}); - $('#md_modal').load('index.php?v=d&modal=update.send&type=script&logicalId=' + encodeURI(logicalId) + '&name=' + encodeURI(logicalId) + "&hidden=" + encodeURI(path)).dialog('open'); -}); - -$('#bt_getFromMarket').on('click', function () { - $('#md_modal').dialog({title: "{{Partager sur le market}}"}); - $('#md_modal').load('index.php?v=d&modal=update.list&type=script').dialog('open'); -}); - -$('#bt_getFromMarketicon').on('click', function () { - $('#md_modal').dialog({title: "{{Partager sur le market}}"}); - $('#md_modal').load('index.php?v=d&modal=update.list&type=script').dialog('open'); -}); - -$("#table_cmd").sortable({axis: "y", cursor: "move", items: ".cmd", placeholder: "ui-state-highlight", tolerance: "intersect", forcePlaceholderSize: true}); - - -function addCmdToTable(_cmd) { - if (!isset(_cmd)) { - var _cmd = {}; - } - if (!isset(_cmd.configuration)) { - _cmd.configuration = {}; - } - if (init(_cmd.logicalId) == 'refresh') { - return; - } - - var selRequestType = ''; - - var tr = ''; - - tr += ''; - tr += ''; - tr += '
'; - tr += '
'; - tr += ' Icone'; - tr += ''; - tr += '
'; - tr += '
'; - tr += ''; - tr += '
'; - tr += '
'; - tr += ''; - tr += ''; - tr += '' + selRequestType; - tr += ''; - tr += ''; - tr += '' + jeedom.cmd.availableType() + ''; - tr += ''; - tr += ''; - tr += ''; - tr += '
'; - tr += ''; - tr += ''; - tr += ''; - tr += ''; - tr += ''; - tr += ''; - tr += ''; - tr += '
'; - tr += ''; - tr += ''; - tr += ''; - - tr += '
'; - tr += '
'; - tr += '{{Vérifier SSL}} '; - tr += '{{Retour vide}} '; - tr += '{{Pas d\'erreurs}} '; - tr += '
'; - tr += ''; - tr += '
'; - tr += '
'; - tr += ''; - tr += ''; - tr += '
'; - tr += '
'; - tr += ''; - tr += ''; - tr += '
'; - tr += '
'; - tr += '
'; - - tr += ''; - - tr += ''; - - tr += ''; - tr += ''; - tr += ''; - tr += ''; - tr += ' '; - tr += ''; - tr += ''; - tr += ''; - tr += ''; - tr += ''; - tr += '
'; - tr += ''; - tr += ' '; - tr += ' '; - tr += ' '; - tr += '
'; - tr += ''; - tr += ''; - if (is_numeric(_cmd.id)) { - tr += ' '; - tr += ' {{Tester}}'; - } - tr += ' '; - tr += ''; - tr += ''; - - $('#table_cmd tbody').append(tr); - $('#table_cmd tbody tr:last').setValues(_cmd, '.cmdAttr'); - - if (isset(_cmd.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'); - } - - if (isset(_cmd.type)) { - $('#table_cmd tbody tr:last .cmdAttr[data-l1key=type]').value(init(_cmd.type)); - } - var tr = $('#table_cmd tbody tr:last'); - jeedom.eqLogic.builSelectCmd({ - id: $('.eqLogicAttr[data-l1key=id]').value(), - filter: {type: 'info'}, - error: function (error) { - $('#div_alert').showAlert({message: error.message, level: 'danger'}); - }, - success: function (result) { - tr.find('.cmdAttr[data-l1key=value]').append(result); - tr.find('.cmdAttr[data-l1key=configuration][data-l2key=updateCmdId]').append(result); - tr.setValues(_cmd, '.cmdAttr'); - jeedom.cmd.changeType(tr, init(_cmd.subType)); - initTooltips(); - } - }); -} - -function getLogicalIdFromPath(_path) { - if (_path.indexOf(' ') > 0) { - _path = _path.substr(0, _path.indexOf(' ')); - } - var res = _path.split("/"); - if (res.length > 0) { - return res[res.length - 1]; - } else { - return _path; - } -} - - -function loadScriptFile(_path) { - $.hideAlert(); - var result = false; - $.ajax({ - type: "POST", - url: "plugins/script/core/ajax/script.ajax.php", - data: { - action: "getScriptContent", - path: _path, - }, - dataType: 'json', - async: false, - error: function (request, status, error) { - handleAjaxError(request, status, error, $('#div_alert')); - }, - success: function (data) { - if (data.state != 'ok') { - $('#div_alert').showAlert({message: data.result, level: 'danger'}); - return false; - } - result = data.result; - switch (result.extension) { - case 'php' : - result.mode = 'text/x-php'; - break; - case 'sh' : - result.mode = 'shell'; - break; - case 'pl' : - result.mode = 'text/x-php'; - break; - case 'py' : - result.mode = 'text/x-python'; - break; - case 'rb' : - result.mode = 'text/x-ruby'; - break; - default : - result.mode = 'text/x-php'; - break; - } - } - }); - return result; -} - -function saveScriptFile(_path, _content) { - $.hideAlert(); - var success = false; - $.ajax({ - type: "POST", - url: "plugins/script/core/ajax/script.ajax.php", - data: { - action: "saveScriptContent", - path: _path, - content: _content, - }, - dataType: 'json', - async: false, - error: function (request, status, error) { - handleAjaxError(request, status, error, $('#div_editScriptFileAlert')); - }, - success: function (data) { - if (data.state != 'ok') { - $('#div_editScriptFileAlert').showAlert({message: data.result, level: 'danger'}); - return; - } - success = true; - $('#div_editScriptFileAlert').showAlert({message: 'Script sauvegardé', level: 'success'}); - } - }); - return success; -} - -function addUserScript(_name) { - $.hideAlert(); - var success = false; - $.ajax({ - type: "POST", - url: "plugins/script/core/ajax/script.ajax.php", - data: { - action: "addUserScript", - name: _name, - }, - dataType: 'json', - async: false, - error: function (request, status, error) { - handleAjaxError(request, status, error, $('#div_newUserScriptAlert')); - }, - success: function (data) { - if (data.state != 'ok') { - $('#div_newUserScriptAlert').showAlert({message: data.result, level: 'danger'}); - return; - } - success = data.result; - } - }); - return success; -} - -function removeScript(_path) { - $.hideAlert(); - var success = false; - $.ajax({// fonction permettant de faire de l'ajax - type: "POST", // méthode de transmission des données au fichier php - url: "plugins/script/core/ajax/script.ajax.php", // url du fichier php - data: { - action: "removeScript", - path: _path, - }, - dataType: 'json', - async: false, - error: function (request, status, error) { - handleAjaxError(request, status, error, $('#div_newUserScriptAlert')); - }, - success: function (data) { // si l'appel a bien fonctionné - if (data.state != 'ok') { - $('#div_newUserScriptAlert').showAlert({message: data.result, level: 'danger'}); - return; - } - $('#div_alert').showAlert({message: 'Script supprimé', level: 'success'}); - success = true; - } - }); - return success; -} + +/* This file is part of Jeedom. +* +* Jeedom is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* Jeedom is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with Jeedom. If not, see . +*/ + + +editor = null; + +$(function () { + $('#md_browseScriptFile, #md_editScriptFile').removeClass('hidden') +}) + +$("#md_browseScriptFile").dialog({ + autoOpen: false, + modal: true, + height: (jQuery(window).height() - 250), + width: (jQuery(window).width() - 450), + closeText: '' +}); + +$("#table_cmd tbody").delegate(".cmdAttr[data-l1key=configuration][data-l2key=requestType]", 'change', function (event) { + $(this).closest('tr').find('.requestTypeConfig').hide(); + $(this).closest('tr').find('.requestTypeConfig[data-type=' + $(this).value() + ']').show(); + if ($(this).value() == 'script') { + $(this).closest('tr').find('.browseScriptFile').show(); + $(this).closest('tr').find('.editScriptFile').show(); + $(this).closest('tr').find('.removeScriptFile').show(); + $(this).closest('tr').find('.newScriptFile').show(); + + $(this).closest('tr').find('.tdRequest').attr('colspan', '2'); + $(this).closest('tr').find('.tdOptions').hide(); + } else { + $(this).closest('tr').find('.browseScriptFile').hide(); + $(this).closest('tr').find('.editScriptFile').hide(); + $(this).closest('tr').find('.removeScriptFile').hide(); + $(this).closest('tr').find('.newScriptFile').hide(); + + $(this).closest('tr').find('.tdRequest').attr('colspan', '1'); + $(this).closest('tr').find('.tdOptions').show(); + } +}); + +$("#table_cmd tbody").delegate(".browseScriptFile", 'click', function (event) { + var tr = $(this).closest('tr'); + $("#md_browseScriptFile").dialog('open'); + $('#div_browseScriptFileTree').fileTree({ + root: '/', + script: 'plugins/script/core/php/jqueryFileTree.php?root=' + encodeURIComponent(userScriptDir), + folderEvent: 'click' + }, function (file) { + $("#md_browseScriptFile").dialog('close'); + if (userScriptDir.slice(-1) == '/' && file.slice(0, 1) == '/') { + file = file.slice(1); + } + tr.find('.cmdAttr[data-l1key=configuration][data-l2key=request]').value(userScriptDir + file); + }); +}); + +$("#table_cmd").sortable({ axis: "y", cursor: "move", items: ".cmd", placeholder: "ui-state-highlight", tolerance: "intersect", forcePlaceholderSize: true }); + +$("#md_editScriptFile").dialog({ + autoOpen: false, + modal: true, + height: (jQuery(window).height() - 150), + width: (jQuery(window).width() - 150), + closeText: '' +}); + +$("#table_cmd tbody").delegate(".editScriptFile", 'click', function (event) { + var tr = $(this).closest('tr'); + var path = tr.find('.cmdAttr[data-l1key=configuration][data-l2key=request]').val(); + if (path.indexOf(' ') > 0) { + path = path.substr(0, path.indexOf(' ')); + } + var data = loadScriptFile(path); + if (data === false) { + return; + } + + if (editor != null) { + editor.getDoc().setValue(data.content); + editor.setOption("mode", data.mode); + setTimeout(function () { + editor.refresh(); + }, 1); + } else { + $('#ta_editScriptFile').val(data.content); + setTimeout(function () { + editor = CodeMirror.fromTextArea(document.getElementById("ta_editScriptFile"), { + styleActiveLine: true, + lineNumbers: true, + lineWrapping: true, + matchBrackets: true, + autoRefresh: true, + foldGutter: true, + gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"], + mode: data.mode + }); + editor.getWrapperElement().style.height = ($('#md_editScriptFile').height()) + 'px'; + editor.setOption("extraKeys", { + "Ctrl-Y": cm => CodeMirror.commands.foldAll(cm), + "Ctrl-I": cm => CodeMirror.commands.unfoldAll(cm) + }) + + $('.ui-dialog[aria-describedby="md_editScriptFile"] .CodeMirror-wrap').css("height", $(window).height() - 80) + + editor.refresh(); + + $('.ui-dialog[aria-describedby="md_editScriptFile"]').resize(function () { + editor.getWrapperElement().style.height = ($('#md_editScriptFile').height()) + 'px'; + editor.refresh() + }) + + if (foldOnStart == "1") { + CodeMirror.commands.foldAll(editor) + } + }, 1); + } + + $("#md_editScriptFile").dialog('option', 'buttons', { + "Annuler": function () { + $(this).dialog("close"); + }, + "Enregistrer": function () { + saveScriptFile(path, editor.getValue()); + } + }); + $("#md_editScriptFile").dialog('open'); +}); + + +$("#table_cmd tbody").delegate(".newScriptFile", 'click', function (event) { + var tr = $(this).closest('tr'); + bootbox.prompt("Nom du script ?", function (result) { + if (result !== null) { + var path = addUserScript(result); + if (path !== false) { + tr.find('.cmdAttr[data-l1key=configuration][data-l2key=request]').val(path); + $('#md_newUserScript').modal('hide'); + tr.find('.editScriptFile').click(); + } + } + }); +}); + +$("#table_cmd tbody").delegate(".removeScriptFile", 'click', function (event) { + var tr = $(this).closest('tr'); + var path = tr.find('.cmdAttr[data-l1key=configuration][data-l2key=request]').val(); + if (path.indexOf(' ') > 0) { + path = path.substr(0, path.indexOf(' ')); + } + if (path.indexOf('?') > 0) { + path = path.substr(0, path.indexOf('?')); + } + $.hideAlert(); + bootbox.confirm('{{Etes-vous sûr de vouloir supprimer le script :}} ' + path + ' ?', function (result) { + if (result) { + removeScript(path); + tr.find('.cmdAttr[data-l1key=configuration][data-l2key=request]').val(''); + } + }); +}); + +$("#table_cmd").sortable({ axis: "y", cursor: "move", items: ".cmd", placeholder: "ui-state-highlight", tolerance: "intersect", forcePlaceholderSize: true }); + +function addCmdToTable(_cmd) { + if (!isset(_cmd)) { + var _cmd = {}; + } + if (!isset(_cmd.configuration)) { + _cmd.configuration = {}; + } + if (init(_cmd.logicalId) == 'refresh') { + return; + } + + var selRequestType = ''; + + var tr = ''; + + tr += ''; + tr += ''; + tr += '
'; + tr += ''; + tr += ''; + tr += ''; + tr += '
'; + tr += ''; + tr += ''; + tr += '' + selRequestType; + tr += ''; + tr += ''; + tr += '' + jeedom.cmd.availableType() + ''; + tr += ''; + tr += ''; + + tr += ''; + tr += '
'; + tr += ''; + tr += ''; + tr += ''; + tr += ''; + tr += ''; + tr += ''; + tr += '
'; + tr += ''; + tr += ''; + + tr += ''; + tr += '
'; + tr += '
'; + tr += '{{Vérifier SSL}} '; + tr += '{{Retour vide}} '; + tr += '{{Pas d\'erreurs}} '; + tr += '
'; + tr += ''; + tr += '
'; + tr += '
'; + tr += ''; + tr += ''; + tr += '
'; + tr += '
'; + tr += ''; + tr += ''; + tr += '
'; + tr += '
'; + tr += '
'; + + tr += ''; + + tr += ''; + + tr += ''; + tr += ''; + + tr += '' + tr += ' ' + tr += ' ' + tr += ' ' + tr += '
' + tr += '' + tr += '' + tr += '' + tr += ''; + tr += '
' + + tr += ''; + tr += ''; + tr += ''; + + tr += ''; + tr += ''; + tr += ''; + tr += ''; + if (is_numeric(_cmd.id)) { + tr += ' ' + tr += ' Tester' + } + tr += ' '; + tr += ''; + tr += ''; + + $('#table_cmd tbody').append(tr); + $('#table_cmd tbody tr:last').setValues(_cmd, '.cmdAttr'); + + if (isset(_cmd.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'); + } + + if (isset(_cmd.type)) { + $('#table_cmd tbody tr:last .cmdAttr[data-l1key=type]').value(init(_cmd.type)); + } + var tr = $('#table_cmd tbody tr:last'); + jeedom.eqLogic.builSelectCmd({ + id: $('.eqLogicAttr[data-l1key=id]').value(), + filter: { type: 'info' }, + error: function (error) { + $('#div_alert').showAlert({ message: error.message, level: 'danger' }); + }, + success: function (result) { + tr.find('.cmdAttr[data-l1key=value]').append(result); + tr.find('.cmdAttr[data-l1key=configuration][data-l2key=updateCmdId]').append(result); + tr.setValues(_cmd, '.cmdAttr'); + jeedom.cmd.changeType(tr, init(_cmd.subType)); + initTooltips(); + } + }); +} + +function getLogicalIdFromPath(_path) { + if (_path.indexOf(' ') > 0) { + _path = _path.substr(0, _path.indexOf(' ')); + } + var res = _path.split("/"); + if (res.length > 0) { + return res[res.length - 1]; + } else { + return _path; + } +} + + +function loadScriptFile(_path) { + $.hideAlert(); + var result = false; + $.ajax({ + type: "POST", + url: "plugins/script/core/ajax/script.ajax.php", + data: { + action: "getScriptContent", + path: _path, + }, + dataType: 'json', + async: false, + error: function (request, status, error) { + handleAjaxError(request, status, error, $('#div_alert')); + }, + success: function (data) { + if (data.state != 'ok') { + $('#div_alert').showAlert({ message: data.result, level: 'danger' }); + return false; + } + result = data.result; + switch (result.extension) { + case 'php': + result.mode = 'text/x-php'; + break; + case 'sh': + result.mode = 'shell'; + break; + case 'pl': + result.mode = 'text/x-php'; + break; + case 'py': + result.mode = 'text/x-python'; + break; + case 'rb': + result.mode = 'text/x-ruby'; + break; + default: + result.mode = 'text/x-php'; + break; + } + } + }); + return result; +} + +function saveScriptFile(_path, _content) { + $.hideAlert(); + var success = false; + $.ajax({ + type: "POST", + url: "plugins/script/core/ajax/script.ajax.php", + data: { + action: "saveScriptContent", + path: _path, + content: _content, + }, + dataType: 'json', + async: false, + error: function (request, status, error) { + handleAjaxError(request, status, error, $('#div_editScriptFileAlert')); + }, + success: function (data) { + if (data.state != 'ok') { + $('#div_editScriptFileAlert').showAlert({ message: data.result, level: 'danger' }); + return; + } + success = true; + $('#div_editScriptFileAlert').showAlert({ message: 'Script sauvegardé', level: 'success' }); + } + }); + return success; +} + +function addUserScript(_name) { + $.hideAlert(); + var success = false; + $.ajax({ + type: "POST", + url: "plugins/script/core/ajax/script.ajax.php", + data: { + action: "addUserScript", + name: _name, + }, + dataType: 'json', + async: false, + error: function (request, status, error) { + handleAjaxError(request, status, error, $('#div_newUserScriptAlert')); + }, + success: function (data) { + if (data.state != 'ok') { + $('#div_newUserScriptAlert').showAlert({ message: data.result, level: 'danger' }); + return; + } + success = data.result; + } + }); + return success; +} + +function removeScript(_path) { + $.hideAlert(); + var success = false; + $.ajax({// fonction permettant de faire de l'ajax + type: "POST", // méthode de transmission des données au fichier php + url: "plugins/script/core/ajax/script.ajax.php", // url du fichier php + data: { + action: "removeScript", + path: _path, + }, + dataType: 'json', + async: false, + error: function (request, status, error) { + handleAjaxError(request, status, error, $('#div_newUserScriptAlert')); + }, + success: function (data) { // si l'appel a bien fonctionné + if (data.state != 'ok') { + $('#div_newUserScriptAlert').showAlert({ message: data.result, level: 'danger' }); + return; + } + $('#div_alert').showAlert({ message: 'Script supprimé', level: 'success' }); + success = true; + } + }); + return success; +} diff --git a/desktop/php/script.php b/desktop/php/script.php index 6e8950f..857544d 100644 --- a/desktop/php/script.php +++ b/desktop/php/script.php @@ -1,201 +1,232 @@ -getId()); -$eqLogics = eqLogic::byType($plugin->getId()); -$foldOnStart = config::byKey('foldOnStart', 'script', '0'); -sendVarToJS('foldOnStart', $foldOnStart); - -include_file('3rdparty', 'jquery.fileTree/jqueryFileTree', 'css', 'script'); -include_file('3rdparty', 'codemirror/lib/codemirror', 'js'); -include_file('3rdparty', 'codemirror/lib/codemirror', 'css'); - -include_file('3rdparty', 'codemirror/mode/htmlmixed/htmlmixed', 'js'); -include_file('3rdparty', 'codemirror/mode/clike/clike', 'js'); -include_file('3rdparty', 'codemirror/mode/php/php', 'js'); -include_file('3rdparty', 'codemirror/mode/shell/shell', 'js'); -include_file('3rdparty', 'codemirror/mode/python/python', 'js'); -include_file('3rdparty', 'codemirror/mode/ruby/ruby', 'js'); -include_file('3rdparty', 'codemirror/mode/perl/perl', 'js'); - -//Core CodeMirror addons: -include_file('3rdparty', 'codemirror/addon/edit/matchbrackets', 'js'); -include_file('3rdparty', 'codemirror/addon/selection/active-line', 'js'); -include_file('3rdparty', 'codemirror/addon/search/search', 'js'); -include_file('3rdparty', 'codemirror/addon/search/searchcursor', 'js'); -include_file('3rdparty', 'codemirror/addon/dialog/dialog', 'js'); -include_file('3rdparty', 'codemirror/addon/dialog/dialog', 'css'); - -include_file('3rdparty', 'codemirror/addon/fold/brace-fold', 'js'); -include_file('3rdparty', 'codemirror/addon/fold/comment-fold', 'js'); -include_file('3rdparty', 'codemirror/addon/fold/foldcode', 'js'); -include_file('3rdparty', 'codemirror/addon/fold/indent-fold', 'js'); -include_file('3rdparty', 'codemirror/addon/fold/markdown-fold', 'js'); -include_file('3rdparty', 'codemirror/addon/fold/xml-fold', 'js'); -include_file('3rdparty', 'codemirror/addon/fold/foldgutter', 'js'); -include_file('3rdparty', 'codemirror/addon/fold/foldgutter', 'css'); - -sendVarToJS('userScriptDir', getRootPath() . '/' . config::byKey('userScriptDir', 'script')); -?> - - -
-
- {{Gestion}} -
-
- -
- {{Ajouter}} -
-
- -
- {{Configuration}} -
-
- -
- {{Market}} -
-
- {{Mes Scripts}} - -
- getIsEnable()) ? '' : 'disableCard'; - echo '
'; - echo ''; - echo '
'; - echo '' . $eqLogic->getHumanName(true, true) . ''; - echo '
'; - } - ?> -
-
-
- - -
- -
-
- -
- - -
- - - - - +getId()); +$eqLogics = eqLogic::byType($plugin->getId()); +$foldOnStart = config::byKey('foldOnStart', 'script', '0'); +sendVarToJS('foldOnStart', $foldOnStart); +sendVarToJS('userScriptDir', getRootPath() . '/' . config::byKey('userScriptDir', 'script')); +?> + + +
+
+ {{Gestion}} +
+
+ +
+ {{Ajouter}} +
+
+ +
+ {{Configuration}} +
+
+ {{Mes Scripts}} +
{{Aucun équipement trouvé, cliquer sur "Ajouter" pour commencer}}
'; + } else { + // Champ de recherche + echo '
'; + echo ''; + echo '
'; + echo ''; + echo ''; + echo '
'; + echo '
'; + // Liste des équipements du plugin + echo '
'; + foreach ($eqLogics as $eqLogic) { + $opacity = ($eqLogic->getIsEnable()) ? '' : 'disableCard'; + echo '
'; + echo ''; + echo '
'; + echo '' . $eqLogic->getHumanName(true, true) . ''; + echo ''; + echo '
'; + } + echo '
'; + } + ?> +
+ + +
+ + + + + + \ No newline at end of file diff --git a/docs/de_DE/changelog.md b/docs/de_DE/changelog.md index 24b48db..336e6bc 100644 --- a/docs/de_DE/changelog.md +++ b/docs/de_DE/changelog.md @@ -4,6 +4,10 @@ > >Zur Erinnerung: Wenn keine Informationen zum Update vorhanden sind, bedeutet dies, dass es sich nur um die Aktualisierung von Dokumentation, Übersetzung oder Text handelt +# 17.10.2022 + +- Befehlsliste für Jeedom v4.3 aktualisieren + # 24.06.2020 - Korrektur der Schnittstelle diff --git a/docs/en_US/changelog.md b/docs/en_US/changelog.md index dc6f4a8..6726e1b 100644 --- a/docs/en_US/changelog.md +++ b/docs/en_US/changelog.md @@ -4,6 +4,10 @@ > >As a reminder if there is no information on the update, it means that it only concerns the updating of documentation, translation or text +# 10/17/2022 + +- Update command list for Jeedom v4.3 + # 6/24/2020 - Correction of the interface diff --git a/docs/es_ES/changelog.md b/docs/es_ES/changelog.md index c8c6dc7..d23be6c 100644 --- a/docs/es_ES/changelog.md +++ b/docs/es_ES/changelog.md @@ -4,6 +4,10 @@ > >Como recordatorio si no hay información sobre la actualización, significa que solo se refiere a la actualización de documentación, traducción o texto +# 17/10/2022 + +- Lista de comandos de actualización para Jeedom v4.3 + # 24/06/2020 - Corrección de la interfaz diff --git a/docs/fr_FR/changelog.md b/docs/fr_FR/changelog.md index cf55b82..ed43fc3 100644 --- a/docs/fr_FR/changelog.md +++ b/docs/fr_FR/changelog.md @@ -4,6 +4,10 @@ > >Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte +# 17/10/2022 + +- Mise à jour liste des commandes pour Jeedom v4.3 + # 24/06/2020 - Correction de l'interface diff --git a/docs/i18n/de_DE.json b/docs/i18n/de_DE.json index d057429..ca70194 100644 --- a/docs/i18n/de_DE.json +++ b/docs/i18n/de_DE.json @@ -2,6 +2,8 @@ "changelog.md": { "Changelog Script": "Changelog-Skript", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Zur Erinnerung: Wenn keine Informationen zum Update vorhanden sind, bedeutet dies, dass es sich nur um die Aktualisierung von Dokumentation, Übersetzung oder Text handelt", + "17\/10\/2022": "17.10.2022", + "Mise à jour liste des commandes pour Jeedom v4.3": "Befehlsliste für Jeedom v4.3 aktualisieren", "24\/06\/2020": "24.06.2020", "Correction de l'interface": "Korrektur der Schnittstelle", "14\/05\/2020": "14.05.2020", diff --git a/docs/i18n/en_US.json b/docs/i18n/en_US.json index cddbad7..e75f9e1 100644 --- a/docs/i18n/en_US.json +++ b/docs/i18n/en_US.json @@ -2,6 +2,8 @@ "changelog.md": { "Changelog Script": "Changelog script", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "As a reminder if there is no information on the update, it means that it only concerns the updating of documentation, translation or text", + "17\/10\/2022": "10\/17\/2022", + "Mise à jour liste des commandes pour Jeedom v4.3": "Update command list for Jeedom v4.3", "24\/06\/2020": "6\/24\/2020", "Correction de l'interface": "Correction of the interface", "14\/05\/2020": "05\/14\/2020", diff --git a/docs/i18n/es_ES.json b/docs/i18n/es_ES.json index 76485c1..4ae4232 100644 --- a/docs/i18n/es_ES.json +++ b/docs/i18n/es_ES.json @@ -2,6 +2,8 @@ "changelog.md": { "Changelog Script": "Script de registro de cambios", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Como recordatorio si no hay información sobre la actualización, significa que solo se refiere a la actualización de documentación, traducción o texto", + "17\/10\/2022": "17\/10\/2022", + "Mise à jour liste des commandes pour Jeedom v4.3": "Lista de comandos de actualización para Jeedom v4.3", "24\/06\/2020": "24\/06\/2020", "Correction de l'interface": "Corrección de la interfaz", "14\/05\/2020": "14\/05\/2020", diff --git a/docs/i18n/fr_FR.json b/docs/i18n/fr_FR.json index bbfbd6a..1736381 100644 --- a/docs/i18n/fr_FR.json +++ b/docs/i18n/fr_FR.json @@ -3,6 +3,8 @@ "Changelog Script": "Changelog Script", "IMPORTANT": "IMPORTANT", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte", + "17\/10\/2022": "17\/10\/2022", + "Mise à jour liste des commandes pour Jeedom v4.3": "Mise à jour liste des commandes pour Jeedom v4.3", "24\/06\/2020": "24\/06\/2020", "Correction de l'interface": "Correction de l'interface", "14\/05\/2020": "14\/05\/2020", diff --git a/docs/i18n/pt_PT.json b/docs/i18n/pt_PT.json index ccfdf39..a8f9ee8 100644 --- a/docs/i18n/pt_PT.json +++ b/docs/i18n/pt_PT.json @@ -2,6 +2,8 @@ "changelog.md": { "Changelog Script": "Script do Changelog", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Como lembrete, se não houver informações sobre a atualização, isso significa que se trata apenas da atualização da documentação, tradução ou texto", + "17\/10\/2022": "17\/10\/2022", + "Mise à jour liste des commandes pour Jeedom v4.3": "Atualizar lista de comandos para Jeedom v4.3", "24\/06\/2020": "24\/06\/2020", "Correction de l'interface": "Correção da interface", "14\/05\/2020": "14\/05\/2020", diff --git a/docs/pt_PT/changelog.md b/docs/pt_PT/changelog.md index ec19258..634da23 100644 --- a/docs/pt_PT/changelog.md +++ b/docs/pt_PT/changelog.md @@ -4,6 +4,10 @@ > >Como lembrete, se não houver informações sobre a atualização, isso significa que se trata apenas da atualização da documentação, tradução ou texto +# 17/10/2022 + +- Atualizar lista de comandos para Jeedom v4.3 + # 24/06/2020 - Correção da interface diff --git a/plugin_info/info.json b/plugin_info/info.json index 1aa59e6..9806527 100644 --- a/plugin_info/info.json +++ b/plugin_info/info.json @@ -1,6 +1,17 @@ { "id": "script", - "description": "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom", + "description": { + "fr_FR": "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom", + "en_US": "Plugin adding scripting support in Jeedom. Scripts are programs in Python \/ PHP \/ Shell \/ Ruby etc ... which allow you to add functions to Jeedom", + "es_ES": "Complemento que agrega compatibilidad con scripts en Jeedom. Los scripts son programas en Python \/ PHP \/ Shell \/ Ruby, etc., que le permiten agregar funciones a Jeedom", + "de_DE": "Plugin zur Unterstützung von Skripten in Jeedom. Skripte sind Programme in Python \/ PHP \/ Shell \/ Ruby usw., mit denen Sie Jeedom Funktionen hinzufügen können", + "pt_PT": "Plugin adicionando suporte a scripts no Jeedom. Scripts são programas em Python \/ PHP \/ Shell \/ Ruby, etc ... que permitem adicionar funções ao Jeedom", + "ru_RU": "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom", + "id_ID": "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom", + "it_IT": "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom", + "ja_JP": "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom", + "tr": "Plugin ajoutant le support des scripts dans Jeedom. Les scripts sont des programmes en Python\/PHP\/Shell\/Ruby etc... qui permettent d'ajouter des fonctions à Jeedom" + }, "name": "Script", "licence": "AGPL", "author": "Jeedom SAS", @@ -11,11 +22,14 @@ "language": [ "fr_FR", "en_US", + "es_ES", "de_DE", - "sp_SP", "ru_RU", "id_ID", - "it_IT" + "it_IT", + "ja_JP", + "pt_PT", + "tr" ], "compatibility": [ "miniplus", @@ -25,5 +39,7 @@ "diy", "mobile", "v4" - ] + ], + "changelog_beta": "https:\/\/doc.jeedom.com\/#language#\/plugins\/programming\/script\/beta\/changelog", + "documentation_beta": "https:\/\/doc.jeedom.com\/#language#\/plugins\/programming\/script\/beta" } \ No newline at end of file