1 <div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">
3 <div class="header md-accent-bg" layout="row" layout-align="start center">
4 <div class="white-fg" layout="row" layout-align="start center" flex>
6 class="goto-musiconholds-button md-icon-button"
7 aria-label="Go to musiconholds"
8 ng-click="vm.gotoMusicOnHolds()"
10 translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS"
12 <md-icon md-font-icon="icon-arrow-left"></md-icon>
15 <div layout="row" layout-align="start center">
16 <div class="musiconhold-image" hide-xs>
17 <img ng-src="assets/images/business/musiconholds.jpg" />
20 <div layout="column" layout-align="start start">
22 #{{vm.musiconhold.id}}
23 <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>
25 <div class="subtitle secondary-text">
26 <span translate="VOICE.CREATED_AT"></span>
27 <span>{{vm.musiconhold.createdAt | date:'medium'}}</span>
35 ng-click="vm.saveMusicOnHold()"
36 ng-if="vm.crudPermissions.canEdit"
37 class="send-button md-accent md-raised"
38 ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)"
39 translate="VOICE.SAVE"
40 translate-attr-aria-label="VOICE.SAVE"
51 md-selected="vm.selectedTab"
52 md-stretch-tabs="always"
59 <span translate="VOICE.SETTINGS">SETTINGS</span>
63 class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp"
65 <div class="pb-16" layout="row" layout-align="start center">
66 <div class="h2 secondary-text" translate="VOICE.GENERAL">
70 <form name="generalForm" novalidate>
71 <md-input-container class="md-block">
72 <label translate="VOICE.NAME">Name</label>
76 ng-model="vm.musiconhold.name"
83 ng-messages="generalForm['name'].$error"
84 ng-show="generalForm['name'].$touched"
87 <div ng-message="required">
88 <span translate="VOICE.ERRORS.NAME_REQUIRED"
89 >Name field is required</span
94 <md-input-container class="md-block">
95 <label translate="VOICE.MODE">Mode</label>
98 ng-model="vm.musiconhold.mode"
102 <md-option ng-value="'files'">
103 {{ 'VOICE.FILES' | translate }}
106 <md-option ng-value="'custom'">
107 {{ 'VOICE.CUSTOM' | translate }}
111 ng-messages="generalForm['mode'].$error"
112 ng-show="generalForm['mode'].$touched"
115 <div ng-message="required">
116 <span translate="VOICE.ERRORS.MODE_REQUIRED"
117 >Mode field is required</span
121 </md-input-container>
123 ng-if="vm.musiconhold.mode == 'custom'"
126 <label translate="VOICE.DIRECTORY">Directory</label>
130 ng-model="vm.musiconhold.directory"
131 ng-disabled="!vm.crudPermissions.canEdit"
135 ng-messages="generalForm['directory'].$error"
136 ng-show="generalForm['directory'].$touched"
139 <div ng-message="required">
140 <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED"
141 >Directory field is required</span
145 </md-input-container>
147 ng-if="vm.musiconhold.mode == 'custom'"
150 <label translate="VOICE.APPLICATION">Application</label>
154 ng-model="vm.musiconhold.application"
156 ng-disabled="!vm.crudPermissions.canEdit"
160 ng-messages="generalForm['application'].$error"
161 ng-show="generalForm['application'].$touched"
164 <div ng-message="required">
165 <span translate="VOICE.ERRORS.APPLICATION_REQUIRED"
166 >Application field is required</span
170 </md-input-container>
172 ng-if="vm.musiconhold.mode == 'files'"
175 <label translate="VOICE.SORT">Sort</label>
178 ng-model="vm.musiconhold.sort"
179 ng-disabled="!vm.crudPermissions.canEdit"
181 <md-option ng-value="'random'">
182 {{ 'VOICE.RANDOM' | translate }}
185 <md-option ng-value="'alpha'">
186 {{ 'VOICE.ALPHABETICAL' | translate }}
190 ng-messages="generalForm['sort'].$error"
191 ng-show="generalForm['sort'].$touched"
194 <div ng-message="required">
195 <span translate="VOICE.ERRORS.SORT_REQUIRED"
196 >Sort field is required</span
200 </md-input-container>
207 <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>
211 class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp"
214 ng-controller="MusicOnHoldMohSoundsController as vm_dc"
215 ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)"
218 class="md-table-toolbar md-default"
219 ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length"
221 <div class="md-toolbar-tools">
222 <span class="md-subhead" translate="VOICE.MOHSOUNDS"
226 on-search="vm_dc.query.filter = query"
227 on-collapse="vm_dc.query.filter = undefined"
233 ng-if="vm_dc.crudPermissions.canEdit"
234 class="md-icon-button"
235 ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)"
236 aria-label="add mohSound"
238 translate-attr-label="VOICE.ADD_MOHSOUND"
240 <md-icon md-font-icon="icon-plus"></md-icon>
245 class="md-table-toolbar md-accent"
246 ng-show="vm_dc.selectedMusicOnHoldMohSounds.length"
248 <div class="md-toolbar-tools">
249 <span class="md-subhead"
250 >{{vm_dc.selectedMusicOnHoldMohSounds.length}}
251 {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? 'items' :
252 'item'}} selected</span
256 class="md-icon-button"
257 ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds"
259 filename="musiconholds.csv"
261 <md-icon md-font-icon="icon-file-excel"></md-icon>
264 ng-if="vm_dc.crudPermissions.canDelete"
265 class="md-icon-button"
266 ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)"
267 aria-label="delete selected"
269 translate-attr-label="VOICE.DELETE_SELECTED"
271 <md-icon md-font-icon="icon-delete"></md-icon>
275 <md-table-container class="font-size-12">
280 ng-model="vm_dc.selectedMusicOnHoldMohSounds"
281 md-progress="vm_dc.promise"
285 md-order="vm_dc.query.sort"
286 md-on-reorder="vm_dc.getMusicOnHoldMohSounds"
289 <th md-column md-order-by="id">
290 {{ 'VOICE.ID' | translate }}
292 <th md-column md-order-by="audio">
293 {{ 'VOICE.AUDIO' | translate }}
295 <th md-column md-order-by="createdAt">
296 {{ 'VOICE.CREATED_AT' | translate }}
298 <th md-column width="10px"></th>
306 ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows"
308 <td md-cell>{{mohSound.id}}</td>
310 <!-- audio recording directive -->
315 <!-- / audio recording directive -->
317 <td md-cell>{{ mohSound.createdAt | formatdate }}</td>
318 <td md-cell class="actions">
321 class="md-icon-button"
324 translate-attr-aria-label="VOICE.MORE"
325 ng-click="$mdMenu.open($event)"
328 md-font-icon="icon-dots-vertical"
332 <md-menu-content width="3">
334 ng-if="vm_dc.crudPermissions.canDelete"
337 ng-click="vm_dc.deleteConfirm(mohSound, $event)"
338 translate="VOICE.DELETE_MOHSOUND"
347 <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">
348 <td md-cell colspan="8">
349 <div layout="row" layout-align="center center">
351 class="text-boxed-light"
352 translate="VOICE.NO_MOHSOUND_AVAILABLE"
353 >No mohsound available</span
360 </md-table-container>
362 md-label="{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}"
363 md-limit="vm_dc.query.limit"
364 md-limit-options="[10, 15, 20, 50, 100, 250]"
365 md-page="vm_dc.query.page"
366 md-total="{{vm_dc.musiconholdMohSounds.count}}"
367 md-on-paginate="vm_dc.getMusicOnHoldMohSounds"
369 ></md-table-pagination>