Browse Source

Fax Detect submodule

pull/4/head
Vladimir Barkasov 6 years ago
parent
commit
01537e4644
7 changed files with 191 additions and 0 deletions
  1. +1
    -0
      src/apps/callflows/app.js
  2. +16
    -0
      src/apps/callflows/i18n/en-US.json
  3. +1
    -0
      src/apps/callflows/style/app.css
  4. +3
    -0
      src/apps/callflows/submodules/faxdetect/faxdetect.css
  5. +124
    -0
      src/apps/callflows/submodules/faxdetect/faxdetect.js
  6. +24
    -0
      src/apps/callflows/submodules/faxdetect/views/dialogEdit.html
  7. +22
    -0
      src/apps/callflows/submodules/faxdetect/views/dialogMenuOption.html

+ 1
- 0
src/apps/callflows/app.js View File

@ -16,6 +16,7 @@ define(function(require) {
'directory',
'eavesdrop',
'faxbox',
'faxdetect',
'featurecodes',
'groups',
'media',


+ 16
- 0
src/apps/callflows/i18n/en-US.json View File

@ -575,6 +575,22 @@
"words": "Please only enter alphanumeric characters, space or - '"
}
},
"fax_detect": {
"fax_detect": "Fax Detect",
"tooltip": "Fax Detect allows the detection of fax/voice in a call.",
"caption": "Duration: ${duration} sec.",
"edit_dialog": {
"title": "Fax Detect",
"duration": "Duration",
"duration_tooltip": "The DURATION is the number of seconds the detection lasts, default is 3. if the detection fails, it defaults to voice"
},
"menu_option_dialog": {
"title": "Menu option",
"menu_option": "Menu option",
"on_voice": "On voice",
"on_fax": "On fax"
}
},
"groups": {
"title": "Groups",
"edit_group": "Edit Group",


+ 1
- 0
src/apps/callflows/style/app.css View File

@ -16,6 +16,7 @@
@import url('../submodules/branchvariable/branchvariable.css');
@import url('../submodules/checkcid/checkcid.css');
@import url('../submodules/cidlistmatch/cidlistmatch.css');
@import url('../submodules/faxdetect/faxdetect.css');
@import url('../../../css/vendor/bootstrap-tour.css');
/* style.css */
#ws_callflow > .callflow {


+ 3
- 0
src/apps/callflows/submodules/faxdetect/faxdetect.css View File

@ -0,0 +1,3 @@
.fax-detect-form {
margin: 15px 0 0;
}

+ 124
- 0
src/apps/callflows/submodules/faxdetect/faxdetect.js View File

@ -0,0 +1,124 @@
define(function(require) {
var $ = require('jquery'),
monster = require('monster');
var app = {
requests: {},
subscribe: {
'callflows.fetchActions': 'faxdetectDefineActions'
},
faxdetectDefineActions: function(args) {
var self = this,
callflow_nodes = args.actions,
i18n = self.i18n.active().callflows.fax_detect;
$.extend(callflow_nodes, {
'fax_detect[]': {
name: i18n.fax_detect,
icon: 'fax',
category: self.i18n.active().oldCallflows.advanced_cat,
module: 'fax_detect',
tip: i18n.tooltip,
data: {
duration: 3
},
rules: [
{
type: 'quantity',
maxSize: '2'
}
],
isUsable: 'true',
weight: 48,
caption: function(node, caption_map) {
var duration = node.getMetadata('duration');
return i18n.caption.replace('${duration}', duration);
},
edit: function(node, callback) {
self.faxdetectShowEditDialog(node, callback);
},
key_caption: function(child_node, caption_map) {
if(child_node.key === 'ON_VOICE') {
return i18n.menu_option_dialog.on_voice;
} else if(child_node.key === 'ON_FAX') {
return i18n.menu_option_dialog.on_fax;
}
return child_node.key;
},
key_edit: function(child_node, callback) {
var $dialog, $popup;
$popup = $(self.getTemplate({
name: 'dialogMenuOption',
data: {
selected: child_node.key
},
submodule: 'faxdetect'
}));
$popup.find('.js-save').on('click', function() {
var $menuOption = $('#fax-detect_menu-option option:selected', $popup);
child_node.key = $menuOption.val();
child_node.key_caption = $menuOption.text();
$dialog.dialog('close');
});
$dialog = monster.ui.dialog($popup, {
title: self.i18n.active().callflows.fax_detect.menu_option_dialog.title,
minHeight: '0',
width: 450,
beforeClose: function() {
if (typeof callback === 'function') {
callback();
}
}
});
}
}
});
},
faxdetectShowEditDialog: function (node, callback) {
var self = this,
$popup,
$dialog,
i18n = self.i18n.active().callflows.fax_detect;
$dialog = $(self.getTemplate({
name: 'dialogEdit',
data: {
duration: node.getMetadata('duration')
},
submodule: 'faxdetect'
}));
$popup = monster.ui.dialog($dialog, {
title: self.i18n.active().callflows.fax_detect.edit_dialog.title,
minHeight: '0',
width: 450,
beforeClose: function() {
if (typeof callback === 'function') {
callback();
}
}
});
$dialog.find('.js-save').click(function() {
var duration = parseInt($('#fax-detect_duration').val());
node.setMetadata('duration', duration);
node.caption = i18n.caption.replace('${duration}', duration);
if (typeof callback === 'function') {
callback();
}
$popup.dialog('close');
});
monster.ui.tooltips($dialog);
}
};
return app;
});

+ 24
- 0
src/apps/callflows/submodules/faxdetect/views/dialogEdit.html View File

@ -0,0 +1,24 @@
<div class="dialog_popup callflows-port fax-detect-dialog">
<form method="post" action="#" class="fax-detect-form">
<div class="form_content">
<div class="popup_field clear">
<label for="fax-detect_duration">
{{ i18n.callflows.fax_detect.edit_dialog.duration }}
<i class="help-popover fa fa-question-circle"
data-original-title="{{ i18n.callflows.fax_detect.edit_dialog.duration_tooltip }}"
data-placement="right"
data-toggle="tooltip"></i>
</label>
<div class="field_wrapper">
<input name="duration" placeholder="3" type="number" value="{{ duration }}" id="fax-detect_duration"/>
</div>
</div>
</div>
</form>
<div class="buttons-center">
<button class="monster-button monster-button-primary js-save">
{{ i18n.save }}
</button>
</div>
</div>

+ 22
- 0
src/apps/callflows/submodules/faxdetect/views/dialogMenuOption.html View File

@ -0,0 +1,22 @@
<div class="dialog_popup callflows-port">
<form name="form" method="post" action="#" class="fax-detect-form">
<div class="form_content">
<div class="popup_field clear">
<label for="fax-detect_menu-option">
{{ i18n.callflows.fax_detect.menu_option_dialog.menu_option }}
</label>
<div class="select_wrapper">
<select name="menu-option" id="fax-detect_menu-option">
{{#select selected }}
<option value="ON_VOICE">{{ i18n.callflows.fax_detect.menu_option_dialog.on_voice }}</option>
<option value="ON_FAX">{{ i18n.callflows.fax_detect.menu_option_dialog.on_fax }}</option>
{{/select}}
</select>
</div>
</div>
</div>
</form>
<div class="buttons-center">
<button class="js-save monster-button monster-button-primary">{{ i18n.save }}</button>
</div>
</div>

Loading…
Cancel
Save