[AjaxForm] 1.2.0 Поддержка отключённых сессий у анонимов

Наконец-то дошли руки допилить AjaxForm. Была проблема при отключённых сессиях для анонимов (настройка anonymous_sessions, указывается только для контекстов!) – сессии отключены, а значит пробросить параметры сниппета, которые необходимы при ajax действиях, невозможно.

Теперь, в новой версии, если сессии включены или вы авторизованы на сайте в админке (что соответственно создаёт сессию), работа происходит как и раньше через сессии. А если сессия отключена, то параметры сниппета пробрасываются через кеш сайта – в кеше создаётся файл с параметрами сниппета.

Также, влил некоторые PR, которые давно висели:

– Украинский язык,
– Параметр сниппета clearFieldsOnSuccess, который говорит, надо ли очищать форму при успешной её отправке,
– В отправляемые данные добавлена передача value кнопки, которую юзер нажал (удобно, если на форме несколько кнопок),
– В default.js заменён document.write на document.body.appendChild,
– Вырезан type="text/javascript" из тега <script> при инициализации на фронте.
Павел Гвоздь
17 сентября 2021, 12:19
modx.pro
995
+16
Поблагодарить автора Отправить деньги

Комментарии: 14

Sergey (Sentinel)
17 сентября 2021, 12:21
0
Вот спасибо Паша тебе большое!
    Сергей Шлоков
    18 сентября 2021, 09:45
    0
    Жаль, что не прислушались к моей рекомендации шифровать параметры и сохранять их в форме. Данных получится не больше 1Кб. Уверен, даже мобилы потянут. А плюсов много — можно использовать как CSRF токен, не нужна инвалидация кэша (эта проблема решается в текущем обновлении?), привязка не к сессии, а к пользователю.
      Павел Гвоздь
      18 сентября 2021, 09:49
      0
      Это решение временное, чтобы AjaxForm работал с выключенными сессиями у анонимов. Криптовать параметры и пробрасывать всё через фронт (как тут) надо не выборочно для анонимов без сессий, а для всего AjaxForm, чтобы вообще отказаться от сессий. Я сделаю такой апдейт, но потом.
        Алексей
        23 сентября 2021, 10:14
        0
        о, это было бы круто! а то я уже пробовал ловить в шаблоне настройки регуляркой:
      Alexey
      18 сентября 2021, 23:23
      0
      За отмену document.write отдельное спасибо! Гугл спид тест будет доволен. Не скажу, что критично прямо, но постоянно выводит предупреждение.
      Иван
      19 сентября 2021, 15:32
      0
      Теперь ajaxform не работает. Ошибка в 61 строке default.js
        Jameson
        20 сентября 2021, 01:35
        0
        Ошибки теперь вылезли в консоли:

        scripts.js:2 jQuery.Deferred exception: Cannot read properties of undefined (reading 'defaults') TypeError: Cannot read properties of undefined (reading 'defaults')
        Uncaught TypeError: Cannot read properties of undefined (reading 'defaults')
            at HTMLDocument.<anonymous>

        Правда formit отрабатывает… Как исправить?

        Ругается на строку:

        $(document).ready(function () {
                    $.jGrowl.defaults.closerTemplate = '<div>[ ' + afConfig['closeMessage'] + ' ]</div>';
                });
          Павел Гвоздь
          20 сентября 2021, 15:45
          0
          Видимо из-за
          В default.js заменён document.write на document.body.appendChild,
          Пока временно замените обратно то, что здесь github.com/bezumkin/AjaxForm/commit/0a40febd8fecf3821c465c0d8483e76d17ac5f2e
            Павел Гвоздь
            23 сентября 2021, 15:37
            0
            Поправил в 1.2.1. Сейчас должно работать корректно.
              Иван
              23 сентября 2021, 21:55
              0
              Здравствуйте. Сегодня делал новый сайт там все равно выдает ошибку. Если у вас не выдает, то могу заново скопировать js из 1.2.1 и написать какую ошибку. По памяти — ругается на какую-то строчку в submitEvent или $submitToggler. Как-то так называется…
                Павел Гвоздь
                24 сентября 2021, 03:36
                0
                Опишите подробный процесс, как воспроизвести ошибку. И дайте сайт, где она воспроизводится.
            Юрий
            13 октября 2021, 21:00
            +1
            После обновления стала вылетать ошибка в консоли при отправке формы:
            undefined is not an object (evaluating '$submitter.length')
            Письмо уходит, а вот JGrowl уже не появляется
              Павел Гвоздь
              17 октября 2021, 07:00
              0
              1.2.2-pl
              ==============
              - Fixed JS error `undefined is not an object (evaluating '$submitter.length')`
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              14