From 1d01c88da6af089b1cd2897bdd39bf58f7b92bd7 Mon Sep 17 00:00:00 2001 From: Andrea Amorese Date: Tue, 24 Aug 2021 16:57:38 +0200 Subject: [PATCH] Built motion from commit 85951d68.|2.5.33 --- apidoc/api_data.js | 630 ++++++++++++++++++-- apidoc/api_data.json | 630 ++++++++++++++++++-- apidoc/api_project.js | 2 +- apidoc/api_project.json | 2 +- public/app/main/apps/contactmanager/i18n/ar.json | 4 +- public/app/main/apps/contactmanager/i18n/cs.json | 4 +- public/app/main/apps/contactmanager/i18n/da.json | 4 +- public/app/main/apps/contactmanager/i18n/de.json | 4 +- public/app/main/apps/contactmanager/i18n/en.json | 2 + public/app/main/apps/contactmanager/i18n/es.json | 4 +- public/app/main/apps/contactmanager/i18n/et.json | 4 +- public/app/main/apps/contactmanager/i18n/fa.json | 4 +- public/app/main/apps/contactmanager/i18n/fi.json | 4 +- public/app/main/apps/contactmanager/i18n/fr.json | 4 +- public/app/main/apps/contactmanager/i18n/he.json | 4 +- public/app/main/apps/contactmanager/i18n/hi.json | 4 +- public/app/main/apps/contactmanager/i18n/id.json | 4 +- public/app/main/apps/contactmanager/i18n/it.json | 4 +- public/app/main/apps/contactmanager/i18n/ja.json | 4 +- public/app/main/apps/contactmanager/i18n/ko.json | 4 +- public/app/main/apps/contactmanager/i18n/lt.json | 4 +- public/app/main/apps/contactmanager/i18n/lv.json | 4 +- public/app/main/apps/contactmanager/i18n/nl.json | 4 +- public/app/main/apps/contactmanager/i18n/no.json | 4 +- public/app/main/apps/contactmanager/i18n/pl.json | 4 +- .../app/main/apps/contactmanager/i18n/pt-BR.json | 4 +- .../app/main/apps/contactmanager/i18n/pt-PT.json | 4 +- public/app/main/apps/contactmanager/i18n/ru.json | 4 +- public/app/main/apps/contactmanager/i18n/sv.json | 4 +- public/app/main/apps/contactmanager/i18n/tr.json | 4 +- .../app/main/apps/contactmanager/i18n/zh-CN.json | 4 +- .../app/main/apps/contactmanager/i18n/zh-TW.json | 4 +- public/app/main/apps/motiondialer/i18n/ar.json | 8 +- public/app/main/apps/motiondialer/i18n/cs.json | 8 +- public/app/main/apps/motiondialer/i18n/da.json | 8 +- public/app/main/apps/motiondialer/i18n/de.json | 8 +- public/app/main/apps/motiondialer/i18n/en.json | 25 +- public/app/main/apps/motiondialer/i18n/es.json | 8 +- public/app/main/apps/motiondialer/i18n/et.json | 8 +- public/app/main/apps/motiondialer/i18n/fa.json | 8 +- public/app/main/apps/motiondialer/i18n/fi.json | 8 +- public/app/main/apps/motiondialer/i18n/fr.json | 8 +- public/app/main/apps/motiondialer/i18n/he.json | 8 +- public/app/main/apps/motiondialer/i18n/hi.json | 8 +- public/app/main/apps/motiondialer/i18n/id.json | 8 +- public/app/main/apps/motiondialer/i18n/it.json | 8 +- public/app/main/apps/motiondialer/i18n/ja.json | 8 +- public/app/main/apps/motiondialer/i18n/ko.json | 8 +- public/app/main/apps/motiondialer/i18n/lt.json | 8 +- public/app/main/apps/motiondialer/i18n/lv.json | 8 +- public/app/main/apps/motiondialer/i18n/nl.json | 8 +- public/app/main/apps/motiondialer/i18n/no.json | 8 +- public/app/main/apps/motiondialer/i18n/pl.json | 8 +- public/app/main/apps/motiondialer/i18n/pt-BR.json | 8 +- public/app/main/apps/motiondialer/i18n/pt-PT.json | 8 +- public/app/main/apps/motiondialer/i18n/ru.json | 8 +- public/app/main/apps/motiondialer/i18n/sv.json | 8 +- public/app/main/apps/motiondialer/i18n/tr.json | 8 +- public/app/main/apps/motiondialer/i18n/zh-CN.json | 8 +- public/app/main/apps/motiondialer/i18n/zh-TW.json | 8 +- public/app/main/apps/tools/i18n/ar.json | 7 +- public/app/main/apps/tools/i18n/cs.json | 7 +- public/app/main/apps/tools/i18n/da.json | 7 +- public/app/main/apps/tools/i18n/de.json | 7 +- public/app/main/apps/tools/i18n/en.json | 5 + public/app/main/apps/tools/i18n/es.json | 7 +- public/app/main/apps/tools/i18n/et.json | 7 +- public/app/main/apps/tools/i18n/fa.json | 7 +- public/app/main/apps/tools/i18n/fi.json | 7 +- public/app/main/apps/tools/i18n/fr.json | 7 +- public/app/main/apps/tools/i18n/he.json | 7 +- public/app/main/apps/tools/i18n/hi.json | 7 +- public/app/main/apps/tools/i18n/id.json | 7 +- public/app/main/apps/tools/i18n/it.json | 7 +- public/app/main/apps/tools/i18n/ja.json | 7 +- public/app/main/apps/tools/i18n/ko.json | 7 +- public/app/main/apps/tools/i18n/lt.json | 7 +- public/app/main/apps/tools/i18n/lv.json | 7 +- public/app/main/apps/tools/i18n/nl.json | 7 +- public/app/main/apps/tools/i18n/no.json | 7 +- public/app/main/apps/tools/i18n/pl.json | 7 +- public/app/main/apps/tools/i18n/pt-BR.json | 7 +- public/app/main/apps/tools/i18n/pt-PT.json | 7 +- public/app/main/apps/tools/i18n/ru.json | 7 +- public/app/main/apps/tools/i18n/sv.json | 7 +- public/app/main/apps/tools/i18n/tr.json | 7 +- public/app/main/apps/tools/i18n/zh-CN.json | 7 +- public/app/main/apps/tools/i18n/zh-TW.json | 7 +- public/app/toolbar/i18n/ar.json | 3 +- public/app/toolbar/i18n/cs.json | 3 +- public/app/toolbar/i18n/da.json | 3 +- public/app/toolbar/i18n/de.json | 3 +- public/app/toolbar/i18n/en.json | 1 + public/app/toolbar/i18n/es.json | 3 +- public/app/toolbar/i18n/et.json | 3 +- public/app/toolbar/i18n/fa.json | 3 +- public/app/toolbar/i18n/fi.json | 3 +- public/app/toolbar/i18n/fr.json | 3 +- public/app/toolbar/i18n/he.json | 3 +- public/app/toolbar/i18n/hi.json | 3 +- public/app/toolbar/i18n/id.json | 3 +- public/app/toolbar/i18n/it.json | 3 +- public/app/toolbar/i18n/ja.json | 3 +- public/app/toolbar/i18n/ko.json | 3 +- public/app/toolbar/i18n/lt.json | 3 +- public/app/toolbar/i18n/lv.json | 3 +- public/app/toolbar/i18n/nl.json | 3 +- public/app/toolbar/i18n/no.json | 3 +- public/app/toolbar/i18n/pl.json | 3 +- public/app/toolbar/i18n/pt-BR.json | 3 +- public/app/toolbar/i18n/pt-PT.json | 3 +- public/app/toolbar/i18n/ru.json | 3 +- public/app/toolbar/i18n/sv.json | 3 +- public/app/toolbar/i18n/tr.json | 3 +- public/app/toolbar/i18n/zh-CN.json | 3 +- public/app/toolbar/i18n/zh-TW.json | 3 +- public/index.html | 27 +- public/scripts/app.21a88740.js | 1 + public/scripts/app.79e08137.js | 1 - public/styles/app.7678e788.css | 1 + public/styles/app.91ca40ed.css | 1 - server/api/action/action.attributes.js | 2 +- server/api/action/action.controller.js | 2 +- server/api/action/action.model.js | 2 +- server/api/action/action.rpc.js | 2 +- server/api/action/index.js | 2 +- .../analyticCustomReport.attributes.js | 2 +- .../analyticCustomReport.controller.js | 2 +- .../analyticCustomReport.model.js | 2 +- .../analyticCustomReport.rpc.js | 2 +- server/api/analyticCustomReport/index.js | 2 +- .../analyticDefaultReport.attributes.js | 2 +- .../analyticDefaultReport.controller.js | 2 +- .../analyticDefaultReport.model.js | 2 +- .../analyticDefaultReport.rpc.js | 2 +- server/api/analyticDefaultReport/index.js | 2 +- .../analyticExtractedReport.attributes.js | 2 +- .../analyticExtractedReport.controller.js | 2 +- .../analyticExtractedReport.model.js | 2 +- .../analyticExtractedReport.rpc.js | 2 +- server/api/analyticExtractedReport/index.js | 2 +- .../analyticFieldReport.attributes.js | 2 +- .../analyticFieldReport.controller.js | 2 +- .../analyticFieldReport.model.js | 2 +- .../analyticFieldReport/analyticFieldReport.rpc.js | 2 +- server/api/analyticFieldReport/index.js | 2 +- .../analyticMetric/analyticMetric.attributes.js | 2 +- .../analyticMetric/analyticMetric.controller.js | 2 +- server/api/analyticMetric/analyticMetric.model.js | 2 +- server/api/analyticMetric/analyticMetric.rpc.js | 2 +- server/api/analyticMetric/index.js | 2 +- .../analyticTreeReport.attributes.js | 2 +- .../analyticTreeReport.controller.js | 2 +- .../analyticTreeReport/analyticTreeReport.model.js | 2 +- .../analyticTreeReport/analyticTreeReport.rpc.js | 2 +- server/api/analyticTreeReport/index.js | 2 +- server/api/attachment/attachment.attributes.js | 2 +- server/api/attachment/attachment.controller.js | 2 +- server/api/attachment/attachment.model.js | 2 +- server/api/attachment/attachment.rpc.js | 2 +- server/api/attachment/index.js | 2 +- server/api/authGoogle/authGoogle.controller.js | 2 +- server/api/authGoogle/index.js | 2 +- server/api/authLocal/authLocal.controller.js | 2 +- server/api/authLocal/index.js | 2 +- server/api/automation/automation.attributes.js | 2 +- server/api/automation/automation.controller.js | 2 +- server/api/automation/automation.model.js | 2 +- server/api/automation/automation.rpc.js | 2 +- server/api/automation/index.js | 2 +- server/api/campaign/campaign.attributes.js | 2 +- server/api/campaign/campaign.controller.js | 2 +- server/api/campaign/campaign.model.js | 2 +- server/api/campaign/campaign.rpc.js | 2 +- server/api/campaign/index.js | 2 +- server/api/cannedAnswer/cannedAnswer.attributes.js | 2 +- server/api/cannedAnswer/cannedAnswer.controller.js | 2 +- server/api/cannedAnswer/cannedAnswer.model.js | 2 +- server/api/cannedAnswer/cannedAnswer.rpc.js | 2 +- server/api/cannedAnswer/index.js | 2 +- server/api/cdr/cdr.attributes.js | 2 +- server/api/cdr/cdr.controller.js | 2 +- server/api/cdr/cdr.model.js | 2 +- server/api/cdr/cdr.rpc.js | 2 +- server/api/cdr/index.js | 2 +- .../chatApplication/chatApplication.attributes.js | 2 +- .../chatApplication/chatApplication.controller.js | 2 +- .../api/chatApplication/chatApplication.model.js | 2 +- server/api/chatApplication/chatApplication.rpc.js | 2 +- server/api/chatApplication/index.js | 2 +- server/api/chatGroup/chatGroup.attributes.js | 2 +- server/api/chatGroup/chatGroup.controller.js | 2 +- server/api/chatGroup/chatGroup.events.js | 2 +- server/api/chatGroup/chatGroup.model.js | 2 +- server/api/chatGroup/chatGroup.rpc.js | 2 +- server/api/chatGroup/chatGroup.socket.js | 2 +- server/api/chatGroup/index.js | 2 +- .../chatInteraction/chatInteraction.attributes.js | 2 +- .../chatInteraction/chatInteraction.controller.js | 2 +- .../api/chatInteraction/chatInteraction.events.js | 2 +- .../api/chatInteraction/chatInteraction.model.js | 2 +- server/api/chatInteraction/chatInteraction.rpc.js | 2 +- .../api/chatInteraction/chatInteraction.socket.js | 2 +- server/api/chatInteraction/index.js | 2 +- .../chatInternalMessage.attributes.js | 2 +- .../chatInternalMessage.controller.js | 2 +- .../chatInternalMessage.events.js | 2 +- .../chatInternalMessage.model.js | 2 +- .../chatInternalMessage/chatInternalMessage.rpc.js | 2 +- .../chatInternalMessage.socket.js | 2 +- server/api/chatInternalMessage/index.js | 2 +- server/api/chatMessage/chatMessage.attributes.js | 2 +- server/api/chatMessage/chatMessage.controller.js | 2 +- server/api/chatMessage/chatMessage.events.js | 2 +- server/api/chatMessage/chatMessage.model.js | 2 +- server/api/chatMessage/chatMessage.rpc.js | 2 +- server/api/chatMessage/chatMessage.socket.js | 2 +- server/api/chatMessage/index.js | 2 +- .../chatOfflineMessage.attributes.js | 2 +- .../chatOfflineMessage.controller.js | 2 +- .../chatOfflineMessage/chatOfflineMessage.model.js | 2 +- .../chatOfflineMessage/chatOfflineMessage.rpc.js | 2 +- server/api/chatOfflineMessage/index.js | 2 +- .../chatProactiveAction.attributes.js | 2 +- .../chatProactiveAction.controller.js | 2 +- .../chatProactiveAction.model.js | 2 +- .../chatProactiveAction/chatProactiveAction.rpc.js | 2 +- server/api/chatProactiveAction/index.js | 2 +- server/api/chatQueue/chatQueue.attributes.js | 2 +- server/api/chatQueue/chatQueue.controller.js | 2 +- server/api/chatQueue/chatQueue.events.js | 2 +- server/api/chatQueue/chatQueue.model.js | 2 +- server/api/chatQueue/chatQueue.rpc.js | 2 +- server/api/chatQueue/chatQueue.socket.js | 2 +- server/api/chatQueue/index.js | 2 +- .../chatQueueReport/chatQueueReport.attributes.js | 2 +- .../chatQueueReport/chatQueueReport.controller.js | 2 +- .../api/chatQueueReport/chatQueueReport.model.js | 2 +- server/api/chatQueueReport/chatQueueReport.rpc.js | 2 +- server/api/chatQueueReport/index.js | 2 +- .../chatTransferReport.attributes.js | 2 +- .../chatTransferReport.controller.js | 2 +- .../chatTransferReport/chatTransferReport.model.js | 2 +- .../chatTransferReport/chatTransferReport.rpc.js | 2 +- server/api/chatTransferReport/index.js | 2 +- server/api/chatWebsite/chatWebsite.attributes.js | 2 +- server/api/chatWebsite/chatWebsite.controller.js | 2 +- server/api/chatWebsite/chatWebsite.events.js | 2 +- server/api/chatWebsite/chatWebsite.model.js | 2 +- server/api/chatWebsite/chatWebsite.rpc.js | 2 +- server/api/chatWebsite/chatWebsite.socket.js | 2 +- server/api/chatWebsite/index.js | 2 +- .../api/cloudProvider/cloudProvider.attributes.js | 2 +- .../api/cloudProvider/cloudProvider.controller.js | 2 +- server/api/cloudProvider/cloudProvider.model.js | 2 +- server/api/cloudProvider/cloudProvider.rpc.js | 2 +- server/api/cloudProvider/index.js | 2 +- server/api/cmCompany/cmCompany.attributes.js | 2 +- server/api/cmCompany/cmCompany.controller.js | 2 +- server/api/cmCompany/cmCompany.model.js | 2 +- server/api/cmCompany/cmCompany.rpc.js | 2 +- server/api/cmCompany/index.js | 2 +- server/api/cmContact/cmContact.attributes.js | 2 +- server/api/cmContact/cmContact.controller.js | 2 +- server/api/cmContact/cmContact.events.js | 2 +- server/api/cmContact/cmContact.model.js | 2 +- server/api/cmContact/cmContact.rpc.js | 2 +- server/api/cmContact/cmContact.socket.js | 2 +- server/api/cmContact/index.js | 2 +- .../cmContactHasItem.attributes.js | 18 + .../cmContactHasItem.controller.js | 18 + .../api/cmContactHasItem/cmContactHasItem.model.js | 18 + .../api/cmContactHasItem/cmContactHasItem.rpc.js | 18 + server/api/cmContactHasItem/index.js | 18 + .../api/cmCustomField/cmCustomField.attributes.js | 2 +- .../api/cmCustomField/cmCustomField.controller.js | 2 +- server/api/cmCustomField/cmCustomField.model.js | 2 +- server/api/cmCustomField/cmCustomField.rpc.js | 2 +- server/api/cmCustomField/index.js | 2 +- server/api/cmHopper/cmHopper.attributes.js | 2 +- server/api/cmHopper/cmHopper.controller.js | 2 +- server/api/cmHopper/cmHopper.model.js | 2 +- server/api/cmHopper/cmHopper.rpc.js | 2 +- server/api/cmHopper/index.js | 2 +- .../cmHopperAdditionalPhone.attributes.js | 18 + .../cmHopperAdditionalPhone.controller.js | 18 + .../cmHopperAdditionalPhone.model.js | 18 + .../cmHopperAdditionalPhone.rpc.js | 18 + server/api/cmHopperAdditionalPhone/index.js | 18 + .../api/cmHopperBlack/cmHopperBlack.attributes.js | 2 +- .../api/cmHopperBlack/cmHopperBlack.controller.js | 2 +- server/api/cmHopperBlack/cmHopperBlack.model.js | 2 +- server/api/cmHopperBlack/cmHopperBlack.rpc.js | 2 +- server/api/cmHopperBlack/index.js | 2 +- .../api/cmHopperFinal/cmHopperFinal.attributes.js | 2 +- .../api/cmHopperFinal/cmHopperFinal.controller.js | 2 +- server/api/cmHopperFinal/cmHopperFinal.model.js | 2 +- server/api/cmHopperFinal/cmHopperFinal.rpc.js | 2 +- server/api/cmHopperFinal/index.js | 2 +- .../cmHopperHistory/cmHopperHistory.attributes.js | 2 +- .../cmHopperHistory/cmHopperHistory.controller.js | 2 +- .../api/cmHopperHistory/cmHopperHistory.model.js | 2 +- server/api/cmHopperHistory/cmHopperHistory.rpc.js | 2 +- server/api/cmHopperHistory/index.js | 2 +- server/api/cmList/cmList.attributes.js | 2 +- server/api/cmList/cmList.controller.js | 2 +- server/api/cmList/cmList.events.js | 2 +- server/api/cmList/cmList.model.js | 2 +- server/api/cmList/cmList.rpc.js | 2 +- server/api/cmList/cmList.socket.js | 2 +- server/api/cmList/index.js | 2 +- server/api/condition/condition.attributes.js | 2 +- server/api/condition/condition.controller.js | 2 +- server/api/condition/condition.model.js | 2 +- server/api/condition/condition.rpc.js | 2 +- server/api/condition/index.js | 2 +- .../contactItemType/contactItemType.attributes.js | 18 + .../contactItemType/contactItemType.controller.js | 18 + .../api/contactItemType/contactItemType.model.js | 18 + server/api/contactItemType/contactItemType.rpc.js | 18 + server/api/contactItemType/index.js | 18 + server/api/dashboard/dashboard.attributes.js | 2 +- server/api/dashboard/dashboard.controller.js | 2 +- server/api/dashboard/dashboard.events.js | 2 +- server/api/dashboard/dashboard.model.js | 2 +- server/api/dashboard/dashboard.rpc.js | 2 +- server/api/dashboard/dashboard.socket.js | 2 +- server/api/dashboard/index.js | 2 +- .../api/dashboardItem/dashboardItem.attributes.js | 2 +- .../api/dashboardItem/dashboardItem.controller.js | 2 +- server/api/dashboardItem/dashboardItem.events.js | 2 +- server/api/dashboardItem/dashboardItem.model.js | 2 +- server/api/dashboardItem/dashboardItem.rpc.js | 2 +- server/api/dashboardItem/dashboardItem.socket.js | 2 +- server/api/dashboardItem/index.js | 2 +- server/api/disposition/disposition.attributes.js | 2 +- server/api/disposition/disposition.controller.js | 2 +- server/api/disposition/disposition.model.js | 2 +- server/api/disposition/disposition.rpc.js | 2 +- server/api/disposition/index.js | 2 +- server/api/faxAccount/faxAccount.attributes.js | 2 +- server/api/faxAccount/faxAccount.controller.js | 2 +- server/api/faxAccount/faxAccount.events.js | 2 +- server/api/faxAccount/faxAccount.model.js | 2 +- server/api/faxAccount/faxAccount.rpc.js | 2 +- server/api/faxAccount/faxAccount.socket.js | 2 +- server/api/faxAccount/index.js | 2 +- .../faxApplication/faxApplication.attributes.js | 2 +- .../faxApplication/faxApplication.controller.js | 2 +- server/api/faxApplication/faxApplication.model.js | 2 +- server/api/faxApplication/faxApplication.rpc.js | 2 +- server/api/faxApplication/index.js | 2 +- .../faxInteraction/faxInteraction.attributes.js | 2 +- .../faxInteraction/faxInteraction.controller.js | 2 +- server/api/faxInteraction/faxInteraction.events.js | 2 +- server/api/faxInteraction/faxInteraction.model.js | 2 +- server/api/faxInteraction/faxInteraction.rpc.js | 2 +- server/api/faxInteraction/faxInteraction.socket.js | 2 +- server/api/faxInteraction/index.js | 2 +- server/api/faxMessage/faxMessage.attributes.js | 2 +- server/api/faxMessage/faxMessage.controller.js | 2 +- server/api/faxMessage/faxMessage.events.js | 2 +- server/api/faxMessage/faxMessage.model.js | 2 +- server/api/faxMessage/faxMessage.rpc.js | 2 +- server/api/faxMessage/faxMessage.socket.js | 2 +- server/api/faxMessage/index.js | 2 +- server/api/faxQueue/faxQueue.attributes.js | 2 +- server/api/faxQueue/faxQueue.controller.js | 2 +- server/api/faxQueue/faxQueue.events.js | 2 +- server/api/faxQueue/faxQueue.model.js | 2 +- server/api/faxQueue/faxQueue.rpc.js | 2 +- server/api/faxQueue/faxQueue.socket.js | 2 +- server/api/faxQueue/index.js | 2 +- .../faxQueueReport/faxQueueReport.attributes.js | 2 +- .../faxQueueReport/faxQueueReport.controller.js | 2 +- server/api/faxQueueReport/faxQueueReport.model.js | 2 +- server/api/faxQueueReport/faxQueueReport.rpc.js | 2 +- server/api/faxQueueReport/index.js | 2 +- .../faxTransferReport.attributes.js | 2 +- .../faxTransferReport.controller.js | 2 +- .../faxTransferReport/faxTransferReport.model.js | 2 +- .../api/faxTransferReport/faxTransferReport.rpc.js | 2 +- server/api/faxTransferReport/index.js | 2 +- server/api/intDeskAccount/index.js | 2 +- .../intDeskAccount/intDeskAccount.attributes.js | 2 +- .../intDeskAccount/intDeskAccount.controller.js | 2 +- server/api/intDeskAccount/intDeskAccount.model.js | 2 +- server/api/intDeskAccount/intDeskAccount.rpc.js | 2 +- server/api/intDeskConfiguration/index.js | 2 +- .../intDeskConfiguration.attributes.js | 2 +- .../intDeskConfiguration.controller.js | 2 +- .../intDeskConfiguration.model.js | 2 +- .../intDeskConfiguration.rpc.js | 2 +- server/api/intDeskField/index.js | 2 +- server/api/intDeskField/intDeskField.attributes.js | 2 +- server/api/intDeskField/intDeskField.controller.js | 2 +- server/api/intDeskField/intDeskField.model.js | 2 +- server/api/intDeskField/intDeskField.rpc.js | 2 +- server/api/intDynamics365Account/index.js | 2 +- .../intDynamics365Account.attributes.js | 2 +- .../intDynamics365Account.controller.js | 2 +- .../intDynamics365Account.model.js | 2 +- .../intDynamics365Account.rpc.js | 2 +- server/api/intDynamics365Configuration/index.js | 2 +- .../intDynamics365Configuration.attributes.js | 2 +- .../intDynamics365Configuration.controller.js | 2 +- .../intDynamics365Configuration.model.js | 2 +- .../intDynamics365Configuration.rpc.js | 2 +- server/api/intDynamics365Field/index.js | 2 +- .../intDynamics365Field.attributes.js | 2 +- .../intDynamics365Field.controller.js | 2 +- .../intDynamics365Field.model.js | 2 +- .../intDynamics365Field/intDynamics365Field.rpc.js | 2 +- server/api/intFreshdeskAccount/index.js | 2 +- .../intFreshdeskAccount.attributes.js | 2 +- .../intFreshdeskAccount.controller.js | 2 +- .../intFreshdeskAccount.model.js | 2 +- .../intFreshdeskAccount/intFreshdeskAccount.rpc.js | 2 +- server/api/intFreshdeskConfiguration/index.js | 2 +- .../intFreshdeskConfiguration.attributes.js | 2 +- .../intFreshdeskConfiguration.controller.js | 2 +- .../intFreshdeskConfiguration.model.js | 2 +- .../intFreshdeskConfiguration.rpc.js | 2 +- server/api/intFreshdeskField/index.js | 2 +- .../intFreshdeskField.attributes.js | 2 +- .../intFreshdeskField.controller.js | 2 +- .../intFreshdeskField/intFreshdeskField.model.js | 2 +- .../api/intFreshdeskField/intFreshdeskField.rpc.js | 2 +- server/api/intFreshsalesAccount/index.js | 2 +- .../intFreshsalesAccount.attributes.js | 2 +- .../intFreshsalesAccount.controller.js | 2 +- .../intFreshsalesAccount.model.js | 2 +- .../intFreshsalesAccount.rpc.js | 2 +- server/api/intFreshsalesConfiguration/index.js | 2 +- .../intFreshsalesConfiguration.attributes.js | 2 +- .../intFreshsalesConfiguration.controller.js | 2 +- .../intFreshsalesConfiguration.model.js | 2 +- .../intFreshsalesConfiguration.rpc.js | 2 +- server/api/intFreshsalesField/index.js | 2 +- .../intFreshsalesField.attributes.js | 2 +- .../intFreshsalesField.controller.js | 2 +- .../intFreshsalesField/intFreshsalesField.model.js | 2 +- .../intFreshsalesField/intFreshsalesField.rpc.js | 2 +- server/api/intSalesforceAccount/index.js | 2 +- .../intSalesforceAccount.attributes.js | 2 +- .../intSalesforceAccount.controller.js | 2 +- .../intSalesforceAccount.model.js | 2 +- .../intSalesforceAccount.rpc.js | 2 +- server/api/intSalesforceConfiguration/index.js | 2 +- .../intSalesforceConfiguration.attributes.js | 2 +- .../intSalesforceConfiguration.controller.js | 2 +- .../intSalesforceConfiguration.model.js | 2 +- .../intSalesforceConfiguration.rpc.js | 2 +- server/api/intSalesforceField/index.js | 2 +- .../intSalesforceField.attributes.js | 2 +- .../intSalesforceField.controller.js | 2 +- .../intSalesforceField/intSalesforceField.model.js | 2 +- .../intSalesforceField/intSalesforceField.rpc.js | 2 +- server/api/intServicenowAccount/index.js | 2 +- .../intServicenowAccount.attributes.js | 2 +- .../intServicenowAccount.controller.js | 2 +- .../intServicenowAccount.model.js | 2 +- .../intServicenowAccount.rpc.js | 2 +- server/api/intServicenowConfiguration/index.js | 2 +- .../intServicenowConfiguration.attributes.js | 2 +- .../intServicenowConfiguration.controller.js | 2 +- .../intServicenowConfiguration.model.js | 2 +- .../intServicenowConfiguration.rpc.js | 2 +- server/api/intServicenowField/index.js | 2 +- .../intServicenowField.attributes.js | 2 +- .../intServicenowField.controller.js | 2 +- .../intServicenowField/intServicenowField.model.js | 2 +- .../intServicenowField/intServicenowField.rpc.js | 2 +- server/api/intSugarcrmAccount/index.js | 2 +- .../intSugarcrmAccount.attributes.js | 2 +- .../intSugarcrmAccount.controller.js | 2 +- .../intSugarcrmAccount/intSugarcrmAccount.model.js | 2 +- .../intSugarcrmAccount/intSugarcrmAccount.rpc.js | 2 +- server/api/intSugarcrmConfiguration/index.js | 2 +- .../intSugarcrmConfiguration.attributes.js | 2 +- .../intSugarcrmConfiguration.controller.js | 2 +- .../intSugarcrmConfiguration.model.js | 2 +- .../intSugarcrmConfiguration.rpc.js | 2 +- server/api/intSugarcrmField/index.js | 2 +- .../intSugarcrmField.attributes.js | 2 +- .../intSugarcrmField.controller.js | 2 +- .../api/intSugarcrmField/intSugarcrmField.model.js | 2 +- .../api/intSugarcrmField/intSugarcrmField.rpc.js | 2 +- server/api/intVtigerAccount/index.js | 2 +- .../intVtigerAccount.attributes.js | 2 +- .../intVtigerAccount.controller.js | 2 +- .../api/intVtigerAccount/intVtigerAccount.model.js | 2 +- .../api/intVtigerAccount/intVtigerAccount.rpc.js | 2 +- server/api/intVtigerConfiguration/index.js | 2 +- .../intVtigerConfiguration.attributes.js | 2 +- .../intVtigerConfiguration.controller.js | 2 +- .../intVtigerConfiguration.model.js | 2 +- .../intVtigerConfiguration.rpc.js | 2 +- server/api/intVtigerField/index.js | 2 +- .../intVtigerField/intVtigerField.attributes.js | 2 +- .../intVtigerField/intVtigerField.controller.js | 2 +- server/api/intVtigerField/intVtigerField.model.js | 2 +- server/api/intVtigerField/intVtigerField.rpc.js | 2 +- server/api/intZendeskAccount/index.js | 2 +- .../intZendeskAccount.attributes.js | 2 +- .../intZendeskAccount.controller.js | 2 +- .../intZendeskAccount/intZendeskAccount.model.js | 2 +- .../api/intZendeskAccount/intZendeskAccount.rpc.js | 2 +- server/api/intZendeskConfiguration/index.js | 2 +- .../intZendeskConfiguration.attributes.js | 2 +- .../intZendeskConfiguration.controller.js | 2 +- .../intZendeskConfiguration.model.js | 2 +- .../intZendeskConfiguration.rpc.js | 2 +- server/api/intZendeskField/index.js | 2 +- .../intZendeskField/intZendeskField.attributes.js | 2 +- .../intZendeskField/intZendeskField.controller.js | 2 +- .../api/intZendeskField/intZendeskField.model.js | 2 +- server/api/intZendeskField/intZendeskField.rpc.js | 2 +- server/api/intZohoAccount/index.js | 2 +- .../intZohoAccount/intZohoAccount.attributes.js | 2 +- .../intZohoAccount/intZohoAccount.controller.js | 2 +- server/api/intZohoAccount/intZohoAccount.model.js | 2 +- server/api/intZohoAccount/intZohoAccount.rpc.js | 2 +- server/api/intZohoConfiguration/index.js | 2 +- .../intZohoConfiguration.attributes.js | 2 +- .../intZohoConfiguration.controller.js | 2 +- .../intZohoConfiguration.model.js | 2 +- .../intZohoConfiguration.rpc.js | 2 +- server/api/intZohoField/index.js | 2 +- server/api/intZohoField/intZohoField.attributes.js | 2 +- server/api/intZohoField/intZohoField.controller.js | 2 +- server/api/intZohoField/intZohoField.model.js | 2 +- server/api/intZohoField/intZohoField.rpc.js | 2 +- server/api/integration/index.js | 2 +- server/api/integration/integration.attributes.js | 2 +- server/api/integration/integration.controller.js | 2 +- server/api/integration/integration.model.js | 2 +- server/api/integration/integration.rpc.js | 2 +- server/api/integrationReport/index.js | 2 +- .../integrationReport.attributes.js | 2 +- .../integrationReport.controller.js | 2 +- .../integrationReport/integrationReport.model.js | 2 +- .../api/integrationReport/integrationReport.rpc.js | 2 +- server/api/interval/index.js | 2 +- server/api/interval/interval.attributes.js | 2 +- server/api/interval/interval.controller.js | 2 +- server/api/interval/interval.model.js | 2 +- server/api/interval/interval.rpc.js | 2 +- server/api/jira/index.js | 2 +- server/api/jira/jira.controller.js | 2 +- server/api/jscriptyAnswerReport/index.js | 2 +- .../jscriptyAnswerReport.attributes.js | 2 +- .../jscriptyAnswerReport.controller.js | 2 +- .../jscriptyAnswerReport.model.js | 2 +- .../jscriptyAnswerReport.rpc.js | 2 +- server/api/jscriptyProject/index.js | 2 +- .../jscriptyProject/jscriptyProject.attributes.js | 2 +- .../jscriptyProject/jscriptyProject.controller.js | 2 +- .../api/jscriptyProject/jscriptyProject.model.js | 2 +- server/api/jscriptyProject/jscriptyProject.rpc.js | 2 +- server/api/jscriptyQuestionReport/index.js | 2 +- .../jscriptyQuestionReport.attributes.js | 2 +- .../jscriptyQuestionReport.controller.js | 2 +- .../jscriptyQuestionReport.model.js | 2 +- .../jscriptyQuestionReport.rpc.js | 2 +- server/api/jscriptySessionReport/index.js | 2 +- .../jscriptySessionReport.attributes.js | 2 +- .../jscriptySessionReport.controller.js | 2 +- .../jscriptySessionReport.model.js | 2 +- .../jscriptySessionReport.rpc.js | 2 +- server/api/license/index.js | 2 +- server/api/license/license.attributes.js | 2 +- server/api/license/license.controller.js | 2 +- server/api/license/license.model.js | 2 +- server/api/license/license.rpc.js | 2 +- server/api/mailAccount/index.js | 2 +- server/api/mailAccount/mailAccount.attributes.js | 2 +- server/api/mailAccount/mailAccount.controller.js | 2 +- server/api/mailAccount/mailAccount.events.js | 2 +- server/api/mailAccount/mailAccount.model.js | 2 +- server/api/mailAccount/mailAccount.rpc.js | 2 +- server/api/mailAccount/mailAccount.socket.js | 2 +- server/api/mailApplication/index.js | 2 +- .../mailApplication/mailApplication.attributes.js | 2 +- .../mailApplication/mailApplication.controller.js | 2 +- .../api/mailApplication/mailApplication.model.js | 2 +- server/api/mailApplication/mailApplication.rpc.js | 2 +- server/api/mailInteraction/index.js | 2 +- .../mailInteraction/mailInteraction.attributes.js | 2 +- .../mailInteraction/mailInteraction.controller.js | 2 +- .../api/mailInteraction/mailInteraction.events.js | 2 +- .../api/mailInteraction/mailInteraction.model.js | 2 +- server/api/mailInteraction/mailInteraction.rpc.js | 2 +- .../api/mailInteraction/mailInteraction.socket.js | 2 +- server/api/mailMessage/index.js | 2 +- server/api/mailMessage/mailMessage.attributes.js | 2 +- server/api/mailMessage/mailMessage.controller.js | 2 +- server/api/mailMessage/mailMessage.events.js | 2 +- server/api/mailMessage/mailMessage.model.js | 2 +- server/api/mailMessage/mailMessage.rpc.js | 2 +- server/api/mailMessage/mailMessage.socket.js | 2 +- server/api/mailQueue/index.js | 2 +- server/api/mailQueue/mailQueue.attributes.js | 2 +- server/api/mailQueue/mailQueue.controller.js | 2 +- server/api/mailQueue/mailQueue.events.js | 2 +- server/api/mailQueue/mailQueue.model.js | 2 +- server/api/mailQueue/mailQueue.rpc.js | 2 +- server/api/mailQueue/mailQueue.socket.js | 2 +- server/api/mailQueueReport/index.js | 2 +- .../mailQueueReport/mailQueueReport.attributes.js | 2 +- .../mailQueueReport/mailQueueReport.controller.js | 2 +- .../api/mailQueueReport/mailQueueReport.model.js | 2 +- server/api/mailQueueReport/mailQueueReport.rpc.js | 2 +- server/api/mailServerIn/index.js | 2 +- server/api/mailServerIn/mailServerIn.attributes.js | 2 +- server/api/mailServerIn/mailServerIn.model.js | 2 +- server/api/mailServerIn/mailServerIn.rpc.js | 2 +- server/api/mailServerOut/index.js | 2 +- .../api/mailServerOut/mailServerOut.attributes.js | 2 +- .../api/mailServerOut/mailServerOut.controller.js | 2 +- server/api/mailServerOut/mailServerOut.model.js | 2 +- server/api/mailServerOut/mailServerOut.rpc.js | 2 +- server/api/mailSubstatus/index.js | 2 +- .../api/mailSubstatus/mailSubstatus.attributes.js | 2 +- .../api/mailSubstatus/mailSubstatus.controller.js | 2 +- server/api/mailSubstatus/mailSubstatus.model.js | 2 +- server/api/mailSubstatus/mailSubstatus.rpc.js | 2 +- server/api/mailTransferReport/index.js | 2 +- .../mailTransferReport.attributes.js | 2 +- .../mailTransferReport.controller.js | 2 +- .../mailTransferReport/mailTransferReport.model.js | 2 +- .../mailTransferReport/mailTransferReport.rpc.js | 2 +- server/api/memberReport/index.js | 2 +- server/api/memberReport/memberReport.attributes.js | 2 +- server/api/memberReport/memberReport.controller.js | 2 +- server/api/memberReport/memberReport.model.js | 2 +- server/api/memberReport/memberReport.rpc.js | 2 +- server/api/migration/index.js | 2 +- server/api/migration/migration.attributes.js | 2 +- server/api/migration/migration.controller.js | 2 +- server/api/migration/migration.model.js | 2 +- server/api/migration/migration.rpc.js | 2 +- server/api/network/index.js | 2 +- server/api/network/network.attributes.js | 2 +- server/api/network/network.controller.js | 2 +- server/api/network/network.model.js | 2 +- server/api/network/network.rpc.js | 2 +- server/api/openchannelAccount/index.js | 2 +- .../openchannelAccount.attributes.js | 2 +- .../openchannelAccount.controller.js | 2 +- .../openchannelAccount.events.js | 2 +- .../openchannelAccount/openchannelAccount.model.js | 2 +- .../openchannelAccount/openchannelAccount.rpc.js | 2 +- .../openchannelAccount.socket.js | 2 +- server/api/openchannelApplication/index.js | 2 +- .../openchannelApplication.attributes.js | 2 +- .../openchannelApplication.controller.js | 2 +- .../openchannelApplication.model.js | 2 +- .../openchannelApplication.rpc.js | 2 +- server/api/openchannelInteraction/index.js | 2 +- .../openchannelInteraction.attributes.js | 2 +- .../openchannelInteraction.controller.js | 2 +- .../openchannelInteraction.events.js | 2 +- .../openchannelInteraction.model.js | 2 +- .../openchannelInteraction.rpc.js | 2 +- .../openchannelInteraction.socket.js | 2 +- server/api/openchannelMessage/index.js | 2 +- .../openchannelMessage.attributes.js | 2 +- .../openchannelMessage.controller.js | 2 +- .../openchannelMessage.events.js | 2 +- .../openchannelMessage/openchannelMessage.model.js | 2 +- .../openchannelMessage/openchannelMessage.rpc.js | 2 +- .../openchannelMessage.socket.js | 2 +- server/api/openchannelQueue/index.js | 2 +- .../openchannelQueue.attributes.js | 2 +- .../openchannelQueue.controller.js | 2 +- .../openchannelQueue/openchannelQueue.events.js | 2 +- .../api/openchannelQueue/openchannelQueue.model.js | 2 +- .../api/openchannelQueue/openchannelQueue.rpc.js | 2 +- .../openchannelQueue/openchannelQueue.socket.js | 2 +- server/api/openchannelQueueReport/index.js | 2 +- .../openchannelQueueReport.attributes.js | 2 +- .../openchannelQueueReport.controller.js | 2 +- .../openchannelQueueReport.model.js | 2 +- .../openchannelQueueReport.rpc.js | 2 +- server/api/openchannelTransferReport/index.js | 2 +- .../openchannelTransferReport.attributes.js | 2 +- .../openchannelTransferReport.controller.js | 2 +- .../openchannelTransferReport.model.js | 2 +- .../openchannelTransferReport.rpc.js | 2 +- server/api/pause/index.js | 2 +- server/api/pause/pause.attributes.js | 2 +- server/api/pause/pause.controller.js | 2 +- server/api/pause/pause.model.js | 2 +- server/api/pause/pause.rpc.js | 2 +- server/api/plugin/index.js | 2 +- server/api/plugin/plugin.attributes.js | 2 +- server/api/plugin/plugin.controller.js | 2 +- server/api/plugin/plugin.events.js | 2 +- server/api/plugin/plugin.model.js | 2 +- server/api/plugin/plugin.rpc.js | 2 +- server/api/plugin/plugin.socket.js | 2 +- server/api/pm2/index.js | 2 +- server/api/pm2/pm2.controller.js | 2 +- server/api/realtime/index.js | 2 +- server/api/realtime/realtime.controller.js | 2 +- server/api/realtime/realtime.model.js | 2 +- server/api/reportAgentPreview/index.js | 2 +- .../reportAgentPreview.attributes.js | 2 +- .../reportAgentPreview/reportAgentPreview.model.js | 2 +- .../reportAgentPreview/reportAgentPreview.rpc.js | 2 +- server/api/rpc/index.js | 2 +- server/api/rpc/rpc.controller.js | 2 +- server/api/schedule/index.js | 2 +- server/api/schedule/schedule.attributes.js | 2 +- server/api/schedule/schedule.controller.js | 2 +- server/api/schedule/schedule.model.js | 2 +- server/api/schedule/schedule.rpc.js | 2 +- server/api/screenRecording/index.js | 2 +- .../screenRecording/screenRecording.attributes.js | 2 +- .../screenRecording/screenRecording.controller.js | 2 +- .../api/screenRecording/screenRecording.model.js | 2 +- server/api/screenRecording/screenRecording.rpc.js | 2 +- server/api/setting/index.js | 2 +- server/api/setting/setting.attributes.js | 2 +- server/api/setting/setting.controller.js | 2 +- server/api/setting/setting.model.js | 2 +- server/api/setting/setting.rpc.js | 2 +- server/api/smsAccount/index.js | 2 +- server/api/smsAccount/smsAccount.attributes.js | 2 +- server/api/smsAccount/smsAccount.controller.js | 2 +- server/api/smsAccount/smsAccount.events.js | 2 +- server/api/smsAccount/smsAccount.model.js | 2 +- server/api/smsAccount/smsAccount.rpc.js | 2 +- server/api/smsAccount/smsAccount.socket.js | 2 +- server/api/smsApplication/index.js | 2 +- .../smsApplication/smsApplication.attributes.js | 2 +- .../smsApplication/smsApplication.controller.js | 2 +- server/api/smsApplication/smsApplication.model.js | 2 +- server/api/smsApplication/smsApplication.rpc.js | 2 +- server/api/smsInteraction/index.js | 2 +- .../smsInteraction/smsInteraction.attributes.js | 2 +- .../smsInteraction/smsInteraction.controller.js | 2 +- server/api/smsInteraction/smsInteraction.events.js | 2 +- server/api/smsInteraction/smsInteraction.model.js | 2 +- server/api/smsInteraction/smsInteraction.rpc.js | 2 +- server/api/smsInteraction/smsInteraction.socket.js | 2 +- server/api/smsMessage/index.js | 2 +- server/api/smsMessage/smsMessage.attributes.js | 2 +- server/api/smsMessage/smsMessage.controller.js | 2 +- server/api/smsMessage/smsMessage.events.js | 2 +- server/api/smsMessage/smsMessage.model.js | 2 +- server/api/smsMessage/smsMessage.rpc.js | 2 +- server/api/smsMessage/smsMessage.socket.js | 2 +- server/api/smsQueue/index.js | 2 +- server/api/smsQueue/smsQueue.attributes.js | 2 +- server/api/smsQueue/smsQueue.controller.js | 2 +- server/api/smsQueue/smsQueue.events.js | 2 +- server/api/smsQueue/smsQueue.model.js | 2 +- server/api/smsQueue/smsQueue.rpc.js | 2 +- server/api/smsQueue/smsQueue.socket.js | 2 +- server/api/smsQueueReport/index.js | 2 +- .../smsQueueReport/smsQueueReport.attributes.js | 2 +- .../smsQueueReport/smsQueueReport.controller.js | 2 +- server/api/smsQueueReport/smsQueueReport.model.js | 2 +- server/api/smsQueueReport/smsQueueReport.rpc.js | 2 +- server/api/smsTransferReport/index.js | 2 +- .../smsTransferReport.attributes.js | 2 +- .../smsTransferReport.controller.js | 2 +- .../smsTransferReport/smsTransferReport.model.js | 2 +- .../api/smsTransferReport/smsTransferReport.rpc.js | 2 +- server/api/sound/index.js | 2 +- server/api/sound/sound.attributes.js | 2 +- server/api/sound/sound.controller.js | 2 +- server/api/sound/sound.model.js | 2 +- server/api/sound/sound.rpc.js | 2 +- server/api/squareMessage/index.js | 2 +- .../api/squareMessage/squareMessage.attributes.js | 2 +- .../api/squareMessage/squareMessage.controller.js | 2 +- server/api/squareMessage/squareMessage.model.js | 2 +- server/api/squareMessage/squareMessage.rpc.js | 2 +- server/api/squareOdbc/index.js | 2 +- server/api/squareOdbc/squareOdbc.attributes.js | 2 +- server/api/squareOdbc/squareOdbc.controller.js | 2 +- server/api/squareOdbc/squareOdbc.model.js | 2 +- server/api/squareOdbc/squareOdbc.rpc.js | 2 +- server/api/squareProject/index.js | 2 +- .../api/squareProject/squareProject.attributes.js | 2 +- .../api/squareProject/squareProject.controller.js | 2 +- server/api/squareProject/squareProject.events.js | 2 +- server/api/squareProject/squareProject.model.js | 2 +- server/api/squareProject/squareProject.rpc.js | 2 +- server/api/squareProject/squareProject.socket.js | 2 +- server/api/squareRecording/index.js | 2 +- .../squareRecording/squareRecording.attributes.js | 2 +- .../squareRecording/squareRecording.controller.js | 2 +- .../api/squareRecording/squareRecording.model.js | 2 +- server/api/squareRecording/squareRecording.rpc.js | 2 +- server/api/squareReport/index.js | 2 +- server/api/squareReport/squareReport.attributes.js | 2 +- server/api/squareReport/squareReport.controller.js | 2 +- server/api/squareReport/squareReport.model.js | 2 +- server/api/squareReport/squareReport.rpc.js | 2 +- server/api/squareReportDetail/index.js | 2 +- .../squareReportDetail.attributes.js | 2 +- .../squareReportDetail.controller.js | 2 +- .../squareReportDetail/squareReportDetail.model.js | 2 +- .../squareReportDetail/squareReportDetail.rpc.js | 2 +- server/api/system/index.js | 2 +- server/api/system/system.controller.js | 2 +- server/api/tag/index.js | 2 +- server/api/tag/tag.attributes.js | 2 +- server/api/tag/tag.controller.js | 2 +- server/api/tag/tag.model.js | 2 +- server/api/tag/tag.rpc.js | 2 +- server/api/team/index.js | 2 +- server/api/team/team.attributes.js | 2 +- server/api/team/team.controller.js | 2 +- server/api/team/team.events.js | 2 +- server/api/team/team.model.js | 2 +- server/api/team/team.rpc.js | 2 +- server/api/team/team.socket.js | 2 +- server/api/teamVoiceQueue/index.js | 2 +- .../teamVoiceQueue/teamVoiceQueue.attributes.js | 2 +- server/api/teamVoiceQueue/teamVoiceQueue.model.js | 2 +- server/api/teamVoiceQueue/teamVoiceQueue.rpc.js | 2 +- server/api/template/index.js | 2 +- server/api/template/template.attributes.js | 2 +- server/api/template/template.controller.js | 2 +- server/api/template/template.model.js | 2 +- server/api/template/template.rpc.js | 2 +- server/api/trigger/index.js | 2 +- server/api/trigger/trigger.attributes.js | 2 +- server/api/trigger/trigger.controller.js | 2 +- server/api/trigger/trigger.model.js | 2 +- server/api/trigger/trigger.rpc.js | 2 +- server/api/trunk/index.js | 2 +- server/api/trunk/trunk.attributes.js | 2 +- server/api/trunk/trunk.controller.js | 2 +- server/api/trunk/trunk.model.js | 2 +- server/api/trunk/trunk.rpc.js | 2 +- server/api/user/index.js | 2 +- server/api/user/user.attributes.js | 2 +- server/api/user/user.controller.js | 2 +- server/api/user/user.events.js | 2 +- server/api/user/user.model.js | 2 +- server/api/user/user.rpc.js | 2 +- server/api/user/user.socket.js | 2 +- server/api/userChatQueue/index.js | 2 +- .../api/userChatQueue/userChatQueue.attributes.js | 2 +- server/api/userChatQueue/userChatQueue.model.js | 2 +- server/api/userChatQueue/userChatQueue.rpc.js | 2 +- server/api/userFaxQueue/index.js | 2 +- server/api/userFaxQueue/userFaxQueue.attributes.js | 2 +- server/api/userFaxQueue/userFaxQueue.model.js | 2 +- server/api/userFaxQueue/userFaxQueue.rpc.js | 2 +- server/api/userMailQueue/index.js | 2 +- .../api/userMailQueue/userMailQueue.attributes.js | 2 +- server/api/userMailQueue/userMailQueue.model.js | 2 +- server/api/userMailQueue/userMailQueue.rpc.js | 2 +- server/api/userNotification/index.js | 2 +- .../userNotification.attributes.js | 2 +- .../userNotification.controller.js | 2 +- .../userNotification/userNotification.events.js | 2 +- .../api/userNotification/userNotification.model.js | 2 +- .../api/userNotification/userNotification.rpc.js | 2 +- .../userNotification/userNotification.socket.js | 2 +- server/api/userOpenchannelQueue/index.js | 2 +- .../userOpenchannelQueue.attributes.js | 2 +- .../userOpenchannelQueue.model.js | 2 +- .../userOpenchannelQueue.rpc.js | 2 +- server/api/userProfile/index.js | 2 +- server/api/userProfile/userProfile.attributes.js | 2 +- server/api/userProfile/userProfile.controller.js | 2 +- server/api/userProfile/userProfile.events.js | 2 +- server/api/userProfile/userProfile.model.js | 2 +- server/api/userProfile/userProfile.rpc.js | 2 +- server/api/userProfile/userProfile.socket.js | 2 +- server/api/userProfileResource/index.js | 2 +- .../userProfileResource.attributes.js | 2 +- .../userProfileResource.controller.js | 2 +- .../userProfileResource.model.js | 2 +- .../userProfileResource/userProfileResource.rpc.js | 2 +- server/api/userProfileSection/index.js | 2 +- .../userProfileSection.attributes.js | 2 +- .../userProfileSection.controller.js | 2 +- .../userProfileSection/userProfileSection.model.js | 2 +- .../userProfileSection/userProfileSection.rpc.js | 2 +- server/api/userSmsQueue/index.js | 2 +- server/api/userSmsQueue/userSmsQueue.attributes.js | 2 +- server/api/userSmsQueue/userSmsQueue.model.js | 2 +- server/api/userSmsQueue/userSmsQueue.rpc.js | 2 +- server/api/userVoiceQueue/index.js | 2 +- .../userVoiceQueue/userVoiceQueue.attributes.js | 2 +- server/api/userVoiceQueue/userVoiceQueue.model.js | 2 +- server/api/userVoiceQueue/userVoiceQueue.rpc.js | 2 +- server/api/userVoiceQueueRt/index.js | 2 +- .../userVoiceQueueRt.attributes.js | 2 +- .../userVoiceQueueRt/userVoiceQueueRt.events.js | 2 +- .../api/userVoiceQueueRt/userVoiceQueueRt.model.js | 2 +- .../api/userVoiceQueueRt/userVoiceQueueRt.rpc.js | 2 +- .../userVoiceQueueRt/userVoiceQueueRt.socket.js | 2 +- server/api/userWhatsappQueue/index.js | 2 +- .../userWhatsappQueue.attributes.js | 2 +- .../userWhatsappQueue/userWhatsappQueue.model.js | 2 +- .../api/userWhatsappQueue/userWhatsappQueue.rpc.js | 2 +- server/api/variable/index.js | 2 +- server/api/variable/variable.attributes.js | 2 +- server/api/variable/variable.controller.js | 2 +- server/api/variable/variable.model.js | 2 +- server/api/variable/variable.rpc.js | 2 +- server/api/version/index.js | 2 +- server/api/version/version.controller.js | 2 +- server/api/voiceAgentReport/index.js | 2 +- .../voiceAgentReport.attributes.js | 2 +- .../voiceAgentReport.controller.js | 2 +- .../api/voiceAgentReport/voiceAgentReport.model.js | 2 +- .../api/voiceAgentReport/voiceAgentReport.rpc.js | 2 +- server/api/voiceCallReport/index.js | 2 +- .../voiceCallReport/voiceCallReport.attributes.js | 2 +- .../voiceCallReport/voiceCallReport.controller.js | 2 +- .../api/voiceCallReport/voiceCallReport.model.js | 2 +- server/api/voiceCallReport/voiceCallReport.rpc.js | 2 +- server/api/voiceChanSpy/index.js | 2 +- server/api/voiceChanSpy/voiceChanSpy.attributes.js | 2 +- server/api/voiceChanSpy/voiceChanSpy.controller.js | 2 +- server/api/voiceChanSpy/voiceChanSpy.model.js | 2 +- server/api/voiceChanSpy/voiceChanSpy.rpc.js | 2 +- server/api/voiceContext/index.js | 2 +- server/api/voiceContext/voiceContext.attributes.js | 2 +- server/api/voiceContext/voiceContext.controller.js | 2 +- server/api/voiceContext/voiceContext.model.js | 2 +- server/api/voiceContext/voiceContext.rpc.js | 2 +- server/api/voiceDialReport/index.js | 2 +- .../voiceDialReport/voiceDialReport.attributes.js | 2 +- .../voiceDialReport/voiceDialReport.controller.js | 2 +- .../api/voiceDialReport/voiceDialReport.model.js | 2 +- server/api/voiceDialReport/voiceDialReport.rpc.js | 2 +- server/api/voiceExtension/index.js | 2 +- .../voiceExtension/voiceExtension.attributes.js | 2 +- .../voiceExtension/voiceExtension.controller.js | 2 +- server/api/voiceExtension/voiceExtension.events.js | 2 +- server/api/voiceExtension/voiceExtension.model.js | 2 +- server/api/voiceExtension/voiceExtension.rpc.js | 2 +- server/api/voiceExtension/voiceExtension.socket.js | 2 +- server/api/voiceMail/index.js | 2 +- server/api/voiceMail/voiceMail.attributes.js | 2 +- server/api/voiceMail/voiceMail.controller.js | 2 +- server/api/voiceMail/voiceMail.model.js | 2 +- server/api/voiceMail/voiceMail.rpc.js | 2 +- server/api/voiceMailMessage/index.js | 2 +- .../voiceMailMessage.attributes.js | 2 +- .../voiceMailMessage.controller.js | 2 +- .../api/voiceMailMessage/voiceMailMessage.model.js | 2 +- .../api/voiceMailMessage/voiceMailMessage.rpc.js | 2 +- server/api/voiceMusicOnHold/index.js | 2 +- .../voiceMusicOnHold.attributes.js | 2 +- .../voiceMusicOnHold.controller.js | 2 +- .../api/voiceMusicOnHold/voiceMusicOnHold.model.js | 2 +- .../api/voiceMusicOnHold/voiceMusicOnHold.rpc.js | 2 +- server/api/voicePrefix/index.js | 2 +- server/api/voicePrefix/voicePrefix.attributes.js | 2 +- server/api/voicePrefix/voicePrefix.controller.js | 2 +- server/api/voicePrefix/voicePrefix.events.js | 2 +- server/api/voicePrefix/voicePrefix.model.js | 2 +- server/api/voicePrefix/voicePrefix.rpc.js | 2 +- server/api/voicePrefix/voicePrefix.socket.js | 2 +- server/api/voiceQueue/index.js | 2 +- server/api/voiceQueue/voiceQueue.attributes.js | 2 +- server/api/voiceQueue/voiceQueue.controller.js | 2 +- server/api/voiceQueue/voiceQueue.events.js | 2 +- server/api/voiceQueue/voiceQueue.model.js | 2 +- server/api/voiceQueue/voiceQueue.rpc.js | 2 +- server/api/voiceQueue/voiceQueue.socket.js | 2 +- server/api/voiceQueueReport/index.js | 2 +- .../voiceQueueReport.attributes.js | 2 +- .../voiceQueueReport.controller.js | 2 +- .../voiceQueueReport/voiceQueueReport.events.js | 2 +- .../api/voiceQueueReport/voiceQueueReport.model.js | 2 +- .../api/voiceQueueReport/voiceQueueReport.rpc.js | 2 +- .../voiceQueueReport/voiceQueueReport.socket.js | 2 +- server/api/voiceQueuesLog/index.js | 2 +- .../voiceQueuesLog/voiceQueuesLog.attributes.js | 2 +- .../voiceQueuesLog/voiceQueuesLog.controller.js | 2 +- server/api/voiceQueuesLog/voiceQueuesLog.model.js | 2 +- server/api/voiceQueuesLog/voiceQueuesLog.rpc.js | 2 +- server/api/voiceRecording/index.js | 2 +- .../voiceRecording/voiceRecording.attributes.js | 2 +- .../voiceRecording/voiceRecording.controller.js | 2 +- server/api/voiceRecording/voiceRecording.model.js | 2 +- server/api/voiceRecording/voiceRecording.rpc.js | 2 +- server/api/voiceTransferReport/index.js | 2 +- .../voiceTransferReport.attributes.js | 2 +- .../voiceTransferReport.controller.js | 2 +- .../voiceTransferReport.model.js | 2 +- .../voiceTransferReport/voiceTransferReport.rpc.js | 2 +- server/api/webbar/index.js | 2 +- server/api/webbar/webbar.controller.js | 2 +- server/api/whatsappAccount/index.js | 2 +- .../whatsappAccount/whatsappAccount.attributes.js | 2 +- .../whatsappAccount/whatsappAccount.controller.js | 2 +- .../api/whatsappAccount/whatsappAccount.events.js | 2 +- .../api/whatsappAccount/whatsappAccount.model.js | 2 +- server/api/whatsappAccount/whatsappAccount.rpc.js | 2 +- .../api/whatsappAccount/whatsappAccount.socket.js | 2 +- server/api/whatsappApplication/index.js | 2 +- .../whatsappApplication.attributes.js | 2 +- .../whatsappApplication.controller.js | 2 +- .../whatsappApplication.model.js | 2 +- .../whatsappApplication/whatsappApplication.rpc.js | 2 +- server/api/whatsappInteraction/index.js | 2 +- .../whatsappInteraction.attributes.js | 2 +- .../whatsappInteraction.controller.js | 2 +- .../whatsappInteraction.events.js | 2 +- .../whatsappInteraction.model.js | 2 +- .../whatsappInteraction/whatsappInteraction.rpc.js | 2 +- .../whatsappInteraction.socket.js | 2 +- server/api/whatsappMessage/index.js | 2 +- .../whatsappMessage/whatsappMessage.attributes.js | 2 +- .../whatsappMessage/whatsappMessage.controller.js | 2 +- .../api/whatsappMessage/whatsappMessage.events.js | 2 +- .../api/whatsappMessage/whatsappMessage.model.js | 2 +- server/api/whatsappMessage/whatsappMessage.rpc.js | 2 +- .../api/whatsappMessage/whatsappMessage.socket.js | 2 +- server/api/whatsappQueue/index.js | 2 +- .../api/whatsappQueue/whatsappQueue.attributes.js | 2 +- .../api/whatsappQueue/whatsappQueue.controller.js | 2 +- server/api/whatsappQueue/whatsappQueue.events.js | 2 +- server/api/whatsappQueue/whatsappQueue.model.js | 2 +- server/api/whatsappQueue/whatsappQueue.rpc.js | 2 +- server/api/whatsappQueue/whatsappQueue.socket.js | 2 +- server/api/whatsappQueueReport/index.js | 2 +- .../whatsappQueueReport.attributes.js | 2 +- .../whatsappQueueReport.controller.js | 2 +- .../whatsappQueueReport.model.js | 2 +- .../whatsappQueueReport/whatsappQueueReport.rpc.js | 2 +- server/api/whatsappTransferReport/index.js | 2 +- .../whatsappTransferReport.attributes.js | 2 +- .../whatsappTransferReport.controller.js | 2 +- .../whatsappTransferReport.model.js | 2 +- .../whatsappTransferReport.rpc.js | 2 +- server/app.js | 2 +- server/components/auth/service.js | 2 +- server/components/encryptor/index.js | 2 +- server/components/export/csv.js | 2 +- server/components/export/pdf.js | 2 +- server/components/export/xlsx.js | 2 +- server/components/extensions/rewrite.js | 2 +- server/components/import/cm/csv.js | 2 +- server/components/import/cm/csv2.js | 2 +- server/components/import/cm/csvUpdates.js | 18 + server/components/integrations/configuration.js | 2 +- server/components/interaction/service.js | 2 +- server/components/license/service.js | 2 +- server/components/parsers/advancedSearch.js | 2 +- server/components/parsers/qs.js | 2 +- server/config/express.js | 2 +- server/config/license/hardware.js | 2 +- server/config/license/index.js | 2 +- server/config/license/util.js | 2 +- server/config/local.env.js | 2 +- server/config/logger.js | 2 +- server/config/pm2/config.js | 2 +- server/config/pm2/index.js | 2 +- server/config/schedule/chat.js | 2 +- server/config/schedule/index.js | 2 +- server/config/schedule/transcribe.js | 2 +- server/config/schedule/whatsapp.js | 2 +- server/config/seedContact.js | 2 +- server/config/seedUsers.js | 2 +- server/config/socketio.js | 2 +- server/config/triggers/index.js | 2 +- server/config/utils.js | 2 +- server/errors/index.js | 2 +- server/migrations/2.5.27.js | 328 +++++----- server/migrations/2.6.0.js | 249 ++++++++ server/mysqldb/index.js | 2 +- server/routes.js | 2 +- server/rpc/index.js | 2 +- server/services/agi/channel.js | 2 +- server/services/agi/error.js | 2 +- server/services/agi/graph/index.js | 2 +- server/services/agi/index.js | 2 +- server/services/agi/mailRpc/index.js | 2 +- server/services/agi/reply.js | 2 +- server/services/agi/rpc/index.js | 2 +- server/services/agi/scripts/aws/index.js | 2 +- server/services/agi/scripts/aws/lex/index.js | 2 +- server/services/agi/scripts/aws/lex/lib/api.js | 2 +- server/services/agi/scripts/aws/polly/index.js | 2 +- server/services/agi/scripts/aws/polly/lib/api.js | 2 +- server/services/agi/scripts/google/asr/index.js | 2 +- server/services/agi/scripts/google/asr/lib/api.js | 2 +- server/services/agi/scripts/google/index.js | 2 +- server/services/agi/scripts/index.js | 2 +- server/services/agi/scripts/sestek/index.js | 2 +- server/services/agi/scripts/sestek/nda/index.js | 2 +- server/services/agi/scripts/tilde/asr/index.js | 2 +- server/services/agi/scripts/tilde/asr/lib/api.js | 2 +- server/services/agi/scripts/tilde/index.js | 2 +- server/services/agi/server.js | 2 +- server/services/agi/vertices.js | 2 +- server/services/ami/acw/index.js | 2 +- server/services/ami/ami.js | 2 +- server/services/ami/client.js | 2 +- server/services/ami/dialer/action.js | 2 +- server/services/ami/dialer/additionalPhone.js | 18 + server/services/ami/dialer/agentComplete.js | 2 +- server/services/ami/dialer/final.js | 2 +- server/services/ami/dialer/hangup.js | 2 +- server/services/ami/dialer/history.js | 2 +- server/services/ami/dialer/index.js | 2 +- server/services/ami/dialer/queueCallerAbandon.js | 2 +- server/services/ami/fax/action.js | 2 +- server/services/ami/fax/index.js | 2 +- server/services/ami/fax/rpcDb.js | 2 +- server/services/ami/fax/util/gs.js | 2 +- server/services/ami/fax/util/util.js | 2 +- server/services/ami/index.js | 2 +- server/services/ami/model/agent.js | 2 +- server/services/ami/model/campaign.js | 2 +- server/services/ami/model/channel.js | 2 +- server/services/ami/model/deskAccount.js | 2 +- server/services/ami/model/dynamics365Account.js | 2 +- server/services/ami/model/faxAccount.js | 2 +- server/services/ami/model/freshdeskAccount.js | 2 +- server/services/ami/model/freshsalesAccount.js | 2 +- server/services/ami/model/queueReport.js | 2 +- server/services/ami/model/salesforceAccount.js | 2 +- server/services/ami/model/servicenowAccount.js | 2 +- server/services/ami/model/sugarcrmAccount.js | 2 +- server/services/ami/model/telephone.js | 2 +- server/services/ami/model/template.js | 2 +- server/services/ami/model/trigger.js | 2 +- server/services/ami/model/trunk.js | 2 +- server/services/ami/model/voiceExtension.js | 2 +- server/services/ami/model/voiceQueue.js | 2 +- server/services/ami/model/vtigerAccount.js | 2 +- server/services/ami/model/zendeskAccount.js | 2 +- server/services/ami/model/zohoAccount.js | 2 +- server/services/ami/preview/action.js | 2 +- server/services/ami/preview/index.js | 2 +- server/services/ami/preview/rpcDb.js | 2 +- server/services/ami/preview/util/util.js | 2 +- server/services/ami/properties.js | 2 +- server/services/ami/realtime/index.js | 2 +- server/services/ami/report/index.js | 2 +- server/services/ami/report/userReport.js | 2 +- server/services/ami/report/voiceAgentReport.js | 2 +- server/services/ami/report/voiceCallReport.js | 2 +- server/services/ami/report/voiceDialReport.js | 2 +- server/services/ami/report/voiceQueueReport.js | 2 +- server/services/ami/rpc/agentReportPreview.js | 2 +- server/services/ami/rpc/attachment.js | 2 +- server/services/ami/rpc/campaign.js | 2 +- server/services/ami/rpc/cmContact.js | 2 +- server/services/ami/rpc/cmHopper.js | 2 +- server/services/ami/rpc/cmHopperAdditionalPhone.js | 18 + server/services/ami/rpc/cmHopperBlack.js | 2 +- server/services/ami/rpc/cmHopperFinal.js | 2 +- server/services/ami/rpc/cmHopperHistory.js | 2 +- server/services/ami/rpc/faxAccount.js | 2 +- server/services/ami/rpc/faxMessage.js | 2 +- server/services/ami/rpc/integrations/desk.js | 2 +- .../services/ami/rpc/integrations/dynamics365.js | 2 +- server/services/ami/rpc/integrations/freshdesk.js | 2 +- server/services/ami/rpc/integrations/freshsales.js | 2 +- server/services/ami/rpc/integrations/salesforce.js | 2 +- server/services/ami/rpc/integrations/servicenow.js | 2 +- server/services/ami/rpc/integrations/sugarcrm.js | 2 +- server/services/ami/rpc/integrations/vtiger.js | 2 +- server/services/ami/rpc/integrations/zendesk.js | 2 +- server/services/ami/rpc/integrations/zoho.js | 2 +- server/services/ami/rpc/memberReport.js | 2 +- server/services/ami/rpc/setting.js | 2 +- server/services/ami/rpc/template.js | 2 +- server/services/ami/rpc/trigger.js | 2 +- server/services/ami/rpc/trunk.js | 2 +- server/services/ami/rpc/user.js | 2 +- server/services/ami/rpc/voiceAgentReport.js | 2 +- server/services/ami/rpc/voiceCallReport.js | 2 +- server/services/ami/rpc/voiceDialReport.js | 2 +- server/services/ami/rpc/voiceExtension.js | 2 +- server/services/ami/rpc/voiceQueue.js | 2 +- server/services/ami/rpc/voiceQueueReport.js | 2 +- server/services/ami/rpc/voiceQueueRt.js | 2 +- server/services/ami/rpc/voiceRecording.js | 2 +- server/services/ami/rpc/voiceTransferReport.js | 2 +- server/services/ami/server/index.js | 2 +- server/services/ami/trigger/cmContact/index.js | 2 +- server/services/ami/trigger/index.js | 2 +- server/services/ami/trigger/integration/desk.js | 2 +- .../ami/trigger/integration/dynamics365.js | 2 +- .../services/ami/trigger/integration/freshdesk.js | 2 +- .../services/ami/trigger/integration/freshsales.js | 2 +- server/services/ami/trigger/integration/index.js | 2 +- .../services/ami/trigger/integration/salesforce.js | 2 +- .../services/ami/trigger/integration/servicenow.js | 2 +- .../services/ami/trigger/integration/sugarcrm.js | 2 +- server/services/ami/trigger/integration/util.js | 2 +- server/services/ami/trigger/integration/vtiger.js | 2 +- server/services/ami/trigger/integration/zendesk.js | 2 +- server/services/ami/trigger/integration/zoho.js | 2 +- server/services/ami/trigger/script/index.js | 2 +- server/services/ami/trigger/urlforward/index.js | 2 +- server/services/email/client.js | 2 +- server/services/email/index.js | 2 +- server/services/email/lib/email.js | 2 +- server/services/email/lib/imap.js | 2 +- server/services/email/lib/smtp.js | 2 +- server/services/email/lib/utils.js | 2 +- server/services/email/model/mailAccount.js | 2 +- server/services/email/realtime/index.js | 2 +- server/services/email/rpc/mailAccount.js | 2 +- server/services/email/rpc/setting.js | 2 +- server/services/email/server/index.js | 2 +- server/services/express/index.js | 2 +- server/services/routing/client.js | 2 +- server/services/routing/index.js | 2 +- server/services/routing/lib/rule-engine.js | 2 +- server/services/routing/mailRpc/index.js | 2 +- server/services/routing/model/agent.js | 2 +- server/services/routing/model/chatQueue.js | 2 +- server/services/routing/model/faxQueue.js | 2 +- server/services/routing/model/interval.js | 2 +- server/services/routing/model/mailQueue.js | 2 +- server/services/routing/model/openchannelQueue.js | 2 +- server/services/routing/model/smsQueue.js | 2 +- server/services/routing/model/whatsappQueue.js | 2 +- server/services/routing/realtime/index.js | 2 +- server/services/routing/rpc/chatInteraction.js | 2 +- server/services/routing/rpc/chatMessage.js | 2 +- server/services/routing/rpc/chatQueue.js | 2 +- server/services/routing/rpc/chatQueueReport.js | 2 +- server/services/routing/rpc/faxInteraction.js | 2 +- server/services/routing/rpc/faxMessage.js | 2 +- server/services/routing/rpc/faxQueue.js | 2 +- server/services/routing/rpc/faxQueueReport.js | 2 +- server/services/routing/rpc/interval.js | 2 +- server/services/routing/rpc/mailInteraction.js | 2 +- server/services/routing/rpc/mailMessage.js | 2 +- server/services/routing/rpc/mailQueue.js | 2 +- server/services/routing/rpc/mailQueueReport.js | 2 +- .../services/routing/rpc/openchannelInteraction.js | 2 +- server/services/routing/rpc/openchannelMessage.js | 2 +- server/services/routing/rpc/openchannelQueue.js | 2 +- .../services/routing/rpc/openchannelQueueReport.js | 2 +- server/services/routing/rpc/smsInteraction.js | 2 +- server/services/routing/rpc/smsMessage.js | 2 +- server/services/routing/rpc/smsQueue.js | 2 +- server/services/routing/rpc/smsQueueReport.js | 2 +- server/services/routing/rpc/user.js | 2 +- server/services/routing/rpc/whatsappInteraction.js | 2 +- server/services/routing/rpc/whatsappMessage.js | 2 +- server/services/routing/rpc/whatsappQueue.js | 2 +- server/services/routing/rpc/whatsappQueueReport.js | 2 +- .../services/routing/server/applications/agent.js | 2 +- .../routing/server/applications/amazonlex.js | 2 +- .../routing/server/applications/autoreply.js | 2 +- .../services/routing/server/applications/close.js | 2 +- .../routing/server/applications/dialogflow.js | 2 +- .../routing/server/applications/dialogflowV2.js | 2 +- .../services/routing/server/applications/gotoif.js | 2 +- .../services/routing/server/applications/gotop.js | 2 +- .../routing/server/applications/message.js | 2 +- .../services/routing/server/applications/noop.js | 2 +- .../services/routing/server/applications/queue.js | 2 +- .../routing/server/applications/strategy/agent.js | 2 +- .../server/applications/strategy/beepall.js | 2 +- .../routing/server/applications/strategy/index.js | 2 +- .../server/applications/strategy/rrmemory.js | 2 +- .../routing/server/applications/strategy/util.js | 2 +- .../services/routing/server/applications/system.js | 2 +- server/services/routing/server/applications/tag.js | 2 +- .../services/routing/server/applications/utils.js | 2 +- server/services/routing/server/index.js | 2 +- server/services/routing/server/interval.js | 2 +- server/services/xdr/agents.controller.js | 2 +- server/services/xdr/calls.controller.js | 2 +- server/services/xdr/core.controller.js | 2 +- server/services/xdr/dials.controller.js | 2 +- server/services/xdr/index.js | 2 +- server/services/xdr/members.controller.js | 2 +- server/services/xdr/queues.controller.js | 2 +- server/services/xdr/recordings.controller.js | 2 +- server/services/xdr/transfers.controller.js | 2 +- server/services/xdr/utils.js | 2 +- 1287 files changed, 3551 insertions(+), 1564 deletions(-) create mode 100644 public/scripts/app.21a88740.js delete mode 100644 public/scripts/app.79e08137.js create mode 100644 public/styles/app.7678e788.css delete mode 100644 public/styles/app.91ca40ed.css create mode 100644 server/api/cmContactHasItem/cmContactHasItem.attributes.js create mode 100644 server/api/cmContactHasItem/cmContactHasItem.controller.js create mode 100644 server/api/cmContactHasItem/cmContactHasItem.model.js create mode 100644 server/api/cmContactHasItem/cmContactHasItem.rpc.js create mode 100644 server/api/cmContactHasItem/index.js create mode 100644 server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.attributes.js create mode 100644 server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.controller.js create mode 100644 server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model.js create mode 100644 server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc.js create mode 100644 server/api/cmHopperAdditionalPhone/index.js create mode 100644 server/api/contactItemType/contactItemType.attributes.js create mode 100644 server/api/contactItemType/contactItemType.controller.js create mode 100644 server/api/contactItemType/contactItemType.model.js create mode 100644 server/api/contactItemType/contactItemType.rpc.js create mode 100644 server/api/contactItemType/index.js create mode 100644 server/components/import/cm/csvUpdates.js create mode 100644 server/migrations/2.6.0.js create mode 100644 server/services/ami/dialer/additionalPhone.js create mode 100644 server/services/ami/rpc/cmHopperAdditionalPhone.js diff --git a/apidoc/api_data.js b/apidoc/api_data.js index fb458d5..f0b2a3c 100644 --- a/apidoc/api_data.js +++ b/apidoc/api_data.js @@ -1301,12 +1301,12 @@ define({ "api": [ }, { "type": "post", - "url": "/api/auth/google", + "url": "/api/auth/local", "title": "Creates a new User token", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/auth/google -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST", + "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST", "type": "json" } ], @@ -1334,17 +1334,17 @@ define({ "api": [ }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/authGoogle/index.js", + "filename": "server/api/authLocal/index.js", "groupTitle": "Authentication" }, { "type": "post", - "url": "/api/auth/local", + "url": "/api/auth/google", "title": "Creates a new User token", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST", + "content": "curl https://{domain}/api/auth/google -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST", "type": "json" } ], @@ -1372,7 +1372,7 @@ define({ "api": [ }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/authLocal/index.js", + "filename": "server/api/authGoogle/index.js", "groupTitle": "Authentication" }, { @@ -5529,6 +5529,324 @@ define({ "api": [ }, { "type": "post", + "url": "/api/cm_contact_has_items", + "title": "Creates a new CmContactHasItem", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "CreateCmContactHasItems", + "group": "CmContactHasItems", + "parameter": { + "fields": { + "Body": [ + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "CmContactId", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "item", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "ItemTypeId", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "ItemClass", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "OrderBy", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "description", + "description": "" + } + ] + } + }, + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "delete", + "url": "/api/cm_contact_has_items/{id}", + "title": "Deletes a CmContactHasItem", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items/{id} -v -u {name}:{password} -X DELETE", + "type": "json" + } + ], + "name": "DeleteCmContactHasItems", + "group": "CmContactHasItems", + "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "get", + "url": "/api/cm_contact_has_items", + "title": "Gets a list of CmContactHasItems", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items -v -u {name}:{password}", + "type": "json" + } + ], + "name": "GetCmContactHasItems", + "group": "CmContactHasItems", + "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm_contact_has_items?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm_contact_has_items?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm_contact_has_items?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm_contact_has_items?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm_contact_has_items?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "get", + "url": "/api/cm_contact_has_items/{id}", + "title": "Gets a single CmContactHasItem", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items/{id} -v -u {name}:{password}", + "type": "json" + } + ], + "name": "ShowCmContactHasItems", + "group": "CmContactHasItems", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "put", + "url": "/api/cm_contact_has_items/{id}", + "title": "Update an existing CmContactHasItem", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", + "type": "json" + } + ], + "name": "updateCmContactHasItems", + "group": "CmContactHasItems", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "post", + "url": "/api/cm_hopper_additional_phones", + "title": "Creates a new CmHopperAdditionalPhone", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "CreateCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "parameter": { + "fields": { + "Body": [ + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "CmHopperId", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": false, + "field": "phone", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "OrderBy", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "scheduledat", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countbusyretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countcongestionretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countnoanswerretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countnosuchnumberretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countdropretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countabandonedretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countmachineretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countagentrejectretry", + "description": "" + } + ] + } + }, + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "delete", + "url": "/api/cm_hopper_additional_phones/{id}", + "title": "Deletes a CmHopperAdditionalPhone", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones/{id} -v -u {name}:{password} -X DELETE", + "type": "json" + } + ], + "name": "DeleteCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "get", + "url": "/api/cm_hopper_additional_phones", + "title": "Gets a list of CmHopperAdditionalPhones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones -v -u {name}:{password}", + "type": "json" + } + ], + "name": "GetCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm_hopper_additional_phones?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm_hopper_additional_phones?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm_hopper_additional_phones?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm_hopper_additional_phones?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm_hopper_additional_phones?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "get", + "url": "/api/cm_hopper_additional_phones/{id}", + "title": "Gets a single CmHopperAdditionalPhone", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones/{id} -v -u {name}:{password}", + "type": "json" + } + ], + "name": "ShowCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "put", + "url": "/api/cm_hopper_additional_phones/{id}", + "title": "Update an existing CmHopperAdditionalPhone", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", + "type": "json" + } + ], + "name": "updateCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "post", "url": "/api/cm/companies", "title": "Creates a new Company", "examples": [ @@ -6129,6 +6447,42 @@ define({ "api": [ "groupTitle": "Cm_Contacts" }, { + "type": "post", + "url": "/api/cm/contacts/{id}/duplicatePhones", + "title": "Sets new contact additional phones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/{id}/duplicateAdditionalPhones -d '{\"phones\": [p1,p2]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "duplicateAdditionalPhones", + "group": "Cm_Contacts", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_Contacts" + }, + { + "type": "get", + "url": "/api/cm/contacts/{id}/phones", + "title": "Gets contact phones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/{id}/phones -v -u {name}:{password} -X GET", + "type": "json" + } + ], + "name": "getAdditionalPhones", + "group": "Cm_Contacts", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_Contacts" + }, + { "type": "get", "url": "/api/cm/contacts/{id}/journey", "title": "Gets customer journey", @@ -6202,6 +6556,42 @@ define({ "api": [ }, { "type": "post", + "url": "/api/cm/contacts/{id}/rescheduleAdditionalPhones", + "title": "Sets new contact additional phones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/{id}/rescheduleAdditionalPhones -d '{\"phones\": [p1,p2]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "rescheduleAdditionalPhones", + "group": "Cm_Contacts", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_Contacts" + }, + { + "type": "post", + "url": "/api/cm/contacts/{id}/phones", + "title": "Sets new contact phones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/{id}/phones -d '{\"phones\": [p1,p2]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "setAdditionalPhones", + "group": "Cm_Contacts", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_Contacts" + }, + { + "type": "post", "url": "/api/cm/contacts/{id}/tags", "title": "Sets new tags", "examples": [ @@ -6488,6 +6878,13 @@ define({ "api": [ "optional": true, "field": "countagentrejectretry", "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "OrderBy", + "description": "" } ] } @@ -7810,6 +8207,24 @@ define({ "api": [ }, { "type": "post", + "url": "/api/cm/contacts/uploadUpdates/:id", + "title": "Import existing contacts by csv", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/uploadUpdates/:id -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "importUpdates", + "group": "Cm_contacts", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_contacts" + }, + { + "type": "post", "url": "/api/cm/contacts/upload", "title": "Upload csv", "examples": [ @@ -7882,6 +8297,123 @@ define({ "api": [ }, { "type": "post", + "url": "/api/contact_item_types", + "title": "Creates a new ContactItemType", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "CreateContactItemTypes", + "group": "ContactItemType", + "parameter": { + "fields": { + "Body": [ + { + "group": "Body", + "type": "String", + "optional": false, + "field": "name", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "OrderBy", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "rgbBackgroundColor", + "description": "" + } + ] + } + }, + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "delete", + "url": "/api/contact_item_types/{id}", + "title": "Deletes a ContactItemType", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types/{id} -v -u {name}:{password} -X DELETE", + "type": "json" + } + ], + "name": "DeleteContactItemTypes", + "group": "ContactItemType", + "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "get", + "url": "/api/contact_item_types", + "title": "Gets a list of ContactItemTypes", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types -v -u {name}:{password}", + "type": "json" + } + ], + "name": "GetContactItemTypes", + "group": "ContactItemType", + "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/contact_item_types?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/contact_item_types?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/contact_item_types?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/contact_item_types?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/contact_item_types?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "get", + "url": "/api/contact_item_types/{id}", + "title": "Gets a single ContactItemType", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types/{id} -v -u {name}:{password}", + "type": "json" + } + ], + "name": "ShowContactItemTypes", + "group": "ContactItemType", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "put", + "url": "/api/contact_item_types/{id}", + "title": "Update an existing ContactItemType", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", + "type": "json" + } + ], + "name": "updateContactItemTypes", + "group": "ContactItemType", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "post", "url": "/api/cm/custom_field", "title": "Create a new custom field", "examples": [ @@ -9854,12 +10386,12 @@ define({ "api": [ }, { "type": "post", - "url": "/api/fax/accounts/{id}/applications", - "title": "Creates new applications", + "url": "/api/fax/accounts/addaccountapplications", + "title": "Creates new account and applications", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/fax/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "content": "curl https://{domain}/api/fax/accounts/addaccountapplications -d '[{\"name\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], @@ -9913,12 +10445,12 @@ define({ "api": [ }, { "type": "post", - "url": "/api/fax/accounts/addaccountapplications", - "title": "Creates new account and applications", + "url": "/api/fax/accounts/{id}/applications", + "title": "Creates new applications", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/fax/accounts/addaccountapplications -d '[{\"name\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "content": "curl https://{domain}/api/fax/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], @@ -10888,9 +11420,9 @@ define({ "api": [ "groupTitle": "Fax_Messages" }, { - "type": "put", - "url": "/api/fax/messages/{id}/reject", - "title": "Rejects message", + "type": "post", + "url": "/api/fax/messages", + "title": "Create message and send Fax", "examples": [ { "title": "Example usage:", @@ -10900,15 +11432,15 @@ define({ "api": [ ], "name": "rejectMessage", "group": "Fax_Messages", - "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxMessage/index.js", "groupTitle": "Fax_Messages" }, { - "type": "post", - "url": "/api/fax/messages", - "title": "Create message and send Fax", + "type": "put", + "url": "/api/fax/messages/{id}/reject", + "title": "Rejects message", "examples": [ { "title": "Example usage:", @@ -10918,7 +11450,7 @@ define({ "api": [ ], "name": "rejectMessage", "group": "Fax_Messages", - "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxMessage/index.js", "groupTitle": "Fax_Messages" @@ -22850,39 +23382,39 @@ define({ "api": [ "groupTitle": "Sms_Accounts" }, { - "type": "post", - "url": "/api/sms/messages/{id}/status", - "title": "Receive message status", + "type": "get", + "url": "/api/sms/accounts/{id}/status", + "title": "Receive message status as get request", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST", + "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET", "type": "json" } ], "name": "statusMessage", "group": "Sms_Accounts", - "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/smsMessage/index.js", + "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { - "type": "get", - "url": "/api/sms/accounts/{id}/status", - "title": "Receive message status as get request", + "type": "post", + "url": "/api/sms/messages/{id}/status", + "title": "Receive message status", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET", + "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST", "type": "json" } ], "name": "statusMessage", "group": "Sms_Accounts", - "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/smsAccount/index.js", + "filename": "server/api/smsMessage/index.js", "groupTitle": "Sms_Accounts" }, { @@ -25923,7 +26455,7 @@ define({ "api": [ }, { "type": "get", - "url": "/api/system", + "url": "/api/system/process", "title": "Gets system information", "examples": [ { @@ -25941,7 +26473,7 @@ define({ "api": [ }, { "type": "get", - "url": "/api/system/process", + "url": "/api/system", "title": "Gets system information", "examples": [ { @@ -26258,12 +26790,12 @@ define({ "api": [ }, { "type": "delete", - "url": "/api/mail/queues/{id}/teams", + "url": "/api/openchannel/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26271,17 +26803,17 @@ define({ "api": [ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/mailQueue/index.js", + "filename": "server/api/openchannelQueue/index.js", "groupTitle": "Teams" }, { "type": "delete", - "url": "/api/openchannel/queues/{id}/teams", + "url": "/api/voice/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26289,7 +26821,7 @@ define({ "api": [ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/openchannelQueue/index.js", + "filename": "server/api/voiceQueue/index.js", "groupTitle": "Teams" }, { @@ -26312,12 +26844,12 @@ define({ "api": [ }, { "type": "delete", - "url": "/api/whatsapp/queues/{id}/teams", + "url": "/api/mail/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26325,17 +26857,17 @@ define({ "api": [ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/whatsappQueue/index.js", + "filename": "server/api/mailQueue/index.js", "groupTitle": "Teams" }, { "type": "delete", - "url": "/api/voice/queues/{id}/teams", + "url": "/api/chat/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26343,17 +26875,17 @@ define({ "api": [ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/voiceQueue/index.js", + "filename": "server/api/chatQueue/index.js", "groupTitle": "Teams" }, { "type": "delete", - "url": "/api/chat/queues/{id}/teams", + "url": "/api/whatsapp/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26361,7 +26893,7 @@ define({ "api": [ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/chatQueue/index.js", + "filename": "server/api/whatsappQueue/index.js", "groupTitle": "Teams" }, { diff --git a/apidoc/api_data.json b/apidoc/api_data.json index 726d908..f515d42 100644 --- a/apidoc/api_data.json +++ b/apidoc/api_data.json @@ -1301,12 +1301,12 @@ }, { "type": "post", - "url": "/api/auth/google", + "url": "/api/auth/local", "title": "Creates a new User token", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/auth/google -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST", + "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST", "type": "json" } ], @@ -1334,17 +1334,17 @@ }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/authGoogle/index.js", + "filename": "server/api/authLocal/index.js", "groupTitle": "Authentication" }, { "type": "post", - "url": "/api/auth/local", + "url": "/api/auth/google", "title": "Creates a new User token", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST", + "content": "curl https://{domain}/api/auth/google -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST", "type": "json" } ], @@ -1372,7 +1372,7 @@ }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/authLocal/index.js", + "filename": "server/api/authGoogle/index.js", "groupTitle": "Authentication" }, { @@ -5529,6 +5529,324 @@ }, { "type": "post", + "url": "/api/cm_contact_has_items", + "title": "Creates a new CmContactHasItem", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "CreateCmContactHasItems", + "group": "CmContactHasItems", + "parameter": { + "fields": { + "Body": [ + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "CmContactId", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "item", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "ItemTypeId", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "ItemClass", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "OrderBy", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "description", + "description": "" + } + ] + } + }, + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "delete", + "url": "/api/cm_contact_has_items/{id}", + "title": "Deletes a CmContactHasItem", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items/{id} -v -u {name}:{password} -X DELETE", + "type": "json" + } + ], + "name": "DeleteCmContactHasItems", + "group": "CmContactHasItems", + "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "get", + "url": "/api/cm_contact_has_items", + "title": "Gets a list of CmContactHasItems", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items -v -u {name}:{password}", + "type": "json" + } + ], + "name": "GetCmContactHasItems", + "group": "CmContactHasItems", + "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm_contact_has_items?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm_contact_has_items?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm_contact_has_items?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm_contact_has_items?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm_contact_has_items?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "get", + "url": "/api/cm_contact_has_items/{id}", + "title": "Gets a single CmContactHasItem", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items/{id} -v -u {name}:{password}", + "type": "json" + } + ], + "name": "ShowCmContactHasItems", + "group": "CmContactHasItems", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "put", + "url": "/api/cm_contact_has_items/{id}", + "title": "Update an existing CmContactHasItem", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", + "type": "json" + } + ], + "name": "updateCmContactHasItems", + "group": "CmContactHasItems", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "post", + "url": "/api/cm_hopper_additional_phones", + "title": "Creates a new CmHopperAdditionalPhone", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "CreateCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "parameter": { + "fields": { + "Body": [ + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "CmHopperId", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": false, + "field": "phone", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "OrderBy", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "scheduledat", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countbusyretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countcongestionretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countnoanswerretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countnosuchnumberretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countdropretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countabandonedretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countmachineretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countagentrejectretry", + "description": "" + } + ] + } + }, + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "delete", + "url": "/api/cm_hopper_additional_phones/{id}", + "title": "Deletes a CmHopperAdditionalPhone", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones/{id} -v -u {name}:{password} -X DELETE", + "type": "json" + } + ], + "name": "DeleteCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "get", + "url": "/api/cm_hopper_additional_phones", + "title": "Gets a list of CmHopperAdditionalPhones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones -v -u {name}:{password}", + "type": "json" + } + ], + "name": "GetCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm_hopper_additional_phones?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm_hopper_additional_phones?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm_hopper_additional_phones?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm_hopper_additional_phones?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm_hopper_additional_phones?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "get", + "url": "/api/cm_hopper_additional_phones/{id}", + "title": "Gets a single CmHopperAdditionalPhone", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones/{id} -v -u {name}:{password}", + "type": "json" + } + ], + "name": "ShowCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "put", + "url": "/api/cm_hopper_additional_phones/{id}", + "title": "Update an existing CmHopperAdditionalPhone", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", + "type": "json" + } + ], + "name": "updateCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "post", "url": "/api/cm/companies", "title": "Creates a new Company", "examples": [ @@ -6129,6 +6447,42 @@ "groupTitle": "Cm_Contacts" }, { + "type": "post", + "url": "/api/cm/contacts/{id}/duplicatePhones", + "title": "Sets new contact additional phones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/{id}/duplicateAdditionalPhones -d '{\"phones\": [p1,p2]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "duplicateAdditionalPhones", + "group": "Cm_Contacts", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_Contacts" + }, + { + "type": "get", + "url": "/api/cm/contacts/{id}/phones", + "title": "Gets contact phones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/{id}/phones -v -u {name}:{password} -X GET", + "type": "json" + } + ], + "name": "getAdditionalPhones", + "group": "Cm_Contacts", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_Contacts" + }, + { "type": "get", "url": "/api/cm/contacts/{id}/journey", "title": "Gets customer journey", @@ -6202,6 +6556,42 @@ }, { "type": "post", + "url": "/api/cm/contacts/{id}/rescheduleAdditionalPhones", + "title": "Sets new contact additional phones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/{id}/rescheduleAdditionalPhones -d '{\"phones\": [p1,p2]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "rescheduleAdditionalPhones", + "group": "Cm_Contacts", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_Contacts" + }, + { + "type": "post", + "url": "/api/cm/contacts/{id}/phones", + "title": "Sets new contact phones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/{id}/phones -d '{\"phones\": [p1,p2]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "setAdditionalPhones", + "group": "Cm_Contacts", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_Contacts" + }, + { + "type": "post", "url": "/api/cm/contacts/{id}/tags", "title": "Sets new tags", "examples": [ @@ -6488,6 +6878,13 @@ "optional": true, "field": "countagentrejectretry", "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "OrderBy", + "description": "" } ] } @@ -7810,6 +8207,24 @@ }, { "type": "post", + "url": "/api/cm/contacts/uploadUpdates/:id", + "title": "Import existing contacts by csv", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/uploadUpdates/:id -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "importUpdates", + "group": "Cm_contacts", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_contacts" + }, + { + "type": "post", "url": "/api/cm/contacts/upload", "title": "Upload csv", "examples": [ @@ -7882,6 +8297,123 @@ }, { "type": "post", + "url": "/api/contact_item_types", + "title": "Creates a new ContactItemType", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "CreateContactItemTypes", + "group": "ContactItemType", + "parameter": { + "fields": { + "Body": [ + { + "group": "Body", + "type": "String", + "optional": false, + "field": "name", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "OrderBy", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "rgbBackgroundColor", + "description": "" + } + ] + } + }, + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "delete", + "url": "/api/contact_item_types/{id}", + "title": "Deletes a ContactItemType", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types/{id} -v -u {name}:{password} -X DELETE", + "type": "json" + } + ], + "name": "DeleteContactItemTypes", + "group": "ContactItemType", + "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "get", + "url": "/api/contact_item_types", + "title": "Gets a list of ContactItemTypes", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types -v -u {name}:{password}", + "type": "json" + } + ], + "name": "GetContactItemTypes", + "group": "ContactItemType", + "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/contact_item_types?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/contact_item_types?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/contact_item_types?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/contact_item_types?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/contact_item_types?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "get", + "url": "/api/contact_item_types/{id}", + "title": "Gets a single ContactItemType", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types/{id} -v -u {name}:{password}", + "type": "json" + } + ], + "name": "ShowContactItemTypes", + "group": "ContactItemType", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "put", + "url": "/api/contact_item_types/{id}", + "title": "Update an existing ContactItemType", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", + "type": "json" + } + ], + "name": "updateContactItemTypes", + "group": "ContactItemType", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "post", "url": "/api/cm/custom_field", "title": "Create a new custom field", "examples": [ @@ -9854,12 +10386,12 @@ }, { "type": "post", - "url": "/api/fax/accounts/{id}/applications", - "title": "Creates new applications", + "url": "/api/fax/accounts/addaccountapplications", + "title": "Creates new account and applications", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/fax/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "content": "curl https://{domain}/api/fax/accounts/addaccountapplications -d '[{\"name\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], @@ -9913,12 +10445,12 @@ }, { "type": "post", - "url": "/api/fax/accounts/addaccountapplications", - "title": "Creates new account and applications", + "url": "/api/fax/accounts/{id}/applications", + "title": "Creates new applications", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/fax/accounts/addaccountapplications -d '[{\"name\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "content": "curl https://{domain}/api/fax/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], @@ -10888,9 +11420,9 @@ "groupTitle": "Fax_Messages" }, { - "type": "put", - "url": "/api/fax/messages/{id}/reject", - "title": "Rejects message", + "type": "post", + "url": "/api/fax/messages", + "title": "Create message and send Fax", "examples": [ { "title": "Example usage:", @@ -10900,15 +11432,15 @@ ], "name": "rejectMessage", "group": "Fax_Messages", - "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxMessage/index.js", "groupTitle": "Fax_Messages" }, { - "type": "post", - "url": "/api/fax/messages", - "title": "Create message and send Fax", + "type": "put", + "url": "/api/fax/messages/{id}/reject", + "title": "Rejects message", "examples": [ { "title": "Example usage:", @@ -10918,7 +11450,7 @@ ], "name": "rejectMessage", "group": "Fax_Messages", - "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxMessage/index.js", "groupTitle": "Fax_Messages" @@ -22850,39 +23382,39 @@ "groupTitle": "Sms_Accounts" }, { - "type": "post", - "url": "/api/sms/messages/{id}/status", - "title": "Receive message status", + "type": "get", + "url": "/api/sms/accounts/{id}/status", + "title": "Receive message status as get request", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST", + "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET", "type": "json" } ], "name": "statusMessage", "group": "Sms_Accounts", - "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/smsMessage/index.js", + "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { - "type": "get", - "url": "/api/sms/accounts/{id}/status", - "title": "Receive message status as get request", + "type": "post", + "url": "/api/sms/messages/{id}/status", + "title": "Receive message status", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET", + "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST", "type": "json" } ], "name": "statusMessage", "group": "Sms_Accounts", - "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/smsAccount/index.js", + "filename": "server/api/smsMessage/index.js", "groupTitle": "Sms_Accounts" }, { @@ -25923,7 +26455,7 @@ }, { "type": "get", - "url": "/api/system", + "url": "/api/system/process", "title": "Gets system information", "examples": [ { @@ -25941,7 +26473,7 @@ }, { "type": "get", - "url": "/api/system/process", + "url": "/api/system", "title": "Gets system information", "examples": [ { @@ -26258,12 +26790,12 @@ }, { "type": "delete", - "url": "/api/mail/queues/{id}/teams", + "url": "/api/openchannel/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26271,17 +26803,17 @@ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/mailQueue/index.js", + "filename": "server/api/openchannelQueue/index.js", "groupTitle": "Teams" }, { "type": "delete", - "url": "/api/openchannel/queues/{id}/teams", + "url": "/api/voice/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26289,7 +26821,7 @@ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/openchannelQueue/index.js", + "filename": "server/api/voiceQueue/index.js", "groupTitle": "Teams" }, { @@ -26312,12 +26844,12 @@ }, { "type": "delete", - "url": "/api/whatsapp/queues/{id}/teams", + "url": "/api/mail/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26325,17 +26857,17 @@ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/whatsappQueue/index.js", + "filename": "server/api/mailQueue/index.js", "groupTitle": "Teams" }, { "type": "delete", - "url": "/api/voice/queues/{id}/teams", + "url": "/api/chat/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26343,17 +26875,17 @@ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/voiceQueue/index.js", + "filename": "server/api/chatQueue/index.js", "groupTitle": "Teams" }, { "type": "delete", - "url": "/api/chat/queues/{id}/teams", + "url": "/api/whatsapp/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26361,7 +26893,7 @@ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/chatQueue/index.js", + "filename": "server/api/whatsappQueue/index.js", "groupTitle": "Teams" }, { diff --git a/apidoc/api_project.js b/apidoc/api_project.js index 477012f..370dce9 100644 --- a/apidoc/api_project.js +++ b/apidoc/api_project.js @@ -17,7 +17,7 @@ define({ "apidoc": "0.3.0", "generator": { "name": "apidoc", - "time": "2021-08-24T12:29:46.947Z", + "time": "2021-08-24T14:51:08.195Z", "url": "http://apidocjs.com", "version": "0.24.0" } diff --git a/apidoc/api_project.json b/apidoc/api_project.json index becc7ba..d3be097 100644 --- a/apidoc/api_project.json +++ b/apidoc/api_project.json @@ -17,7 +17,7 @@ "apidoc": "0.3.0", "generator": { "name": "apidoc", - "time": "2021-08-24T12:29:46.947Z", + "time": "2021-08-24T14:51:08.195Z", "url": "http://apidocjs.com", "version": "0.24.0" } diff --git a/public/app/main/apps/contactmanager/i18n/ar.json b/public/app/main/apps/contactmanager/i18n/ar.json index 861c8fd..8612dec 100644 --- a/public/app/main/apps/contactmanager/i18n/ar.json +++ b/public/app/main/apps/contactmanager/i18n/ar.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice Fiscale / VAT", "RECALLME": "عاود الاتصال بي", "ACTIONTYPE": "نوع الإجراء", - "CLICKTOACTION": "انقر للعمل" + "CLICKTOACTION": "انقر للعمل", + "ADDITIONAL_PHONES": "هواتف إضافية", + "UPDATE_EXISTING_CONTACTS": "تحديث جهات الاتصال الموجودة" } } diff --git a/public/app/main/apps/contactmanager/i18n/cs.json b/public/app/main/apps/contactmanager/i18n/cs.json index 087457f..c28e475 100644 --- a/public/app/main/apps/contactmanager/i18n/cs.json +++ b/public/app/main/apps/contactmanager/i18n/cs.json @@ -183,6 +183,8 @@ "SOCIAL_CAPITAL": "Základní kapitál", "VATNUMBER_CF": "Codice Fiscale / DPH", "ACTIONTYPE": "Typ akce", - "CLICKTOACTION": "Klikněte na akci" + "CLICKTOACTION": "Klikněte na akci", + "ADDITIONAL_PHONES": "Další telefony", + "UPDATE_EXISTING_CONTACTS": "Aktualizujte stávající kontakty" } } diff --git a/public/app/main/apps/contactmanager/i18n/da.json b/public/app/main/apps/contactmanager/i18n/da.json index ab8a820..bc77b42 100644 --- a/public/app/main/apps/contactmanager/i18n/da.json +++ b/public/app/main/apps/contactmanager/i18n/da.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice fiskal / moms", "RECALLME": "Husk mig", "ACTIONTYPE": "Handlingstype", - "CLICKTOACTION": "Klik for at handle" + "CLICKTOACTION": "Klik for at handle", + "ADDITIONAL_PHONES": "Yderligere telefoner", + "UPDATE_EXISTING_CONTACTS": "Opdater eksisterende kontakter" } } diff --git a/public/app/main/apps/contactmanager/i18n/de.json b/public/app/main/apps/contactmanager/i18n/de.json index da8b00a..043259b 100644 --- a/public/app/main/apps/contactmanager/i18n/de.json +++ b/public/app/main/apps/contactmanager/i18n/de.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice Fiscale / VAT", "RECALLME": "Ruf mich zurück", "ACTIONTYPE": "Aktionstyp", - "CLICKTOACTION": "Zur Aktion klicken" + "CLICKTOACTION": "Zur Aktion klicken", + "ADDITIONAL_PHONES": "Zusätzliche Telefone", + "UPDATE_EXISTING_CONTACTS": "Bestehende Kontakte aktualisieren" } } diff --git a/public/app/main/apps/contactmanager/i18n/en.json b/public/app/main/apps/contactmanager/i18n/en.json index ae09490..539d138 100644 --- a/public/app/main/apps/contactmanager/i18n/en.json +++ b/public/app/main/apps/contactmanager/i18n/en.json @@ -27,9 +27,11 @@ "DELETE_LIST": "Delete List", "DELETE_HOPPER": "Delete Hopper", "RELOAD": "Reload", + "ADDITIONAL_PHONES": "Additional phones", "NO_COMPANIES": "No Company", "NO_AVAILABLE_ITEMS": "No Available Items", "ADD": "Add", + "UPDATE_EXISTING_CONTACTS": "Update existing contacts", "ERRORS": { "NAME_REQUIRED": "Mandatory field", "FIRSTNAME_REQUIRED": "Mandatory field", diff --git a/public/app/main/apps/contactmanager/i18n/es.json b/public/app/main/apps/contactmanager/i18n/es.json index 8b2a387..29762cd 100644 --- a/public/app/main/apps/contactmanager/i18n/es.json +++ b/public/app/main/apps/contactmanager/i18n/es.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice Fiscale / IVA", "RECALLME": "Recordarme", "ACTIONTYPE": "Tipo de acción", - "CLICKTOACTION": "Click para actuar" + "CLICKTOACTION": "Click para actuar", + "ADDITIONAL_PHONES": "Teléfonos adicionales", + "UPDATE_EXISTING_CONTACTS": "Actualizar contactos existentes" } } diff --git a/public/app/main/apps/contactmanager/i18n/et.json b/public/app/main/apps/contactmanager/i18n/et.json index d162619..9e5f8f6 100644 --- a/public/app/main/apps/contactmanager/i18n/et.json +++ b/public/app/main/apps/contactmanager/i18n/et.json @@ -183,6 +183,8 @@ "SOCIAL_CAPITAL": "Osakapital", "VATNUMBER_CF": "Codice Fiscale / käibemaks", "ACTIONTYPE": "Toimingu tüüp", - "CLICKTOACTION": "Klõpsake toimimiseks" + "CLICKTOACTION": "Klõpsake toimimiseks", + "ADDITIONAL_PHONES": "Täiendavad telefonid", + "UPDATE_EXISTING_CONTACTS": "Värskendage olemasolevaid kontakte" } } diff --git a/public/app/main/apps/contactmanager/i18n/fa.json b/public/app/main/apps/contactmanager/i18n/fa.json index 6940f14..957e91c 100644 --- a/public/app/main/apps/contactmanager/i18n/fa.json +++ b/public/app/main/apps/contactmanager/i18n/fa.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "کد مالیات / مالیات بر ارزش افزوده", "RECALLME": "مرا بخاطر بسپار", "ACTIONTYPE": "نوع اقدام", - "CLICKTOACTION": "برای اقدام کلیک کنید" + "CLICKTOACTION": "برای اقدام کلیک کنید", + "ADDITIONAL_PHONES": "تلفن های اضافی", + "UPDATE_EXISTING_CONTACTS": "مخاطبین موجود را به روز کنید" } } diff --git a/public/app/main/apps/contactmanager/i18n/fi.json b/public/app/main/apps/contactmanager/i18n/fi.json index 9f41da5..add2e93 100644 --- a/public/app/main/apps/contactmanager/i18n/fi.json +++ b/public/app/main/apps/contactmanager/i18n/fi.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice Fiscale / ALV", "RECALLME": "Muista minut", "ACTIONTYPE": "Toiminnan tyyppi", - "CLICKTOACTION": "Napsauta toimintaan" + "CLICKTOACTION": "Napsauta toimintaan", + "ADDITIONAL_PHONES": "Muut puhelimet", + "UPDATE_EXISTING_CONTACTS": "Päivitä olemassa olevat yhteystiedot" } } diff --git a/public/app/main/apps/contactmanager/i18n/fr.json b/public/app/main/apps/contactmanager/i18n/fr.json index d4d07aa..edb9517 100644 --- a/public/app/main/apps/contactmanager/i18n/fr.json +++ b/public/app/main/apps/contactmanager/i18n/fr.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice Fiscale / TVA", "RECALLME": "Rappelle-moi", "ACTIONTYPE": "Type d'action", - "CLICKTOACTION": "Cliquez pour agir" + "CLICKTOACTION": "Cliquez pour agir", + "ADDITIONAL_PHONES": "Téléphones supplémentaires", + "UPDATE_EXISTING_CONTACTS": "Mettre à jour les contacts existants" } } diff --git a/public/app/main/apps/contactmanager/i18n/he.json b/public/app/main/apps/contactmanager/i18n/he.json index 85fed91..fb0d890 100644 --- a/public/app/main/apps/contactmanager/i18n/he.json +++ b/public/app/main/apps/contactmanager/i18n/he.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "שובר קוד / מע\"מ", "RECALLME": "חייג אליי", "ACTIONTYPE": "סוג פעולה", - "CLICKTOACTION": "לחץ לפעולה" + "CLICKTOACTION": "לחץ לפעולה", + "ADDITIONAL_PHONES": "טלפונים נוספים", + "UPDATE_EXISTING_CONTACTS": "עדכן אנשי קשר קיימים" } } diff --git a/public/app/main/apps/contactmanager/i18n/hi.json b/public/app/main/apps/contactmanager/i18n/hi.json index 0731e09..53cc506 100644 --- a/public/app/main/apps/contactmanager/i18n/hi.json +++ b/public/app/main/apps/contactmanager/i18n/hi.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "कोडिस फिशले / वैट", "RECALLME": "मुझे याद करो", "ACTIONTYPE": "प्रक्रिया का प्रकार", - "CLICKTOACTION": "कार्रवाई के लिए क्लिक करें" + "CLICKTOACTION": "कार्रवाई के लिए क्लिक करें", + "ADDITIONAL_PHONES": "अतिरिक्त फोन", + "UPDATE_EXISTING_CONTACTS": "मौजूदा संपर्कों को अपडेट करें" } } diff --git a/public/app/main/apps/contactmanager/i18n/id.json b/public/app/main/apps/contactmanager/i18n/id.json index d35e0ad..1d2b4af 100644 --- a/public/app/main/apps/contactmanager/i18n/id.json +++ b/public/app/main/apps/contactmanager/i18n/id.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice Fiscale / PPN", "RECALLME": "Ingat Saya", "ACTIONTYPE": "Tipe aksi", - "CLICKTOACTION": "Klik untuk bertindak" + "CLICKTOACTION": "Klik untuk bertindak", + "ADDITIONAL_PHONES": "Telepon tambahan", + "UPDATE_EXISTING_CONTACTS": "Perbarui kontak yang ada" } } diff --git a/public/app/main/apps/contactmanager/i18n/it.json b/public/app/main/apps/contactmanager/i18n/it.json index b442989..b0b7866 100644 --- a/public/app/main/apps/contactmanager/i18n/it.json +++ b/public/app/main/apps/contactmanager/i18n/it.json @@ -189,6 +189,8 @@ "INTERACTION_OPEN_ERROR": "Impossibile aprire l'interazione", "ACCOUNTS_GET_ERROR": "Impossibile recuperare gli account {{channel}}", "JSCRIPTY_GET_ERROR": "Impossibile recuperare i progetti Jscripty" - } + }, + "ADDITIONAL_PHONES": "Telefoni aggiuntivi", + "UPDATE_EXISTING_CONTACTS": "Aggiorna i contatti esistenti" } } diff --git a/public/app/main/apps/contactmanager/i18n/ja.json b/public/app/main/apps/contactmanager/i18n/ja.json index c30555d..ddd1ccd 100644 --- a/public/app/main/apps/contactmanager/i18n/ja.json +++ b/public/app/main/apps/contactmanager/i18n/ja.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice Fiscale / VAT", "RECALLME": "私を思い出して", "ACTIONTYPE": "アクションタイプ", - "CLICKTOACTION": "クリックしてアクション" + "CLICKTOACTION": "クリックしてアクション", + "ADDITIONAL_PHONES": "追加の電話", + "UPDATE_EXISTING_CONTACTS": "既存の連絡先を更新する" } } diff --git a/public/app/main/apps/contactmanager/i18n/ko.json b/public/app/main/apps/contactmanager/i18n/ko.json index 9b72f64..253584f 100644 --- a/public/app/main/apps/contactmanager/i18n/ko.json +++ b/public/app/main/apps/contactmanager/i18n/ko.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice Fiscale / VAT", "RECALLME": "저를 기억하십시오", "ACTIONTYPE": "액션 유형", - "CLICKTOACTION": "클릭하여 실행" + "CLICKTOACTION": "클릭하여 실행", + "ADDITIONAL_PHONES": "추가 전화", + "UPDATE_EXISTING_CONTACTS": "기존 연락처 업데이트" } } diff --git a/public/app/main/apps/contactmanager/i18n/lt.json b/public/app/main/apps/contactmanager/i18n/lt.json index a060847..f437632 100644 --- a/public/app/main/apps/contactmanager/i18n/lt.json +++ b/public/app/main/apps/contactmanager/i18n/lt.json @@ -183,6 +183,8 @@ "CREATE": "Sukurti", "RECALLME": "Prisimink mane", "ACTIONTYPE": "Veiksmo tipas", - "CLICKTOACTION": "Spustelėkite, kad veiktumėte" + "CLICKTOACTION": "Spustelėkite, kad veiktumėte", + "ADDITIONAL_PHONES": "Papildomi telefonai", + "UPDATE_EXISTING_CONTACTS": "Atnaujinkite esamus kontaktus" } } diff --git a/public/app/main/apps/contactmanager/i18n/lv.json b/public/app/main/apps/contactmanager/i18n/lv.json index b2c99a9..e0fb700 100644 --- a/public/app/main/apps/contactmanager/i18n/lv.json +++ b/public/app/main/apps/contactmanager/i18n/lv.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice Fiscale / PVN", "RECALLME": "Atsaukt mani", "ACTIONTYPE": "Darbības veids", - "CLICKTOACTION": "Noklikšķiniet uz darbības" + "CLICKTOACTION": "Noklikšķiniet uz darbības", + "ADDITIONAL_PHONES": "Papildu tālruņi", + "UPDATE_EXISTING_CONTACTS": "Atjauniniet esošās kontaktpersonas" } } diff --git a/public/app/main/apps/contactmanager/i18n/nl.json b/public/app/main/apps/contactmanager/i18n/nl.json index 9e54508..ddc5fd1 100644 --- a/public/app/main/apps/contactmanager/i18n/nl.json +++ b/public/app/main/apps/contactmanager/i18n/nl.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice Fiscale / BTW", "RECALLME": "Herinner me", "ACTIONTYPE": "Actie type", - "CLICKTOACTION": "Klik voor actie" + "CLICKTOACTION": "Klik voor actie", + "ADDITIONAL_PHONES": "Extra telefoons", + "UPDATE_EXISTING_CONTACTS": "Bestaande contacten bijwerken" } } diff --git a/public/app/main/apps/contactmanager/i18n/no.json b/public/app/main/apps/contactmanager/i18n/no.json index f874119..f9f3053 100644 --- a/public/app/main/apps/contactmanager/i18n/no.json +++ b/public/app/main/apps/contactmanager/i18n/no.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice fiskal / mva", "RECALLME": "Husk meg", "ACTIONTYPE": "Handlingstype", - "CLICKTOACTION": "Klikk for å handle" + "CLICKTOACTION": "Klikk for å handle", + "ADDITIONAL_PHONES": "Ekstra telefoner", + "UPDATE_EXISTING_CONTACTS": "Oppdater eksisterende kontakter" } } diff --git a/public/app/main/apps/contactmanager/i18n/pl.json b/public/app/main/apps/contactmanager/i18n/pl.json index 9255631..c5060d5 100644 --- a/public/app/main/apps/contactmanager/i18n/pl.json +++ b/public/app/main/apps/contactmanager/i18n/pl.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Kodek Fiscale / VAT", "RECALLME": "Przypomnij mi", "ACTIONTYPE": "Rodzaj działania", - "CLICKTOACTION": "Kliknij, aby wykonać czynność" + "CLICKTOACTION": "Kliknij, aby wykonać czynność", + "ADDITIONAL_PHONES": "Dodatkowe telefony", + "UPDATE_EXISTING_CONTACTS": "Zaktualizuj istniejące kontakty" } } diff --git a/public/app/main/apps/contactmanager/i18n/pt-BR.json b/public/app/main/apps/contactmanager/i18n/pt-BR.json index 8aa2d26..8206079 100644 --- a/public/app/main/apps/contactmanager/i18n/pt-BR.json +++ b/public/app/main/apps/contactmanager/i18n/pt-BR.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice Fiscale / IVA", "RECALLME": "Lembre-me", "ACTIONTYPE": "Tipo de acão", - "CLICKTOACTION": "Clique para ação" + "CLICKTOACTION": "Clique para ação", + "ADDITIONAL_PHONES": "Telefones adicionais", + "UPDATE_EXISTING_CONTACTS": "Atualizar contatos existentes" } } diff --git a/public/app/main/apps/contactmanager/i18n/pt-PT.json b/public/app/main/apps/contactmanager/i18n/pt-PT.json index ca0c173..042dae1 100644 --- a/public/app/main/apps/contactmanager/i18n/pt-PT.json +++ b/public/app/main/apps/contactmanager/i18n/pt-PT.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice Fiscale / IVA", "RECALLME": "Lembre-me", "ACTIONTYPE": "Tipo de acão", - "CLICKTOACTION": "Clique para ação" + "CLICKTOACTION": "Clique para ação", + "ADDITIONAL_PHONES": "Telefones adicionais", + "UPDATE_EXISTING_CONTACTS": "Atualizar contatos existentes" } } diff --git a/public/app/main/apps/contactmanager/i18n/ru.json b/public/app/main/apps/contactmanager/i18n/ru.json index 2fed7ee..d0485dc 100644 --- a/public/app/main/apps/contactmanager/i18n/ru.json +++ b/public/app/main/apps/contactmanager/i18n/ru.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice Fiscale / НДС", "RECALLME": "Вспомни меня", "ACTIONTYPE": "Тип действия", - "CLICKTOACTION": "Нажмите, чтобы действовать" + "CLICKTOACTION": "Нажмите, чтобы действовать", + "ADDITIONAL_PHONES": "Дополнительные телефоны", + "UPDATE_EXISTING_CONTACTS": "Обновить существующие контакты" } } diff --git a/public/app/main/apps/contactmanager/i18n/sv.json b/public/app/main/apps/contactmanager/i18n/sv.json index face0d9..aa8ff45 100644 --- a/public/app/main/apps/contactmanager/i18n/sv.json +++ b/public/app/main/apps/contactmanager/i18n/sv.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice Fiscale / VAT", "RECALLME": "Kom ihåg mig", "ACTIONTYPE": "Åtgärdstyp", - "CLICKTOACTION": "Klicka för att åtgärda" + "CLICKTOACTION": "Klicka för att åtgärda", + "ADDITIONAL_PHONES": "Ytterligare telefoner", + "UPDATE_EXISTING_CONTACTS": "Uppdatera befintliga kontakter" } } diff --git a/public/app/main/apps/contactmanager/i18n/tr.json b/public/app/main/apps/contactmanager/i18n/tr.json index df04c8d..3c4f844 100644 --- a/public/app/main/apps/contactmanager/i18n/tr.json +++ b/public/app/main/apps/contactmanager/i18n/tr.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice Fiscale / KDV", "RECALLME": "Beni hatırla", "ACTIONTYPE": "Eylem Türü", - "CLICKTOACTION": "İşlem yapmak için tıklayın" + "CLICKTOACTION": "İşlem yapmak için tıklayın", + "ADDITIONAL_PHONES": "Ek telefonlar", + "UPDATE_EXISTING_CONTACTS": "Mevcut kişileri güncelle" } } diff --git a/public/app/main/apps/contactmanager/i18n/zh-CN.json b/public/app/main/apps/contactmanager/i18n/zh-CN.json index a9645c8..e069ff2 100644 --- a/public/app/main/apps/contactmanager/i18n/zh-CN.json +++ b/public/app/main/apps/contactmanager/i18n/zh-CN.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice Fiscale /增值税", "RECALLME": "召回我", "ACTIONTYPE": "动作类型", - "CLICKTOACTION": "点击操作" + "CLICKTOACTION": "点击操作", + "ADDITIONAL_PHONES": "附加电话", + "UPDATE_EXISTING_CONTACTS": "更新现有联系人" } } diff --git a/public/app/main/apps/contactmanager/i18n/zh-TW.json b/public/app/main/apps/contactmanager/i18n/zh-TW.json index fe0823a..17c0e8d 100644 --- a/public/app/main/apps/contactmanager/i18n/zh-TW.json +++ b/public/app/main/apps/contactmanager/i18n/zh-TW.json @@ -183,6 +183,8 @@ "VATNUMBER_CF": "Codice Fiscale /增值稅", "RECALLME": "召回我", "ACTIONTYPE": "動作類型", - "CLICKTOACTION": "點擊操作" + "CLICKTOACTION": "點擊操作", + "ADDITIONAL_PHONES": "附加電話", + "UPDATE_EXISTING_CONTACTS": "更新現有聯繫人" } } diff --git a/public/app/main/apps/motiondialer/i18n/ar.json b/public/app/main/apps/motiondialer/i18n/ar.json index 842c0f9..23696ab 100644 --- a/public/app/main/apps/motiondialer/i18n/ar.json +++ b/public/app/main/apps/motiondialer/i18n/ar.json @@ -104,7 +104,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "مكالمة add.phone بعد دقيقة. يجب أن تكون أكبر من أو تساوي", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "حقل الزامي" }, "HELP": { "ACTIVE": "نشيط", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "تسجيل الشاشة المتاحة", "TOOLTIP_SCREENRECORDING_ON": "تسجيل الشاشة في التقدم", "SECOND_LEVEL_DISPOSITION": "ترتيب المستوى الثاني", - "THIRD_LEVEL_DISPOSITION": "الترتيب الثالث" + "THIRD_LEVEL_DISPOSITION": "الترتيب الثالث", + "ADDITIONALPHONES": "هواتف إضافية", + "CALLADDITIONALPHONEAFTERMIN": "الاتصال بهاتف إضافي بعد [دقيقة]" } } diff --git a/public/app/main/apps/motiondialer/i18n/cs.json b/public/app/main/apps/motiondialer/i18n/cs.json index a56166e..07b4b7e 100644 --- a/public/app/main/apps/motiondialer/i18n/cs.json +++ b/public/app/main/apps/motiondialer/i18n/cs.json @@ -239,7 +239,9 @@ "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Hodnota musí být menší nebo rovna", "NOSUCHNUMBERMAXRETRY_REQUIRED": "Povinné pole", "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Hodnota musí být menší nebo rovna", - "NOSUCHNUMBERRETRYTIME_REQUIRED": "Povinné pole" + "NOSUCHNUMBERRETRYTIME_REQUIRED": "Povinné pole", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Volejte add.phone po min. by měla být větší nebo rovna", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Povinné pole" }, "GENERAL": "General", "AGENTTIMEOUT": "Agent Timeout", @@ -686,6 +688,8 @@ "NOSUCHNUMBERMAXRETRY": "Max", "NOSUCHNUMBERRETRYTIME": "Čas opakování [min]", "SECOND_LEVEL_DISPOSITION": "Dispozice druhé úrovně", - "THIRD_LEVEL_DISPOSITION": "Dispozice třetí úrovně" + "THIRD_LEVEL_DISPOSITION": "Dispozice třetí úrovně", + "ADDITIONALPHONES": "Další telefony", + "CALLADDITIONALPHONEAFTERMIN": "Zavolat další telefon po [min]" } } diff --git a/public/app/main/apps/motiondialer/i18n/da.json b/public/app/main/apps/motiondialer/i18n/da.json index 5db234c..3bcb80d 100644 --- a/public/app/main/apps/motiondialer/i18n/da.json +++ b/public/app/main/apps/motiondialer/i18n/da.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Opkald tilføj. Telefon efter min. skal være større end eller lig med", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Obligatorisk felt" }, "GENERAL": "Generel", "AGENTTIMEOUT": "Agent Timeout", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "Screen optagelse tilgængelig", "TOOLTIP_SCREENRECORDING_ON": "Skærmoptagelse pågår", "SECOND_LEVEL_DISPOSITION": "Andet niveau disposition", - "THIRD_LEVEL_DISPOSITION": "Tredje niveau disposition" + "THIRD_LEVEL_DISPOSITION": "Tredje niveau disposition", + "ADDITIONALPHONES": "Yderligere telefoner", + "CALLADDITIONALPHONEAFTERMIN": "Ring til yderligere telefon efter [min]" } } diff --git a/public/app/main/apps/motiondialer/i18n/de.json b/public/app/main/apps/motiondialer/i18n/de.json index b439dd0..cb7987a 100644 --- a/public/app/main/apps/motiondialer/i18n/de.json +++ b/public/app/main/apps/motiondialer/i18n/de.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Rufen Sie nach min. sollte größer oder gleich sein", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Pflichtfeld" }, "GENERAL": "Allgemein", "AGENTTIMEOUT": "Agent Timeout", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar", "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft", "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene", - "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene" + "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene", + "ADDITIONALPHONES": "Zusätzliche Telefone", + "CALLADDITIONALPHONEAFTERMIN": "Zusätzliches Telefon anrufen nach [min]" } } diff --git a/public/app/main/apps/motiondialer/i18n/en.json b/public/app/main/apps/motiondialer/i18n/en.json index 3964882..4a87798 100644 --- a/public/app/main/apps/motiondialer/i18n/en.json +++ b/public/app/main/apps/motiondialer/i18n/en.json @@ -152,6 +152,22 @@ "NOANSWER": "No Answer", "NOANSWERMAXRETRY": "Max Retries", "NOANSWERRETRYTIME": "Retry Time [min]", + "NOSUCHNUMBER": "No such number", + "NOSUCHNUMBERMAXRETRY": "Max Retries", + "NOSUCHNUMBERRETRYTIME": "Retry Time [min]", + "DROP": "Drop", + "DROPMAXRETRY": "Max Retries", + "DROPRETRYTIME": "Retry Time [min]", + "ABANDONEDMAXRETRY": "Max Retries", + "ABANDONEDRETRYTIME": "Retry Time [min]", + "MACHINE": "Machine", + "MACHINEMAXRETRY": "Max Retries", + "MACHINERETRYTIME": "Retry Time [min]", + "AGENTREJECT": "Agent Reject", + "AGENTREJECTMAXRETRY": "Max Retries", + "AGENTREJECTRETRYTIME": "Retry Time [min]", + "CALLADDITIONALPHONEAFTERMIN": "Call additional phone after [min]", + "ADDITIONALPHONES": "Additional phones", "QUEUE_PARAMS": "Queue Parameters", "ORIGINATED": "Originated", "MESSAGE": "Message", @@ -275,7 +291,9 @@ "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to", "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field", "CALLYSQUAREPROJECT_REQUIRED": "Mandatory field", - "TRUNK_REQUIRED": "Mandatory field" + "TRUNK_REQUIRED": "Mandatory field", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Mandatory field", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Call add.phone after min. should be greater than or equal to" }, "GENERAL": "General", "AGENTTIMEOUT": "Agent Timeout", @@ -369,8 +387,6 @@ "BUSYRETRYTIME": "Time in minutes before trying to call again a failed contact due to busy", "NOANSWERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no answer", "NOANSWERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no answer", - "GLOBALINTERVAL": "Global time interval during which the dialer is allowed to call contacts. We decline responsibility: pay attention when you modify this field, because you may fail to comply with the national Autodialer Laws and Regulations", - "NAME": "Only numbers, letters and specific characters (._) are supported", "NOSUCHNUMBERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no such number", "NOSUCHNUMBERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no such number", "DROPMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for drop", @@ -381,6 +397,9 @@ "MACHINERETRYTIME": "Time in minutes before trying to call again a failed contact due to machine", "AGENTREJECTMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for agent reject", "AGENTREJECTRETRYTIME": "Time in minutes before trying to call again a failed contact due to agent reject", + "CALLADDITIONALPHONEAFTERMIN": "", + "GLOBALINTERVAL": "Global time interval during which the dialer is allowed to call contacts. We decline responsibility: pay attention when you modify this field, because you may fail to comply with the national Autodialer Laws and Regulations", + "NAME": "Only numbers, letters and specific characters (._) are supported", "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition" }, "MUSICONHOLD": "Music On Hold", diff --git a/public/app/main/apps/motiondialer/i18n/es.json b/public/app/main/apps/motiondialer/i18n/es.json index c2b343a..845f786 100644 --- a/public/app/main/apps/motiondialer/i18n/es.json +++ b/public/app/main/apps/motiondialer/i18n/es.json @@ -203,7 +203,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Llamar al teléfono adicional después de min. debe ser mayor o igual a", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Campo obligatorio" }, "ABANDONED": "Abandonado", "ABANDONEDCALLS": "Llamadas de cola abandonadas", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "Grabación de pantalla disponible", "TOOLTIP_SCREENRECORDING_ON": "Grabación de pantalla en progreso", "SECOND_LEVEL_DISPOSITION": "Tipficación de segundo nivel", - "THIRD_LEVEL_DISPOSITION": "Tipificación de tercer nivel" + "THIRD_LEVEL_DISPOSITION": "Tipificación de tercer nivel", + "ADDITIONALPHONES": "Teléfonos adicionales", + "CALLADDITIONALPHONEAFTERMIN": "Llamar a otro teléfono después de [min]" } } diff --git a/public/app/main/apps/motiondialer/i18n/et.json b/public/app/main/apps/motiondialer/i18n/et.json index 40e5a27..9188853 100644 --- a/public/app/main/apps/motiondialer/i18n/et.json +++ b/public/app/main/apps/motiondialer/i18n/et.json @@ -239,7 +239,9 @@ "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne", "NOSUCHNUMBERMAXRETRY_REQUIRED": "Kohustuslik väli", "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne", - "NOSUCHNUMBERRETRYTIME_REQUIRED": "Kohustuslik väli" + "NOSUCHNUMBERRETRYTIME_REQUIRED": "Kohustuslik väli", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Helista lisa.telefon pärast min. peaks olema suurem või võrdne", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Kohustuslik väli" }, "GENERAL": "General", "AGENTTIMEOUT": "Agent Timeout", @@ -686,6 +688,8 @@ "NOSUCHNUMBERMAXRETRY": "Max proovib uuesti", "NOSUCHNUMBERRETRYTIME": "Uuesti proovimise aeg [min]", "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus", - "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus" + "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus", + "ADDITIONALPHONES": "Täiendavad telefonid", + "CALLADDITIONALPHONEAFTERMIN": "Helistage täiendavale telefonile pärast [min]" } } diff --git a/public/app/main/apps/motiondialer/i18n/fa.json b/public/app/main/apps/motiondialer/i18n/fa.json index 54399c1..de92080 100644 --- a/public/app/main/apps/motiondialer/i18n/fa.json +++ b/public/app/main/apps/motiondialer/i18n/fa.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "بعد از دقیقه با add.phone تماس بگیرید باید بزرگتر یا مساوی باشد", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "زمینه اجباری" }, "GENERAL": "سردار", "AGENTTIMEOUT": "عامل زمان مجاز", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "ضبط صفحه در دسترس است", "TOOLTIP_SCREENRECORDING_ON": "ضبط صفحه در حال انجام است", "SECOND_LEVEL_DISPOSITION": "دفع سطح دوم", - "THIRD_LEVEL_DISPOSITION": "دفع سطح سوم" + "THIRD_LEVEL_DISPOSITION": "دفع سطح سوم", + "ADDITIONALPHONES": "تلفن های اضافی", + "CALLADDITIONALPHONEAFTERMIN": "بعد از [دقیقه] با تلفن اضافی تماس بگیرید" } } diff --git a/public/app/main/apps/motiondialer/i18n/fi.json b/public/app/main/apps/motiondialer/i18n/fi.json index b9ca0df..2e9bcdb 100644 --- a/public/app/main/apps/motiondialer/i18n/fi.json +++ b/public/app/main/apps/motiondialer/i18n/fi.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Soita lisäpuhelimeen min. pitäisi olla suurempi tai yhtä suuri kuin", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Pakollinen kenttä" }, "GENERAL": "Yleistä", "AGENTTIMEOUT": "Agentti aikakatkaisu", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "Näytön tallennus saatavilla", "TOOLTIP_SCREENRECORDING_ON": "Näytön nauhoitus käynnissä", "SECOND_LEVEL_DISPOSITION": "Toisen tason sijoitus", - "THIRD_LEVEL_DISPOSITION": "Kolmannen tason sijoitus" + "THIRD_LEVEL_DISPOSITION": "Kolmannen tason sijoitus", + "ADDITIONALPHONES": "Muut puhelimet", + "CALLADDITIONALPHONEAFTERMIN": "Soita lisäpuhelimeen [min] jälkeen" } } diff --git a/public/app/main/apps/motiondialer/i18n/fr.json b/public/app/main/apps/motiondialer/i18n/fr.json index 154e624..a881f10 100644 --- a/public/app/main/apps/motiondialer/i18n/fr.json +++ b/public/app/main/apps/motiondialer/i18n/fr.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Appelez add.phone après min. doit être supérieur ou égal à", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Champ obligatoire" }, "GENERAL": "Général", "AGENTTIMEOUT": "Délai d'agent", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "Enregistrement d'écran disponible", "TOOLTIP_SCREENRECORDING_ON": "Enregistrement d'écran en cours", "SECOND_LEVEL_DISPOSITION": "Disposition de deuxième niveau", - "THIRD_LEVEL_DISPOSITION": "Disposition de troisième niveau" + "THIRD_LEVEL_DISPOSITION": "Disposition de troisième niveau", + "ADDITIONALPHONES": "Téléphones supplémentaires", + "CALLADDITIONALPHONEAFTERMIN": "Appeler un autre téléphone après [min]" } } diff --git a/public/app/main/apps/motiondialer/i18n/he.json b/public/app/main/apps/motiondialer/i18n/he.json index b21d1ba..ddf6881 100644 --- a/public/app/main/apps/motiondialer/i18n/he.json +++ b/public/app/main/apps/motiondialer/i18n/he.json @@ -239,7 +239,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "התקשרו add.phone לאחר דקות. צריך להיות גדול או שווה ל", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "שדה חובה" }, "GENERAL": "כללי", "AGENTTIMEOUT": "סוף זמן המתנה לנציג", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "הקלטת מסך זמינה", "TOOLTIP_SCREENRECORDING_ON": "הקלטת מסך מתבצעת", "SECOND_LEVEL_DISPOSITION": "נטייה בדרגה שנייה", - "THIRD_LEVEL_DISPOSITION": "נטייה ברמה השלישית" + "THIRD_LEVEL_DISPOSITION": "נטייה ברמה השלישית", + "ADDITIONALPHONES": "טלפונים נוספים", + "CALLADDITIONALPHONEAFTERMIN": "התקשר לטלפון נוסף לאחר [דקה]" } } diff --git a/public/app/main/apps/motiondialer/i18n/hi.json b/public/app/main/apps/motiondialer/i18n/hi.json index 644cf08..433099d 100644 --- a/public/app/main/apps/motiondialer/i18n/hi.json +++ b/public/app/main/apps/motiondialer/i18n/hi.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "मिनट के बाद add.phone पर कॉल करें। से बड़ा या बराबर होना चाहिए", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "आवश्यक स्थान" }, "GENERAL": "सामान्य", "AGENTTIMEOUT": "एजेंट समयबाह्य", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "स्क्रीन रिकॉर्डिंग उपलब्ध है", "TOOLTIP_SCREENRECORDING_ON": "स्क्रीन रिकॉर्डिंग प्रगति पर है", "SECOND_LEVEL_DISPOSITION": "दूसरा स्तर विवाद", - "THIRD_LEVEL_DISPOSITION": "तीसरे स्तर का विवाद" + "THIRD_LEVEL_DISPOSITION": "तीसरे स्तर का विवाद", + "ADDITIONALPHONES": "अतिरिक्त फोन", + "CALLADDITIONALPHONEAFTERMIN": "[मिनट] के बाद अतिरिक्त फ़ोन पर कॉल करें" } } diff --git a/public/app/main/apps/motiondialer/i18n/id.json b/public/app/main/apps/motiondialer/i18n/id.json index ea77151..8e63086 100644 --- a/public/app/main/apps/motiondialer/i18n/id.json +++ b/public/app/main/apps/motiondialer/i18n/id.json @@ -104,7 +104,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Hubungi add.phone setelah min. harus lebih besar dari atau sama dengan", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Bidang wajib" }, "HELP": { "ACTIVE": "Aktif", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "Rekaman Layar tersedia", "TOOLTIP_SCREENRECORDING_ON": "Perekaman Layar sedang berlangsung", "SECOND_LEVEL_DISPOSITION": "Disposisi Tingkat Kedua", - "THIRD_LEVEL_DISPOSITION": "Disposisi Tingkat Ketiga" + "THIRD_LEVEL_DISPOSITION": "Disposisi Tingkat Ketiga", + "ADDITIONALPHONES": "Telepon tambahan", + "CALLADDITIONALPHONEAFTERMIN": "Hubungi telepon tambahan setelah [mnt]" } } diff --git a/public/app/main/apps/motiondialer/i18n/it.json b/public/app/main/apps/motiondialer/i18n/it.json index 903bd47..fc0835c 100644 --- a/public/app/main/apps/motiondialer/i18n/it.json +++ b/public/app/main/apps/motiondialer/i18n/it.json @@ -194,7 +194,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Chiama agg.telefono dopo min. dovrebbe essere maggiore o uguale a", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Campo obbligatorio" }, "GENERAL": "Generale", "TIMEOUT": "Timeout", @@ -687,6 +689,8 @@ "NOSUCHNUMBERMAXRETRY": "Numero massimo di tentativi", "NOSUCHNUMBERRETRYTIME": "Riprova [min]", "TOOLTIP_SCREENRECORDING_OFF": "Registrazione dello schermo disponibile", - "TOOLTIP_SCREENRECORDING_ON": "Registrazione dello schermo in corso" + "TOOLTIP_SCREENRECORDING_ON": "Registrazione dello schermo in corso", + "ADDITIONALPHONES": "Telefoni aggiuntivi", + "CALLADDITIONALPHONEAFTERMIN": "Chiama telefono aggiuntivo dopo [min]" } } diff --git a/public/app/main/apps/motiondialer/i18n/ja.json b/public/app/main/apps/motiondialer/i18n/ja.json index 78e856c..07f76a6 100644 --- a/public/app/main/apps/motiondialer/i18n/ja.json +++ b/public/app/main/apps/motiondialer/i18n/ja.json @@ -101,7 +101,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "分後にadd.phoneを呼び出します。以上である必要があります", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "必須フィールド" }, "HELP": { "ACTIVE": "アクティブ", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "利用可能なスクリーン録画", "TOOLTIP_SCREENRECORDING_ON": "スクリーン録画中", "SECOND_LEVEL_DISPOSITION": "第2レベルの気質", - "THIRD_LEVEL_DISPOSITION": "第3レベルの気質" + "THIRD_LEVEL_DISPOSITION": "第3レベルの気質", + "ADDITIONALPHONES": "追加の電話", + "CALLADDITIONALPHONEAFTERMIN": "[分]後に追加の電話をかける" } } diff --git a/public/app/main/apps/motiondialer/i18n/ko.json b/public/app/main/apps/motiondialer/i18n/ko.json index 5974812..b799a07 100644 --- a/public/app/main/apps/motiondialer/i18n/ko.json +++ b/public/app/main/apps/motiondialer/i18n/ko.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다.", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다.", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다.", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다." + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다.", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "분 후에 add.phone에 전화를 겁니다. 보다 크거나 같아야 합니다.", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "필수 필드" }, "GENERAL": "일반", "AGENTTIMEOUT": "상담원 시간 초과", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "스크린 녹화 가능", "TOOLTIP_SCREENRECORDING_ON": "화면 녹화 중", "SECOND_LEVEL_DISPOSITION": "두 번째 수준 처리", - "THIRD_LEVEL_DISPOSITION": "3 단계 처리" + "THIRD_LEVEL_DISPOSITION": "3 단계 처리", + "ADDITIONALPHONES": "추가 전화", + "CALLADDITIONALPHONEAFTERMIN": "[min] 후 추가 전화 걸기" } } diff --git a/public/app/main/apps/motiondialer/i18n/lt.json b/public/app/main/apps/motiondialer/i18n/lt.json index f201dd6..cd32d1c 100644 --- a/public/app/main/apps/motiondialer/i18n/lt.json +++ b/public/app/main/apps/motiondialer/i18n/lt.json @@ -259,7 +259,9 @@ "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vertė turi būti mažesnė arba lygi", "NOSUCHNUMBERMAXRETRY_REQUIRED": "Privalomas laukas", "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vertė turi būti mažesnė arba lygi", - "NOSUCHNUMBERRETRYTIME_REQUIRED": "Privalomas laukas" + "NOSUCHNUMBERRETRYTIME_REQUIRED": "Privalomas laukas", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Skambinti add.phone po min. turėtų būti didesnis arba lygus", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Privalomas laukas" }, "GENERAL": "Bendras", "AGENTTIMEOUT": "Agento laikas", @@ -686,6 +688,8 @@ "NOSUCHNUMBERMAXRETRY": "Maks. bandymai iš naujo", "NOSUCHNUMBERRETRYTIME": "Pakartojimų laikas [min.]", "SECOND_LEVEL_DISPOSITION": "Antro lygio disponavimas", - "THIRD_LEVEL_DISPOSITION": "Trečiojo lygio disponavimas" + "THIRD_LEVEL_DISPOSITION": "Trečiojo lygio disponavimas", + "ADDITIONALPHONES": "Papildomi telefonai", + "CALLADDITIONALPHONEAFTERMIN": "Paskambinkite papildomu telefonu po [min]" } } diff --git a/public/app/main/apps/motiondialer/i18n/lv.json b/public/app/main/apps/motiondialer/i18n/lv.json index d7e27a9..1fc6b6b 100644 --- a/public/app/main/apps/motiondialer/i18n/lv.json +++ b/public/app/main/apps/motiondialer/i18n/lv.json @@ -104,7 +104,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zvans add.phone pēc min. jābūt lielākam vai vienādam ar", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Obligāts lauks" }, "HELP": { "TIMEOUT": "Sekunžu skaits, lai piezvanītu aģentam rindā", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "Ekrāna ieraksts ir pieejams", "TOOLTIP_SCREENRECORDING_ON": "Notiek ekrāna ierakstīšana", "SECOND_LEVEL_DISPOSITION": "Otrā līmeņa izvietojums", - "THIRD_LEVEL_DISPOSITION": "Trešā līmeņa izvietojums" + "THIRD_LEVEL_DISPOSITION": "Trešā līmeņa izvietojums", + "ADDITIONALPHONES": "Papildu tālruņi", + "CALLADDITIONALPHONEAFTERMIN": "Zvaniet uz papildu tālruni pēc [min]" } } diff --git a/public/app/main/apps/motiondialer/i18n/nl.json b/public/app/main/apps/motiondialer/i18n/nl.json index 8183a69..5c57e52 100644 --- a/public/app/main/apps/motiondialer/i18n/nl.json +++ b/public/app/main/apps/motiondialer/i18n/nl.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Bel add.phone na min. moet groter zijn dan of gelijk zijn aan", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Verplicht veld" }, "GENERAL": "Algemeen", "AGENTTIMEOUT": "Time-out agent", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "Schermopname beschikbaar", "TOOLTIP_SCREENRECORDING_ON": "Schermopname bezig", "SECOND_LEVEL_DISPOSITION": "Tweede niveau dispositie", - "THIRD_LEVEL_DISPOSITION": "Dispositie op het derde niveau" + "THIRD_LEVEL_DISPOSITION": "Dispositie op het derde niveau", + "ADDITIONALPHONES": "Extra telefoons", + "CALLADDITIONALPHONEAFTERMIN": "Extra telefoon bellen na [min]" } } diff --git a/public/app/main/apps/motiondialer/i18n/no.json b/public/app/main/apps/motiondialer/i18n/no.json index 690a6e1..53465e3 100644 --- a/public/app/main/apps/motiondialer/i18n/no.json +++ b/public/app/main/apps/motiondialer/i18n/no.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ring tilleggstelefon etter min. skal være større enn eller lik", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Obligatoriske felt" }, "GENERAL": "Generelt", "AGENTTIMEOUT": "Agent tidsavbrudd", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "Skjermopptak tilgjengelig", "TOOLTIP_SCREENRECORDING_ON": "Skjermopptak pågår", "SECOND_LEVEL_DISPOSITION": "Andre nivå disposisjon", - "THIRD_LEVEL_DISPOSITION": "Tredje nivå disposisjon" + "THIRD_LEVEL_DISPOSITION": "Tredje nivå disposisjon", + "ADDITIONALPHONES": "Ekstra telefoner", + "CALLADDITIONALPHONEAFTERMIN": "Ring ytterligere telefon etter [min]" } } diff --git a/public/app/main/apps/motiondialer/i18n/pl.json b/public/app/main/apps/motiondialer/i18n/pl.json index 48442d7..69804e9 100644 --- a/public/app/main/apps/motiondialer/i18n/pl.json +++ b/public/app/main/apps/motiondialer/i18n/pl.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zadzwoń na ad.telefon po min. powinna być większa lub równa", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Pole obowiązkowe" }, "GENERAL": "Ogólne", "AGENTTIMEOUT": "Agent Timeout", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "Dostępne nagrywanie ekranu", "TOOLTIP_SCREENRECORDING_ON": "Trwa nagrywanie ekranu", "SECOND_LEVEL_DISPOSITION": "Dyspozycja drugiego poziomu", - "THIRD_LEVEL_DISPOSITION": "Dyspozycja trzeciego poziomu" + "THIRD_LEVEL_DISPOSITION": "Dyspozycja trzeciego poziomu", + "ADDITIONALPHONES": "Dodatkowe telefony", + "CALLADDITIONALPHONEAFTERMIN": "Zadzwoń na dodatkowy telefon po [min]" } } diff --git a/public/app/main/apps/motiondialer/i18n/pt-BR.json b/public/app/main/apps/motiondialer/i18n/pt-BR.json index 838c419..e3b99e7 100644 --- a/public/app/main/apps/motiondialer/i18n/pt-BR.json +++ b/public/app/main/apps/motiondialer/i18n/pt-BR.json @@ -239,7 +239,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ligue para add.phone após min. deve ser maior ou igual a", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Campo obrigatório" }, "GENERAL": "Geral", "AGENTTIMEOUT": "Tempo limite do agente", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível", "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento", "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível", - "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível" + "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível", + "ADDITIONALPHONES": "Telefones adicionais", + "CALLADDITIONALPHONEAFTERMIN": "Ligue para outro telefone após [min]" } } diff --git a/public/app/main/apps/motiondialer/i18n/pt-PT.json b/public/app/main/apps/motiondialer/i18n/pt-PT.json index bda3d28..03e0ddd 100644 --- a/public/app/main/apps/motiondialer/i18n/pt-PT.json +++ b/public/app/main/apps/motiondialer/i18n/pt-PT.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ligue para add.phone após min. deve ser maior ou igual a", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Campo obrigatório" }, "GENERAL": "Geral", "AGENTTIMEOUT": "Tempo Limite do Agente", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível", "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento", "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível", - "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível" + "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível", + "ADDITIONALPHONES": "Telefones adicionais", + "CALLADDITIONALPHONEAFTERMIN": "Ligue para outro telefone após [min]" } } diff --git a/public/app/main/apps/motiondialer/i18n/ru.json b/public/app/main/apps/motiondialer/i18n/ru.json index f3155bc..cc6e1fc 100644 --- a/public/app/main/apps/motiondialer/i18n/ru.json +++ b/public/app/main/apps/motiondialer/i18n/ru.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Звоните на доп. Телефон через мин. должно быть больше или равно", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Обязательное поле" }, "GENERAL": "Генеральной", "AGENTTIMEOUT": "Время ожидания оператора", @@ -686,6 +688,8 @@ "NOSUCHNUMBERMAXRETRY": "Максимальное количество попыток", "NOSUCHNUMBERRETRYTIME": "Время повтора [мин]", "SECOND_LEVEL_DISPOSITION": "Расположение второго уровня", - "THIRD_LEVEL_DISPOSITION": "Расположение третьего уровня" + "THIRD_LEVEL_DISPOSITION": "Расположение третьего уровня", + "ADDITIONALPHONES": "Дополнительные телефоны", + "CALLADDITIONALPHONEAFTERMIN": "Позвонить на дополнительный телефон через [мин]" } } diff --git a/public/app/main/apps/motiondialer/i18n/sv.json b/public/app/main/apps/motiondialer/i18n/sv.json index 3cd61cf..784199b 100644 --- a/public/app/main/apps/motiondialer/i18n/sv.json +++ b/public/app/main/apps/motiondialer/i18n/sv.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ring till. Telefon efter min. bör vara större än eller lika med", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Obligatoriskt fält" }, "GENERAL": "Allmänt", "AGENTTIMEOUT": "Tidsgräns för agent", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "Skärminspelning tillgänglig", "TOOLTIP_SCREENRECORDING_ON": "Skärminspelning pågår", "SECOND_LEVEL_DISPOSITION": "Andra nivån disposition", - "THIRD_LEVEL_DISPOSITION": "Tredje nivåens disposition" + "THIRD_LEVEL_DISPOSITION": "Tredje nivåens disposition", + "ADDITIONALPHONES": "Ytterligare telefoner", + "CALLADDITIONALPHONEAFTERMIN": "Ring ytterligare telefon efter [min]" } } diff --git a/public/app/main/apps/motiondialer/i18n/tr.json b/public/app/main/apps/motiondialer/i18n/tr.json index 830aa44..8142920 100644 --- a/public/app/main/apps/motiondialer/i18n/tr.json +++ b/public/app/main/apps/motiondialer/i18n/tr.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Dakikadan sonra add.phone'u arayın. daha büyük veya eşit olmalıdır", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Zorunlu alan" }, "GENERAL": "Genel", "AGENTTIMEOUT": "Ajan Zaman Aşımı", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "Ekran Kaydı mevcut", "TOOLTIP_SCREENRECORDING_ON": "Ekran Kaydı devam ediyor", "SECOND_LEVEL_DISPOSITION": "İkinci Düzey Tasarruf", - "THIRD_LEVEL_DISPOSITION": "Üçüncü Düzey Tasarruf" + "THIRD_LEVEL_DISPOSITION": "Üçüncü Düzey Tasarruf", + "ADDITIONALPHONES": "Ek telefonlar", + "CALLADDITIONALPHONEAFTERMIN": "[dk] sonra ek telefonu arayın" } } diff --git a/public/app/main/apps/motiondialer/i18n/zh-CN.json b/public/app/main/apps/motiondialer/i18n/zh-CN.json index 70f477b..157d69a 100644 --- a/public/app/main/apps/motiondialer/i18n/zh-CN.json +++ b/public/app/main/apps/motiondialer/i18n/zh-CN.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "分钟后拨打 add.phone。应该大于或等于", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "必填项" }, "GENERAL": "总的", "AGENTTIMEOUT": "代理超时", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "屏幕录像可用", "TOOLTIP_SCREENRECORDING_ON": "屏幕录制正在进行中", "SECOND_LEVEL_DISPOSITION": "二级处置", - "THIRD_LEVEL_DISPOSITION": "第三级处置" + "THIRD_LEVEL_DISPOSITION": "第三级处置", + "ADDITIONALPHONES": "附加电话", + "CALLADDITIONALPHONEAFTERMIN": "[分钟] 后拨打其他电话" } } diff --git a/public/app/main/apps/motiondialer/i18n/zh-TW.json b/public/app/main/apps/motiondialer/i18n/zh-TW.json index cf9404c..84cfd11 100644 --- a/public/app/main/apps/motiondialer/i18n/zh-TW.json +++ b/public/app/main/apps/motiondialer/i18n/zh-TW.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "分鐘後撥打 add.phone。應該大於或等於", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "必填項" }, "GENERAL": "通用", "AGENTTIMEOUT": "值機人員等候逾時", @@ -687,6 +689,8 @@ "TOOLTIP_SCREENRECORDING_OFF": "屏幕錄像可用", "TOOLTIP_SCREENRECORDING_ON": "屏幕錄製正在進行中", "SECOND_LEVEL_DISPOSITION": "二級處置", - "THIRD_LEVEL_DISPOSITION": "第三級處置" + "THIRD_LEVEL_DISPOSITION": "第三級處置", + "ADDITIONALPHONES": "附加電話", + "CALLADDITIONALPHONEAFTERMIN": "[分鐘] 後撥打其他電話" } } diff --git a/public/app/main/apps/tools/i18n/ar.json b/public/app/main/apps/tools/i18n/ar.json index b5d2d5f..e6347f3 100644 --- a/public/app/main/apps/tools/i18n/ar.json +++ b/public/app/main/apps/tools/i18n/ar.json @@ -465,6 +465,11 @@ "LEVEL": "مستوى", "SECOND_LEVEL_DISPOSITION": "ترتيب المستوى الثاني", "SELECT_LEVEL": "حدد مستوى", - "TITLEFONTSIZE": "حجم عنوان الخط" + "TITLEFONTSIZE": "حجم عنوان الخط", + "ADD_CONTACTITEMTYPE": "يضيف", + "CONTACTITEMTYPE": "أنواع عناصر الاتصال", + "NEW_CONTACTITEMTYPE": "نوع عنصر اتصال جديد", + "ORDER_BY": "ترتيب حسب", + "RGBBACKGROUNDCOLOR": "لون الخلفية RGB" } } diff --git a/public/app/main/apps/tools/i18n/cs.json b/public/app/main/apps/tools/i18n/cs.json index b1b36ce..e082884 100644 --- a/public/app/main/apps/tools/i18n/cs.json +++ b/public/app/main/apps/tools/i18n/cs.json @@ -465,6 +465,11 @@ "LEVEL": "Úroveň", "SECOND_LEVEL_DISPOSITION": "Dispozice druhé úrovně", "SELECT_LEVEL": "Vyberte úroveň", - "TITLEFONTSIZE": "Velikost názvu písma" + "TITLEFONTSIZE": "Velikost názvu písma", + "ADD_CONTACTITEMTYPE": "Přidat", + "CONTACTITEMTYPE": "Kontaktujte typy položek", + "NEW_CONTACTITEMTYPE": "Nový typ položky kontaktu", + "ORDER_BY": "Seřadit podle", + "RGBBACKGROUNDCOLOR": "Barva pozadí RGB" } } diff --git a/public/app/main/apps/tools/i18n/da.json b/public/app/main/apps/tools/i18n/da.json index aae3bb1..631e339 100644 --- a/public/app/main/apps/tools/i18n/da.json +++ b/public/app/main/apps/tools/i18n/da.json @@ -465,6 +465,11 @@ "LEVEL": "Niveau", "SECOND_LEVEL_DISPOSITION": "Andet niveau disposition", "SELECT_LEVEL": "Vælg et niveau", - "TITLEFONTSIZE": "Skrifttitelstørrelse" + "TITLEFONTSIZE": "Skrifttitelstørrelse", + "ADD_CONTACTITEMTYPE": "Tilføje", + "CONTACTITEMTYPE": "Kontaktelementtyper", + "NEW_CONTACTITEMTYPE": "Ny type kontaktperson", + "ORDER_BY": "Bestil inden", + "RGBBACKGROUNDCOLOR": "RGB Baggrundsfarve" } } diff --git a/public/app/main/apps/tools/i18n/de.json b/public/app/main/apps/tools/i18n/de.json index 6207bf0..fe24062 100644 --- a/public/app/main/apps/tools/i18n/de.json +++ b/public/app/main/apps/tools/i18n/de.json @@ -465,6 +465,11 @@ "LEVEL": "Niveau", "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene", "SELECT_LEVEL": "Wählen Sie eine Ebene", - "TITLEFONTSIZE": "Schrifttitelgröße" + "TITLEFONTSIZE": "Schrifttitelgröße", + "ADD_CONTACTITEMTYPE": "Hinzufügen", + "CONTACTITEMTYPE": "Kontaktartikeltypen", + "NEW_CONTACTITEMTYPE": "Neuer Kontaktelementtyp", + "ORDER_BY": "Sortieren nach", + "RGBBACKGROUNDCOLOR": "RGB-Hintergrundfarbe" } } diff --git a/public/app/main/apps/tools/i18n/en.json b/public/app/main/apps/tools/i18n/en.json index bf0d36b..2789a44 100644 --- a/public/app/main/apps/tools/i18n/en.json +++ b/public/app/main/apps/tools/i18n/en.json @@ -26,6 +26,11 @@ "WAITING": "Waiting", "TALKING": "Talking", "ANSWERED": "Answered", + "CONTACTITEMTYPE": "Contact item types", + "ORDER_BY": "Order by", + "RGBBACKGROUNDCOLOR": "RGB Background color", + "NEW_CONTACTITEMTYPE": "New contact item type", + "ADD_CONTACTITEMTYPE": "Add", "UNMANAGED": "Unmanaged", "CUSTOMTYPE": "Custom [path]", "WEBREPORT": "Web Report", diff --git a/public/app/main/apps/tools/i18n/es.json b/public/app/main/apps/tools/i18n/es.json index 751cdf0..8723cdd 100644 --- a/public/app/main/apps/tools/i18n/es.json +++ b/public/app/main/apps/tools/i18n/es.json @@ -465,6 +465,11 @@ "LEVEL": "Nivel", "SECOND_LEVEL_DISPOSITION": "Tipificación de segundo nivel", "SELECT_LEVEL": "Seleccionar un nivel", - "TITLEFONTSIZE": "Tamaño del título de fuente" + "TITLEFONTSIZE": "Tamaño del título de fuente", + "ADD_CONTACTITEMTYPE": "Agregar", + "CONTACTITEMTYPE": "Tipos de elementos de contacto", + "NEW_CONTACTITEMTYPE": "Nuevo tipo de elemento de contacto", + "ORDER_BY": "Ordenar por", + "RGBBACKGROUNDCOLOR": "Color de fondo RGB" } } diff --git a/public/app/main/apps/tools/i18n/et.json b/public/app/main/apps/tools/i18n/et.json index a0feca2..485a460 100644 --- a/public/app/main/apps/tools/i18n/et.json +++ b/public/app/main/apps/tools/i18n/et.json @@ -465,6 +465,11 @@ "LEVEL": "Tase", "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus", "SELECT_LEVEL": "Valige tase", - "TITLEFONTSIZE": "Fondi pealkirja suurus" + "TITLEFONTSIZE": "Fondi pealkirja suurus", + "ADD_CONTACTITEMTYPE": "Lisama", + "CONTACTITEMTYPE": "Kontaktüksuste tüübid", + "NEW_CONTACTITEMTYPE": "Uus kontaktüksuse tüüp", + "ORDER_BY": "Telli", + "RGBBACKGROUNDCOLOR": "RGB taustavärv" } } diff --git a/public/app/main/apps/tools/i18n/fa.json b/public/app/main/apps/tools/i18n/fa.json index aeac236..578dada 100644 --- a/public/app/main/apps/tools/i18n/fa.json +++ b/public/app/main/apps/tools/i18n/fa.json @@ -465,6 +465,11 @@ "LEVEL": "مرحله", "SECOND_LEVEL_DISPOSITION": "دفع سطح دوم", "SELECT_LEVEL": "یک سطح را انتخاب کنید", - "TITLEFONTSIZE": "اندازه عنوان قلم" + "TITLEFONTSIZE": "اندازه عنوان قلم", + "ADD_CONTACTITEMTYPE": "اضافه کردن", + "CONTACTITEMTYPE": "تماس با انواع آیتم ها", + "NEW_CONTACTITEMTYPE": "نوع مورد مخاطب جدید", + "ORDER_BY": "سفارش توسط", + "RGBBACKGROUNDCOLOR": "رنگ پس زمینه RGB" } } diff --git a/public/app/main/apps/tools/i18n/fi.json b/public/app/main/apps/tools/i18n/fi.json index 5e64170..abd8a37 100644 --- a/public/app/main/apps/tools/i18n/fi.json +++ b/public/app/main/apps/tools/i18n/fi.json @@ -465,6 +465,11 @@ "LEVEL": "Taso", "SECOND_LEVEL_DISPOSITION": "Toisen tason sijoitus", "SELECT_LEVEL": "Valitse taso", - "TITLEFONTSIZE": "Kirjasimen otsikon koko" + "TITLEFONTSIZE": "Kirjasimen otsikon koko", + "ADD_CONTACTITEMTYPE": "Lisätä", + "CONTACTITEMTYPE": "Yhteystietojen tyypit", + "NEW_CONTACTITEMTYPE": "Uusi yhteyshenkilötyyppi", + "ORDER_BY": "Tilaa", + "RGBBACKGROUNDCOLOR": "RGB -taustaväri" } } diff --git a/public/app/main/apps/tools/i18n/fr.json b/public/app/main/apps/tools/i18n/fr.json index 9c210a8..368e973 100644 --- a/public/app/main/apps/tools/i18n/fr.json +++ b/public/app/main/apps/tools/i18n/fr.json @@ -465,6 +465,11 @@ "LEVEL": "Niveau", "SECOND_LEVEL_DISPOSITION": "Disposition de deuxième niveau", "SELECT_LEVEL": "Sélectionnez un niveau", - "TITLEFONTSIZE": "Taille du titre de la police" + "TITLEFONTSIZE": "Taille du titre de la police", + "ADD_CONTACTITEMTYPE": "Ajouter", + "CONTACTITEMTYPE": "Types d'articles de contact", + "NEW_CONTACTITEMTYPE": "Nouveau type d'élément de contact", + "ORDER_BY": "Commandé par", + "RGBBACKGROUNDCOLOR": "Couleur d'arrière-plan RVB" } } diff --git a/public/app/main/apps/tools/i18n/he.json b/public/app/main/apps/tools/i18n/he.json index 00697e4..9607b40 100644 --- a/public/app/main/apps/tools/i18n/he.json +++ b/public/app/main/apps/tools/i18n/he.json @@ -465,6 +465,11 @@ "LEVEL": "רָמָה", "SECOND_LEVEL_DISPOSITION": "נטייה בדרגה שנייה", "SELECT_LEVEL": "בחר רמה", - "TITLEFONTSIZE": "גודל כותרת הגופן" + "TITLEFONTSIZE": "גודל כותרת הגופן", + "ADD_CONTACTITEMTYPE": "לְהוֹסִיף", + "CONTACTITEMTYPE": "סוגי פריטי איש קשר", + "NEW_CONTACTITEMTYPE": "סוג פריט איש קשר חדש", + "ORDER_BY": "מיין לפי", + "RGBBACKGROUNDCOLOR": "צבע רקע RGB" } } diff --git a/public/app/main/apps/tools/i18n/hi.json b/public/app/main/apps/tools/i18n/hi.json index 7319cb7..ce486cc 100644 --- a/public/app/main/apps/tools/i18n/hi.json +++ b/public/app/main/apps/tools/i18n/hi.json @@ -465,6 +465,11 @@ "LEVEL": "स्तर", "SECOND_LEVEL_DISPOSITION": "दूसरा स्तर विवाद", "SELECT_LEVEL": "एक स्तर चुनें", - "TITLEFONTSIZE": "फ़ॉन्ट शीर्षक आकार" + "TITLEFONTSIZE": "फ़ॉन्ट शीर्षक आकार", + "ADD_CONTACTITEMTYPE": "जोड़ें", + "CONTACTITEMTYPE": "संपर्क आइटम प्रकार", + "NEW_CONTACTITEMTYPE": "नया संपर्क आइटम प्रकार", + "ORDER_BY": "द्वारा आदेश", + "RGBBACKGROUNDCOLOR": "आरजीबी पृष्ठभूमि रंग" } } diff --git a/public/app/main/apps/tools/i18n/id.json b/public/app/main/apps/tools/i18n/id.json index 1775184..4dec2c1 100644 --- a/public/app/main/apps/tools/i18n/id.json +++ b/public/app/main/apps/tools/i18n/id.json @@ -465,6 +465,11 @@ "LEVEL": "Tingkat", "SECOND_LEVEL_DISPOSITION": "Disposisi Tingkat Kedua", "SELECT_LEVEL": "Pilih level", - "TITLEFONTSIZE": "Ukuran Judul Font" + "TITLEFONTSIZE": "Ukuran Judul Font", + "ADD_CONTACTITEMTYPE": "Menambahkan", + "CONTACTITEMTYPE": "Jenis item kontak", + "NEW_CONTACTITEMTYPE": "Jenis item kontak baru", + "ORDER_BY": "Dipesan oleh", + "RGBBACKGROUNDCOLOR": "Warna Latar RGB" } } diff --git a/public/app/main/apps/tools/i18n/it.json b/public/app/main/apps/tools/i18n/it.json index c6b75fe..e1f8f50 100644 --- a/public/app/main/apps/tools/i18n/it.json +++ b/public/app/main/apps/tools/i18n/it.json @@ -497,6 +497,11 @@ "AUTOCREATE_FIELD": "Campo autocreazione", "STANDARD": "Standard", "GLOBALS": "Globali", - "MOTION_BAR": "Motion Bar" + "MOTION_BAR": "Motion Bar", + "ADD_CONTACTITEMTYPE": "Aggiungere", + "CONTACTITEMTYPE": "Tipi di elementi di contatto", + "NEW_CONTACTITEMTYPE": "Nuovo tipo di elemento di contatto", + "ORDER_BY": "Ordinato da", + "RGBBACKGROUNDCOLOR": "Colore di sfondo RGB" } } diff --git a/public/app/main/apps/tools/i18n/ja.json b/public/app/main/apps/tools/i18n/ja.json index bb2a63f..3e4064c 100644 --- a/public/app/main/apps/tools/i18n/ja.json +++ b/public/app/main/apps/tools/i18n/ja.json @@ -465,6 +465,11 @@ "LEVEL": "レベル", "SECOND_LEVEL_DISPOSITION": "第2レベルの気質", "SELECT_LEVEL": "レベルを選択してください", - "TITLEFONTSIZE": "フォントタイトルサイズ" + "TITLEFONTSIZE": "フォントタイトルサイズ", + "ADD_CONTACTITEMTYPE": "追加", + "CONTACTITEMTYPE": "連絡先アイテムの種類", + "NEW_CONTACTITEMTYPE": "新しい連絡先アイテムタイプ", + "ORDER_BY": "注文する", + "RGBBACKGROUNDCOLOR": "RGB背景色" } } diff --git a/public/app/main/apps/tools/i18n/ko.json b/public/app/main/apps/tools/i18n/ko.json index aa8aae2..269fe40 100644 --- a/public/app/main/apps/tools/i18n/ko.json +++ b/public/app/main/apps/tools/i18n/ko.json @@ -465,6 +465,11 @@ "LEVEL": "수평", "SECOND_LEVEL_DISPOSITION": "두 번째 수준 처리", "SELECT_LEVEL": "레벨 선택", - "TITLEFONTSIZE": "글꼴 제목 크기" + "TITLEFONTSIZE": "글꼴 제목 크기", + "ADD_CONTACTITEMTYPE": "추가하다", + "CONTACTITEMTYPE": "연락처 항목 유형", + "NEW_CONTACTITEMTYPE": "새 연락처 항목 유형", + "ORDER_BY": "주문", + "RGBBACKGROUNDCOLOR": "RGB 배경색" } } diff --git a/public/app/main/apps/tools/i18n/lt.json b/public/app/main/apps/tools/i18n/lt.json index 06d6df0..066db67 100644 --- a/public/app/main/apps/tools/i18n/lt.json +++ b/public/app/main/apps/tools/i18n/lt.json @@ -465,6 +465,11 @@ "LEVEL": "Lygis", "SECOND_LEVEL_DISPOSITION": "Antro lygio disponavimas", "SELECT_LEVEL": "Pasirinkite lygį", - "TITLEFONTSIZE": "Šrifto pavadinimo dydis" + "TITLEFONTSIZE": "Šrifto pavadinimo dydis", + "ADD_CONTACTITEMTYPE": "Papildyti", + "CONTACTITEMTYPE": "Kontaktinių elementų tipai", + "NEW_CONTACTITEMTYPE": "Naujas kontaktinio elemento tipas", + "ORDER_BY": "Rūšiuoti pagal", + "RGBBACKGROUNDCOLOR": "RGB fono spalva" } } diff --git a/public/app/main/apps/tools/i18n/lv.json b/public/app/main/apps/tools/i18n/lv.json index f9a67b6..a06d042 100644 --- a/public/app/main/apps/tools/i18n/lv.json +++ b/public/app/main/apps/tools/i18n/lv.json @@ -465,6 +465,11 @@ "LEVEL": "Līmenis", "SECOND_LEVEL_DISPOSITION": "Otrā līmeņa izvietojums", "SELECT_LEVEL": "Atlasiet līmeni", - "TITLEFONTSIZE": "Fonta nosaukuma lielums" + "TITLEFONTSIZE": "Fonta nosaukuma lielums", + "ADD_CONTACTITEMTYPE": "Pievienot", + "CONTACTITEMTYPE": "Kontaktpersonu veidi", + "NEW_CONTACTITEMTYPE": "Jauns kontakta vienuma veids", + "ORDER_BY": "Sakārtot pēc", + "RGBBACKGROUNDCOLOR": "RGB fona krāsa" } } diff --git a/public/app/main/apps/tools/i18n/nl.json b/public/app/main/apps/tools/i18n/nl.json index 1a9505d..f2f4f75 100644 --- a/public/app/main/apps/tools/i18n/nl.json +++ b/public/app/main/apps/tools/i18n/nl.json @@ -465,6 +465,11 @@ "LEVEL": "Niveau", "SECOND_LEVEL_DISPOSITION": "Tweede niveau dispositie", "SELECT_LEVEL": "Kies een niveau", - "TITLEFONTSIZE": "Lettertype titelgrootte" + "TITLEFONTSIZE": "Lettertype titelgrootte", + "ADD_CONTACTITEMTYPE": "Toevoegen", + "CONTACTITEMTYPE": "Typen contactitems", + "NEW_CONTACTITEMTYPE": "Nieuw type contactitem", + "ORDER_BY": "Bestellen op", + "RGBBACKGROUNDCOLOR": "RGB-achtergrondkleur" } } diff --git a/public/app/main/apps/tools/i18n/no.json b/public/app/main/apps/tools/i18n/no.json index d187d0c..03a72e4 100644 --- a/public/app/main/apps/tools/i18n/no.json +++ b/public/app/main/apps/tools/i18n/no.json @@ -465,6 +465,11 @@ "LEVEL": "Nivå", "SECOND_LEVEL_DISPOSITION": "Andre nivå disposisjon", "SELECT_LEVEL": "Velg et nivå", - "TITLEFONTSIZE": "Skriftens tittelstørrelse" + "TITLEFONTSIZE": "Skriftens tittelstørrelse", + "ADD_CONTACTITEMTYPE": "Legg til", + "CONTACTITEMTYPE": "Typer av kontaktelementer", + "NEW_CONTACTITEMTYPE": "Ny type kontaktelement", + "ORDER_BY": "Rekkefølge etter", + "RGBBACKGROUNDCOLOR": "RGB bakgrunnsfarge" } } diff --git a/public/app/main/apps/tools/i18n/pl.json b/public/app/main/apps/tools/i18n/pl.json index 3196599..3844813 100644 --- a/public/app/main/apps/tools/i18n/pl.json +++ b/public/app/main/apps/tools/i18n/pl.json @@ -465,6 +465,11 @@ "LEVEL": "Poziom", "SECOND_LEVEL_DISPOSITION": "Dyspozycja drugiego poziomu", "SELECT_LEVEL": "Wybierz poziom", - "TITLEFONTSIZE": "Rozmiar tytułu czcionki" + "TITLEFONTSIZE": "Rozmiar tytułu czcionki", + "ADD_CONTACTITEMTYPE": "Dodać", + "CONTACTITEMTYPE": "Typy elementów kontaktu", + "NEW_CONTACTITEMTYPE": "Nowy typ elementu kontaktu", + "ORDER_BY": "Zamów przez", + "RGBBACKGROUNDCOLOR": "Kolor tła RGB" } } diff --git a/public/app/main/apps/tools/i18n/pt-BR.json b/public/app/main/apps/tools/i18n/pt-BR.json index 95b7fa9..565e735 100644 --- a/public/app/main/apps/tools/i18n/pt-BR.json +++ b/public/app/main/apps/tools/i18n/pt-BR.json @@ -465,6 +465,11 @@ "LEVEL": "Nível", "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível", "SELECT_LEVEL": "Selecione um nível", - "TITLEFONTSIZE": "Tamanho do título da fonte" + "TITLEFONTSIZE": "Tamanho do título da fonte", + "ADD_CONTACTITEMTYPE": "Adicionar", + "CONTACTITEMTYPE": "Tipos de item de contato", + "NEW_CONTACTITEMTYPE": "Novo tipo de item de contato", + "ORDER_BY": "Ordenar por", + "RGBBACKGROUNDCOLOR": "Cor de fundo RGB" } } diff --git a/public/app/main/apps/tools/i18n/pt-PT.json b/public/app/main/apps/tools/i18n/pt-PT.json index 11c8858..e260e34 100644 --- a/public/app/main/apps/tools/i18n/pt-PT.json +++ b/public/app/main/apps/tools/i18n/pt-PT.json @@ -465,6 +465,11 @@ "LEVEL": "Nível", "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível", "SELECT_LEVEL": "Selecione um nível", - "TITLEFONTSIZE": "Tamanho do título da fonte" + "TITLEFONTSIZE": "Tamanho do título da fonte", + "ADD_CONTACTITEMTYPE": "Adicionar", + "CONTACTITEMTYPE": "Tipos de item de contato", + "NEW_CONTACTITEMTYPE": "Novo tipo de item de contato", + "ORDER_BY": "Ordenar por", + "RGBBACKGROUNDCOLOR": "Cor de fundo RGB" } } diff --git a/public/app/main/apps/tools/i18n/ru.json b/public/app/main/apps/tools/i18n/ru.json index bde0ed5..a365ed7 100644 --- a/public/app/main/apps/tools/i18n/ru.json +++ b/public/app/main/apps/tools/i18n/ru.json @@ -465,6 +465,11 @@ "LEVEL": "Уровень", "SECOND_LEVEL_DISPOSITION": "Расположение второго уровня", "SELECT_LEVEL": "Выберите уровень", - "TITLEFONTSIZE": "Размер заголовка шрифта" + "TITLEFONTSIZE": "Размер заголовка шрифта", + "ADD_CONTACTITEMTYPE": "Добавлять", + "CONTACTITEMTYPE": "Типы контактов", + "NEW_CONTACTITEMTYPE": "Новый тип элемента контакта", + "ORDER_BY": "Сортировать по", + "RGBBACKGROUNDCOLOR": "Цвет фона RGB" } } diff --git a/public/app/main/apps/tools/i18n/sv.json b/public/app/main/apps/tools/i18n/sv.json index 2e11356..bd109c9 100644 --- a/public/app/main/apps/tools/i18n/sv.json +++ b/public/app/main/apps/tools/i18n/sv.json @@ -465,6 +465,11 @@ "LEVEL": "Nivå", "SECOND_LEVEL_DISPOSITION": "Andra nivån disposition", "SELECT_LEVEL": "Välj en nivå", - "TITLEFONTSIZE": "Teckensnittsstorlek" + "TITLEFONTSIZE": "Teckensnittsstorlek", + "ADD_CONTACTITEMTYPE": "Lägg till", + "CONTACTITEMTYPE": "Typer av kontaktartiklar", + "NEW_CONTACTITEMTYPE": "Ny typ av kontaktartikel", + "ORDER_BY": "Sortera efter", + "RGBBACKGROUNDCOLOR": "RGB bakgrundsfärg" } } diff --git a/public/app/main/apps/tools/i18n/tr.json b/public/app/main/apps/tools/i18n/tr.json index 80117e9..23d2bff 100644 --- a/public/app/main/apps/tools/i18n/tr.json +++ b/public/app/main/apps/tools/i18n/tr.json @@ -465,6 +465,11 @@ "LEVEL": "Seviye", "SECOND_LEVEL_DISPOSITION": "İkinci Düzey Tasarruf", "SELECT_LEVEL": "Bir seviye seçin", - "TITLEFONTSIZE": "Yazı Tipi Başlık Boyutu" + "TITLEFONTSIZE": "Yazı Tipi Başlık Boyutu", + "ADD_CONTACTITEMTYPE": "Ekle", + "CONTACTITEMTYPE": "İletişim öğesi türleri", + "NEW_CONTACTITEMTYPE": "Yeni kişi öğesi türü", + "ORDER_BY": "Tarafından sipariş", + "RGBBACKGROUNDCOLOR": "RGB Arkaplan rengi" } } diff --git a/public/app/main/apps/tools/i18n/zh-CN.json b/public/app/main/apps/tools/i18n/zh-CN.json index 3063b73..11c6a3a 100644 --- a/public/app/main/apps/tools/i18n/zh-CN.json +++ b/public/app/main/apps/tools/i18n/zh-CN.json @@ -465,6 +465,11 @@ "LEVEL": "水平", "SECOND_LEVEL_DISPOSITION": "二级处置", "SELECT_LEVEL": "选择一个级别", - "TITLEFONTSIZE": "字体标题大小" + "TITLEFONTSIZE": "字体标题大小", + "ADD_CONTACTITEMTYPE": "添加", + "CONTACTITEMTYPE": "联系项目类型", + "NEW_CONTACTITEMTYPE": "新的联系人项目类型", + "ORDER_BY": "订购方式", + "RGBBACKGROUNDCOLOR": "RGB 背景色" } } diff --git a/public/app/main/apps/tools/i18n/zh-TW.json b/public/app/main/apps/tools/i18n/zh-TW.json index 3009e4b..19eecc7 100644 --- a/public/app/main/apps/tools/i18n/zh-TW.json +++ b/public/app/main/apps/tools/i18n/zh-TW.json @@ -465,6 +465,11 @@ "LEVEL": "水平", "SECOND_LEVEL_DISPOSITION": "二級處置", "SELECT_LEVEL": "選擇一個級別", - "TITLEFONTSIZE": "字體標題大小" + "TITLEFONTSIZE": "字體標題大小", + "ADD_CONTACTITEMTYPE": "添加", + "CONTACTITEMTYPE": "聯繫項目類型", + "NEW_CONTACTITEMTYPE": "新的聯繫人項目類型", + "ORDER_BY": "訂購方式", + "RGBBACKGROUNDCOLOR": "RGB 背景色" } } diff --git a/public/app/toolbar/i18n/ar.json b/public/app/toolbar/i18n/ar.json index aeafcf1..1eca15e 100644 --- a/public/app/toolbar/i18n/ar.json +++ b/public/app/toolbar/i18n/ar.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "إلى {{المستلم}}", "USER_FORCE_LOGOUT": "قام {{ip}} بتسجيل الدخول باستخدام بيانات الاعتماد الخاصة بك.\nغير مسموح بتسجيل الدخول المتعدد", "LOGOUT": "تسجيل خروج", - "SESSION_TIMEOUT": "سيتم إغلاق الجلسة تلقائيًا بعد 60 ثانية" + "SESSION_TIMEOUT": "سيتم إغلاق الجلسة تلقائيًا بعد 60 ثانية", + "PHONE2CALL": "هاتف للاتصال" } } diff --git a/public/app/toolbar/i18n/cs.json b/public/app/toolbar/i18n/cs.json index a0c43d4..d4113cb 100644 --- a/public/app/toolbar/i18n/cs.json +++ b/public/app/toolbar/i18n/cs.json @@ -104,6 +104,7 @@ "WEBRTC_MICROPHONE_NOT_AVAILABLE": "Není k dispozici žádný mikrofon", "WEBRTC_SPEAKER_NOT_AVAILABLE": "Není k dispozici žádný reproduktor", "LOGOUT": "Odhlásit se", - "SESSION_TIMEOUT": "Relace bude automaticky ukončena po 60 sekundách" + "SESSION_TIMEOUT": "Relace bude automaticky ukončena po 60 sekundách", + "PHONE2CALL": "Telefon na zavolání" } } diff --git a/public/app/toolbar/i18n/da.json b/public/app/toolbar/i18n/da.json index 81a2f7c..0363877 100644 --- a/public/app/toolbar/i18n/da.json +++ b/public/app/toolbar/i18n/da.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "til {{modtager}}", "USER_FORCE_LOGOUT": "{{ip}} er logget ind med dine legitimationsoplysninger.\nFlere login er ikke tilladt", "LOGOUT": "Log ud", - "SESSION_TIMEOUT": "Sessionen lukkes automatisk efter 60 sekunder" + "SESSION_TIMEOUT": "Sessionen lukkes automatisk efter 60 sekunder", + "PHONE2CALL": "Telefon for at ringe" } } diff --git a/public/app/toolbar/i18n/de.json b/public/app/toolbar/i18n/de.json index a399ee6..6ac0598 100644 --- a/public/app/toolbar/i18n/de.json +++ b/public/app/toolbar/i18n/de.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "an {{Empfänger}}", "USER_FORCE_LOGOUT": "{{ip}} hat sich mit Ihren Anmeldeinformationen angemeldet.\nMehrfachanmeldungen sind nicht zulässig", "LOGOUT": "Ausloggen", - "SESSION_TIMEOUT": "Die Sitzung wird nach 60 Sekunden automatisch geschlossen" + "SESSION_TIMEOUT": "Die Sitzung wird nach 60 Sekunden automatisch geschlossen", + "PHONE2CALL": "Telefon zum Anrufen" } } diff --git a/public/app/toolbar/i18n/en.json b/public/app/toolbar/i18n/en.json index 945c4cb..89ac174 100644 --- a/public/app/toolbar/i18n/en.json +++ b/public/app/toolbar/i18n/en.json @@ -17,6 +17,7 @@ "REQUIREMENTS": "Requirements", "LICENSE": "License", "HTTPS": "HTTPS", + "PHONE2CALL": "Phone to call", "WEBRTCSUPPORT": "WebRTC Support", "REGISTERED": "Registered", "NOT_REGISTERED": "Not registered", diff --git a/public/app/toolbar/i18n/es.json b/public/app/toolbar/i18n/es.json index 321e845..48e718d 100644 --- a/public/app/toolbar/i18n/es.json +++ b/public/app/toolbar/i18n/es.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "a {{destinatario}}", "USER_FORCE_LOGOUT": "{{ip}} ha iniciado sesión con sus credenciales.\nNo se permiten múltiples inicios de sesión", "LOGOUT": "Cerrar sesión", - "SESSION_TIMEOUT": "La sesión se cerrará automáticamente después de 60 segundos." + "SESSION_TIMEOUT": "La sesión se cerrará automáticamente después de 60 segundos.", + "PHONE2CALL": "Teléfono para llamar" } } diff --git a/public/app/toolbar/i18n/et.json b/public/app/toolbar/i18n/et.json index d9e1f5a..70bfe9f 100644 --- a/public/app/toolbar/i18n/et.json +++ b/public/app/toolbar/i18n/et.json @@ -104,6 +104,7 @@ "WEBRTC_MICROPHONE_NOT_AVAILABLE": "Mikrofoni pole saadaval", "WEBRTC_SPEAKER_NOT_AVAILABLE": "Kõlarit pole saadaval", "LOGOUT": "Logi välja", - "SESSION_TIMEOUT": "Seanss suletakse 60 sekundi pärast automaatselt" + "SESSION_TIMEOUT": "Seanss suletakse 60 sekundi pärast automaatselt", + "PHONE2CALL": "Telefon helistamiseks" } } diff --git a/public/app/toolbar/i18n/fa.json b/public/app/toolbar/i18n/fa.json index b3fb09b..569f559 100644 --- a/public/app/toolbar/i18n/fa.json +++ b/public/app/toolbar/i18n/fa.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "به {{گیرنده", "USER_FORCE_LOGOUT": "{{ip} with با اعتبار خود وارد شوید.\nورود چندگانه مجاز نیست", "LOGOUT": "خروج", - "SESSION_TIMEOUT": "جلسه پس از 60 ثانیه به طور خودکار بسته می شود" + "SESSION_TIMEOUT": "جلسه پس از 60 ثانیه به طور خودکار بسته می شود", + "PHONE2CALL": "تلفن جهت تماس" } } diff --git a/public/app/toolbar/i18n/fi.json b/public/app/toolbar/i18n/fi.json index 33e7ee3..5115726 100644 --- a/public/app/toolbar/i18n/fi.json +++ b/public/app/toolbar/i18n/fi.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "vastaanottajalle {{vastaanottaja}}", "USER_FORCE_LOGOUT": "{{ip}} on kirjautunut sisään käyttöoikeustietosi.\nUseita kirjautumisia ei sallita", "LOGOUT": "Kirjautua ulos", - "SESSION_TIMEOUT": "Istunto suljetaan automaattisesti 60 sekunnin kuluttua" + "SESSION_TIMEOUT": "Istunto suljetaan automaattisesti 60 sekunnin kuluttua", + "PHONE2CALL": "Puhelin soittaa" } } diff --git a/public/app/toolbar/i18n/fr.json b/public/app/toolbar/i18n/fr.json index fb90d04..dd5d0a2 100644 --- a/public/app/toolbar/i18n/fr.json +++ b/public/app/toolbar/i18n/fr.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "à {{destinataire}}", "USER_FORCE_LOGOUT": "{{ip}} s'est connecté avec vos identifiants.\nLes connexions multiples ne sont pas autorisées", "LOGOUT": "Se déconnecter", - "SESSION_TIMEOUT": "La session sera automatiquement fermée après 60 secondes" + "SESSION_TIMEOUT": "La session sera automatiquement fermée après 60 secondes", + "PHONE2CALL": "Téléphone pour appeler" } } diff --git a/public/app/toolbar/i18n/he.json b/public/app/toolbar/i18n/he.json index ae40a5b..02fc6b7 100644 --- a/public/app/toolbar/i18n/he.json +++ b/public/app/toolbar/i18n/he.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "אל {{מקבל}}", "USER_FORCE_LOGOUT": "{{ip}} התחבר עם האישורים שלך.\nאין להכניס כניסות מרובות", "LOGOUT": "להתנתק", - "SESSION_TIMEOUT": "ההפעלה תיסגר אוטומטית לאחר 60 שניות" + "SESSION_TIMEOUT": "ההפעלה תיסגר אוטומטית לאחר 60 שניות", + "PHONE2CALL": "טלפון להתקשרות" } } diff --git a/public/app/toolbar/i18n/hi.json b/public/app/toolbar/i18n/hi.json index a57ff24..9d1ca92 100644 --- a/public/app/toolbar/i18n/hi.json +++ b/public/app/toolbar/i18n/hi.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "से {{प्राप्तकर्ता}}", "USER_FORCE_LOGOUT": "{{ip}} ने आपकी साख के साथ लॉग इन किया है।\nएकाधिक लॉगिन की अनुमति नहीं है", "LOGOUT": "लॉग आउट", - "SESSION_TIMEOUT": "60 सेकंड के बाद सत्र स्वचालित रूप से बंद हो जाएगा" + "SESSION_TIMEOUT": "60 सेकंड के बाद सत्र स्वचालित रूप से बंद हो जाएगा", + "PHONE2CALL": "कॉल करने के लिए फोन" } } diff --git a/public/app/toolbar/i18n/id.json b/public/app/toolbar/i18n/id.json index 7357092..a096fad 100644 --- a/public/app/toolbar/i18n/id.json +++ b/public/app/toolbar/i18n/id.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "kepada {{penerima}}", "USER_FORCE_LOGOUT": "{{ip}} telah masuk dengan kredensial Anda.\nBanyak login tidak diperbolehkan", "LOGOUT": "Keluar", - "SESSION_TIMEOUT": "Sesi akan ditutup secara otomatis setelah 60 detik" + "SESSION_TIMEOUT": "Sesi akan ditutup secara otomatis setelah 60 detik", + "PHONE2CALL": "Telepon untuk dihubungi" } } diff --git a/public/app/toolbar/i18n/it.json b/public/app/toolbar/i18n/it.json index adb2f85..869bc47 100644 --- a/public/app/toolbar/i18n/it.json +++ b/public/app/toolbar/i18n/it.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "a {{recipient}}", "USER_FORCE_LOGOUT": "{{ip}} si è connesso con le tue credenziali. \nNon sono consentite connessioni multiple", "LOGOUT": "Disconnettersi", - "SESSION_TIMEOUT": "La sessione verrà chiusa automaticamente dopo 60 secondi" + "SESSION_TIMEOUT": "La sessione verrà chiusa automaticamente dopo 60 secondi", + "PHONE2CALL": "Telefono per chiamare" } } diff --git a/public/app/toolbar/i18n/ja.json b/public/app/toolbar/i18n/ja.json index d9d4dfa..1a89cfe 100644 --- a/public/app/toolbar/i18n/ja.json +++ b/public/app/toolbar/i18n/ja.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "{{recipient}}へ", "USER_FORCE_LOGOUT": "{{ip}}はあなたの認証情報でログインしています。\n複数のログインは許可されていません", "LOGOUT": "ログアウト", - "SESSION_TIMEOUT": "セッションは60秒後に自動的に閉じられます" + "SESSION_TIMEOUT": "セッションは60秒後に自動的に閉じられます", + "PHONE2CALL": "電話する" } } diff --git a/public/app/toolbar/i18n/ko.json b/public/app/toolbar/i18n/ko.json index ba5a1a8..e868aeb 100644 --- a/public/app/toolbar/i18n/ko.json +++ b/public/app/toolbar/i18n/ko.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "{{recipient}}에게", "USER_FORCE_LOGOUT": "{{ip}}이 (가) 귀하의 자격 증명으로 로그인했습니다.\n다중 로그인은 허용되지 않습니다.", "LOGOUT": "로그 아웃", - "SESSION_TIMEOUT": "세션은 60 초 후에 자동으로 닫힙니다." + "SESSION_TIMEOUT": "세션은 60 초 후에 자동으로 닫힙니다.", + "PHONE2CALL": "전화 걸기" } } diff --git a/public/app/toolbar/i18n/lt.json b/public/app/toolbar/i18n/lt.json index 9364334..92e62b1 100644 --- a/public/app/toolbar/i18n/lt.json +++ b/public/app/toolbar/i18n/lt.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "Naujas pranešimas kam {{gavėjas}}", "USER_FORCE_LOGOUT": "{{ip}} prisijungė naudodamas savo įgaliojimus. Keli prisijungimai neleidžiami", "LOGOUT": "Atsijungti", - "SESSION_TIMEOUT": "Po 60 sekundžių sesija bus automatiškai uždaryta" + "SESSION_TIMEOUT": "Po 60 sekundžių sesija bus automatiškai uždaryta", + "PHONE2CALL": "Telefonas skambinti" } } diff --git a/public/app/toolbar/i18n/lv.json b/public/app/toolbar/i18n/lv.json index 8187f49..5c63665 100644 --- a/public/app/toolbar/i18n/lv.json +++ b/public/app/toolbar/i18n/lv.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "adresātam {{saņēmējs}}", "USER_FORCE_LOGOUT": "{{ip}} ir pieteicies ar jūsu akreditācijas datiem.\nVairāki pieteikumi nav atļauti", "LOGOUT": "Izlogoties", - "SESSION_TIMEOUT": "Sesija tiks automātiski slēgta pēc 60 sekundēm" + "SESSION_TIMEOUT": "Sesija tiks automātiski slēgta pēc 60 sekundēm", + "PHONE2CALL": "Tālrunis, lai zvanītu" } } diff --git a/public/app/toolbar/i18n/nl.json b/public/app/toolbar/i18n/nl.json index acee469..4601d6b 100644 --- a/public/app/toolbar/i18n/nl.json +++ b/public/app/toolbar/i18n/nl.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "aan {{ontvanger}}", "USER_FORCE_LOGOUT": "{{ip}} is ingelogd met uw inloggegevens.\nMeerdere aanmeldingen zijn niet toegestaan", "LOGOUT": "Uitloggen", - "SESSION_TIMEOUT": "De sessie wordt automatisch na 60 seconden afgesloten" + "SESSION_TIMEOUT": "De sessie wordt automatisch na 60 seconden afgesloten", + "PHONE2CALL": "Telefoon om te bellen" } } diff --git a/public/app/toolbar/i18n/no.json b/public/app/toolbar/i18n/no.json index 0f7edb3..ab1fdfb 100644 --- a/public/app/toolbar/i18n/no.json +++ b/public/app/toolbar/i18n/no.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "til {{mottaker}}", "USER_FORCE_LOGOUT": "{{ip}} har logget på med legitimasjonsbeskrivelsen.\nFlere pålogginger er ikke tillatt", "LOGOUT": "Logg ut", - "SESSION_TIMEOUT": "Økten lukkes automatisk etter 60 sekunder" + "SESSION_TIMEOUT": "Økten lukkes automatisk etter 60 sekunder", + "PHONE2CALL": "Telefon for å ringe" } } diff --git a/public/app/toolbar/i18n/pl.json b/public/app/toolbar/i18n/pl.json index 9884150..25e81fd 100644 --- a/public/app/toolbar/i18n/pl.json +++ b/public/app/toolbar/i18n/pl.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "do {{recipient}}", "USER_FORCE_LOGOUT": "{{ip}} zalogował się przy użyciu Twoich danych logowania.\nWielokrotne logowanie jest niedozwolone", "LOGOUT": "Wyloguj", - "SESSION_TIMEOUT": "Sesja zostanie automatycznie zamknięta po 60 sekundach" + "SESSION_TIMEOUT": "Sesja zostanie automatycznie zamknięta po 60 sekundach", + "PHONE2CALL": "Telefon, aby zadzwonić" } } diff --git a/public/app/toolbar/i18n/pt-BR.json b/public/app/toolbar/i18n/pt-BR.json index 6316ee1..419cb06 100644 --- a/public/app/toolbar/i18n/pt-BR.json +++ b/public/app/toolbar/i18n/pt-BR.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "para {{destinatário}}", "USER_FORCE_LOGOUT": "{{ip}} fez login com suas credenciais.\nVários logins não são permitidos", "LOGOUT": "Sair", - "SESSION_TIMEOUT": "A sessão será fechada automaticamente após 60 segundos" + "SESSION_TIMEOUT": "A sessão será fechada automaticamente após 60 segundos", + "PHONE2CALL": "Telefone para ligar" } } diff --git a/public/app/toolbar/i18n/pt-PT.json b/public/app/toolbar/i18n/pt-PT.json index af765ac..0d1d4dd 100644 --- a/public/app/toolbar/i18n/pt-PT.json +++ b/public/app/toolbar/i18n/pt-PT.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "para {{destinatário}}", "USER_FORCE_LOGOUT": "{{ip}} fez login com suas credenciais.\nVários logins não são permitidos", "LOGOUT": "Sair", - "SESSION_TIMEOUT": "A sessão será fechada automaticamente após 60 segundos" + "SESSION_TIMEOUT": "A sessão será fechada automaticamente após 60 segundos", + "PHONE2CALL": "Telefone para ligar" } } diff --git a/public/app/toolbar/i18n/ru.json b/public/app/toolbar/i18n/ru.json index 94badc8..a7da067 100644 --- a/public/app/toolbar/i18n/ru.json +++ b/public/app/toolbar/i18n/ru.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "кому: {{recipient}}", "USER_FORCE_LOGOUT": "{{ip}} вошел в систему с вашими учетными данными.\nМножественные входы не разрешены", "LOGOUT": "Выйти", - "SESSION_TIMEOUT": "Сессия будет автоматически закрыта через 60 секунд." + "SESSION_TIMEOUT": "Сессия будет автоматически закрыта через 60 секунд.", + "PHONE2CALL": "Телефон для звонка" } } diff --git a/public/app/toolbar/i18n/sv.json b/public/app/toolbar/i18n/sv.json index c3bef90..3d237c5 100644 --- a/public/app/toolbar/i18n/sv.json +++ b/public/app/toolbar/i18n/sv.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "till {{mottagare}}", "USER_FORCE_LOGOUT": "{{ip}} har loggat in med dina referenser.\nFlera inloggningar är inte tillåtna", "LOGOUT": "Logga ut", - "SESSION_TIMEOUT": "Sessionen stängs automatiskt efter 60 sekunder" + "SESSION_TIMEOUT": "Sessionen stängs automatiskt efter 60 sekunder", + "PHONE2CALL": "Telefon för att ringa" } } diff --git a/public/app/toolbar/i18n/tr.json b/public/app/toolbar/i18n/tr.json index 18b4f3b..0ed972d 100644 --- a/public/app/toolbar/i18n/tr.json +++ b/public/app/toolbar/i18n/tr.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "{{alıcı}}", "USER_FORCE_LOGOUT": "{{ip}} kimlik bilgilerinizle giriş yaptı.\nBirden çok girişe izin verilmez", "LOGOUT": "Çıkış Yap", - "SESSION_TIMEOUT": "60 saniye sonra oturum otomatik olarak kapatılacaktır" + "SESSION_TIMEOUT": "60 saniye sonra oturum otomatik olarak kapatılacaktır", + "PHONE2CALL": "Aranacak telefon" } } diff --git a/public/app/toolbar/i18n/zh-CN.json b/public/app/toolbar/i18n/zh-CN.json index 752e330..c60f14a 100644 --- a/public/app/toolbar/i18n/zh-CN.json +++ b/public/app/toolbar/i18n/zh-CN.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "到{{recipient}}", "USER_FORCE_LOGOUT": "{{ip}}已使用您的凭据登录。\n不允许多次登录", "LOGOUT": "登出", - "SESSION_TIMEOUT": "该会话将在60秒后自动关闭" + "SESSION_TIMEOUT": "该会话将在60秒后自动关闭", + "PHONE2CALL": "拨打电话" } } diff --git a/public/app/toolbar/i18n/zh-TW.json b/public/app/toolbar/i18n/zh-TW.json index cf1dcc9..4085ea6 100644 --- a/public/app/toolbar/i18n/zh-TW.json +++ b/public/app/toolbar/i18n/zh-TW.json @@ -104,6 +104,7 @@ "NOTIFICATION_TITLE_RECIPIENT": "到{{recipient}}", "USER_FORCE_LOGOUT": "{{ip}}已使用您的憑據登錄。\n不允許多次登錄", "LOGOUT": "登出", - "SESSION_TIMEOUT": "該會話將在60秒後自動關閉" + "SESSION_TIMEOUT": "該會話將在60秒後自動關閉", + "PHONE2CALL": "撥打電話" } } diff --git a/public/index.html b/public/index.html index 82a4f5a..1ce81ff 100644 --- a/public/index.html +++ b/public/index.html @@ -1,36 +1,34 @@ - + - - - - + + + + xCALLY Motion - + - + +

You are using an outdated browser. Please upgrade + your browser to improve your experience.

+ +
@@ -68,7 +66,7 @@ - + @@ -85,6 +83,7 @@ + \ No newline at end of file diff --git a/public/scripts/app.21a88740.js b/public/scripts/app.21a88740.js new file mode 100644 index 0000000..ac34f45 --- /dev/null +++ b/public/scripts/app.21a88740.js @@ -0,0 +1 @@ +!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=""<\/span>/gi,"").replace("","").replace("",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e
',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('
')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n'),r=angular.element('
'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('
'),i=angular.element('
'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0 target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50 session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function D(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function P(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(l.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:p(function(){E.showDialpad=!1})}}),E.$onInit=function(){d(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];Promise.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();if(c.voicePause&&c.phoneBarDnd||E.originateInProgress)r=!1;else if(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase()){var m=0==d?500:1e3*d;console.debug("auto answer enabled after:"+m+" ms"),p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},m)}}r?(o.call_id=e.request.call_id,n&&P(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&P(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=O.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),p(function(){u.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),o.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),o.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t sessionToHangup",a),E.terminate(a)}}.bind(this)),o.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?D(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),o.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t payload",e),e.sessionId){var n=D(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),o.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=D(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),o.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return m(e)}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1 evt, data",e,n),n.target&&(E.target=n.target,E.call())}),u.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n){var t=this;function a(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=a(n,"audiooutput","ringingId"),s.speakerId=a(n,"audiooutput","speakerId"),s.microphoneId=a(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,t.conf=angular.copy(s),t.devices=n,t.saveSettings=function(){e.hide(t.conf)},t.closeDialog=function(){e.hide()},t.isCompatibleBrowser=function(){return"chrome"===t.conf.browserName.toLowerCase()||"opera"===t.conf.browserName.toLowerCase()||"safari"===t.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('
');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;ee.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeftt.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('
');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0{{ vm.timer }}",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;tr.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;tr.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;io.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;te.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;an.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i"+(e.name||"extractedReport")+" will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent(""+f.selectedExtractedReports.length+" selected will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n"+(e.name||"metric")+" will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent(""+f.selectedMetrics.length+" selected will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n"+e.field+" will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent(""+c.selectedReportFields.length+" selected will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n"+e.name+" will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent(""+p.selectedReports.length+" selected will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0"+(t.text?t.text:"Node")+" and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n"+(e.name||"odbc")+" will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent(""+f.selectedODBC.length+" selected will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n"+e.name+" will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent(""+p.selectedProjects.length+" selected will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n"+(e.name||"squareRecording")+" will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent(""+f.selectedSquareRecordings.length+" selected will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n"+(e.name||"chatQueue")+" will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent(""+f.selectedChatQueues.length+" selected will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent(""+(e.name||"chatWebsite")+" will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent(""+f.selectedChatWebsites.length+" selected will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i"+e.app+" will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent(""+r.selectedChatWebsiteApps.length+" selected will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+" will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent(""+m.selectedChatWebsiteChatCannedAnswers.length+" selected will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent(""+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+" will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n"+m.selectedChatWebsiteInteractions.length+" selected will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+" will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent(""+m.selectedChatWebsiteOfflineMessages.length+" selected will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?|(]*>|]*>|]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+" will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent(""+m.selectedChatWebsiteProactiveActions.length+" selected will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n