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

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

10.05
545
20874
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)
Закрыть

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

+

Комментарии

Руслан
Руслан 6 июля 2015 20:01
Ответов: 0 #4932
Присылает просто Привет! {field1}
GRESIUS
GRESIUS 9 июля 2015 15:45
Ответов: 1 #4942
Присылает на мыло:
[field1]{field1}[/field1] : тестовый текст поле 1
[field2]{field2}[/field2] : тестовый текст поле 2
[field3]{field3}[/field3] : тестовый текст поле 3
[field4]{field4}[/field4] : тестовый текст поле 4

как поправить?
ПафНутиЙ
ПафНутиЙ 12 июля 2015 11:01
Ответов: 0 #4948
Впишите в шаблон email.tpl нужные теги.
Руслан
Руслан 10 июля 2015 20:48
Ответов: 1 #4944
У меня выдает error возможно такое из-за кириллического домена?
ПафНутиЙ
ПафНутиЙ 12 июля 2015 11:02
Ответов: 0 #4949
Скорее всего нет.
zoma
zoma 12 июля 2015 09:25
Ответов: 2 #4945
сделал все по инстукции перехожу по ссылке http://webkomplekt.ru/engine/ajax/uniform/uniform.php

пишет ERROR
ПафНутиЙ
ПафНутиЙ 12 июля 2015 11:03
Ответов: 1 #4950
По этой ссылке не нужно переходить, её нужно вызывать через ajax с передачей нужных параметров.
zoma
zoma 13 июля 2015 21:54
Ответов: 0 #4956
вы мне так и не помогли
zoma
zoma 12 июля 2015 11:10
Ответов: 0 #4952
ну я вызвал и ajax все равно не пашет просто страницу не открывает и все <span class="uf-btn" data-uf-open="/engine/ajax/uniform/uniform.php" data-uf-settings='{"formConfig": "feedback"}'>Обратная связь</span>
zoma
zoma 12 июля 2015 11:13
Ответов: 1 #4953
Я вставил этот код в нужное место. у меня не отображается как ссылка, отоброжается просто как текст. не возможно кликнуть
ПафНутиЙ
ПафНутиЙ 13 июля 2015 22:30
Ответов: 0 #4957
адрес сайта?
zoma
zoma 14 июля 2015 18:43
Ответов: 1 #4960
http://webkomplekt.ru
ПафНутиЙ
ПафНутиЙ 14 июля 2015 21:19
Ответов: 0 #4961
Устраните ошибки доступа к файлам.
Но вообще очень странно, что владелец сайта, занимающийся созданием сайтов не может открыть консоль в браузере и посмотреть что не так с его сайтом.
Dix77
Dix77 18 июля 2015 17:09
Ответов: 1 #4966
при не правильном вводе информации окно обновляется и все что было написано становится кракозябрами. как решить эту проблему?
ПафНутиЙ
ПафНутиЙ 18 июля 2015 21:02
Ответов: 0 #4967
Используйте кодировку utf-8
Dix77
Dix77 18 июля 2015 21:40
Ответов: 1 #4968
ПафНутиЙ,
Кодировку движка?
ПафНутиЙ
ПафНутиЙ 19 июля 2015 10:59
Ответов: 0 #4969
Да, желательно.
Dix77
Dix77 19 июля 2015 11:03
Ответов: 1 #4970
ПафНутиЙ,
А подругому можно как нибудь решить эту проблему? не меняя движок. может в самом модуле что ни будь сделать
ПафНутиЙ
ПафНутиЙ 19 июля 2015 11:24
Ответов: 0 #4971
Можно, но самостоятельно. Я не работаю с кодировкой windows-1251 и поддерживать её не собираюсь даже в платных модулях, мне проще перекодировать весь сайт в utf-8, чем городить лишние конструкции в модулях.
Dix77
Dix77 20 июля 2015 08:32
Ответов: 1 #4972
Спасибо большое winked уже решил проблему smile
uragun
uragun 3 марта 2016 17:46
Ответов: 0 #5431
Подскажите как решили, очень нужно! заранее спасибо - кодировку движка и сайта уже не поменять! А автор не ответит(
djgelius
djgelius 3 августа 2015 21:34
Ответов: 3 #4986
Здравствуйте!
Мне вот такое сообщение приходит:
[field1]{field1}[/field1] : 1
[field2]{field2}[/field2] : 2
[email]{email}[/email] : mymail@mail.ru
[select1]{select1}[/select1] : val1
[select2]{select2}[/select2] : val2
[checkbox1]{checkbox1}[/checkbox1] : oneCheck
[checkbox2]{checkbox2}[/checkbox2] : two
[radio1]{radio1}[/radio1] : two

это ваш тестовый вариант!
ПафНутиЙ
ПафНутиЙ 3 августа 2015 21:39
Ответов: 2 #4987
так и должно быть, посмотрите каким тегом организован вывод данных и всё станет понятнее.
djgelius
djgelius 3 августа 2015 21:45
Ответов: 1 #4988
т.е. значит форма у меня работает можно теперь шаблон пилить для себя
ПафНутиЙ
ПафНутиЙ 3 августа 2015 21:47
Ответов: 0 #4989
Да, вы можете взять текст, который пришел на email и воткнуть в шаблон, это по сути готовые теги.
Yamakasi
Yamakasi 6 августа 2015 00:11
Ответов: 1 #4991
сори если туплю, а вот с помощью данной формы можно реализовать, что то типо заказ в 1 клик? ну на карточке товара поставил, а когда приходит письмо уже к нам, чтобы передавало так сказать значение - ну или титл темы или урл откуда или же доп.поле и т.д.. ну например с помощью так сказать dle и заказ в 1 клик - сделать инет магаз)) чтобы понятно было, что хочет человек или где он сделал заказ...
ПафНутиЙ
ПафНутиЙ 6 августа 2015 00:14
Ответов: 0 #4992
Да, можно создать скрытое поле и подсоввыввать туда нужное значение.
Yamakasi
Yamakasi 6 августа 2015 00:34
Ответов: 1 #4993
ПафНутиЙ,
сори, вот тут вижу http://store.pafnuty.name/11-autorss.html но не могу тут найти тему)) есть демка? просто интересно он грабит по rss всё? ну там ненужно указывать откуда до куда и т.д..
он будет работать типо как readme и подобные как раньше были же сайты в который канал добавил и публикует... я знаю, что в dle есть свой модуль, но не понял в чём Ваш отличается до конца и не понял далее развиваться не будет? да и ещё он нормально работает или же есть косяки какие то?

заранее спасибо за ответы...
ПафНутиЙ
ПафНутиЙ 6 августа 2015 00:42
Ответов: 0 #4994
есть и ошибки в модуле, но он в стадии беты, поэтому не публикую нигде.
Тянет только то, что отдаёт rss-канал, отличие от стандартного модуля rss в том, что он ресайзит картики, чистит код от всякого хлама и удобнее в работе, но не предназначен для начинающих.
Yamakasi
Yamakasi 6 августа 2015 00:48
Ответов: 1 #4995
Цитата: ПафНутиЙ
есть и ошибки в модуле, но он в стадии беты,

и когда стабилка будет? как раз была идея и тут смотрю у Вас есть он, да и ценик божеский)))
Цитата: ПафНутиЙ
но не предназначен для начинающих

в каком смысле ещё?

Информация

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