diff --git a/i18n/en-US.json b/i18n/en-US.json index 2e30b64..83b5921 100644 --- a/i18n/en-US.json +++ b/i18n/en-US.json @@ -75,12 +75,12 @@ "urlPlaceholder": "http://your.server.com/place/to/store/recordings", "timeLimitLabel": "Time Limit (sec):" }, - "musicOnHold": { - "title": "Music-On-Hold", - "headline": "Group Music-On-Hold Settings", - "dropdownLabel": "Music on Hold:", + "ringback": { + "title": "Ringback", + "headline": "Group Ringback Settings", + "dropdownLabel": "Ringback media:", "silence": "Silence", - "defaultMusic": "Default Music", + "defaultRingback": "Default Ringback", "emptyUploadAlert": "Please select a file to upload" } }, diff --git a/i18n/fr-FR.json b/i18n/fr-FR.json index a72e89d..bf1ca69 100644 --- a/i18n/fr-FR.json +++ b/i18n/fr-FR.json @@ -75,12 +75,12 @@ "urlPlaceholder": "http://votre.serveur.com/endroit/ou/sauvegarder/enregistrements", "timeLimitLabel": "Limite de temps (s):" }, - "musicOnHold": { - "title": "Musique d'attente", - "headline": "Options de la musique d'attente du groupe", - "dropdownLabel": "Musique d'attente:", + "ringback": { + "title": "Tonalité d'appel", + "headline": "Options de la tonalité d'appel du groupe", + "dropdownLabel": "Tonalité d'appel:", "silence": "Silence", - "defaultMusic": "Musique par défaut", + "defaultRingback": "Tonalité par défaut", "emptyUploadAlert": "Veuillez sélectionner un fichier à uploader" } }, diff --git a/submodules/groups/groups.css b/submodules/groups/groups.css index f169177..60a940f 100644 --- a/submodules/groups/groups.css +++ b/submodules/groups/groups.css @@ -654,21 +654,21 @@ } /* Music-On-Hold Feature */ -.feature-popup-container[data-feature="music_on_hold"] .media-dropdown { +.feature-popup-container[data-feature="ringback"] .media-dropdown { margin-bottom: 0px; } -.feature-popup-container[data-feature="music_on_hold"] .upload-toggle { +.feature-popup-container[data-feature="ringback"] .upload-toggle { margin-left: 10px; } -.feature-popup-container[data-feature="music_on_hold"] .upload-div { +.feature-popup-container[data-feature="ringback"] .upload-div { display: none; margin-top: 20px; } -.feature-popup-container[data-feature="music_on_hold"] .upload-div .upload-input { +.feature-popup-container[data-feature="ringback"] .upload-div .upload-input { margin: 0; width: 330px; } -.feature-popup-container[data-feature="music_on_hold"] .upload-div button { +.feature-popup-container[data-feature="ringback"] .upload-div button { margin-left: 10px; padding-left: 13px; padding-right: 13px; diff --git a/submodules/groups/groups.js b/submodules/groups/groups.js index 6bf46be..219c183 100644 --- a/submodules/groups/groups.js +++ b/submodules/groups/groups.js @@ -207,10 +207,10 @@ define(function(require){ iconColor: 'icon-blue', title: self.i18n.active().groups.callRecording.title }, - music_on_hold: { + ringback: { icon: 'icon-music', iconColor: 'icon-yellow', - title: self.i18n.active().groups.musicOnHold.title + title: self.i18n.active().groups.ringback.title } }, hasFeatures: false @@ -218,8 +218,7 @@ define(function(require){ _.each(result.mapFeatures, function(val, key) { if(('features' in group && group.features.indexOf(key) >= 0) // If data from view - || ('smartpbx' in group && key in group.smartpbx && group.smartpbx[key].enabled) // If data from document - || (key === 'music_on_hold' && key in group && 'media_id' in group[key])){ // special case for music_on_hold since it's an old feature + || ('smartpbx' in group && key in group.smartpbx && group.smartpbx[key].enabled)) { // If data from document val.active = true; result.hasFeatures = true; } @@ -508,8 +507,8 @@ define(function(require){ self.groupsRenderCallRecording(data); }); - template.find('.feature[data-feature="music_on_hold"]').on('click', function() { - self.groupsRenderMusicOnHold(data); + template.find('.feature[data-feature="ringback"]').on('click', function() { + self.groupsRenderRingback(data); }); }, @@ -594,18 +593,23 @@ define(function(require){ }); }, - groupsRenderMusicOnHold: function(data) { + groupsRenderRingback: function(data) { var self = this, - silenceMediaId = 'silence_stream://300000'; + silenceMediaId = 'silence_stream://300000', + ringGroupNode = data.callflow.flow; + + while(ringGroupNode.module !== 'ring_group' && '_' in ringGroupNode.children) { + ringGroupNode = ringGroupNode.children['_']; + } self.groupsListMedias(function(medias) { var templateData = { group: data.group, silenceMedia: silenceMediaId, mediaList: medias, - media: 'music_on_hold' in data.group && 'media_id' in data.group.music_on_hold ? data.group.music_on_hold.media_id : silenceMediaId + media: ringGroupNode.data.ringback || '' }, - featureTemplate = $(monster.template(self, 'groups-feature-music_on_hold', templateData)), + featureTemplate = $(monster.template(self, 'groups-feature-ringback', templateData)), switchFeature = featureTemplate.find('.switch').bootstrapSwitch(), popup, closeUploadDiv = function(newMedia) { @@ -691,7 +695,7 @@ define(function(require){ if(file) { fileReader.readAsDataURL(file); } else { - monster.ui.alert(self.i18n.active().groups.musicOnHold.emptyUploadAlert); + monster.ui.alert(self.i18n.active().groups.ringback.emptyUploadAlert); } }); @@ -699,30 +703,43 @@ define(function(require){ var selectedMedia = featureTemplate.find('.media-dropdown option:selected').val(), enabled = switchFeature.bootstrapSwitch('status'); - if(!('music_on_hold' in data.group)) { - data.group.music_on_hold = {}; + if(!('smartpbx' in data.group)) { + data.group.smartpbx = {}; } - if('media_id' in data.group.music_on_hold || enabled) { - if(enabled) { - data.group.music_on_hold = { - media_id: selectedMedia - }; + if(enabled) { + ringGroupNode.data.ringback = selectedMedia; + if('ringback' in data.group.smartpbx) { + data.group.smartpbx.ringback.enabled = true; } else { - data.group.music_on_hold = {}; + data.group.smartpbx.ringback = { + enabled: true + }; + } + + self.groupsUpdateCallflow(data.callflow, function() { + self.groupsUpdate(data.group, function(updatedGroup) { + popup.dialog('close').remove(); + self.groupsRender({ groupId: data.group.id }); + }); + }); + } else if(ringGroupNode.data.ringback || (data.group.smartpbx.ringback && data.group.smartpbx.ringback.enabled)) { + delete ringGroupNode.data.ringback; + if('ringback' in data.group.smartpbx) { + data.group.smartpbx.ringback.enabled = false; } - self.groupsUpdate(data.group, function(updatedGroup) { - popup.dialog('close').remove(); - self.groupsRender({ groupId: data.group.id }); + + self.groupsUpdateCallflow(data.callflow, function() { + self.groupsUpdate(data.group, function(updatedGroup) { + popup.dialog('close').remove(); + self.groupsRender({ groupId: data.group.id }); + }); }); - } else { - popup.dialog('close').remove(); - self.groupsRender({ groupId: data.group.id }); } }); popup = monster.ui.dialog(featureTemplate, { - title: data.group.extra.mapFeatures.music_on_hold.title, + title: data.group.extra.mapFeatures.ringback.title, position: ['center', 20] }); }); diff --git a/views/groups-feature-music_on_hold.html b/views/groups-feature-ringback.html similarity index 69% rename from views/groups-feature-music_on_hold.html rename to views/groups-feature-ringback.html index 4353c1d..2a238bf 100644 --- a/views/groups-feature-music_on_hold.html +++ b/views/groups-feature-ringback.html @@ -1,19 +1,19 @@ -