Browse Source

KAZOO-2292: Replaced the music-on-hold feature by a ringback feature on User Groups

4.3
Maxime Roux 12 years ago
parent
commit
4f522032b3
5 changed files with 65 additions and 48 deletions
  1. +5
    -5
      i18n/en-US.json
  2. +5
    -5
      i18n/fr-FR.json
  3. +5
    -5
      submodules/groups/groups.css
  4. +43
    -26
      submodules/groups/groups.js
  5. +7
    -7
      views/groups-feature-ringback.html

+ 5
- 5
i18n/en-US.json View File

@ -75,12 +75,12 @@
"urlPlaceholder": "http://your.server.com/place/to/store/recordings", "urlPlaceholder": "http://your.server.com/place/to/store/recordings",
"timeLimitLabel": "Time Limit (sec):" "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", "silence": "Silence",
"defaultMusic": "Default Music",
"defaultRingback": "Default Ringback",
"emptyUploadAlert": "Please select a file to upload" "emptyUploadAlert": "Please select a file to upload"
} }
}, },


+ 5
- 5
i18n/fr-FR.json View File

@ -75,12 +75,12 @@
"urlPlaceholder": "http://votre.serveur.com/endroit/ou/sauvegarder/enregistrements", "urlPlaceholder": "http://votre.serveur.com/endroit/ou/sauvegarder/enregistrements",
"timeLimitLabel": "Limite de temps (s):" "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", "silence": "Silence",
"defaultMusic": "Musique par défaut",
"defaultRingback": "Tonalité par défaut",
"emptyUploadAlert": "Veuillez sélectionner un fichier à uploader" "emptyUploadAlert": "Veuillez sélectionner un fichier à uploader"
} }
}, },


+ 5
- 5
submodules/groups/groups.css View File

@ -654,21 +654,21 @@
} }
/* Music-On-Hold Feature */ /* 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; margin-bottom: 0px;
} }
.feature-popup-container[data-feature="music_on_hold"] .upload-toggle {
.feature-popup-container[data-feature="ringback"] .upload-toggle {
margin-left: 10px; margin-left: 10px;
} }
.feature-popup-container[data-feature="music_on_hold"] .upload-div {
.feature-popup-container[data-feature="ringback"] .upload-div {
display: none; display: none;
margin-top: 20px; 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; margin: 0;
width: 330px; 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; margin-left: 10px;
padding-left: 13px; padding-left: 13px;
padding-right: 13px; padding-right: 13px;

+ 43
- 26
submodules/groups/groups.js View File

@ -207,10 +207,10 @@ define(function(require){
iconColor: 'icon-blue', iconColor: 'icon-blue',
title: self.i18n.active().groups.callRecording.title title: self.i18n.active().groups.callRecording.title
}, },
music_on_hold: {
ringback: {
icon: 'icon-music', icon: 'icon-music',
iconColor: 'icon-yellow', iconColor: 'icon-yellow',
title: self.i18n.active().groups.musicOnHold.title
title: self.i18n.active().groups.ringback.title
} }
}, },
hasFeatures: false hasFeatures: false
@ -218,8 +218,7 @@ define(function(require){
_.each(result.mapFeatures, function(val, key) { _.each(result.mapFeatures, function(val, key) {
if(('features' in group && group.features.indexOf(key) >= 0) // If data from view 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; val.active = true;
result.hasFeatures = true; result.hasFeatures = true;
} }
@ -508,8 +507,8 @@ define(function(require){
self.groupsRenderCallRecording(data); 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, 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) { self.groupsListMedias(function(medias) {
var templateData = { var templateData = {
group: data.group, group: data.group,
silenceMedia: silenceMediaId, silenceMedia: silenceMediaId,
mediaList: medias, 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(), switchFeature = featureTemplate.find('.switch').bootstrapSwitch(),
popup, popup,
closeUploadDiv = function(newMedia) { closeUploadDiv = function(newMedia) {
@ -691,7 +695,7 @@ define(function(require){
if(file) { if(file) {
fileReader.readAsDataURL(file); fileReader.readAsDataURL(file);
} else { } 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(), var selectedMedia = featureTemplate.find('.media-dropdown option:selected').val(),
enabled = switchFeature.bootstrapSwitch('status'); 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 { } 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, { popup = monster.ui.dialog(featureTemplate, {
title: data.group.extra.mapFeatures.music_on_hold.title,
title: data.group.extra.mapFeatures.ringback.title,
position: ['center', 20] position: ['center', 20]
}); });
}); });


views/groups-feature-music_on_hold.html → views/groups-feature-ringback.html View File


Loading…
Cancel
Save