diff --git a/src/api/pbx-seats.js b/src/api/pbx-seats.js
index d71e1542..f21373de 100644
--- a/src/api/pbx-seats.js
+++ b/src/api/pbx-seats.js
@@ -9,6 +9,7 @@ import {
setPbxGroupIds,
setSubscriberNumbers,
setPreferenceIntraPbx,
+ setPreferenceMusicOnHold,
getPreferences,
setPbxSIPPassword
} from './subscriber'
@@ -262,6 +263,14 @@ export function setSeatIntraPbx (seatId, clirIntrapbx) {
return setPreferenceIntraPbx(seatId, clirIntrapbx)
}
+/**
+ * @param seatId
+ * @param musicOnHold
+ */
+export function setSeatMusicOnHold (seatId, musicOnHold) {
+ return setPreferenceMusicOnHold(seatId, musicOnHold)
+}
+
/**
* @param options
* @param options.seatId
diff --git a/src/api/subscriber.js b/src/api/subscriber.js
index 63cebc6a..507909a3 100644
--- a/src/api/subscriber.js
+++ b/src/api/subscriber.js
@@ -329,6 +329,10 @@ export function setPreferenceIntraPbx (id, value) {
return setPreference(id, 'clir_intrapbx', value)
}
+export function setPreferenceMusicOnHold (id, value) {
+ return setPreference(id, 'music_on_hold', value)
+}
+
export function getSubscribers (options) {
return new Promise((resolve, reject) => {
options = options || {}
diff --git a/src/components/pages/PbxConfiguration/CscPbxSeat.vue b/src/components/pages/PbxConfiguration/CscPbxSeat.vue
index b177fa83..d1a186c1 100644
--- a/src/components/pages/PbxConfiguration/CscPbxSeat.vue
+++ b/src/components/pages/PbxConfiguration/CscPbxSeat.vue
@@ -99,6 +99,19 @@
/>
+
+
+
+
+
@@ -243,6 +256,13 @@
:disable="loading"
@click="jumpToCallQueue"
/>
+
@@ -318,6 +338,10 @@ export default {
hasCallQueue: {
type: Boolean,
default: undefined
+ },
+ musicOnHold: {
+ type: Boolean,
+ default: undefined
}
},
data () {
@@ -398,6 +422,7 @@ export default {
aliasNumbers: this.getAliasNumberIds(),
webPassword: this.seat.webpassword,
clirIntrapbx: this.intraPbx,
+ musicOnHold: this.musicOnHold,
groups: this.getGroupIds(),
soundSet: this.getSoundSetId()
}
@@ -511,6 +536,12 @@ export default {
seatId: this.seat.id,
intraPbx: this.changes.clirIntrapbx
})
+ },
+ changeMusicOnHold () {
+ this.$emit('save-music-on-hold', {
+ seatId: this.seat.id,
+ musicOnHold: this.changes.musicOnHold
+ })
}
}
}
diff --git a/src/i18n/en.json b/src/i18n/en.json
index 6a9be1c5..09315e08 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -246,6 +246,7 @@
"Monday": "Monday",
"Monthly": "Monthly",
"Music on Hold": "Music on Hold",
+ "Music on hold": "Music on hold",
"Mute": "Mute",
"Mute all": "Mute all",
"MyNumberList": "MyNumberList",
@@ -529,6 +530,7 @@
"forwarded to": "forwarded to",
"from": "from",
"minutes": "minutes",
+ "music on hold of the seat": "music on hold of the seat",
"name": "name",
"office hours are": "office hours are",
"office hours are ...": "office hours are ...",
@@ -549,4 +551,4 @@
"{field} must be maximum of {maxValue} seconds": "{field} must be maximum of {maxValue} seconds",
"{field} must consist of numeric characters only": "{field} must consist of numeric characters only",
"{field} must have at most {maxLength} letters": "{field} must have at most {maxLength} letters"
-}
+}
\ No newline at end of file
diff --git a/src/pages/CscPagePbxSeats.vue b/src/pages/CscPagePbxSeats.vue
index 4d700077..3e6f2cc1 100644
--- a/src/pages/CscPagePbxSeats.vue
+++ b/src/pages/CscPagePbxSeats.vue
@@ -77,6 +77,7 @@
:class="'col-xs-12 col-md-6 col-lg-4 csc-item-' + ((index % 2 === 0)?'odd':'even')"
:seat="seat"
:intra-pbx="getIntraPbx(seat.id)"
+ :music-on-hold="getMusicOnHold(seat.id)"
:groups="groupMapById"
:expanded="isSeatExpanded(seat.id)"
:loading="isSeatLoading(seat.id)"
@@ -95,6 +96,7 @@
@save-groups="setSeatGroups"
@save-sound-set="setSeatSoundSet"
@save-intra-pbx="setIntraPbx"
+ @save-music-on-hold="setMusicOnHold"
@jump-to-call-queue="jumpToCallQueue"
/>
@@ -189,6 +191,7 @@ export default {
'isSeatExpanded',
'isSeatLoading',
'getIntraPbx',
+ 'getMusicOnHold',
'getSoundSetBySeatId',
'getSeatCreatingName',
'getSeatUpdatingField',
@@ -241,7 +244,8 @@ export default {
'setSeatGroups',
'setSeatNumbers',
'setSeatSoundSet',
- 'setIntraPbx'
+ 'setIntraPbx',
+ 'setMusicOnHold'
]),
...mapMutations('pbxSeats', [
'enableSeatAddForm',
diff --git a/src/store/pbx-seats.js b/src/store/pbx-seats.js
index a5a2e07c..ca5b5ad6 100644
--- a/src/store/pbx-seats.js
+++ b/src/store/pbx-seats.js
@@ -19,6 +19,7 @@ import {
setSeatNumbers,
setSeatSoundSet,
setSeatIntraPbx,
+ setSeatMusicOnHold,
setSeatWebPassword,
getSeatPreferences,
setSeatSIPPassword
@@ -98,6 +99,11 @@ export default {
return seatPreferences && seatPreferences.clir_intrapbx ? state.preferenceMapById[id].clir_intrapbx : false
}
},
+ getMusicOnHold (state) {
+ return (id) => {
+ return state?.preferenceMapById[id]?.music_on_hold || false
+ }
+ },
getSeatCreatingName (state) {
return _.get(state, 'seatCreating.name', '')
},
@@ -431,6 +437,18 @@ export default {
} catch (err) {
context.commit('seatUpdateFailed', err.message)
}
+ },
+ async setMusicOnHold (context, options) {
+ context.commit('seatUpdateRequesting', {
+ seatId: options.seatId,
+ seatField: options.message || i18n.t('music on hold of the seat')
+ })
+ try {
+ const result = await setSeatMusicOnHold(options.seatId, options.musicOnHold)
+ context.commit('seatUpdateSucceeded', result)
+ } catch (err) {
+ context.commit('seatUpdateFailed', err.message)
+ }
}
}
}