From 2855e0bb378ff54e21e9997c8192a3e2db57a016 Mon Sep 17 00:00:00 2001 From: Vladimir Barkasov Date: Sat, 15 Feb 2020 19:56:46 +0700 Subject: [PATCH] Flush DTMF submodule --- src/apps/callflows/app.js | 1 + src/apps/callflows/i18n/en-US.json | 12 ++- src/apps/callflows/style/app.css | 1 + .../submodules/flushdtmf/flushdtmf.css | 7 ++ .../submodules/flushdtmf/flushdtmf.js | 90 +++++++++++++++++++ .../flushdtmf/views/dialogEdit.html | 27 ++++++ 6 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 src/apps/callflows/submodules/flushdtmf/flushdtmf.css create mode 100644 src/apps/callflows/submodules/flushdtmf/flushdtmf.js create mode 100644 src/apps/callflows/submodules/flushdtmf/views/dialogEdit.html diff --git a/src/apps/callflows/app.js b/src/apps/callflows/app.js index d2635ca..50003fc 100644 --- a/src/apps/callflows/app.js +++ b/src/apps/callflows/app.js @@ -18,6 +18,7 @@ define(function(require) { 'faxbox', 'faxdetect', 'featurecodes', + 'flushdtmf', 'groups', 'media', 'menu', diff --git a/src/apps/callflows/i18n/en-US.json b/src/apps/callflows/i18n/en-US.json index 149f1f1..660c75f 100644 --- a/src/apps/callflows/i18n/en-US.json +++ b/src/apps/callflows/i18n/en-US.json @@ -1342,7 +1342,17 @@ "help": "You can force the eavesdropper to be a specific user/device/group by selecting an endpoint in this list." } }, - + "flush_dtmf": { + "flush_dtmf": "Flush DTMF", + "tooltip": "Flush collected DTMF in a named key", + "edit_dialog": { + "title": "Flush DTMF", + "collection_name": { + "label": "Collection Name", + "tooltip": "Flush collected DTMF in a named key" + } + } + }, "__comment": "UI-431: adding intercept to adv. callflows", "__version": "v4.1", "intercept": { diff --git a/src/apps/callflows/style/app.css b/src/apps/callflows/style/app.css index f6ebec4..8adc494 100644 --- a/src/apps/callflows/style/app.css +++ b/src/apps/callflows/style/app.css @@ -17,6 +17,7 @@ @import url('../submodules/checkcid/checkcid.css'); @import url('../submodules/cidlistmatch/cidlistmatch.css'); @import url('../submodules/faxdetect/faxdetect.css'); +@import url('../submodules/flushdtmf/flushdtmf.css'); @import url('../../../css/vendor/bootstrap-tour.css'); /* style.css */ #ws_callflow > .callflow { diff --git a/src/apps/callflows/submodules/flushdtmf/flushdtmf.css b/src/apps/callflows/submodules/flushdtmf/flushdtmf.css new file mode 100644 index 0000000..4b838d1 --- /dev/null +++ b/src/apps/callflows/submodules/flushdtmf/flushdtmf.css @@ -0,0 +1,7 @@ +.flush-dtmf-form { + margin: 15px 0 0; +} + +.callflows-port .flush-dtmf-form label:not(.monster-invalid) { + width: 140px; +} diff --git a/src/apps/callflows/submodules/flushdtmf/flushdtmf.js b/src/apps/callflows/submodules/flushdtmf/flushdtmf.js new file mode 100644 index 0000000..bfde66c --- /dev/null +++ b/src/apps/callflows/submodules/flushdtmf/flushdtmf.js @@ -0,0 +1,90 @@ +define(function(require) { + var $ = require('jquery'), + monster = require('monster'); + + var useAbsoluteMode; + + var app = { + requests: {}, + + subscribe: { + 'callflows.fetchActions': 'flushdtmfDefineActions' + }, + + flushdtmfDefineActions: function(args) { + var self = this, + callflow_nodes = args.actions, + i18n = self.i18n.active().callflows.flush_dtmf; + + $.extend(callflow_nodes, { + 'flush_dtmf[]': { + name: i18n.flush_dtmf, + icon: 'phone', + category: self.i18n.active().oldCallflows.advanced_cat, + module: 'flush_dtmf', + tip: i18n.tooltip, + data: {}, + rules: [{ + type: 'quantity', + maxSize: 1 + }], + isUsable: 'true', + weight: 48, + caption: function(node, caption_map) { + return node.getMetadata('collection_name') || ''; + }, + edit: function(node, callback) { + self.flushdtmfShowEditDialog(node, callback); + } + } + }); + }, + + flushdtmfShowEditDialog: function (node, callback) { + var self = this, + $dialogHtml, + $dialog, + i18n = self.i18n.active().callflows.flush_dtmf, + collectionName = node.getMetadata('collection_name') || ''; + + $dialogHtml = $(self.getTemplate({ + name: 'dialogEdit', + data: { + collectionName: collectionName + }, + submodule: 'flushdtmf' + })); + + $dialog = monster.ui.dialog($dialogHtml, { + title: i18n.edit_dialog.title, + minHeight: '0', + width: 450, + beforeClose: function() { + if (typeof callback === 'function') { + callback(); + } + } + }); + + monster.ui.tooltips($dialogHtml); + + $dialogHtml.find('.js-save').click(function() { + var collectionName = $('#flush-dtmf_collection-name', $dialog).val(); + if(collectionName) { + node.setMetadata('collection_name', collectionName); + } else { + node.deleteMetadata('collection_name'); + } + node.caption = collectionName; + + if (typeof callback === 'function') { + callback(); + } + + $dialog.dialog('close'); + }); + } + }; + + return app; +}); diff --git a/src/apps/callflows/submodules/flushdtmf/views/dialogEdit.html b/src/apps/callflows/submodules/flushdtmf/views/dialogEdit.html new file mode 100644 index 0000000..5553b0a --- /dev/null +++ b/src/apps/callflows/submodules/flushdtmf/views/dialogEdit.html @@ -0,0 +1,27 @@ +
+
+
+ +
+
+ +
+ +
+