ПафНутиЙ-Блог » Модули » 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)
Закрыть

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

+

Комментарии

michus
michus 25 октября 2015 19:05
Ответов: 4 #5216
"P.S. Но я бы на такую кнопку не стал нажимать" почему ??)
ПафНутиЙ
ПафНутиЙ 25 октября 2015 19:54
Ответов: 3 #5217
Прочитайте внимательно текст, написанный на кнопке smile
DimaTiunov
DimaTiunov 25 октября 2015 20:11
Ответов: 0 #5218
Хех, зделай)
michus
michus 29 октября 2015 20:50
Ответов: 0 #5221
ПафНутиЙ,С кнопкой разобрался )) Все работает , вот только поля не обязательные к заполнению не пойму в чем причина !
olesya
olesya 2 ноября 2015 23:13
Ответов: 2 #5224
Уважаемый Пафнутий, увидела ваш модуль, обрадовалась и установила ваш модуль на тестовый сайт с движком версии 10.2 Но он не работает sad Что делать? Где-то ошиблась?
http://dle-test.eurodir.ru/ (кнопка "обратная связь вверху)
ПафНутиЙ
ПафНутиЙ 2 ноября 2015 23:40
Ответов: 1 #5225
Вы подключили jqury два раза
1. http://joxi.ru/Y2LkL7ahk7Xwm6
2. http://joxi.ru/KAgW9yVuzEZJAl

Уберите лишнее подключение, думаю второе лишнее.
olesya
olesya 3 ноября 2015 00:01
Ответов: 0 #5226
Убрала второе подключение и всё заработало. Модуль шикарный и незаменимый.Спасибо!
djinn
djinn 3 ноября 2015 03:23
Ответов: 3 #5227
Спасибо за отличный модуль!
Есть три вопроса:
1. Можно ли как то вывести одну форму для звонка в одной категории и другую такую же но с другим названием в другой категории?
2. Как добавить поле для сообщения в форму для звонка?
3. Или как добавлять необходимые поля для заполнения?
ПафНутиЙ
ПафНутиЙ 4 ноября 2015 20:17
Ответов: 2 #5228
1. Можно. Достаточно использовать тег
[categor=x]

2. Посмотреть как это сделано в другом шаблоне и повторить так же.
3. см п.2
djinn
djinn 5 ноября 2015 00:30
Ответов: 1 #5231
Спасибо за подсказки!
Это получается тут можно самому какие хочешь формы создавать путем создания папок для ни и файлов...?
ПафНутиЙ
ПафНутиЙ 5 ноября 2015 00:50
Ответов: 0 #5232
да, именно для этого модуль и делался smile
michus
michus 5 ноября 2015 16:38
Ответов: 1 #5233
Добрый вечер. Есть 2 вопроса .
1)Поля не обязательные, как поправить ? http://studioyour.ru/viveki.html
2) После прописи кнопки в шаблоне статической страницы кнопка появилась и в правилах при регистрации ! Как ее убрать из правил ?
ПафНутиЙ
ПафНутиЙ 5 ноября 2015 19:57
Ответов: 0 #5234
1. Почитайте в статье раздел про config.tpl
2. Почитатйте про тег availale
michus
michus 5 ноября 2015 20:14
Ответов: 0 #5235
ПафНутиЙ,1) Спасибо за развёрнутый ответ!! Как же я раньше не догадался его прочитать !
olesya
olesya 10 ноября 2015 00:41
Ответов: 2 #5239
Уважаемый Пафнутий, установила ваш отличный модуль и почти всё настроила. Возникли трудности лишь с полями селект. У меня два таких поля. Я их прописываю в config, но информация из этих полей всё равно не поступает в письме. Прописываю через запятую, вот так - selectFields = pole1,pole2
Пробовала и с кавычками, но без разницы. Где косячу?
ПафНутиЙ
ПафНутиЙ 11 ноября 2015 21:27
Ответов: 1 #5242
Посмотрите как сделано в шаблонах, идущих в комплекте с модулем, проверьте отправку письма на них, если всё ок — сделайте по аналогии.
olesya
olesya 12 ноября 2015 03:57
Ответов: 0 #5244
Посмотрела в тестовом и всё сделала. Спасибо.
west
west 13 ноября 2015 01:39
Ответов: 0 #5245
Всё работает...месяц полёт нормальный. БОМБА, впрочем как и предыдущие работы
west
west 13 ноября 2015 01:43
Ответов: 1 #5246
Есть ли решение чтоб с даными с формы, отправлялся url откуда запрос?
olesya
olesya 13 ноября 2015 14:48
Ответов: 0 #5247
Такая функция есть. Тег {current_page}
ganniebal
ganniebal 17 ноября 2015 00:49
Ответов: 1 #5250
Здравствуйте Пафнутий! Модуль супер, но есть одно но - залил по инструкции на dle 10.6 - не работает. Тестовый сайт - http://4.u0138392.z8.ru/ - на главной странице висит Ваша кнопка. Помогите нубу разобраться...

Заранее спасибо.
ПафНутиЙ
ПафНутиЙ 19 ноября 2015 08:38
Ответов: 0 #5252
Проверил форму — работает. Что я сделал не так?
razrushutel
razrushutel 4 декабря 2015 13:27
Ответов: 3 #5282
Добрый день! Подскажите как сделать чтобы письмо приходило не от сервера, а от того емайла который вписал посетитель?
ПафНутиЙ
ПафНутиЙ 4 декабря 2015 19:39
Ответов: 2 #5283
Определение логики отправки email уведомления находится тут
razrushutel
razrushutel 6 декабря 2015 17:38
Ответов: 1 #5286
Не знаю что там делать((( подскажите пожалуйста, очень надо. Или скажите сколько это будет стоить?
ПафНутиЙ
ПафНутиЙ 7 декабря 2015 21:34
Ответов: 0 #5289
Напишите тиккет: https://github.com/dle-modules/DLE-UniForm/issues/new
посмотрим что не так.
sany-gapasyk
sany-gapasyk 5 декабря 2015 20:54
Ответов: 1 #5285
Добрый день, подскажи, как мне реализовать условие проверки на заполненность полей, а именно:
Нужно чтобы пользователь мог ввести либо свой телефон, либо свой email в одной форме?
ПафНутиЙ
ПафНутиЙ 7 декабря 2015 21:33
Ответов: 0 #5288
Делайте это на js.
KorsarSL
KorsarSL 27 декабря 2015 17:18
Ответов: 1 #5301
Уважаемый ПафНутиЙ!
Такой вопрос уже был:
при нажатии на кнопку экран затемняется но форма не показывается

Только вот где это поменять, до меня не как не дойдет!)
поменяйте кавычки по инструкции, либо приводите данные из атрибута data-uf-settings к json-объекту через

$.parseJSON('json');
ПафНутиЙ
ПафНутиЙ 27 декабря 2015 17:23
Ответов: 0 #5303
Адрес сайта?

Информация

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