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",
"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"
}
},


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

@ -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"
}
},


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

@ -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;

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

@ -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]
});
});


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


Loading…
Cancel
Save