Добрый день, коллеги! У меня в файле cti-model.js были изменены некоторые методы для заполнения объекта звонка необходимыми данными с телефонии, но после обновления (с 7.12.1 до 5.15.2) данные перестали заполняться, и отладчик хрома перестал видеть этот файл в списке загруженных в память. Мне кажется, что какой-то параметр в конфигурации отвечал за подгрузку (этого и других файлов *-model.js), но после обновления я постарался перенести все старые параметры в новые конфиги. Подскажите, пожалуйста, что делать и куда копать
Нравится
Иван, добрый день!
Все замещения необходимо выполнять напрямую в приложении, а не в его бинарных файлах.
Изменения js файлов в ядре приложения не является правильным решением, поскольку оно может восстановиться, откатить изменения, либо приложения перестанет работать.
Все доработки рекомендуется выполнять только через конфигурацию, поскольку замещения напрямую в бинарных файлах исчезнут после обновления, поскольку обновляются все бинарные файлы и они приводятся к базовому значению.
Так же, поскольку у Вас слишком большой разброс по версиям, учтите, что с версии 7.12.2 до версии 7.15.2 было внесено очень много исправлений и изменений решать сейчас проблему подбрасыванием файлов, будет некорректно, это может привести систему в нерабочее состояние.
Сейчас рекомендую корректно выполнить доработку через конфигурацию, Тут есть 2 варианта:
1) Например, замещения можно делать через Ext классы(BaseStageControl), на примере класса "SummaryModule"(схема SummaryModuleV2):
define("UsrSummaryModuleV2", ["SummaryModuleV2"], function() { Ext.define("Terrasoft.SummaryModuleOverrided", { override: "Terrasoft.SummaryModule", /* * @override */ getESQ: function() { var esq = this.callParent(arguments); esq.queryKind = Terrasoft.QueryKind.LIMITED; return esq; } }); } ); define("BaseSectionV2", ["UsrSummaryModuleV2"], function() { return { methods: {}, details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/, diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/ }; });
Замещаем
BootstrapModulesV2:
define("BootstrapModulesV2", ["UsrSummaryModuleV2"], function() { return {}; });
2) Так же для CTI панели в последних версиях приложения реализован встроенный механизм доработки информации на CTI панели.
В общем случае, алгоритм следующий:
1. name = 'AdditionalSubscriberInfoContainer' - пустой контейнер, находящийся под данными об абоненте (Контрагент, Номер, Длительность разговора). В коробке его видимость завязана на возвпращаемое значение метода getIsAdditionalSubscriberInfoContainerVisible, который в коробке в схеме CtiPanelModelUtilities.js возвращает false.
2. name = 'AdditionalCallInfoContainer' - пустой контейнер, находящийся под контейнером кнопок (Поставить на удержание, Перевод звонка и т. д.). В коробке его видимость завязана на возвпращаемое значение метода getIsAdditionalCallInfoContainerVisible, который в коробке в схеме CtiPanelModelUtilities.js возвращает false.
Для того чтобы сделать эти контейнеры видимыми и добавить необходимые элементы управления, надо в своем пакете (например, Custom) заместить схему CtiPanel.js и переопределить указанные методы по своему усмотрению и "добавить" в diff необходимые элементы.