Публикация

Создать средство связи с типом "Web"

Вопрос

Создаем новый тип связи, добавляем его в справочник, назначаем признак Web. Добавляем запись, но получается что себя эта запись ведет себя также, как обычное поле на странице без возможности перехода по гиперссылке. Подскажите, как можно настроить новый тип связи, чтобы он также вел себя как гиперссылка?

Ответ

В базой версии приложения функционал средств связей, например, с типом «E-mail» и «Web» реализован только для базовых значение (реализовано на уровне конкретных ID). Реализацию данного функционала можете посмотреть в схеме «BaseCommunicationViewModel».

Если Вы хотите, чтобы пользовательские поля с типом «Web» имел такую же логику как и базовая колонка, то попробуйте пожалуйста, следующее:

- заместить полностью «CommunicationUtils»;

- переопределить метод isWebType (наглядный скриншот прикрепил на деталь «Файлы»).

Изображение удалено.

define("CommunicationUtils", ["CommunicationUtilsResources", "ConfigurationConstants"],
    function(resources, ConfigurationConstants) {
        /**
         * Указывает является ли тип средства связи одним из типов соц. сетей.
         * @protected
         * @param {Object} communicationType Тип средства связи.
         * @return {boolean} Возвращает true если тип средства связи относиться к социальным сетям.
         */
        function isSocialNetworkType(communicationType) {
            if (!communicationType) {
                return false;
            }
            communicationType = communicationType.value || communicationType;
            return ConfigurationConstants.SocialNetworksCommunicationTypes.indexOf(communicationType) !== -1;
        }
        /**
         * Указывает является ли тип средства связи телефоном.
         * @protected
         * @param {Object} communicationType Тип средства связи.
         * @param {Object} phoneTypes Типы телефонов.
         * @return {Boolean} Возвращает true, если тип средства связи относится к телефонам.
         */
        function isPhoneType(communicationType, phoneTypes) {
            if (!communicationType) {
                return false;
            }
            communicationType = communicationType.value || communicationType;
            var phonesCommunicationTypes = phoneTypes || ConfigurationConstants.PhonesCommunicationTypes;
            return phonesCommunicationTypes.indexOf(communicationType) !== -1;
        }
        /**
         * Указывает является ли тип средства связи Web ссылкой.
         * @protected
         * @param {Object} communicationType Тип средства связи.
         * @return {boolean} Возвращает true если тип средства связи Web ссылка.
         */
        function isWebType(communicationType) {
            if (!communicationType) {
                return false;
            }
            var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
                    rootSchemaName: "ComTypebyCommunication"
            });
            esq.addColumn('Communication', 'Communication');
            esq.filters.add("CommunicationCode", Terrasoft.createColumnFilterWithParameter(
                Terrasoft.ComparisonType.EQUAL,
                "[ComTypebyCommunication:CommunicationType:CommunicationType].Communication.Code",
                "Web"));
            var communicationId = '';
            esq.getEntityCollection(function(response) {
                        if (response.success) {
                            var entityCollection = response.collection;
                            var communication = entityCollection.getByIndex(0);
                            if (!Ext.isEmpty(communication)) {
                                communicationId = communication.get("Communication").value;
                            }
                        }
                    }, this);
            if (Ext.isEmpty(communicationId)) {
                return false;
            }
            return ConfigurationConstants.Communication.Web.indexOf(communicationId) !== -1;
        }
        /**
         * Указывает является ли тип средства связи Web ссылкой.
         * @protected
         * @param {Object} communicationType Тип средства связи.
         * @return {boolean} Возвращает true если тип средства связи Web ссылка.
         */
        function isEmailType(communicationType) {
            if (!communicationType) {
                return false;
            }
            communicationType = communicationType.value || communicationType;
            return ConfigurationConstants.CommunicationTypes.Email.indexOf(communicationType) !== -1;
        }
        /**
         * Указывает является ли тип средства связи адресом Skype.
         * @protected
         * @param {Object} communicationType Тип средства связи.
         * @return {boolean} Возвращает true если тип средства связи адрес Skype.
         */
        function isSkypeType(communicationType) {
            if (!communicationType) {
                return false;
            }
            communicationType = communicationType.value || communicationType;
            var skypeId = ConfigurationConstants.Communications.UseForContacts.Predefined.Skype.value;
            return skypeId.indexOf(communicationType) !== -1;
        }
        return {
            isSocialNetworkType: isSocialNetworkType,
            isPhoneType: isPhoneType,
            isEmailType: isEmailType,
            isWebType: isWebType,
            isSkypeType: isSkypeType
        };
    });

- почистить кэш браузера.

Данное решение является примерным алгоритмом. В любом случае необходимо доработка приложения.

Нравится

Поделиться

0 комментариев
Показать все комментарии