/** * Общие маскирующие JS-функции для контактных данных клиента. * Зеркало PHP-helper'ов из engine/helpers/contacts.php. * * Зависимости: глобальная переменная window.userPermissions должна быть * проброшена сервером (см. шаблон header'а). * * Подключается до main.js и crm.js. */ (function (window) { 'use strict'; /** * Маскирует телефон клиента, сохраняя ПЕРВУЮ цифру после "+" (код страны). * Примеры: * "79991234567" → "+7 *** *** ** **" (российский) * "+12025551234" → "+1 *** *** ** **" (США/Канада) * "+491701234567" → "+4 *** *** ** **" (Германия) * "+861812345678" → "+8 *** *** ** **" (Китай) * Если в строке нет цифр — возвращаем "+ *** *** ** **". */ window.maskClientPhone = function (phone) { if (!phone) return phone; var digits = String(phone).replace(/[^0-9]/g, ''); if (digits === '') return '+ *** *** ** **'; return '+' + digits.charAt(0) + ' *** *** ** **'; }; /** * Маскирует email клиента. * Пример: "ivan@mail.ru" → "i***@m***.ru". * Невалидный формат → "***@***". */ window.maskClientEmail = function (email) { if (!email) return email; var m = String(email).match(/^(.)[^@]*@(.)[^.]*(\..+)$/u); if (!m) return '***@***'; return m[1] + '***@' + m[2] + '***' + m[3]; }; /** * Проверка: должны ли скрываться контакты клиентов для текущего пользователя. * Источник истины — window.userPermissions.hide_client_contacts. */ window.shouldHideContacts = function () { return !!(window.userPermissions && window.userPermissions.hide_client_contacts == 1); }; /** * Условное маскирование одного значения телефона. */ window.maskPhoneIfNeeded = function (phone) { return window.shouldHideContacts() ? window.maskClientPhone(phone) : phone; }; /** * Условное маскирование одного значения email. */ window.maskEmailIfNeeded = function (email) { return window.shouldHideContacts() ? window.maskClientEmail(email) : email; }; })(window);