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

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

10.05
509
19433
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.



Для вывода формы непосредственно на странице достаточно прописать в нужном месте шаблона (начиная с версии 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


Жду ваших отзывов!
Обновлено: 27 ноября 2016
(Модуль обновлён до версии 1.3)

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

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

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

+

Комментарии

BlackDragon
BlackDragon 28 октября 2016 11:26
Ответов: 1 #5704
можете подсказать какую ссылку прописать для гугл конверсий в коде ссылки по вызову формы? Обычная кнопка <span class="uf-btn" data-uf-open="/engine/ajax/uniform/uniform.php" data-uf-settings='{"formConfig": "callback"}' style="font-size:14px;">Заказать обратный звонок</span>

Вот гугл инструкция:
Отслеживание кликов по кнопке. В приведенном ниже коде замените строку http://example.com/your-link на URL ссылки, а строку Download now! – на текст кнопки.
<button onclick="goog_report_conversion ('http://example.com/your-link')" href="http://example.com/your-link">Download now!</button>

Какую ссылку нужно прописать вместо onclick="goog_report_conversion ('http://example.com/your-link')" href="http://example.com/your-link" ? Заранее спасибо!
ПафНутиЙ
ПафНутиЙ 29 октября 2016 08:16
Ответов: 0 #5708
Ссылку вы можете указать на ваше усмотрение т.к. окно с формой не имеет прямой ссылки.
Ms_LittlE
Ms_LittlE 29 октября 2016 11:38
Ответов: 1 #5709
Здравствуйте. На DLE 11.1 при нажатии на кнопку выдает вот такую ошибку:
Parse error: syntax error, unexpected '[' in Z:hometest22.ruwwwengineajaxuniformuniform.php on line 43

Подскажите пожалуйста. В Чем проблема?
ПафНутиЙ
ПафНутиЙ 29 октября 2016 12:04
Ответов: 0 #5710
Обновите php хотя бы до 5.4
Ms_LittlE
Ms_LittlE 29 октября 2016 21:21
Ответов: 1 #5711
ПафНутиЙ,
Спасибо. Действительно помогла. У меня возникла проблема с кодировкой. У меня сайт Win 1251, залил файлы в стандартной кодировке, на сайте отображается нормально а в админке кракозябры одни в шаблонах. Перекодировал все файлы модуля в win 1251, залил на сайт, теперь в админке отображаются шаблоны нормально а на сайте в форме кракозябры((( У меня всегда путаница с этими кодировками. Подскажите пожалуйста. Как исправить? А за модуль отдельное, человеческое спасибо. Побольше бы таких разработчиков для сообщества DLE, уже WP бы переплюнули)))
ПафНутиЙ
ПафНутиЙ 30 октября 2016 12:07
Ответов: 0 #5715
Я не поддерживаю кодировку windows-1251.
Ms_LittlE
Ms_LittlE 29 октября 2016 21:23
Ответов: 0 #5712
Помогло***
nickfrost
nickfrost 29 октября 2016 22:47
Ответов: 1 #5713
как настроить модуль для отправки данных с формы на емейл?
ПафНутиЙ
ПафНутиЙ 30 октября 2016 12:09
Ответов: 0 #5716
Укажите свой email в конфге.
dreder
dreder 30 октября 2016 01:02
Ответов: 2 #5714
Доброго времени суток.Спасибо за ваш модуль,очень нравится.У меня при нажатии на кнопку отправить ,кидает на пустую страницу и выводит сообщение "error".Я так понимаю ,что есть где то конфликт скриптов.Так как я ничего не понимаю в скриптах ,то у меня к вам вопрос. Сможете ли вы(естественно не бесплатно) устранить конфликт и настроить форму отправки?
ПафНутиЙ
ПафНутиЙ 30 октября 2016 12:11
Ответов: 1 #5717
Проверьте не подключена ли библиотека jquery дважды - это самая частая ошибка.
dreder
dreder 30 октября 2016 16:25
Ответов: 0 #5718
Спасибо)Вчера решил проблему,все работает,спасибо за модуль!)
free-spirit
free-spirit 31 октября 2016 20:16
Ответов: 3 #5719
Здравствуйте. Постоянно читаю ваш блог, всё классно написано.
Был бы очень признателей если бы вы ответили на мой вопрос.
Поставил эту форму но не выходит сделать отправку не на e-mail а в CRM систему.
В старой форме это делалось так
<form action="/send/handler.php" method="post">
и в этом файле уже шёл запрос. А в вашей форме у меня не выходит найти место куда воткнуть эту строчку, чтобы заработало.
ПафНутиЙ
ПафНутиЙ 31 октября 2016 22:23
Ответов: 2 #5720
free-spirit
free-spirit 2 ноября 2016 17:36
Ответов: 1 #5721
Добрый вечер. Извиняюсь но не нашёл куда втыкать эту строчку.
Ведь в вашей форме нету php файлов. Может подскажете?
ПафНутиЙ
ПафНутиЙ 2 ноября 2016 21:41
Ответов: 0 #5722
Я вам показал куда вставить ваш код в файле модуля
В старой форме это делалось так
<form action="/send/handler.php" method="post">
websot
websot 3 ноября 2016 06:10
Ответов: 1 #5723
Дядя Паша =), подскажите как в файле конфигурации добавить несколько Email адресатов, которым будут приходить письма с сайта?
ПафНутиЙ
ПафНутиЙ 7 ноября 2016 22:53
Ответов: 0 #5727
Через запятую.
chaser3000
chaser3000 3 ноября 2016 17:20
Ответов: 11 #5724
Здравствуйте! Установил модуль точно по инструкции. Не работает ((( Прочитал все вопросы - решения не нашел. Скрин проблемы: https://yadi.sk/i/wlEFg52Ny3Wou
Подскажите, где копать? И еще, для чего в архиве файл dle_module_install.php?
chaser3000
chaser3000 7 ноября 2016 19:39
Ответов: 0 #5726
Похоже, на форум никто не заходит(((
ПафНутиЙ
ПафНутиЙ 7 ноября 2016 22:54
Ответов: 9 #5728
dle_module_install.php?module=uniform запустит установку модуля.
Ошибку нужно смотреть на сайте, гадать по яндекс.диску я к сожалению ещё не научился.
chaser3000
chaser3000 7 ноября 2016 23:27
Ответов: 6 #5730
http://dle.svcomp.ru/
http://dle2.svcomp.ru/
разные версии DLE, кнопку пробовал добавить в первой новости. сайт тестовый, логин-пароль от админки отправил в личку. установка модуля не запускается...
ПафНутиЙ
ПафНутиЙ 7 ноября 2016 23:36
Ответов: 5 #5731
http://joxi.ru/D2P0J4YcoD5x23
либо не хватает прав, либо что-то не так с хостингом.
chaser3000
chaser3000 7 ноября 2016 23:43
Ответов: 0 #5732
отправил новые данные. Можете глянуть, что там не так?
chaser3000
chaser3000 9 ноября 2016 00:50
Ответов: 3 #5737
разобрался, на сервере Timeweb по умолчанию ставится PHP версии 5.3 (зачем?). Обновил до 5.6, все заработало. Но нормально заработало только на DLE 11, на 10 появляется затемнение без надписи... Посмотрите пожалуйста, данные у Вас есть
ПафНутиЙ
ПафНутиЙ 9 ноября 2016 22:40
Ответов: 2 #5740
Не вставляйте кнопку вызова модуля в текст новости.
chaser3000
chaser3000 10 ноября 2016 17:59
Ответов: 1 #5741
На статической странице тоже не работает: http://dle2.svcomp.ru/123.html
ПафНутиЙ
ПафНутиЙ 10 ноября 2016 21:13
Ответов: 0 #5742
Далее в нужном шаблоне, в нужном месте вставить кнопку вызова ajax-окна формы:


каким образом контент статической страницы относится к шаблону?
chaser3000
chaser3000 8 ноября 2016 01:03
Ответов: 1 #5733
попробовал запустить на денвере, он ругнуля на 18 строку файла dle_module_install.php
проверил код файла на разных сайтах, все ругаются на 18-ю строку ($stepsHeadings = [)
ПафНутиЙ
ПафНутиЙ 8 ноября 2016 21:49
Ответов: 0 #5734
Обновите php хотябы до 5.4

Информация

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