Журнал изменений
Что нового.
Каждое усовершенствование платформы, как только она появится.
· MediaService
Разговор доходит до телефона
Сообщение на линии Exec2Exec теперь идет на телефоны получателей. консоли: телефон клиента, когда KamoCRM отвечает, телефон каждого члена стола, когда Клиент пишет. Он использует существующий присутствующий толчок CHAT MESSAGE, глубокие ссылки на kamocopilot://exec2exec/<guid> (с указанием имени клиента в копии стола) и Разрыв в разговоре — это одно уведомление, а не десять. Неудачный толчок регистрируется и никогда не останавливает рамки консоли, которые уже вышли.
· kamo-internal
Контроль NavTop Exec2Exec является столом для руководителя KamoCRM
Для участника с Exec2Exec Access, стоящего в организации платформы, Контроль теперь подсчитывает сообщения от клиентов, которых они не просматривали. (GET **************** и открывает Центр взаимодействия) Чаты > Exec2Exec вместо собственного разговора Клиенты не видят изменений. - interactionCenterIntent открывает панель на вкладке и ведре. Ведро Путешествует в качестве незавершенного запроса, когда Exec2Exec соблюдает правила чата появляется вкладка, так как эта вкладка присоединяется к полосе только после прав платформы Загрузка и свежая панель в противном случае приземлились бы на свою первую вкладку навсегда. - В строках каталогов Exec2Exec значок customerUnreadCount, тот же сервер считать, так что значок и ряды, которые он открывает для согласия; коллеги Ответ больше не означает строку. - использоватьExec2ExecDeskUnread спрашивает снова, когда непрочитанный снимок стола перемещается Или вкладка возвращается и сохраняет последний номер на неудачном запросе.
· MediaService
Количество клиентских сообщений на столе еще не просмотрено
**************************** Сколько сообщений пришло от Клиенты, которых владелец EXEC2EXEC ACCESS не просматривал, по всем разговор, и каждый ряд реестра несет клиент UnreadCount. Это Непрочитанное правило платформы сузилось до того, что сказал клиент разговора: Весь стол сидит на каждом чате, поэтому ответ коллеги не прочитанный. Другие, не дожидаясь ни одного из них. Один запрос питает оба **************************** значок NavTop Споры Центра взаимодействия совпадают.
· KlusterServices
Наберите 911 и 933 из каждого расширения с уведомлением по электронной почте MLTS
Расширения не могли достичь 911: ни один исходящий маршрут не соответствовал 911 или 933. Изнутреннее упало до плохого числа и играло не может быть завершено как "набрал", не отправив ни одного приглашения. Startup.sh теперь несет в себе половину исправления: 911 и 933 являются точными расширениями в контексте [от внутреннего обычая]. Выходные ворота живут внутри. Точное расширение превосходит каждый шаблон в Его контекст, так что ворота не могут захватить их, и они пропускают [kamo-outbound-allowed] list: каждое расширение может набирать их без префикс. Каждый идет прямо на внутренний дополнительный, где FreePBX Собственная маршрутизация берет верх. - [kamo-e911-уведомление] выполняется до того, как звонок маршрутизируется и начинается kamo e911 notify.py отсоединяется через TrySystem (System()) Когда он не может выполнять свою задачу, то все его действия сводятся к Цифры по фильтру. - kamo e911 notify.py рассылает почтовые ящики администратора платформы через ******************* с указанием времени, продления и его Имя, номер обратного вызова и местоположение переданы в центр 911. Это Отказывает любому получателю за пределами kamocrm.com, перезапускает ретрансляцию Время и журналы каждого результата **************** Подъемник собственный постфикс не используется: он ретранслируется через smtp.gmail.com и его очередь застрял. Уведомитель переписывается на каждой загрузке; блок диалплана добавляется один раз. Под собственной охраной, как и в дежурном блоке. Половина маршрутизации - данные FreePBX, за пределами этого репо, и применяется на k1m1: исходящий маршрут Emergency911 (Emergency route=YES, шаблоны 911 и 933); багажник 1 (телниксский багажник), первый в последовательности, переопределяет CID +19492989960 и Devices.emergency cid +19492989960 на всех 22 расширениях. freepbx/tests/test e911.py (stdlib unittest) проверяет парсирование сайта startup.sh как bash, так и YAML, модели Asterisk выбирают расширение для отображения 911 и 933 обойти ворота, в то время как 10-значные, 11-значные и 011 номера все еще достигают его, прикрепляет крючок уведомления к NoOp/TrySystem/Return с фильтрованными аргументами, и Уведомление против поддельного реле.
· kamo-marketing
Перечислите номер телефона только на английских страницах
showPhone (locale) в app/lib/phone.ts - это единственное правило, которое используется в настоящее время. Локальность === «эн». PhoneLink ничего не возвращает в другом месте, что покрывает все расходы. заголовок, мобильное меню и футер, где номер стоит отдельно. Только телефон обертывает места размещения, которые несут больше номера — контактной карточки; и "Позвоните нам" на домашней полосе CTA, "Энтерпрайз" Ценовая карта и демо-страница — так что их слова и интервалы идут вместе с ней. Организация JSON-LD добавляет телефон в организацию и ее контактные точки. при том же условии, поэтому никакая другая наценка не претендует на номер.
· kamo-marketing
Пусть логотип ведет домой и перечисляет номер телефона, где посетители решают
Домашняя запись заголовка дублировала логотип, который уже ссылается на /. Он ушел из настольного и мобильного меню; на его месте логотип несет набор инструментов для наведения / фокусировки, говорящий, что он идет домой (слева с домашней страницы) Там, куда некуда возвращаться. (949) 298-9960 теперь является связующим звеном: - заголовок, центрированный между nav и селектором языка (xl и выше); lg-ряд не имеет места для него, а в мобильном меню с CTA - футер, под социальными иконами - страница контактов, в качестве карты Call Us, возглавляющей параметры контактов - домашняя полоса CTA, карта ценообразования Enterprise и демо-страница, рядом с Существующие призывы к действию Организация JSON-LD, как телефон на орг, так и обе контактные точки Число живет один раз в app/lib/phone.ts; PhoneLink отображает его и отчеты нажимают через отслеживание данных в качестве клика по телефону с его местоположением.
· kamo-internal
Одна окрашенная брендом выпадающая поверхность для всей верхней планки
Каждое выпадающее выпадающее меню NavTop — восемь опций (Mail, Docs, Call/Text, Calculator). Поддержка, Настройки, Linux Desktop, Игры, таблетка доступности и сборщик языка — теперь открывается На одной общей поверхности вместо собственного белого MUI. - Нарисован в основном цвете организации с белыми этикетками и иконками. Его верхний край смывается на нижнем краю бара, в собственном цвете бара в этом месте (градиент останавливается теперь в navtop/menu/navTopSeam.ts и NavTop строят свой фон из них, с квадратными верхними углами и вогнутый присоединиться к любой стороне, так что это читается как бар, достигающий вниз, а не панелей, уложенных поверх Страница. Бренд, слишком светлый для белого текста, затемнен в своем собственном оттенке только до WCAG AA. Потребности (световой потолок в относительной цветовой математике CSS); каждая другая марка рисуется по выбору. - Открывается под отдыхающей мышью, следует указатель вдоль бара - поверхность скользит и изменяет размеры к следующему меню, в то время как контент скользит в направлении путешествия и сворачивается обратно в Бар вскоре после того, как указатель покидает как триггер, так и панель. Клик или кнопка прикрепляет его Пока внешняя пресса, побег или выбор; кран никогда не фокусирует текстовое поле. - Клавиатура: Enter / Space / ArrowDown открывается на первый ряд, стрелки идут по рядам, Home / End, Type-ahead, справа / слева открытые и близкие группы и шаг к соседнему меню, руки побега Вернитесь к триггеру. Один из них подчеркивает, что скользит от ряда к ряду, группы, которые открываются под их рядом на направляющей нити, Одно кольцо на значках, баланс Чеддара на счету. Все движения проходят при уменьшенном движении. Настройки получают окно поиска, которое ищет внутри своих групп и отмечает матч; Вход открывает окно поиска. Первый удар. Выборщик языка - это двухколонная сетка из всех 22 языков, которую можно найти по имени. Английское имя или код. Настройки pin toggle и кошелек Cheddar становятся белыми на бренде и неизменны в рельсе. Железнодорожные вылеты неизменны — железная дорога уже заглядывает в открытую на паровозе. Когда открывается меню, переключается React-free State Machine (navtop/menu/hoverIntent.ts) с собственными тестами. Проверено в реальном Chrome по сравнению с реальными компонентами (построить упряжку, источники данных заглушены): 170 измеренные проверки по 11 брендам - время наведения, смывной шов и углы, оба вогнутых соединения, белый текст в 4.5:1 или лучше на каждой части панели, белые чернила повсюду, скольжение между меню, благодать отпуска, диагональ по соседству, не ворующая меню, клик-к-пин, касание, Клавиатура, как поиск, так и уменьшение движения. 287 тестов в комплектах nav и navtop, tsc и Иллюстрация защищает от нынешнего словаря en.json.
· MediaService
Положите весь стол на каждый чат, покажите, кто на нем, закройте каналы чата
Постоянное членство: каждый явный держатель EXEC2EXEC ACCESS Обсуждение Exec2Exec. Exec2ExecDeskReconciler сиденья и места для отдыха гранты на мероприятие exec2exec.desk.changed службы безопасности, 5-минутный обзор, Стартап, и всякий раз, когда чат открывается или заполняется обратно; стол перечитывается за разговор, так что развертка не может отменить грант, только что примененный. - GET /chat / {id} / Участники перечисляют руководителей KamoCRM в чате (memberId, userId, name, jobTitle). - Линии отправителя несут senderPhone (телефон верхнего уровня) и senderPhoneExt (разрешенное расширение VOIP, еще одно для членов команды) Сотрудники KamoCRM. Приветствие всегда подписывается Богом. - Ростерные ряды несут ожидание Desk (клиент говорил последним) для консоли Проверка входа. - Безопасность: /topic/chat/coming/{memberId} и /topic/chat/unread/{memberId} Теперь он может быть подписан только этим членом и никогда не будет отправлен клиенту. Оба были неохраняемы, поэтому любой подписавшийся клиент мог следовать за любым участником. Прибывшие и непрочитанные Ид. - Общие маршруты добавления/удаления/удаления/переименования членов отклоняют Exec2Exec Сессии (409 MEMBERSHIP MANAGED): членство принадлежит примирителю. - Офлайн-почта: сообщение клиента отправляет сообщение на стол, ответ руководителя Отправляет письма только клиенту, а не каждому руководителю обо всем. Заполните приветствия и места в транзакции, которая открывает чат, так что Первый ответ клиента никогда не помечается для стола.
· kamo-marketing
Дайте Google знак зеленой плитки, потому что он содержит самую большую иконку, которую мы объявляем
Поиск показывает один значок на сайт и принимает самый большой объявленный, Apple-touch-icon включает в себя значки 180px touch (наши и другие). Тема) обогнала все остальное. 192px Apple-touch-icon превосходит обоих. Его пиксели - 96px зеленая плитка, удвоенная Именно поэтому снижение Google возвращает оригинал. Tabs keep favicon.ico, iOS сохраняет точно 180 матчей для дома экран, и логотип на странице не меняется. Браузерная плитка, которая Я хочу, чтобы самая большая икона подняла эту.
· kamo-internal
Покажите, кто из KamoCRM находится в чате, и как с ними связаться
В окне клиента теперь перечислены руководители KamoCRM в их разговоре. Перечитайте каждый раз, когда кто-то добавляется или удаляется. Линия показывает только имена, с Заголовки на виселице: «Имя - Название» на человека загоняли стол в один забег, который Вырезан после первого руководителя, так что клиент больше не мог видеть, кто еще Он был там — единственное, для чего нужна полоса. Загрузка, пустая и неудавшаяся «Никто из KamoCRM не участвует в этом чате» — это то, на что действует клиент. Линия атрибуции руководителя KamoCRM теперь заканчивается основной линией организации и их собственное расширение - "Sage Nadjafinia - KamoCRM Inc. - President - (949) 298-9960 x8080» — через фирменный телефон, без изменений, поэтому он печатает именно как электронное письмо Подпись делает. Разделитель "-" везде, чтобы соответствовать. Фреймы членства прибывают с идентификатором: нуль, поэтому они обрабатываются до того, как Расшифровка «без идентификатора, отбросьте его» охрана; за ней они были молча выброшены.
· SecurityService
Скажи, когда стол изменится
Предоставление или отзыв Exec2Exec Access теперь публикует exec2exec.desk.changed. MediaService может поместить руководителя в каждый чат - или снять их - как Переключаться на странице платформы-администратора движется, а не всякий раз, когда его зачистка Бежит. После совершения, а не inline: MediaService повторно получает весь стол из База данных и никогда не доверяет полезной нагрузке, поэтому грант на откат не может разместиться кто угодно — но печатный лист расирует обязательство и примирение, которое читает Сначала примиряется со старым столом. Полезная нагрузка для журнала, а не для логики. Он публикуется, когда право удерживается до и после того, как: Руководитель - это естественный способ вернуть их в чаты после пропущенного события.
· kamo-shared-library
Проведите телефонную линию руководителя по сообщению
ChatMessageDto получает senderPhone и senderPhoneExt, установленный только тогда, когда отправитель Персонал KamoCRM: основная линия платформы и расширение, которое достигает Этот человек, как подпись электронной почты, уже печатает ее. Ретрансляционные копии из одного Список разрешений, поэтому поле, которое этот класс не объявляет, не достигает браузера — история Он будет нести номер, пока каждое живое сообщение не придет без него. Комментарий искателя грантов больше не говорит абонентам, что это неправильный ответ. Для стола Exec2Exec это теперь точно правильный, преднамеренно: Запрашивающий сделал переключатель на странице платформы-администратора единственным контролем над кто сидит в исполнительных чатах.
· kamo-internal
Остановитесь в прикрепленном центре взаимодействия; держите окна под каждым меню
Два последующих наблюдения до 0c5ef994 (максимизация рядом с нав). PINNED Interaction Center теперь удаляет свою ширину от максимизированной. Панель. Прикрепленная, панель работает вместе с экраном, поэтому максимизируется окно и его полоска вкладки останавливаются на левом краю панели вместо того, чтобы работать на Под ним. Панель публикует свою ширину на переменной CSS при прикреплении И открытый (useInteractionCenterReserve) и панегеометрия вычитают его, способ Переменная рельса уже работает; панель нарисована на той же струне, поэтому Оба не могут не согласиться. Неподкрепленная, панель по-прежнему модальна по скрему и Окно держит свою ширину позади него. Разворачивание, закрытие и удаление всех Вывести резерв. Ширина навигатора измеряет комнату до И края панели тоже. Меню больше не открывается за окнами инструментов. z-счетчик магазина (инструмент-ядро, совместно с мобильными) поднимается на каждом открытом, поднимается и фокусируется и никогда не сбрасывается; Покрашенный сырым, длинный сеанс пронес окна мимо 1300 MUI, и каждое меню, Потоп и диалог в приложении затем открылся за ними — в DOM, Расположенный, невидимый. Док теперь читает счетчик только для приказа и рисует каждое окно в своем ранге в небольшой полосе выше 200 (windowStacking.ts), Таким образом, укладка, которую решил магазин, сохраняется, и ни одно окно никогда не достигает меню. слой. Подъемник над максимизированной панелью использует тот же окрашенный уровень, поэтому Он также находится в меню. Проверено в реальном Chrome: окно и конец полосы на краю прикрепленной панели (890px от 1440), незакрученные накладки панели без перелива, и после 2000 клики фокусировки (счетчик за 1300) меню на уровне MUI по умолчанию Краски над окном.
· kamo-internal
Максимизируйте рядом с навом, а не над ним
Максимальное окно инструмента, используемое для просмотра всего обзора. Он, его навигатор столбец и его полоса вкладок были прикреплены (0,0) на уровне укладки дока, по обоим навам — так что член, читающий максимальное окно, не мог достичь Навигация до тех пор, пока ее не уберут. Панель теперь все ниже NavTop и справа от NavPri. Окно, окно навигатор и полоса начинаются на краю рельса и под баром, читать из Две одинаковые переменные CSS AuthedChrome компенсируют содержимое страницы (paneGeometry.ts), поэтому расширенный рельс перемещает страницу и панель вместе. Навигатор и полоса скользят внутри срезов, поэтому они выходят из За рельсом и баром, а не через них, и все трое следуют за ним. Железная дорога переключается с собственным временем свинца и тропы окна. В то время как окно максимизировано, навигатор также должен действовать на него: - Опция, которая переходит в PAGE объявляет nav:page first, и каждое окно все еще на экране откладывается как шестиглавый - в противном случае страница будет загружаться Под крышкой. Нажмите на страницу, на которой вы уже находитесь: это Попросите посмотреть эту страницу. - опция, открывающая TOOL WINDOW, отмечает свой инструмент: open with origin: 'nav'; и одна воронка, через которую проходит каждый открытый проход, превращается в максимизированный: Правда. Новое окно забирает панно, старое переходит в шестиголовое через собственный своп магазина, а навигатор и вкладки следуют за новым окном — к его ведро, в список терминалов или в сторону для инструмента без навигатора. Оба применяются только в то время, когда окно держит панель (звонок участника). с Ничто не максимизирует клик навигатора ведет себя точно так же, как раньше. Правила чистые (navPaneRule.ts) и nav только объявляет (app/lib/navIntent.ts); **************** не работает на голом инструменте: открытом или маршрутизаторе. толкать Написано на поверхности. Крытые: варианты и меню Navs, Настройки, палитра команд, логотип, KamoMobile, таблетка плана, ссылки NavTop и Колокол, кнопка Exec2Exec и ряды Центра Взаимодействия. Выпадение фиксируется в том же изменении: - Висячий пик рельса и центр взаимодействия (панель и фон) сидели на z 26-30 под панелями при 201 и подъеме, поэтому, как только навигатор был доступен, они Открыли за ним. Слои нава поднимаются над панелями своими собственными уровень пока один удерживается, сохраняя свой порядок (navLayerZ, useMaximizedPaneZ). Шов навигатора вычислил его ширину как x указателя, верно только в то время как Навигатор стартовал в 0. Он измеряется от собственного левого края штурмана. Теперь, и закрывает ширину на долю панели, а не экрана. - Шахматы и Холдем выбрали свою планировку из окна. Внутренняя ширина при максимизации — Слишком широк у рельса, и несвежий на рельсовой переключатель. Они измеряют свои собственные root (useMeasuredBox, перенесённый в инструменты для совместного использования); **************************** Так держать.
· kamo-shared-library
Список участников, которые имеют право на платформу
countHoldersOf ответил, сколько; стол Exec2Exec нуждается в ком. Грантовые ряды Один только неправильный ответ на вопрос «кто работает на столе» — владелец верхнего уровня Каждая платформа вправо без строки — так что это одна рука этого ответа. И звонящий добавляет владельца и проверку занятости.
· kamo-internal
Исполнительный канал в консоли
Прямая линия между руководителем клиента и руководителями KamoCRM: чат Половина окна поддержки без билета, статуса, рейтинга и очереди. Ветер для инструментов. Собственный каталог, потому что проект охранника разрешает инструмент файлы из собственной папки — и проходит VACUOUSLY для инструмента только для чата, так как Текстовая область композитора живет в приложении / компонентах / чате. Таким образом, ближайший охранник Рукописный, не выведенный из зеленого клеща. Аттрибуционная линия. Название, организация и официальное название должности в одной строке который раньше держал имя, а по обе стороны — точка канала, которая бланком, под которым кто-то писал, что относится к старшему члену сообщения от другой организации. Сторона сообщения вычисляется Идентификатор пользователя на рендере и никогда не хранится; сохраненная сторона - это то, что однажды Пузыри приземляются на неправильную сторону невоспроизводимо. Большинство руководителей не имеют работы Заголовок записан, так что два поля - это нормальное зрение, и там нет болтовни. Разделитель. Навтоп. Слева от колокола, в неподвижном хроме и намеренно из NAV REGISTRY — в этой кодовой базе нет «неподвижного» флага, и он не используется. Реестр - это то, как иконка становится неуязвимой. Отправляет свой собственный разговор явным образом: инструмент ограничен в одном экземпляре и непромокаемый открытый Инструмент с крышкой - это поднятие, а не навигация, поэтому кнопка в противном случае Поднимите любого руководителя, которого последний раз открывал Центр взаимодействия. Его значок подсчитывает собственный разговор зрителя, а не общий стол — оператор — это стороны в каждом разговоре, на который они отвечают, и нажатие на личный контроль не может Очистить чужое непрочитанное. Центр взаимодействия. Седьмое ведро, право членов команды, видимое только для Владелец EXEC2EXEC ACCESS внутри платформы. Список пользователей, а не сессий Большинство из них никогда ничего не писали со своими собственными организациями. сокращенно «Acme +3», полный список в подсказке, в атрибуте заголовка и в строке ария-лейбл, так что до него можно добраться без зависания. ALL BUCKETS - это оба полоса и список разрешений с сохраненным предпочтением, поэтому один производный видимый список кормится Все три читателя и участник восстановлены на вкладке, которую они больше не могут видеть. вместо того, чтобы застрять на значении Tabs без Tab. Добро пожаловать. Первый письменный контроль, когда-либо размещенный на платформе General вкладка. Back Fill сидит за подтверждением и сообщает, что он сделал; он закрыт на EXEC2EXEC ACCESS, а не права вкладки, потому что нажатие на нее пишет сообщения в разговорах людей.
· SecurityService
Сохранить приветственное сообщение
Приветствие, которое платформа отправляет сначала через Exec2Exec, в конфигурации платформы Синглтон, где уже живут все остальные платформы. Две новые конечные точки вместо двух дополнительных клавиш на /system-config Вся суть изменения: у однопользовательского GET вообще нет фильтра для каждого поля. Отказаться Несанкционированно Поля управляют только письмом, поэтому допуская PLATFORM GENERAL к любому из своих ворот передаст каждому генеральному оператору базовый URL KamoPBX, идентификатор главной учетной записи, имя учетной записи, пользователь администратора, область и конечная точка WSS, Плюс модель извлечения id. Одно текстовое поле, на которое они имеют право, в обмен Для двух других закладок. Blank saves as null: не сконфигурированные и не сконфигурированные в ничто Инструкция, и Back Fill не работает в этом состоянии. Само право реализуется в MediaService, где ведутся разговоры. PlatformRightCoverageTest записывает его под ENFORCED ELSEWHERE с файлом, который Держите ворота.
· MediaService
Служить исполнительному каналу
Беседа с собственной аудиторией и отсутствие билетной техники Форма SystemBug: собственный пакет, собственный контроллер, собственная видимость и MediaSession/MediaObj повторно используется для всего ниже. Ничего не должно было быть вытесняется из очереди поддержки, потому что чат без билетного ряда никогда входит в него. Право (Exec2ExecEligibility) является простым членом организации верхнего уровня. Владелец любой организации, в которую они подписаны, и «владелец» - это два факта, а не один: Флаг TeamMember и orgs.user id owner, потому что собственная организация платформы Владелец не обязательно должен нести флаг. Правые ворота платформы только сторона KamoCRM, и canOperate проходит через SessionPlatformFacts, никогда AuthHelper.hasRight, который голый флаг GD обходит. Каждое сообщение несет имя, организацию и официальное название должности, решенное в прямом эфире из id участника автора — UNIQUE (ORG ID, USER ID), так что id уже Имена, постоянно, из какой организации кто-то писал. Ничто не является Снимок сделан в ряд. У простого члена нет названия работы вообще, что является Нормальный случай именно для населения это служит, поэтому линия ухудшается до двух. Поля вместо того, чтобы следовать за сепаратором. Один разговор, два адреса (адрес чат и руководство сеанса), потому что браузер держит путеводитель — это черновой ключ композитора, непрочитанный ключ и STOMP Тема — в то время как строка закодирована id. Оба решения для одной и той же строки; ни один из них не Чтобы быть прибранным. Объявление сообщения поклонникам всех трех кадров, а не только темы сессии: Тема, на которую подписывается только смонтированное окно, заключается в том, как значок не перемещается до тех пор, пока Перезагрузка страницы. Автор приветствия намеренно не присоединяется к сессии - Участник платформы SYSTEM является реальным подписавшимся лицом, и присоединившись к ним поставить Каждый разговор о развертывании в непрочитанный снимок одного человека. Вторая строка членства для одного и того же пользователя содержит существующий указатель чтения. конец. Непрочитанное правило для пользователя, и эта функция является единственным местом, где один пользователь В ней есть несколько строк, и все, что они написали, они пересчитывают. Первая организация как непрочитанная против себя. Приемлемость более широка, чем приветствие нарочно: владелец организации получает Канал, но приветственное сообщение адресовано, как указано, самому Камокрому простые члены. DDL - вручную (ddl-auto: нет, InitializerService неразвернут) ******************* — это рекорд.
· kamo-shared-library
Фонд исполнительного канала
Один постоянный разговор между руководителем клиента и KamoCRM Руководители, настроенные на пользователя, а не на члена, что позволяет ему кто владеет четырьмя организациями, из которых они подписаны в, в то время как каждая сторона по-прежнему хранится в качестве идентификатора участника, поэтому каждое сообщение записывается от какой организации ее автор написал. - MediaSessionType.EXEC2EXEC(5) - прилагается, никогда не вставляется; колонка @Enumerated (ORDINAL) Не похоже на SUPPORT TICKET: нет статуса, нет очереди, нет Задание, ничего, что закрывается. **************** — добавлено последним, потому что getSortOrder() Возвращение ординала(). Врата, которые отвечают за стол, никогда не имеют права Во-первых, объединение двух даст каждому руководителю стол. - Exec2ExecChat, спутник на позвоночнике MediaSession, как SystemBug, С UNIQUE на USER ID: «Есть только один чат Exec2Exec» факт, а не соглашение, что и определяет расу между Кнопка NavTop и автоматическое открытие, разрешающее один и тот же чат на одном входе. - ChatMessageDto прибыль **************************** Эстафета копии из списка разрешений, поэтому поле, которое он не объявляет, не достигает браузера в История читалась правильно, в то время как живые сообщения показывали простое имя. ********************** Первое приветствие посылает платформа. - findChatMembershipsByMemberId именует EXEC2EXEC. Этот вопрос является открытым и Оставляя тип из него - это вся причина, по которой социальный разговор может быть Никогда нигде не показывайте непрочитанный счет.
· kamo-signer-monorepo
Обои организации за каждой страницей и белая копия на ней
камо-знак был единственной белой поверхностью, все еще рисующей плоский серый цвет. Теперь играет приглашая фоновую фотографию организации способом камо-логина, камо-регистрации, консоли и KamoMeet уже делают ******************* "backgroundImageCount" <themeBase>/img/bg/{n}.webp', 'backgroundOrder' honored, a 8s dwell with a 1.2s crossfade Что останавливается под преференции-снижение-движение, 404s упал, и первичный по сравнению с ним на 6%. «OrgBackground» живет в @kamo/theme, рядом с остальной частью тематической конвенции об активах. Подписчик имеет одну копию, а не пятую. Он устраняет слизь на каждом проходе и повторное зондирование на KAMO THEME REAPPLY: макет крепится до того, как какой-либо токен был подтвержден, поэтому Отправитель неизвестен поначалу и известен только после приземления сеанса. ** Он ничего не делает, когда у организации нет обоев**, и все, что на него отвечает Закрепляется на том же самом факте через «useOrgWallpaper()». Белая копия над '- фоном' - который на Тематический арендатор — это #ffffff — будет невидимым, поэтому это никогда не должно быть безусловным цветом. Смонтированные на четырех корнях, никогда не находящиеся внутри экрана: фазы обернуты в «motion.div». оживляет «y», а трансформированный предок представляет собой содержащий блок, поэтому «положение: фиксированный» слой Внутри один скользит с переходом вместо того, чтобы стоять за ним. ** Оттенок 6% - это оттенок, а не скрам.** Белая копия тела над обоями «Крм» — залитые солнцем джунгли Меры 1.6:1 только с умыванием и только камо-логином «rgba (2,0,36,0.2)→0.05» Достигает ~2:1; ему это сходит с рук, потому что каждое слово, которое он показывает, находится внутри замороженной карты. Экран завершения не имеет карты, поэтому затемнение является центрированным радиальным под линейным экраном. градиент, настроенный путем выборки отображаемых пикселей. Измеряется по обеим реальным арендаторам, каждая строчка АА: 8.5:1 для заголовка, 5.5:1 для нижнего колонтитула, худший случай 5.5:1. ** Экран завершения становится белым** — заголовок и подсказка к загрузке с тремя строками Как сообщается, поскольку они разделяют одну поверхность, а половина исправления читается как ошибка. ** Логотип - это любой цвет, выбранный арендатором. ** 'crm'' - почти черно-зеленый, невидимый на экране. Фотография под скрамом. ThemeLogo берет «overlayColor» и маскирует произведение искусства под цвет. силуэт, тот же механизм камо-логина и KamoMeet используют для собственного наложения логотипа организации Настройка; подписывающий проходит #ffffff точно, когда обои вверх. ** Карта приветственного экрана «сообщение с» была на 4% промыта над «прозрачной»** — на квартире фон предполагаемый почти белый оттенок, над фотографией 96% фотография, с темной цитатой В нем. Вместо этого он смешивается с #fff на обоях. ** Публичная страница цитаты** также получает ее, окрашенную из собственного «--цитата-первичного» и скрытую в «@media print» — файлы клиента остаются белой бумагой. Его орг псевдоним читается из "/public/<alias>/" сегмент URL бланка, который "QuoteMapper.themeAsset" уже строит, Вместо добавления поля в «PublicBranding» и передислокации двух служб Java для одного приложения. таблица стилей. Правило печати повторяет селектор html [data-kamo-wallpaper] полностью Специфика: медиа-запрос не добавляет ничего своего, поэтому голая страница «.quote-page» будет потеряна. Правило экрана и печать прозрачной страницы. Проверено в браузере против "crm" и "sign-pink" из ведра живой темы - добро пожаловать, согласие, рабочая область документа и завершение - с контрастом, измеренным от отображаемых пикселей чем с пристальным взглядом.
· kamo-internal
Завершите страницу категории — ширина, одна обратная стрелка, реальные слова
Три менеджера были написаны, чтобы сидеть внутри вложенной вкладки вкладки. Как страница Им нужно было пространство, которое у них есть сейчас. - Конфигурация ограничивалась 560px, поэтому два переключателя сидели в столбце с большинством Широкий экран пуст рядом с ними. Это сетка, которая заполняет ширину и Сворачивается обратно в одну колонку под 360px каждая. Две задние стрелы, направленные на одно и то же место — одна в хлебной крошке, одна рядом Название. След теперь читается как след; стрела — единственный «задний ход». Doc Types - это вкладка, на которую большинство организаций приземляются, не имея ничего в ней. Пустое состояние, его наборы инструментов для переключения и пять сообщений об ошибках не были переведены. Английский. Пустое состояние также велело читателю нажать кнопку уже на Экран; он говорит, для чего нужен тип документа. - Две кнопки кричали в верхней части MUI. Загрузка категорий больше не устанавливает состояние синхронно внутри эффекта. Правила React Compiler отвергают это как каскадный рендер, и повторная запись теперь ударяет по каскаду. Токен от клика вместо этого. Фетч отменяется на unmount, пока он там.
· kamo-internal
Категории - это таблица, и каждая из них открывается как собственная страница
/settings/features/docs несут восемь вкладок: Общие, затем семь, которые каждая монтируется Те же три руководителя против другого порядка. Семь копий одного экрана Четверо из них оказались неправы. Ординалы были написаны, когда ImageAssocType был длиной шесть констант. дополняющий Константы и выдающие им явные идентификаторы перемещали CALL RECORDING с 3 на 7, а Страница не могла заметить: вкладка с надписью «Call Recordings» редактировалась. MY DOCS, "My Documents" MEET RECORDING, "Meet Recordings" SYSTEM WIDE, «System-Wide» VM RECORDING и CALL RECORDING были недоступны. Ничего не вышло, Потому что ординал всегда является действительной категорией. Между тем категории, которые были никогда не давал закладки проведенной фактической работы — этой организации тридцать шесть типов документов Все сидят на LOAN, который страница вообще не могла открыть. Итак, страница теперь состоит из двух вкладок. Общие сведения о том, что такое управление документами; категории Это таблица каждой категории, которую может настроить ОРГАНИЗАЦИЯ, обслуживаемая DocsService. из самого перечня, с папками, типами doc, определенными типами, порядками укладки и Документы, хранящиеся рядом с каждым. Строка открывается как собственная страница под **************************** Как это делает телефонный провайдер — хлебные крошки Назад к столу, тот же градиентный заголовок и конфигурация / Типы документов / Заказы складываются как реальные вкладки, а не серые, вложенные в панель. URL-адрес несет имя enum, никогда не является порядковым, поэтому сохраненная сегодня ссылка выживает. Следующий постоянный кто-то добавляет. Меньшие вещи, которые это фиксирует на пути в прошлое: - На вкладке «Общие» были представлены «Описание», «Заголовок категорий» и «Тело категории» — заполнители никто не заполнял. - Настройка стартовой площадки и меню настроек перечислены все семь мертвых вкладок. Категория, типы документов которой больше не могут применяться (Маркетинговые материалы) предлагает вкладку Doc Types; тот, чьи типы Doc просто выключены, говорит: Вместо того, чтобы позволять кому-то определять типы, которые ничего не делают. - AssocTypeSettings держал старый вложенный бар вкладок и не оставил абонентов.
· DocsService
Обслуживать категории документов из перечня, который их определяет
Страница настроек docs назвала свои собственные категории и отправила ординал, в который она верила. Каждый имел. Эти порядки были написаны, когда ImageAssocType был шестью константами. длинные; добавление констант и предоставление им явных идентификаторов переместило CALL RECORDING из Порядковый от 3 до 7, и страница не заметила. Закладка с надписью «Call Recordings» Редактировал MY DOCS, «Мои документы» редактировал MEET RECORDING. «Meet Recordings» редактировал SYSTEM WIDE, «System-Wide» редактировал VM RECORDING и CALL RECORDING были недоступны. Ничего не получилось, потому что Ординал всегда является действительной категорией, но не той, которую вы имели в виду. **************************** Ответы с самим списком Порядок и имя всегда оставляют здесь вместе и звонящего. Также никогда не нужно гадать. Категория квалифицируется, когда папки или типы документов включены или организационно-установленная — именно «здесь есть что установить», которую отбрасывает ассоциации, которые существуют только как сантехника (скриншот ошибки, изображение) фотография кадра, резюме по заявке на работу. Каждая строка также несет подсчеты, которые показывает таблица настроек: определены типы doc и Активные, укладывающие заказы и хранящиеся документы. Три общеорганизационных чтения, сгруппированных в память, а не запрос на категорию, поэтому один запрос заполняет всю таблицу Где раньше требовалось тридцать девять страниц.
· kamo-signer-monorepo
Компактный триггер для меню подписанной копии
Список конвертов отправителя и любая таблица назначенных пакетов имеют ряд, а не слот героя. Таблетки с маркировкой не подходят. 'iconOnly' дает то же меню голый значок загрузки, чтобы открыть из. Альтернативой была индивидуальная загрузка одного файла в каждом узком пространстве, как «скачать» «подписанная копия» означает три разные вещи на трех экранах.
· kamo-signer-monorepo
§ 7001 (c) раскрытие информации поставляется с кодом на двадцати двух языках
«@kamo/esign-core» теперь несет в себе само раскрытие информации о потребителе — шесть пунктов, на каждом языке Знаки продукта и «consentDisclosure (местный, бренд)», чтобы заполнить имя отправителя. Это было в Словарь Камо-сигнера; он принадлежит здесь по двум причинам. Показано на двух поверхностях, а Подписчик, следующий по электронной почте, должен согласиться с теми же словами, что и участник, подписавший то же самое. Документ внутри платформы. И это ВЕРСИОНАЛЬНО: 'Consent DISCLOSURE VERSION' на строку получателя в момент согласия и напечатанную на справке о завершении, так «Они приняли раскрытие» называет конкретный текст, что не может быть сделано, если перевод Вы можете пересмотреть слова, не сталкиваясь с версией. Таким образом, изменение формулировки является ударной версией здесь и в EsignCertificateService ESigService. Старые сертификаты продолжают называть старую версию, и в этом смысл ее наличия. Этап публикации теперь принимает либо учетные данные, которые принимает реестр. NPM PUBLISH TOKEN выходит на рынок Токен на предъявителя, который использует Камо-Джс, и то, что запущено 12016, не удалось, — этот секрет существует. на камо-джес, а не на этом репо. GIT CLONE TOKEN, который есть в этом репо, является пользователем Forgejo. токен; реестр пакетов принимает их только как BASIC auth и отвечает голым 401, когда один из них Он был послан как носитель, и нечего было сказать, что схема была проблемой. Сначала пробует носителя, падает Возвращаясь к основам, и доказывает учетные данные с «npm Whoami», прежде чем строить что-либо. Удостоверение, которое не может публиковать, говорит об этом, вместо того, чтобы пропустить три шага позже внутри «pnpm-публикации».
· ESigService
Настоящий сертификат о завершении и три копии подписанной записи
То, что прилагался плоский конвейер, составляло одну страницу на подпись, несущую семь строк: имя, адрес электронной почты, идентификатор участника, временная метка, способ захвата, IP, пользовательский агент. Нет маршрутизации, нет записи согласия, нет доставка или просмотр временной шкалы, отсутствие хэша подписанного документа, номера страниц - так что читатель не мог сказать Если они держали все это — и это существовало только внутри исполняемого PDF, где сторона Тот, кто хотел получить доказательства самостоятельно, не мог получить их. "EsignCertificateRenderer" рисует сертификат: конверт и оба отпечатка пальцев, стороны в порядке маршрутизации, а затем по партии вся история — роль, порядок подписания, статус, КАК они были аутентифицированный, временная шкала от приглашения к подписи, IP, устройство, способ захвата, и который Разглашение согласия они приняли на каком языке. Используется в обоих местах: плоский трубопровод Прилагает эти страницы к оформленному документу, и «EsignCertificateService» обслуживает те же страницы. как отдельный PDF. Один рендерер нарочно — вторая реализация — это второй набор аудита Заявления, которые могут не соглашаться с первым, и единственное, что аудиторская запись может никогда не делать, это противоречит самому себе. Сертификат защищен, никогда не хранится. Каждый факт на нем уже прочен у получателя. и строки подписи, поэтому сохраненная копия будет только второй вещью, которая может устареть; это также означает Конверт, подписанный до сегодняшнего дня, получает полный сертификат при первом запросе. ******************* на четырех поверхностях — сессия подписавшего, собственная сессия сотрудника копия, панель инструментов отправителя и внутренний API — с «оба» в виде zip. "/подписанный документ" остается Кроме того, он уже связан с доставляемой почтой и сериализован в другие службы. Были выявлены две вещи, которые были бы живыми дефектами: - 'Map.of' бросает NullPointerException на нулевую ценность, и один запрос с нулевым значением Тот, для которого существует ветвь: конверт, который не является полным, не имеет исполняемого PDF. Что = оба на конверте в полете было бы 500 вместо зип, держащего Сертификат. Он деградирует в зависимости от того, какая половина существует сейчас — кто-то преследует зашедшую в тупик подпись. Кто именно нуждается в аудиторской записи. - Zip хранит, а не сдувается (оба участника уже сжаты PDF) с записями Таким образом, одни и те же входы производят одни и те же байты, и тот, кто их получает, может проверить их. The Тест анализирует обоих участников как PDF-файлы, а не подсчитывает их: Хранимая запись с неправильным CRC Отклеивает мусор, который все еще выглядит как файл. (в нем нет пробелов, поэтому обертка только для слова запускает его с края), указывает отсутствующую временную метку вместо того, чтобы опустить строку — «Подпись: —», и ни одна строка не отличается Заявления, и только одно из них является доказательством — и штампы «Страница n м» после тела, потому что Пока тело не кончится, никто не знает, что такое м. Согласие теперь несет в себе место, в котором оно было передано, поэтому в записи говорится, какой из двадцати двух Переводы статьи 7001(c) раскрытия фактически прочитаны подписавшим.
· kamo-shared-library
Запись, чье согласие раскрыто подписавшим, и на каком языке
"согласованные" записи, что кто-то тикал коробку. 15 U.S.C. § 7001 (c) - список конкретных вещей Потребитель должен быть проинформирован ДО согласия - право на бумагу и любые сборы, как снять и Что это стоит им, что охватывает согласие, как сохранить их контактные данные в актуальном состоянии, а также аппаратное и программное обеспечение, необходимое для чтения и возврата записей. Эта формулировка переводится в Двадцать два языка, и он будет пересмотрен, поэтому сертификат, подготовленный после пересмотра, будет иным образом описывать раскрытие СРЕДСТВА, в то время как подписавший принял более раннее, в Язык записи не называется. «consent disclosure version» и «consent locale» написаны компанией ESigService в момент первое принятие и никогда не перезаписывание — повторное открытие подписывающей ссылки, повторное согласие и повторная датировка Старое принятие любой текущей формулировки - это единственное, что эти столбцы существуют, чтобы предотвратить. DDL применяется вручную на живом кластере (ddl-auto не везде): ALTER TABLE esign envelope recipients ADD COLUMN IF NOT EXISTS consent disclosure version varchar(32); ALTER TABLE esign envelope recipients ADD COLUMN IF NOT EXISTS consent locale varchar(16); Оба являются недействительными, и строки, которые согласились до того, как они существовали, читаются как «не записанные» на Вместо того, чтобы получить сертификат, они никогда не видели.
· kamo-signer-monorepo
Одна поверхность подписи для обоих приложений, и белая этикетка наконец-то рисует
Подписывающий пользовательский интерфейс существовал дважды — здесь и вручную копировался в мастера юридической казни Камо-Внутреннего отдела. И оба они оказались в обоих направлениях. "@kamo/esign-core", "@kamo/esign-ui" и «@kamo/doc-render» — это опубликованные пакеты, построенные и перенесенные в реестр Forgejo. Репо CI, а камо-внутренний потребляет их вместо своей вилки. Слияние заняло лучшую половину каждый: магазин kamo-internal (проверка формата, хранение, охраняемое на «местном хранилище», а не на Причины отклонения и не-дата. Компоненты принимают свои строки за PROPS — два приложения переводят Из двух разных словарей и компонента, который выбирает свои собственные ключи, может жить только в одном. Четыре дефекта, и один из них вызвал два других: ** Каждая кнопка MUI в этом приложении была прозрачной. «Поставщики» прошли «enableCssLayer: true», так что все MUI CSS приземлились в «@layer mui» — и предполет Tailwind, загруженный Безслойная «@tailwind base» превосходит многослойную CSS независимо от специфики. Измеряется: ".MuiButton-containedPrimary" вычислил "фоновый цвет: rgba(0,0,0,0)" "цвет: rgba(0,0,0,0,87)". Таким образом, «Agree & Continue» отображается в виде простого текста, а «Cancel» и «Cancel». «Принять и подписать» сидели рядом друг с другом в виде двух прогонов серого текста, читая как одно предложение. Как именно было сообщено. Предполетный 'p {маржа: 0 }' бил карту согласия 'mb' По той же причине, из-за которой все на этой странице было вместе. Камо-внутренний всегда Он установил свой эмоциональный кэш неслойным; сопоставление его фиксирует все это сразу. ** Логотип был сломанным изображением. ** 'ThemeLogo' вернулся к '/img/logo-full.svg', что делает это приложение. не обслуживать, а нарисовать разорванный глиф страницы браузера на месте отправителя. Теперь он ходит по список расширений для обоих вариантов (орг, отметка которого .png имеет запрашиваемый .svg, 404ed, и остановился там — «знак-розовый» — это именно та организация, и когда ничего не решается, она рисует Короткое имя в качестве словесного знака или вообще ничего до того, как токен назвал организацию. ** Фавикон и название вкладки никогда не были установлены, как и бренд организации CSS.** «DynamicMetaLoader» вычислил 'const slug = orgSlug | | getThemeSlug()' Однажды, в теле эффекта, до того, как какой-либо токен Утверждено: "". Слушатель «KAMO THEME REAPPLY» поднял вопрос о том, когда приглашающая организация была Повторите закрытие над тем же «» и вернитесь к охраннику. Таким образом,fig.json Он никогда не был на пути к подписанию. Решено по заявке сейчас, favicons REPLACE вместо Добавить, и заголовок "Sign - {Org Short Name}", как просили. Проверено против реального арендатора: «Sign - Sign Pink», четыре орг-фавикона, .png-марка и «--color-primary: #452d4e» вкладки, галочки и кнопки — палитра MUI не может содержать «var()», поэтому каждый бренд-носитель Компонент указывается на него явно. **Избиратель языка был глобусом над списком эндонимов**, так что подписчик, который не читает ни одного из них Латинским шрифтам не на что было ориентироваться. Флаги и родные имена теперь, тот же стол и те же смайлики Стек шрифтов как NavTop от kamo-internal. Он также появляется на экранах приветствия и согласия: он используется. прибыть только с TopBar, после того как подписавший уже прочитал английское раскрытие. Загрузки предлагают все три копии, где бы они ни предлагались: оформленный документ, сертификат. Завершение или оба застегнули ('/api/sign/download?what='). Сертификат является половиной Запись, которая приписывает подпись человеку; передача только PDF руки над половиной, что Ничего не доказывает. Ворота согласия теперь несут шесть пунктов 15 U.S.C. § 7001 (c) требует, чтобы потребитель был показан. Перед тем, как дать согласие, и местность, которую он был предоставлен в поездках с согласия, поэтому сертификат Можно сказать, какой из двадцати двух переводов был прочитан.
· kamo-signer-monorepo
Оформите поле «Дата подписи» и сделайте что-то только для чтения
Три изменения, из которых только первая — новая работа. **'signature date'** - поле, которое ESigService заполняет в момент, когда подписывающий знак - Никогда браузер, часы которого установлены и который является единственным значением сторона имеет Побуждение к искажению правового документа. Нет никакого контроля над этим: подписывающий видит дату, которую он будет нести, заблокированную, отформатированную из собственного местоположения сессии. и часового пояса, которые являются одинаковыми двумя значениями, сервер форматирует проштампованную дату. Превью и оформленный документ не могут не согласиться. ** «Прочитано здесь только декоративно»** Он находится в форме дизайна, это переключатель в kamo-internal’s properties panel и ESigService’s FieldCompletion почитают его. InteractiveField никогда на это не смотрел. Поле, помеченное только для чтения, представленное как обычное Ввод подписывающего может вводить свободно, и поскольку требуемость не навязывается поле только для чтения, это значение свободного типа было единственным значением на странице, которое не проверялось до того, как он был запечатан в документе. **signStore подсчитывал поля только для чтения по мере необходимости**, так что конверт, перевозящий один, мог на коробке без контроля в ней, в то время как СЕРВЕР рассматривал то же представление Он был полным и принял бы его. Порт камо-интернала этого файла уже был Они разошлись, чтобы исправить именно это; оба снова согласны, и теперь оба соответствуют завершению поля.
· kamo-internal
Поле даты подписи и отправка, которая допускает, что ничего не было отправлено по электронной почте
** "Отправлено" было не то же самое, что "доставлено", и диалог никогда не говорил этого.** ESigService отбрасывал результат каждого приглашения по электронной почте, так что отправитель, чья почта была отправлена Отказали все-таки показали "Документ, отправленный на подпись" - о точном провале сообщили сегодня где получателю никогда не говорили, что документ ждет. Диалог теперь показывает, что отправьте сообщение, и, когда приглашение не ушло, поставьте предупреждение, что Остановитесь, назовите адрес и перенесите кнопку отправки, а не отправьте Отправитель отправляется, чтобы найти строку на другой вкладке. ** Дата подписания.** Новый инструмент для подписи. Подписчик не имеет контроля над сервер записывает дату в момент, когда они подписывают, в своем часовом поясе и местонахождения организации, поэтому то, что написано в исполняемом PDF, не может быть подписанием; Часы браузера. Дизайнер показывает, что он заблокирован, не требует / только для чтения / проверки Настройка для него (это вопросы о входе, который не существует), и подписавший видит дату, которую он будет нести - отформатированный из собственного местоположения сессии и зоны Итак, предварительный просмотр и документ согласованы. Выяснилось три вещи, которые уже были сломаны: ** 'readOnly' был декоративным в обоих пользовательских интерфейсах. Флаг в форме дизайна, это Это переключатель в панели свойств, и ESigService чтит его - и ни один из них. InteractiveField когда-либо смотрел на него, поэтому поле «только для чтения» отображается как обычное поле. Ввод подписывающего мог вводить свободно. Потому что ничто не навязывает требуемость на поле только для чтения, это значение свободного типа было единственным значением на странице, которое не проверялось до того, как он был запечатан в документе. **Камо-подписчик вывескиStore подсчитал только для чтения поля, как требуется **, так что пакет Носить его так и не удалось — Финиш остался инвалидом и «следующим полем» Представление завершено. Порт Камо-Внутреннего уже исправил это; теперь оба согласны друг с другом и с полевым завершением. **Ничто не содержало вместе три копии лексики поля.** Два из них говорят: «ПОРТИРОВАННЫЕ ВЕРБАТИМЫ, не расходитесь в своих заголовках и ничто не принуждает его»; тип, добавленный к одному, отображается как голый текстовый ввод везде, молча, Потому что у каждого рендерера есть ветвь по умолчанию. Сейчас есть рвота. Диалог отправки также помечает каждую строку получателя слотом подписавшего, к которому он привязывается, и Заполняет слот шаблон уже прикрепляется к кому-то. Обязательным является позиция, и Сотрудники вообще никогда не видели слоты — так что на двухстороннем шаблоне единственное, что решает кто получил блоки работодателя и кто получил имя работника Сначала напечатали, но на экране ничего такого не было.

Ваша вселенная ждет.
Начните бесплатно через несколько минут. Добавляйте продукты, когда будете готовы — без миграции, без новых логинов.
Бесплатно навсегда — не требуется кредитная карта