Версия 3.1.3-pl
Дата выпуска 22.06.2026
Загрузки 1 341
Просмотры 8 996
!!! ВАЖНО!!! Не обновляйте до 3.0.1 это мажорное обновление где нет поддержки Modx 2. Если хотите перейти на эту версию, ПОЛНОСТЬЮ удалите старую и установите с нуля.

!!! ВАЖНО!!! Если после обновления, что-то не работает удалите все версии компонента из системы и установите заново последнюю.

!!! ВАЖНО!!! При установке компонент так же будут установлены pdoTools и FormIt. А если не установятся автоматически, нужно установить вручную.

Возможности:
1. Отправка данных полей форм на сайт без перезагрузки страницы.
2. Загрузка файлов любых размеров на сервер и прикрепление их к письмам.
3. Создание опросников (многошаговых форм)
4. Сохранение данных форм в localStorage и заполнение полей после перезагрузки.
5. Есть авторизация, регистрация, восстановление пароля и редактирование личных данных.
6. Добавление файлов к загрузке drag'n'drop.
7. Вывод данных с постраничной навигацией.

Особенности:
1. Использует cookie и localStorage.
2. Не требует вызова сниппетов для отправки формы.
3. Есть защита от ботов и внешнего доступа.
4. Можно корректировать работу с помощью событий.
5. Отправка возможна на события change и input.

Для всех кейсов есть примеры форм. Смотрите чанки.

3.1.3-pl

  • FIX: Устранён фатал при работе пакета на сервере — vendor/composer/autoload_files.php тянул удалённый phpstan/phpstan/bootstrap.php (require несуществующего файла после ручной чистки dev-артефактов в 3.1.2). Vendor теперь собирается без dev-зависимостей (composer install --no-dev), autoload_files.php не генерируется.
  • BUILD: Сборка переведена на глобальный shevartv/modx-builder с флагом --no-dev (стрипает dev-vendor перед упаковкой и восстанавливает dev-зависимости после). Устаревшая локальная копия package_builder, тянувшая dev-vendor в пакет, удалена.

3.1.2-pl

  • FIX: Устранены предупреждения PHP "Undefined array key" при обращении к необъявленным ключам массивов:
    • валидаторы requiredIf, passwordConfirm (необъявленные ключи $_POST);
    • валидаторы userExists, userNotExists (необъявленный ключ в карте префиксов при нестандартном параметре);
    • ValidationManager::setFieldsAliases (пара fieldNames без разделителя ==);
    • SessionManager::generateId ($_SERVER['HTTP_USER_AGENT']/REMOTE_ADDR в CLI/scheduler-контексте).
  • BUILD: Из транспортного пакета исключены dev-артефакты, ранее ошибочно попадавшие в сборку: ~1400 файлов фронтенд-node_modules, phpstan.phar (~26 МБ), composer.phar, composer-temp и phpstan-stubs.php. Размер пакета уменьшен с ~11 МБ до ~0.2 МБ.

3.1.1-pl

  • FIX: Переименован модуль UserBehaviorTracker → SessionLogger и cookie siubtsisl из-за блокировки корпоративными прокси/DLP по имени файла (ошибка 499).
  • FIX: Убран re-throw в Main._initModule — при падении любого модуля приложение продолжает инициализацию (graceful fallback), ошибка только логируется в console.error.

3.1.0-pl

  • Добавлена трёхуровневая антиспам-защита: Proof of Work (SHA-256 puzzle), шифрованная поведенческая подпись (AES-128-GCM), контроль времени заполнения формы.
  • Новые JS-модули: ProofOfWork, BehaviorSign.
  • Новые параметры пресетов: usePoW, powDifficulty, useBehaviorSign, minFillTime, maxBotScore.
  • Ротация challenge и ключа шифрования после каждой успешной отправки.
  • Карта защиты (protectionMap) передаётся на фронтенд через siConfig.
  • Добавлен метод PresetManager::resolvePreset() для устранения дублирования логики резолва пресетов.
  • Исправлен баг: сессионные пресеты не учитывались в buildProtectionMap().

3.0.3-pl

  • Исправлена ошибка: класс PaginationHandler не включался в транспортный пакет.

3.0.2-pl

  • Исправлено значение по умолчанию si_js_config_path (./sendit.inc.js → ../configs/modules.inc.js).
  • Исправлена опечатка asseetsUrl → assetsUrl в si_uploaddir (SendIt.php, SessionManager.php).

3.0.1-pl

  • Исправлены имена сниппетов в сборщике (убран ошибочный префикс si).
  • Добавлены недостающие сниппеты: Identification, requiredIf, checkPassLength, passwordConfirm, userNotExists, userExists.
  • Сниппеты сделаны статичными.

3.0.0-pl

  • Требуется MODX 3.0+ и PHP 8.1+.
  • Рефакторинг PHP: переход на пространства имён MODX 3 (\MODX\Revolution*::class).
  • Замена устаревших функций PHP (strpos → str_contains, substr → str_ends_with, $modx->toJSON → json_encode).
  • Удалён вызов $modx->getService('error') (устарел в MODX 3).
  • Вынесена пагинация в отдельный класс PaginationHandler.
  • Добавлены PHPDoc блоки во все классы и элементы.
  • Исправлены баги в JS: приведение типов в пагинации, замена устаревшего .send() на .fetch() в загрузчике файлов.
  • Интегрирован ESLint в JS-кодовую базу.
  • Добавлена интеграция со Scheduler: задача очистки сессий регистрируется автоматически при установке.
  • Добавлен resolver для автоматического создания таблиц при установке.
  • Подготовлена конфигурация сборки пакета через ComponentBuilder.

2.7.3-pl

  • Вернул в конфиг QuizForm параметр nosaveAttr.
  • Добавил проверку на тип значения перед вставкой сохраненных данных.
  • Добавил загрузку скриптов в админке

2.7.2-pl

  • Добавил событие JS 'si:send:reset:after', которое срабатывает после сброса формы.
  • Исправил ошибку удаления загруженных файлов.

2.7.1-pl

  • Сделал обязательным указание пресета, даже дефолтного, чтобы предотвратить ненужные отправки
  • Изменил порядок сохранения данных из чекбоксов и переключателей.

2.7.0-pl

  • Переработал невидимую капчу.
  • Добавил возможность использовать кастомный session_id вместо стандартного.

2.6.0-pl

  • Добавил класс UserBehaviorTracker для анализа поведения пользователя.

2.5.0-pl

  • Поменял порядок проверки на Email.
  • Добавил системное событие senditOnSetValue.

2.4.9-pl

  • Доработал добавление HTML в блоки.

2.4.8-pl

  • Исключил из проверки на SQL-инъекции email.

2.4.7-pl

  • Исправил ошибку вызова метода loadScript().
  • Добавил возможность запоминать пользователя при авторизации без пароля.
  • Добавил дополнительную санитизацию входящих данных для защиты от SQL инъекций.

2.4.6-pl

  • Сделал метод getWebConfig() публичным.

2.4.5-pl

  • Добавил селектор пресета в конфиг.

2.4.4-pl

  • Вынес инициализацию события 'si:init' в индексный файл.

2.4.3-pl

  • Сделал webConfig public.

2.4.2-pl

  • Исправил определение версии скриптов.
  • Переписал инициализацию с учётом того, что метод getInstance() возвращает промис.

2.4.1-pl

  • Сделал так чтобы метод getInstance дожидался полной инициализации перед возвращением экземпляра.

2.4.0-pl

!!! ОБНОВЛЯЙТЕСЬ С ОСТОРОЖНОСТЬЮ. ЕСЛИ ИСПОЛЬЗОВАЛИ КАСТОМНЫЙ КОНФИГ, ПЕРЕПИШИТЕ ЕГО В СООТВЕТСТВИИ С НОВВОЙ ВЕРСИЕЙ !!!

  • Немного переписал JS, чтобы модули подключались только если на странице есть хотя бы один элемент с селектором из поля конфигурации модуля rootSelector.
  • Метод Sending.prepareSendParams() заменён на метод Sending.sendRequest(), при этом обратная совместимость сохранена.
  • Метод Sending.send() заменён на метод Sending.fetch(), при этом обратная совместимость сохранена.
  • Добавил версионирование скриптов.
  • Добавил событие senditOnGetWebConfig для возможности прокидывать свои и изменять стандартные параметры веб конфига

2.3.1-pl

  • Добавил сброс ответа от сервера в JS.

2.3.0-pl

  • Обновил iziToast до 1.5.0
  • Добавил событие JS 'si:notify:before', которое позволяет задать опции показа уведомлений.
  • Поместил ответ сервера в свойство объекта Sending, теперь ответ сервера доступен где угодно так SendIt.Sending.result
  • Исправил ошибку автологина сразу после регистрации.

2.2.5-pl

  • Добавил возможность динамически выводить общее количество результатов указав в вёрстке блок с атрибутом [data-pn-total-results="presetName"]
  • Добавил возможность указывать ключи лексиконов для передачи сообщений и имён полей. Для этого нужно в параметрах сниппета указать ключ useLexicons в значении нужно перечислить через запятую пространства имён и темы для загрузки лексиконов в формате namespace:topic

2.2.4-pl

  • Исправил ошибку при которой уже загруженный файл добавлялся в список даже если общее количество при этом превышает допустимое.

2.2.3-pl

  • Правки предупреждений в PHP 8.
  • Добавил возможность передавать в качестве значения в поле из параметра userGroupsField строку с разделителем 'запятая'

2.2.2-pl

  • Для облегчения перехода с AjaxForm сделал параметр form синонимом параметра tpl.

2.2.1-pl

  • Исправил ошибку совместимости с ClientConfig в MODX 3.*
  • Если вы используете ClientConfig нужно добавить задачу в крон, которая запустит скрипт core/components/sendit/cron/run.php

2.2.0-pl

  • Добавил возможность генерации username при регистрации, для этого нужно не указывать в пресете параметр usernameField.
  • Добавил возможность авторизовать пользователя по любому полю, кроме extended. Поле должно содержать уникальное для конкретного пользователя значение.

2.1.7-pl

  • Небольшие правки в JS.

2.1.6-pl

  • Добавил в событие 'si:send:before' параметр submitter, который содержит элемент, который стал инициатором отправки.
  • Устранил критическую уязвимость при загрузке файлов.

2.1.5-pl

  • Добавил очистку блока вставки контента, если контента нет.
  • Добавил принудительную смену метода вставки если всего одна страница в пагинации.
  • Исправил условие получения корневого элемента(формы) в JS.
  • Добавил системное событие OnBeforeFileRemove и параметр forceRemove в класс SendIt для удаления файлов без проверки владельца.
  • Добавил параметры в событие sf:change
  • Добавил событие si:quiz:init
  • Добавил метод resetHandler() в модуль загрузки файлов.

2.1.4-pl

  • Исправил ошибку "Укажите почту получателя".

2.1.3-pl

  • Теперь на событие OnBeforeReturnResponse можно полностью менять возвращаемые на фронт данные.

2.1.2-pl

  • Исправил ошибку валидации для имён файлов содержащих больше одной точки в названии.

2.1.1-pl

  • Переименовал сниппет ResetPassword в PasswordReset, чтобы не было конфликтов со сниппетом компонента Login.

2.1.0-pl

  • Добавил возможность выводить пагинацию списком.

2.0.7-pl

  • Исправил фатальную ошибку определения $allowDirs.

2.0.6-pl

  • Добавил сниппет mx3RenderForm.
  • Адаптировал код под Modx 3.
  • Убрал возможность удалять папки с фронта.
  • Добавил системную настройку si_allow_dirs для указания разрешённых путей для удаления папок.

2.0.5-pl

  • Поправил ошибку в методе forgot().

2.0.4-pl

  • Поправил ошибку при которой не устанавливался класс ошибки при отправке данные на события change и input.
  • Добавил пресет simpleform.

2.0.3-pl

  • Заменил константы путей на опции.

2.0.2-pl

  • Поправил ошибку обзёрвера в JS.
  • Добавил в сниппет ResetPassword параметр toPls.

2.0.1-pl

Общее

  • Добавил проверку параметра antispam.
  • Добавил возврат ответа из сниппета ResetPassword.
  • Изменились параметры события OnBeforeFileValidate.

2.0.0-pl

Общее

  • Переместил основные классы в папку services.
  • Поправил пути по умолчанию в методе loadCssJs().
  • Избавился от использования сессий.
  • Убрал проверку частоты и количества отправок для форм не использующих хук Email или FormItAutoResponder.
  • Добавил параметры pauseBetweenSending и sendingPerSession для управления проверкой отправки на спам.
  • Добавил в параметры события 'OnGetFormParams' объект SendIt, теперь можно создавать много плагинов на это событие.
  • Убрал параметр event из метода prepareSendParams().
  • Поменял порядок параметров в методе prepareSendParams().
  • Переписал метод getExtends() так, чтобы он мог работать с другими файлами пресетов.
  • Добавил возможность автоматической вставки контента, для этого сниппет должен возвращать параметр html, а в пресете нужно указать параметры resultBlockSelector и resultShowMethod

Загрузка файлов

  • Добавил проверку на конечный слэш в методе removeDir() класса SendIt.
  • Добавил в плагин удаление загруженных файлов, срок хранения которых истёк.
  • Добавил системную настройку регулирующую срок хранения загруженных файлов si_storage_time.
  • Переписал отправку файлов, чтобы работала многопоточность.
  • Добавил очередь загрузки, если загрузка не началась - файл можно удалить из очереди кликом по полоске прогресса.
  • В процессе загрузки одного файла, можно добавлять другие файлы в очередь.
  • Загруженные файлы после перезагрузки страницы не удаляются, это позволяет продолжить загрузку, если она была прервана.
  • Добавил системную настройку регулирующую точность округления процентов при показе прогресса загрузки файлов si_precision.
  • Добавил параметр loadedUnit для пресета загрузки файлов, который позволяет указывать в каких единицах измерения показывать прогресс загрузки.
  • Добавил передачу параметра nomsg для обозначения автоматического удаления файла при очистке полей.

Квизы

  • Добавил в квиз JS событие 'si:quiz:progress'.
  • Добавил возможность убирать не нужные кнопки в квизе.

Идентификация

  • Переписал метод forgot, теперь сброс пароля надо подтверждать.
  • Добавил сниппет ResetPassword, который нужно вызывать для смены пароля.
  • Добавил сниппет userExists для проверки существования пользователя.
  • Есть два JS события ДО и ПОСЛЕ внесения изменений на страницу, и есть одно серверное событие для изменения параметров.

Пагинация

  • Добавил возможность вызывать любые сниппеты с постраничной навигацией.
  • Можно выводить на странице несколько блоков с пагинацией.
  • Можно динамически менять параметры вывода и выводить результаты с пагинацией.
  • Есть классическая пагинация, кнопкой или по скроллу.

1.2.6-pl

  • Исправил ошибку неопределенного конфига в обработчике загрузки файлов.
  • Добавил удаление класса disabled у кнопки назад.

1.2.5-pl

  • Добавил минимально необходимые стили.

1.2.4-pl

  • Поправил метод удаления файлов и директорий.
  • Удалил лишний параметр из JS метода квиза changeItem().
  • Поправил ошибку в загрузчике файлов при отсутствии в ответе параметра data.
  • Добавил в ответ сервера параметры вызова кастомного сниппета.
  • Добавил в квиз событие 'si:quiz:reset'.
  • Добавил в стандартный чанк письма вывод квиза.
  • Исправил ошибку обработки множества полей загрузки при отправки формы.
  • Добавил в JS метод getRoot()
  • Добавил в JS метод addInstances() в FileUploaderFactory
  • Добавил в FileUploader событие 'fu:preview:remove'
  • Добавил системное событие OnBeforeReturnResponse

1.2.3-pl

  • Оставил проверку на спам только в action.php

1.2.3-pl

  • Добавил возможность передавать параметры в метод prepareSendParams.
  • Добавил возврат результата запроса для возможности писать JS API.

1.2.2-pl

  • Убрал из возвращаемых на фронт данных объект класса SendIt.
  • Заменил событие OnHandLeRequest на OnWebPageInit это решило проблему с частой ошибкой "Невалидный токен".

1.2.1-pl

  • Добавил пример обращения к файловому сниппету.
  • Заменил обращение к методу $modx->runSnippet() на кастомный метод в основном классе.

1.2.0-pl

  • Добавил возможность через системные настройки задавать список не нужных в ответе сервера параметров.
  • Поправил ошибку вывода псевдонимов полей в чанке письма.
  • Добавил возможность передавать параметры валидации файлов из JS.
  • Добавил событие OnBeforeFileValidate, которое позволяет изменить параметры валидации.
  • Добавил параметр isTrusted для события 'si:quiz:change', позволяет отличить автопереключение от переключения пользователем.
  • Добавил обработку атрибута data-si-nosave в много шаговой форме, чтобы отключить переключение на последний шаг при загрузке страницы.
  • Добавил возможность загружать файлы перетаскиванием.
  • Исправил ошибку мигающего показателя прогресса в квизе.
  • Исправил ошибку обработчика ответа в опроснике при отсутствии пагинации в квизе.
  • Добавил обработку множества полей добавления файлов внутри одной формы.
  • Добавил обработку параметра validate, чтобы убрать переносы строк.
  • Изменил проверку куки в плагине, что убрать предупреждение.
  • Изменил проверку ключей в основном классе.
  • Добавил возможность автоматической авторизации после активации пользователя и переадресации на нужный ресурс по ID

1.1.2-pl

  • Поместил токен в сессию. Добавил проверку на наличие токена в сессии.
  • Создал сниппет RenderForm для любителей классических вызовов.

1.1.1-pl

  • Убрал стили по умолчанию
  • Убрал двойную отправку формы при нажатии на Enter
  • Поправил условия отправки по клику

1.1.0-pl

  • Добавил атрибут data-si-nosave для форм, которые не нужно сохранять
  • Добавил возможность отправить форму по клику на произвольный элемент внутри неё

1.0.9-pl

  • Исправил ошибку обработки формы без отправки целей
  • Добавил транслитерацию кириллицы в именах загружаемых файлах

1.0.8-pl

  • Изменил способ передачи параметров и заголовков в событие si:send:before
  • Исправил ошибку поиска формы в обработчике файлов
  • Добавил имя пресета в серверное событие OnGetFormParams
  • Добавил доступ к кнопкам в событии si:quiz:change
  • Удалил глобальные стили
  • Исправил невозможность указывать путь к кастомному коннектору

1.0.7-pl

  • Исправил баг создания папки для загрузки файлов.

1.0.6-pl

  • Добавил возможность указывать цели для метрики в коде шаблона в атрибуте data-si-goal.
  • Для одного элемента можно указывать несколько целей через запятую.
  • Цели указанные в вызове будут добавлены к указанным в шаблоне.

1.0.5-pl

  • Исправил баг с ошибкой передачи имени события
  • Сделал метод Identification::generateCode($modx) статичным
  • Переработал обработку ошибок, теперь их можно увидеть все, если есть текст

1.0.4-pl

  • Добавил возможность отправлять данные на сервер без формы
  • Добавил рекурсивное наследование

1.0.3-pl

  • Добавил ограничение общее количество отправок одной формы без перезагрезки страницы и ограничение на периодичность отправок
  • Удалил вывод логов в sending.js
  • Добавил возможность использовать параметры по умолчанию во всех формах.
  • Убрал обязательную очистку полей формы квиза
  • Изменил пути к стилям и скриптам на стандартные.
  • Добавил событие OnCheckPossibilityWork для возможности отменить ограничение на количество отправок для отдельных форм.

1.0.2-pl

  • Путь к пресетам указывается теперь относительно папки core
  • Добавил вывод сообщения из параметра vallidationErrorMessage
  • Исправлена ошибка отправки целой формы на события change и input.
  • Исправлена ошибка плагина из-за неверного пути к пресетам при вынесенной на уровень выше папке core.
  • Исправлена ошибка вызова функции удаления папки с загруженными файлами.

1.0.1-pl

  • В модуле SaveFormData добавил события si:set:before, si:set:after, si:change.
  • Исправил мелкие ошибки.
  • В основном классе поправил процесс формирования поля fields в массиве $_POST.

1.0.0-pl

  • Первая стабильная сборка.

1.0.0-beta

  • Первая сборка.

Последние обсуждения в сообществе MODX.pro