ПафНутиЙ-Блог » Модули » UniForm — модуль универсальных ajax-форм для DataLife Engine

UniForm — модуль универсальных ajax-форм для DataLife Engine

16.03
571
22299
UniForm — модуль универсальных ajax-форм для DataLife Engine

Не подходит стандартная форма обратной связи? Нужна возможность использовать свои поля? Нужна защита от ботов и лёгкая настройка без использования БД? Тогда этот модуль для Вас!

Преимущества


  • Не использует БД. Для работы модуля не требуется дополнительное соединение с БД и он не хранит данные из форм.
  • Скорость работы. За счёт простоты реализации удалось достичь приемлемой скорости работы.
  • Лёгкость настройки и стилизации. Все настройки модуля, оформление email-сообщения и самой формы вынесены в файлы шаблона, а это значит, что вы можете кастомизировать внешний вид не только формы, но и email-сообщения так, как этого требует дизайн.
  • AJAX вызов и отправка форм. Это даёт максимальную защиту от автоматических заполнений и не обременяет пользователя разгадкой каптчи.


Требования к установке


  • Версия DLE: 10.2 и выше.
  • PHP 5.4 и выше.
  • Прямые руки.


Установка


  • Скачать актуальную версию модуля
  • Распаковать содержимое папки DLE-UniForm-X.X.X (X.X.X - номер актуальной версии модуля) в корень сайта.
  • В браузере запустить установку модуля по адресу: ваш_сайт/dle_module_install.php?module=uniform
  • Следовать инструкциям


Скриншоты форм, поставляемых в комплекте с модулем



Форма обратной связи
UniForm — модуль универсальных ajax-форм для DataLife Engine


Форма обратной связи, с ошибками
UniForm — модуль универсальных ajax-форм для DataLife Engine


Сообщение об успешной отправке сообщения из формы обратной связи
UniForm — модуль универсальных ajax-форм для DataLife Engine


Форма заказа звонка
UniForm — модуль универсальных ajax-форм для DataLife Engine


Форма заказа звонка, в процессе отправки
UniForm — модуль универсальных ajax-форм для DataLife Engine


Email, с заказом звонка
UniForm — модуль универсальных ajax-форм для DataLife Engine


Тестовая форма с примером обработки результатов отправки формы
UniForm — модуль универсальных ajax-форм для DataLife Engine


Настройка


  • Описание и примеры конфигурации вызова модуля можно найти в файлах, с именем config.tpl.
  • Описание и примеры параметров формы можно найти в файле {THEME}/uniform/test/form.tpl.
  • Описание и примеры параметров email-сообщения можно найти в файле {THEME}/uniform/callback/email.tpl.


Параметры, доступные в файле конфигурации (config.tpl):


  • templateFolder — Папка с шаблонами формы формы. Указывается подпапка, в папке uniform текущего шаблона сайта, в которой должны лежать файлы config.tpl, form.tpl и email.tpl. Например шаблон формы обратной связи (feedback) выглядит так:
    {THEME}/uniform/
    └── feedback/
    ├── config.tpl - файл конфига
    ├── email.tpl - файл email-сообщения
    └── form.tpl - файл вывода формы

  • nocache — Отключение кеширования модуля.
  • debug — Дебаг. Выводится распечатка конфига, массива данных, переданных через $_POST и массива данных, отправляемых на email.
  • required — Обязательные поля. Указываются имена полей, обязательных для заполнения.
  • hidden — Разрешенные скрытые поля. Такие поля передаются из атрибута data-uf-settings кнопки открытия формы. Например, если к кнопке открытия формы прописать
    data-uf-settings='{"formConfig": "feedback", "fields":{"field1": "value1", "field2": "value2", "field3": "value3"}}'
    и при этом в конфиге будет вот такая запись:
    hidden = field1,field3
    то поле field2 не будет выведено в форму. Это сделано для безопасности работы модуля.
  • sendmail — Отправлять email при заполнения формы?
  • emails — Адреса почты, на которые необходимо отправлять уведомление. Необходимо прописать один или несколько email-адресов, через запятую.
  • selectFields — Поля типа select. Необходимо перечислить через запятую имена всех полей, являющихся селектами.
  • checkboxFields — Поля типа checkbox. Необходимо перечислить через запятую имена всех полей, являющихся чекбоксами.
  • radioFields — Поля типа radio. Необходимо перечислить через запятую имена всех полей, являющихся радиокнопками.
  • sendAsPlain — Отправлять сообщение как простой текст.
  • sendToAuthor — Отправить письмо автору новости, если есть newsId (есть поле с name="newsId") и если автор разрешил получение писем с сайта.
  • sendToSender — Отправлять письмо так же на email, указанный в поле email.
  • allowAttachments — Разрешить прикрепление файлов.
  • maxFileSize — Максимальный размер загружаемого файла (в килобайтах).
  • allowedFileTypes — Разрешенные типы файлов, перечисляем расширения через запятую, без точек и пробелов.


Теги шаблонов


Список тегов, поддерживаемых в шаблоне form.tpl.
Вместо X следует прописывать имя инпута, селекта, чекбокса или радиокнопки. Имена не должны дублироваться.
  • {* текст *} — Служебный комментарий. Текст, заключенный в такие теги, не будет выведен в браузер.
  • [error]текст[/error] — выводит текст, если форма содержит ошибки заполнения.
  • [success]текст[/success] — выводит текст, если форма удачно отправлена.
  • [form]текст[/form] — выводит текст, если форма только что открыта, или отправлена с ошибками.
  • [debug]{debug}[/debug] — выводит дебаг.
  • [uf_token_error]текст[/uf_token_error] — выводит текст, если происходит попытка межсайтовой подделки запроса (CSRF Attack) или если конфиг формы изменился во время заполнения формы.
  • [uf_email_error]текст[/uf_email_error] — выводит текст, если поле имеет имя email, является обязательным и не проходит валидацию (наличие символа @ и точки).
  • [uf_default_value]текст[/uf_default_value] — выводит текст, если форма открыта впервые.
  • {uf_filed_X} — выводит данные, переданные в форму из текстовых полей в случаи ошибочного заполнения.
  • [uf_field_X="Y"]текст[/uf_field_X] — Выводит текст, если в текстовое поле X передано значение Y.
  • [uf_error_X]текст[/uf_error_X] — выводит текст, если текстовое поле содержит ошибку.
  • [uf_select_X="Y"]текст[/uf_select_X] — Выводит текст, если в селекте X отмечен пункт со значением Y.
  • [uf_select_X_Y]selected[/uf_select_X_Y] — Выводит текст, если в селекте X отмечен пункт со значением Y. Является вариацией предыдущего тега.
  • [uf_checkbox_X="Y"]текст[/uf_checkbox_X] — Выводит текст, если отмечен чекбокс с именем X, содержащий значение Y.
  • [uf_checkbox_X_Y]checked[/uf_checkbox_X_Y] — Выводит текст, если отмечен чекбокс с именем X, содержащий значение Y. Является вариацией предыдущего тега.
  • [uf_radio_X="Y"]текст[/uf_radio_X] — Выводит текст, если отмечена радиокнопка с именем X, содержащая значение Y.
  • [uf_radio_X_Y]checked[/uf_radio_X_Y] — Выводит текст, если отмечена радиокнопка с именем X, содержащая значение Y. Является вариацией предыдущего тега.


Список тегов, поддерживаемых в шаблоне email.tpl.
Вместо X следует прописывать имя инпута, селекта, чекбокса или радиокнопки. Имена не должны дублироваться.
  • {* текст *} — Служебный комментарий. Текст, заключенный в такие теги, не будет выведен в сообщении.
  • [header]текст[/header] — Тема письма.
  • {all_mail_fields} — выводит все поля, переданные из формы в удобном, для последующей вставке в шаблон, виде.
  • [uf_field_X]текст[/uf_field_X] — выводит текст, если текстовое пол X заполнено.
  • {X} — выводит данные, переданные в форму из текстового поля X.
  • [not_X]текст[/not_X] — Выводит текст, если в текстовое поле X пустое.
  • [uf_field_X="Y"]текст[/uf_field_X] — Выводит текст, если в текстовое поле X передано значение Y.
  • [uf_select_X="Y"]текст[/uf_select_X] — Выводит текст, если в селекте X отмечен пункт со значением Y.
  • [uf_checkbox_X="Y"]текст[/uf_checkbox_X] — Выводит текст, если отмечен чекбокс с именем X, содержащий значение Y.
  • [uf_radio_X="Y"]текст[/uf_radio_X] — Выводит текст, если отмечена радиокнопка с именем X, содержащая значение Y.
  • {send_date} — выводит дату отправки сообщения из формы, отформатированную в соответсвии с настройками DLE.
  • {current_page} — выводит URL страницы, с которой было отправлено сообщение.
  • [news_id]{news_id}[/news_id] — ID новости (если есть поле с name="newsId").
  • [news_autor]{news_autor}[/news_autor] — Логин автора новости (если есть поле с name="newsId").
  • [news_title]{news_title}[/news_title] — Заголовок новости (если есть поле с name="newsId").
  • [news_email]{news_email}[/news_email] — Email автора новости (если есть поле с name="newsId").
  • {site_home_title} — Выводит название сайта из настроек DLE.
  • {site_http_home_url} — Выводит адрес сайта из настроек DLE.
  • {site_short_title} — Выводит краткое название сайта из настроек DLE.
  • [user_name]{user_name}[/user_name] — Выводит логин пользователя, отправившего сообщение.
  • [user_fullname]{user_fullname}[/user_fullname] — Выводит полное имя пользователя, отправившего сообщение.
  • [user_email]{user_email}[/user_email] — Выводит email пользователя, отправившего сообщение.
  • [user_foto]{user_foto}[/user_foto] — Выводит ссылку на аватар пользователя, отправившего сообщение.
  • [user_land]{user_land}[/user_land] — Выводит то, что пользователь, отправивший сообщение, написал в поле "Место жительства".
  • [to_sender] текст [/to_sender] — Выводит текст для отправителя, если указан параметр sendToSender
  • [not_to_sender] текст [/not_to_sender] — Выводит текст для получателей псьма, отличных от отправителя, если указан параметр sendToSender


Добавлено в v1.2



Улучшения и исправления

  • Теперь если в форме есть заполненное поле с `name="header"`, такое поле будет автоматически подставлено в тему письма.
  • Исправлена ошибка на DLE 10.5+ с невозможностью указать email отправителя из формы.
  • Исправлена ошибка с экранированием кавычек в письме.
  • Если пользователь авторизован, то тег {uf_field_email} при открытии формы автоматически заменится на его email.
  • Убран тег {send_date=D.m.Y} т.к. он оказался нерабочим.
  • Исправлено некорректное поведение тега {send_date}.
  • Добавлен новый параметр конфигурации sendAsPlain — Отправлять сообщение как простой текст. Теперь можно отправлять письма как простые текстовые сообщения, без обработки html.
  • Добавлен новый параметр конфигурации sendToAuthor — Отправить письмо автору новости, если есть поле с name="newsId" и если автор разрешил получение писем с сайта.
  • Реализована возможность отправлять в письме данные из новости. Для этого необходимо передать в форму поле newsId. Пример шаблона в папке newsauthor.
  • Реализована возможность отправки сообщения на email автора новости. Для этого необходимо передать в форму поле newsId и в конфиге прописать sendToAuthor = y. Пример шаблона в папке newsauthor.


Новые теги для email-сообщений

  • [news_id]{news_id}[/news_id] — ID новости (если есть поле с name="newsId").
  • [news_autor]{news_autor}[/news_autor] — Логин автора новости (если есть поле с name="newsId").
  • [news_title]{news_title}[/news_title] — Заголовок новости (если есть поле с name="newsId").
  • [news_email]{news_email}[/news_email] — Email автора новости (если есть поле с name="newsId").
  • {site_home_title} — Выводит название сайта из настроек DLE.
  • {site_http_home_url} — Выводит адрес сайта из настроек DLE.
  • {site_short_title} — Выводит краткое название сайта из настроек DLE.
  • [user_name]{user_name}[/user_name] — Выводит логин пользователя, отправившего сообщение.
  • [user_fullname]{user_fullname}[/user_fullname] — Выводит полное имя пользователя, отправившего сообщение.
  • [user_email]{user_email}[/user_email] — Выводит email пользователя, отправившего сообщение.
  • [user_foto]{user_foto}[/user_foto] — Выводит ссылку на аватар пользователя, отправившего сообщение.
  • [user_land]{user_land}[/user_land] — Выводит то, что пользователь, отправивший сообщение, написал в поле "Место жительства".



Добавлено в v1.3


  • Новый, удобный установщик модуля.
  • Добавлена возможность пикреплять файлы к сообщению в форме. Для этого необходимо в конфиге указать параметр allowAttachments, а так же параметры maxFileSize (максимальный размер прикрепляемого файла) и allowedFileTypes (доступные типы файлов) при необходимости. Готовый шаблон для прикрепления файлов к сообщению — attachments.
  • Добавлен новый параметр конфигурации sendToSender. Если этот параметр задан, то письмо будет отправлено на email-адрес, указанный в поле email. Так же проверяется валидность этого адреса.
  • В шаблон email-сообщения добавлены новые теги, обрабатываемые в сообщении и в поле заголовке письма, когда активирован параметр sendToSender.
    [to_sender] текст для отправителя [/to_sender]
    [not_to_sender] текст для других получателей [/not_to_sender]
  • Добавлены почти все поля из профиля пользователя в шаблон email.
  • Добавлен вывод допполей из профиля пользователя в шаблон email.
  • Ко всем тегам в шаблонах email-сообщения добавлены противоположные теги [not_X], выводящие текст между ними, когда соответствующий тег {X} пуст.
  • Исправлена ошибка, когда пользователю разрешено менять шаблон сайта, а шаблон формы берётся из шаблона, установленного по умолчанию в системе.
  • Улучшения и оптимизация кода.
  • Теперь минимально-допустимая версия php - 5.4.



Добавлено в v1.4


  • Обновлён установщик
  • Добавлен новый параметр parseSendMail, добавляющий возможность производить манипуляции над данными перед отправкой email. В параметр передаётся путь к php файлу, без расширения, отностительно папки engine/modules. Например можно добавить в шаблон email-сообщения новые теги [footer]{footer}[/footer]. Для этого в конфиге прописываем parseSendMail = addFooter, создаём файл engine/modules/addFooter.php со следующим содержимым:
    <?php
    if ($arSendMail['select1'] === 'val1') {
    $mailTpl->set('[footer]', '');
    $mailTpl->set('[/footer]', '');
    $mailTpl->set('{footer}', $arSendMail['select1']);
    } else {
    $mailTpl->set_block("'[footer](.*?)[/footer]'si", '');
    }





Для вывода формы непосредственно на странице достаточно прописать в нужном месте шаблона (начиная с версии 1.1):
<div data-uf-inline="/engine/ajax/uniform/uniform.php" data-uf-settings='{"formConfig": "inline"}'>
<div class="uf-inline-loading"></div>
</div>


Для Отправки сообщения автору новости необходимо прописать в шаблон краткой или полной новости (начиная с версии 1.2):
<span class="uf-btn" data-uf-open="/engine/ajax/uniform/uniform.php" data-uf-settings='{"formConfig": "newsauthor", "fields": {"newsId": "{news-id}"}}'>Связь с автором новости</span>



Скачать модуль UniForm


Жду ваших отзывов!
Обновлено: 16 марта 2017
(Модуль обновлён до версии 1.4.0)

Похожие материалы

  • EditRating — модуль для лёгкого редактирования рейтинга в DataLife Engine
  • Easy Like - модуль организации системы лайков новостей для DLE 9.x - 10.x (обновлено до 1.4)
  • Block.Pro.2.5
  • Yandex Maps - модуль Яндекс карт для DLE (только UTF-8 версия, обновлено до 1.4.1)
Закрыть

Комментировать могут только зарегистрированные пользователи

+

Комментарии

ПафНутиЙ
ПафНутиЙ 19 декабря 2016 19:30
Ответов: 0 #5811
http://joxi.ru/DmB0ynLcOjYlAP
INKVIZITOR
INKVIZITOR 19 декабря 2016 21:50
Ответов: 3 #5812
А можете добавить расчет стоимости услуг в эту форму, ну вот человек выбирает какой то пункт и ему выводит сразу сколько стоит а если несколько то выводит общую стоимость
ПафНутиЙ
ПафНутиЙ 19 декабря 2016 22:04
Ответов: 2 #5813
Для этого не нужен модуль.
Вы можете реализовать это самостоятельно, с помоoью javascript.
INKVIZITOR
INKVIZITOR 19 декабря 2016 22:07
Ответов: 1 #5814
ПафНутиЙ, Покажите пример такого скрипта если не трудно
ПафНутиЙ
ПафНутиЙ 19 декабря 2016 22:34
Ответов: 0 #5815
Yamakasi
Yamakasi 24 декабря 2016 21:47
Ответов: 1 #5816
с наступающим всех, также прошу прощения если не в тему)
но помнится мы тут Павла просили к своей униформе сделать типо мини корзину, и не я один помню спрашивали и просили) но так как Павел часто сильно занят, по этому не взялся за идею, мы даже помню предлагали сделать, что то типо версии про, где будет эта функция (ну будет платной), ну так и осталось висеть в воздухе...

вообщем так сказать сейчас теперь есть нормальная корзина от Олега вот тут http://sandev.pro/shop/103-dle-cart-korzina-zakazov-by-sander.html так сказать поддерживаем автора, чтобы модуль развивался и кому нужно, вот оно чудо так сказать, в принципе в модуле также есть кнопка купить в 1 клик, которая сразу по сути в корзину кидает, НО на мой взгляд лучше попутно использовать старую добрую униформа совместно для быстрого заказа. то есть со связкой будет идеал!

не реклама, сори если не в тему ещё раз, просто точно помню не 1 человек был заинтересован в этом...
ПафНутиЙ
ПафНутиЙ 24 декабря 2016 22:03
Ответов: 0 #5817
Очень даже в тему!
Модули Олега всегда отличные и полезные, рад, что кто-то смог реализовать!
Asiuslik
Asiuslik 28 декабря 2016 18:40
Ответов: 2 #5819
А на dle 11.2 не будет вообще работать? В январе появится такая возможность?

При установке показало что слишком новая версия установлена
ПафНутиЙ
ПафНутиЙ 28 декабря 2016 21:49
Ответов: 1 #5821
Установку делаете по инструкции?
Asiuslik
Asiuslik 28 декабря 2016 23:21
Ответов: 0 #5823
Да там же инструкция в 3 пункта, ошибиться нереально)
Yamakasi
Yamakasi 28 декабря 2016 19:32
Ответов: 1 #5820
Цитата: Asiuslik
При установке показало что слишком новая версия установлена

так вроде пашет) Вы не установщиком ставьте, а тупо по старинке закидывайте файлы и всё. я установщиком тоже не смог установить, чего то там не так, не стал мучатся и разбираться, тупо по старинке закинул файлы как раньше - всё пашет! и не один раз проделывал так))
Asiuslik
Asiuslik 28 декабря 2016 23:21
Ответов: 0 #5822
Ок! спасибо
Lex
Lex 30 декабря 2016 00:20
Ответов: 0 #5824
ПафНутиЙ,
Модуль нужный спасибо. Но не заработал у меня к сожалению. Сайт на локалхосте php обновил до 5.4 как того требует модуль. Всё скопировал но модуль при установке пишет файл конфигурации не найден. Пытался править путь до него результат ноль. Подключил в шаблоне по инструкции форму inline при попытке отправить сообщение просто перебрасывает на файл в папке аякс. Что я делал не так?
souz21
souz21 9 января 2017 18:06
Ответов: 1 #5827
При переходе установщика: сайт.ру/dle_module_install.php

Файл с конфигурацией установки модуля не найден, возмжно установочные файлы модуля не скопированы.
ПафНутиЙ
ПафНутиЙ 9 января 2017 19:31
Ответов: 0 #5830
Пожалуйста, ещё раз прочитайте инструкцию по установке (она в тексте выше).
souz21
souz21 9 января 2017 18:13
Ответов: 1 #5828
На dle 11.2 что-то перестали приходить письма автору новости. Шаблон и настройки по умолчанию, ничего ен менял.
Настройки как и раньше: PHP Mail
souz21
souz21 9 января 2017 18:16
Ответов: 0 #5829
Хотя на другом сайте работает. Проблема в другом...
win32kot
win32kot 10 января 2017 12:38
Ответов: 1 #5834
Здравствуйте! Не могу установить uniform по инструкции. При попытки установки пишет "Установленная версия DLE слишком новая. Необходимо установить DLE не выше 11.1. ". У самого DLE 11.2
Помогите, спасибо
ПафНутиЙ
ПафНутиЙ 10 января 2017 19:51
Ответов: 0 #5836
Измените вот в этой строке https://github.com/dle-modules/DLE-UniForm/blob/master/engine/modules/uniform/install/config.php#L33 на нужное значение и установите модуль.
win32kot
win32kot 11 января 2017 00:13
Ответов: 1 #5839
ПафНутиЙ,
при тестировании шаблона заявки test на почту приходит сообщение вида
Заполнена тестовая форма
[morefield1]{morefield1}[/morefield1]
[not_morefield1] morefield1 is empty [/not_morefield1]
[morefield2]{morefield2}[/morefield2]
[not_morefield2] morefield2 is empty [/not_morefield2]
[field1]{field1}[/field1]
[not_field1] field1 is empty [/not_field1]
[field2]{field2}[/field2]
[not_field2] field2 is empty [/not_field2]
[email]{email}[/email]
[not_email] email is empty [/not_email]
[select1]{select1}[/select1]


как исправить? заранее спасибо
ПафНутиЙ
ПафНутиЙ 11 января 2017 00:32
Ответов: 0 #5841
Следите за обновлениями: https://github.com/dle-modules/DLE-UniForm/issues/44
aluckyanov
aluckyanov 15 января 2017 19:14
Ответов: 1 #5848
Добрый вечер! Скажите пожалуйста, можно ли добавить формы на одну страницу с пометками, не используя разные шаблоны формы?

Например на одной странице разные тарифы и кликнув на тариф "1000 рублей" и отправив форму, на почту автоматически придёт пометка "1000 рублей".

<span class="uf-btn"
data-uf-open="/engine/ajax/uniform/uniform.php"
data-uf-settings='{"formConfig": "feedback"}'
>Обратная связь</span>
ПафНутиЙ
ПафНутиЙ 15 января 2017 19:17
Ответов: 0 #5849
Да, вы можете передавать данные из шаблона через скрытое поле.

hidden — Разрешенные скрытые поля. Такие поля передаются из атрибута data-uf-settings кнопки открытия формы. Например, если к кнопке открытия формы прописать
data-uf-settings='{"formConfig": "feedback", "fields":{"field1": "value1", "field2": "value2", "field3": "value3"}}'

и при этом в конфиге будет вот такая запись:
hidden = field1,field3
aluckyanov
aluckyanov 15 января 2017 19:39
Ответов: 2 #5850
ПафНутиЙ, постарался вникнуть и понять, но так и не понял.

Я сделал
ПафНутиЙ
ПафНутиЙ 15 января 2017 20:42
Ответов: 1 #5851
Достаточно сделать так:
data-uf-settings='{"formConfig": "feedback", "fields":{"tarif": "1000р"}}'


в конфиге прописать:
hidden = tarif
aluckyanov
aluckyanov 15 января 2017 22:59
Ответов: 0 #5852
Спасибо большое! Всё заработало!!
vaniya92
vaniya92 17 января 2017 17:01
Ответов: 2 #5853
А несколько форм можно создавать?
ПафНутиЙ
ПафНутиЙ 17 января 2017 20:31
Ответов: 1 #5856
Да, сколько душе угодно smile
vaniya92
vaniya92 18 января 2017 04:54
Ответов: 0 #5861
Спасибо, буду пробовать) еще и бесплатный, был бы платным, купил бы не раздумывая.
sitennov
sitennov 19 января 2017 17:08
Ответов: 2 #5862
Добрый день.
Подскажите, где и как проставить цели из метрики на успешную отправку с формы.
Спасибо.

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.