diff --git a/src/public/google-blockly/own/blocks_action.js b/src/public/google-blockly/own/blocks_action.js
index 55a0e63f..2c0fa37a 100644
--- a/src/public/google-blockly/own/blocks_action.js
+++ b/src/public/google-blockly/own/blocks_action.js
@@ -304,7 +304,7 @@ Blockly.Blocks['http_response'] = {
this.setInputsInline(true);
this.setOutput(true);
- this.setColour(Blockly.Trigger.HUE);
+ this.setColour(Blockly.Action.HUE);
this.setTooltip(Blockly.Translate('http_response_tooltip'));
//this.setHelpUrl(getHelp('http_response'));
},
@@ -494,7 +494,7 @@ Blockly.Blocks['file_data'] = {
this.setInputsInline(true);
this.setOutput(true);
- this.setColour(Blockly.Trigger.HUE);
+ this.setColour(Blockly.Action.HUE);
this.setTooltip(Blockly.Translate('file_data_tooltip'));
//this.setHelpUrl(getHelp('file_data'));
},
diff --git a/src/public/google-blockly/own/blocks_trigger.js b/src/public/google-blockly/own/blocks_trigger.js
index d9264d73..db19937a 100644
--- a/src/public/google-blockly/own/blocks_trigger.js
+++ b/src/public/google-blockly/own/blocks_trigger.js
@@ -1274,6 +1274,74 @@ Blockly.JavaScript['onFile'] = function (block) {
'});\n';
};
+// --- onFile_data -----------------------------------------------------------
+Blockly.Trigger.blocks['onFile_data'] =
+ ''
+ + ' '
+ + ' '
+ + '';
+
+Blockly.Blocks['onFile_data'] = {
+ /**
+ * Block for conditionally returning a value from a procedure.
+ * @this Blockly.Block
+ */
+ init: function() {
+ this.appendDummyInput()
+ .appendField('📁');
+
+ this.appendDummyInput('ATTR')
+ .appendField(new Blockly.FieldDropdown([
+ [Blockly.Translate('onFile_data_data'), 'data'],
+ [Blockly.Translate('onFile_data_filename'), 'fileName'],
+ [Blockly.Translate('onFile_data_size'), 'size'],
+ [Blockly.Translate('onFile_data_mimeType'), 'mimeType'],
+ [Blockly.Translate('onFile_data_id'), 'id'],
+ ]), 'ATTR');
+
+ this.setInputsInline(true);
+ this.setOutput(true);
+ this.setColour(Blockly.Trigger.HUE);
+ this.setTooltip(Blockly.Translate('onFile_datatooltip'));
+ //this.setHelpUrl(getHelp('onFile_data'));
+ },
+ /**
+ * Called whenever anything on the workspace changes.
+ * Add warning if this flow block is not nested inside a loop.
+ * @param {!Blockly.Events.Abstract} e Change event.
+ * @this Blockly.Block
+ */
+ onchange: function(e) {
+ let legal = false;
+ // Is the block nested in a trigger?
+ let block = this;
+ do {
+ if (this.FUNCTION_TYPES.includes(block.type)) {
+ legal = true;
+ break;
+ }
+ block = block.getSurroundParent();
+ } while (block);
+
+ if (legal) {
+ this.setWarningText(null, this.id);
+ } else {
+ this.setWarningText(Blockly.Translate('onFile_data_warning'), this.id);
+ }
+ },
+ /**
+ * List of block types that are functions and thus do not need warnings.
+ * To add a new function type add this to your code:
+ * Blockly.Blocks['procedures_ifreturn'].FUNCTION_TYPES.push('custom_func');
+ */
+ FUNCTION_TYPES: ['onFile'],
+};
+Blockly.JavaScript['onFile_data'] = function(block) {
+ const attr = block.getFieldValue('ATTR');
+
+ return [attr, Blockly.JavaScript.ORDER_ATOMIC];
+};
+
// --- onFile -----------------------------------------------------------
Blockly.Trigger.blocks['offFile'] =
''
diff --git a/src/public/google-blockly/own/blocks_words.js b/src/public/google-blockly/own/blocks_words.js
index 2cce1f1d..0fd2553f 100644
--- a/src/public/google-blockly/own/blocks_words.js
+++ b/src/public/google-blockly/own/blocks_words.js
@@ -569,6 +569,15 @@ Blockly.Words['onFile_withFile'] = {'en': 'With file data',
Blockly.Words['onFile_tooltip'] = {'en': 'If some file changed or updated', 'de': 'Wenn sich eine Datei geändert oder aktualisiert hat', 'ru': 'Если какой-то файл изменился или обновился', 'pt': 'Se algum arquivo mudou ou atualizou', 'nl': 'Als een bestand is gewijzigd of bijgewerkt', 'fr': 'Si un fichier a été modifié ou mis à jour', 'it': 'Se qualche file è cambiato o aggiornato', 'es': 'Si algún archivo cambió o actualizó', 'pl': 'Jeśli jakiś plik został zmieniony lub zaktualizowany', 'zh-cn': '如果某些文件更改或更新', 'uk': 'Якщо якийсь файл змінено або оновлено'};
Blockly.Words['onFile_help'] = {'en': 'onFile', 'de': 'onFile', 'ru': 'onFile', 'pt': 'onFile', 'nl': 'onFile', 'fr': 'onFile', 'it': 'onFile', 'es': 'onFile', 'pl': 'onFile', 'zh-cn': 'onFile', 'uk': 'onFile'};
+// --- trigger onFile_data --------------------------------------------------
+Blockly.Words['onFile_data_data'] = {'en': 'data', 'de': 'Data', 'ru': 'data', 'pt': 'data', 'nl': 'data', 'fr': 'data', 'it': 'data', 'es': 'data', 'pl': 'data', 'zh-cn': 'data', 'uk': 'data'};
+Blockly.Words['onFile_data_filename'] = {'en': 'file name', 'de': 'Dateiname', 'ru': 'Имя файла', 'pt': 'Nome do arquivo', 'nl': 'Bestandnaam', 'fr': 'Nom du fichier', 'it': 'Nome del file', 'es': 'Nombre del archivo', 'pl': 'Nazwa pliku', 'zh-cn': '文件名', 'uk': 'Ім\'я файла'};
+Blockly.Words['onFile_data_size'] = {'en': 'file size', 'de': 'Dateigröße', 'ru': 'Размер файла', 'pt': 'Tamanho do arquivo', 'nl': 'Bestandsgrootte', 'fr': 'Taille du fichier', 'it': 'Dimensione del file', 'es': 'Tamaño del archivo', 'pl': 'Rozmiar pliku', 'zh-cn': '文件大小', 'uk': 'Розмір файлу'};
+Blockly.Words['onFile_data_mimeType'] = {'en': 'mimeType', 'de': 'mimeType', 'ru': 'mimeType', 'pt': 'mimeType', 'nl': 'mimeType', 'fr': 'mimeType', 'it': 'mimeType', 'es': 'mimeType', 'pl': 'mimeType', 'zh-cn': 'mimeType', 'uk': 'mimeType'};
+Blockly.Words['onFile_data_id'] = {'en': 'id', 'de': 'id', 'ru': 'id', 'pt': 'id', 'nl': 'id', 'fr': 'id', 'it': 'id', 'es': 'id', 'pl': 'id', 'zh-cn': 'id', 'uk': 'id'};
+Blockly.Words['onFile_data_warning'] = {'en': 'This block must be used inside of file trigger blocks', 'de': 'Dieser Block muss innerhalb von Datei-Trigger-Blöcken verwendet werden', 'ru': 'Этот блок должен быть использован внутри файловых триггерных блоков', 'pt': 'Este bloco deve ser usado dentro de blocos de gatilho de arquivo', 'nl': 'Dit blok moet worden gebruikt binnen bestand trigger blokken', 'fr': 'Ce bloc doit être utilisé à l\'intérieur des blocs de déclenchement de fichier', 'it': 'Questo blocco deve essere utilizzato all\'interno dei blocchi di file trigger', 'es': 'Este bloque debe ser utilizado dentro de bloques de activación de archivos', 'pl': 'Ten blok musi być użyty wewnątrz bloków wyzwalających plik', 'zh-cn': '此块必须在文件触发块内使用', 'uk': 'Цей блок повинен бути використаний всередині блоків запуску файлів'};
+Blockly.Words['onFile_datatooltip'] = {'en': 'Information about updated file', 'de': 'Informationen über die aktualisierte Datei', 'ru': 'Информация об обновленном файле', 'pt': 'InformaçÃμes sobre o arquivo atualizado', 'nl': 'Informatie over bijgewerkt bestand', 'fr': 'Informations sur le fichier mis à jour', 'it': 'Informazioni sul file aggiornato', 'es': 'Información sobre el archivo actualizado', 'pl': 'Informacje o zaktualizowanym pliku', 'zh-cn': '关于更新文件的信息', 'uk': 'Інформація про оновлений файл'};
+
// --- trigger offFile --------------------------------------------------
Blockly.Words['offFile'] = {'en': 'Cancel file event', 'de': 'Dateiereignis entfernen', 'ru': 'Отменить событие файла', 'pt': 'Cancelar evento de arquivo', 'nl': 'Bestandsgebeurtenis annuleren', 'fr': 'Annuler l\'événement de fichier', 'it': 'Annulla evento file', 'es': 'Cancelar evento de archivo', 'pl': 'Anuluj zdarzenie pliku', 'zh-cn': '取消文件事件', 'uk': 'Скасувати подію файлу'};
Blockly.Words['offFile_tooltip'] = {'en': 'Cancel subscription on file change', 'de': 'Abonnement bei Dateiänderung kündigen', 'ru': 'Отменить подписку на изменение файла', 'pt': 'Cancelar assinatura na alteração do arquivo', 'nl': 'Abonnement opzeggen bij bestandswijziging', 'fr': 'Annuler l\'abonnement en cas de changement de fichier', 'it': 'Annulla l\'abbonamento in caso di modifica del file', 'es': 'Cancelar suscripción en cambio de archivo', 'pl': 'Anuluj subskrypcję po zmianie pliku', 'zh-cn': '取消订阅文件更改', 'uk': 'Скасувати підписку на зміну файлу'};