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

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

16.03
621
34 319
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

Ответы на частые вопросы



[Q]: Почему ничего не работает?
[A]: C вероятностью в 80% у вас дважды подключена бибилиотека jQuery (20% - проверьте шаги по инструкции).

[Q]: Сделано всё по инструкции, но на модальное окно не открывается.
[A]: У вас дважды подключена библиотека jQuery.

[Q]: Не приходит письмо.
[A]: Проверьте конфиг модуля (поле emails должно быть раскомментировано). Если всё ок — проверьте папку спам (недопочты типа mail.ru, rambler и прочие noname почтовые службы очень часто при неправильно настройке сервера отправляют письма в спам, особенно, если у вас shared-хостинг). Если в папке спам ничего нет — проверьте логи почтового сервера (узнать о расположении логов можно у хостера). Самый простой способ избежать конфузов при отправке почты - подключить почту для домена.




Жду ваших отзывов!

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

Комментарии

ПафНутиЙ
ПафНутиЙ 5 июня 2016 01:02
1. Проверьте конфиг модуля.
2. Проверьте логи почтового сервера.
3. Проверьте папку спам в почте.
djgelius
djgelius 5 июня 2016 01:09
да точно в спаме была, мне прислало письмо а там не поймешь что к чему с кодировкой проблемы у меня в cp1251, это решаемо?
ПафНутиЙ
ПафНутиЙ 5 июня 2016 01:15
l2banners
l2banners 8 июня 2016 14:58
Скажите пожалуйста, а можно как-то сделать, что бы можно было прикреплять файлы к форме?
l2banners
l2banners 8 июня 2016 15:08
l2banners,
Точнее даже не файлы, а изображения

И еще вопрос, можно как-то сделать, что бы после отправки перебрасывало на указанную страницу?

Нашел ваш ответ в комментариях, увидел что эта функция еще в разработке. Бужу ждать спасибо за модуль!

В uniform.js нашел вот это:

// Функция, выполняемая после удачной отправки формы
function ufDone(responseText, statusText, xhr, $form) {

	var $responseText = $(responseText),
		responseResult = ($responseText.is('form')) ? $responseText.html() : responseText;

	if (statusText == 'success') {
		laddaLoad.ladda('stop');
		$form.html(responseResult);
	}
}


и дописал вот так:

// Функция, выполняемая после удачной отправки формы
function ufDone(responseText, statusText, xhr, $form) {

	var $responseText = $(responseText),
		responseResult = ($responseText.is('form')) ? $responseText.html() : responseText;

	if (statusText == 'success') {
		laddaLoad.ladda('stop');
		$form.html(responseResult);
		window.location = "http://адрес_редиректа.html"
	}
}

Написано что "Функция, выполняемая после удачной отправки формы" но редирект выполняется в любом случае даже если форма не заполнена, что я делаю не так?
l2banners
l2banners 8 июня 2016 21:16
Я прописал в файле .htaccess в корне сайта в самом начале вот это и все заработало:

AddDefaultCharset utf-8
AddCharset utf-8 *
<IfModule mod_charset.c>
CharsetSourceEnc utf-8
CharsetDefault utf-8
</IfModule>
ПафНутиЙ
ПафНутиЙ 9 июня 2016 20:59
Удачная отправка формы, это ситуация, когда от сервера вернулись данные, в т.ч. при первом запросе формы.

Пропишите нужный js код в блок, который выводится, когда сообщение удачно отправлено.
l2banners
l2banners 9 июня 2016 22:32
Спасибо, все получилось.
Kloun1990
Kloun1990 27 июня 2016 20:16
Здравствуйте! У меня такой вопрос, будут ли приходить письма на почту если сайт в данный момент находится на локальном сервере?
ПафНутиЙ
ПафНутиЙ 27 июня 2016 22:43
Да, если ваш локальный сервер умеет отправлять письма на почту.
serg91100
serg91100 12 июля 2016 12:43
Здравствуйте. Не подскажите как связать вашу форму и дополнительные поля новостей? А именно, чтобы форма отправлялась на почту, которая была указанна в дополнительном поле в новости???
Заранее спасибо. Сутки бьюсь, не понимаю
samo733792
samo733792 14 июля 2016 12:15
Здравствуйте, у меня на сайте есть дополнительное поле пользователя телефон, возможно ли как то вызвать телефон из профиля если форму отправляет пользователь, так же как это сделано с E-mail?
ПафНутиЙ
ПафНутиЙ 19 июля 2016 01:35
https://github.com/dle-modules/DLE-UniForm/issues/22
ПафНутиЙ
ПафНутиЙ 19 июля 2016 01:35
Для этого вы должны доработать модуль.
samo733792
samo733792 19 июля 2016 09:07
Спасибо.
andros0789
andros0789 24 июля 2016 17:39
Паша подскажи пожалуйста как можно реализовать быстрый просмотр новости, при клике) Чтобы не ставить два модуля аякс и юниформ. Только через юниформ можно же реализовать? Просто не дойдет как)) как здесь rodeo-jeans.ком
andros0789
andros0789 24 июля 2016 18:54
Или например соединть их)чтобы быстрый просмотр был в модальном от юниформа)
ПафНутиЙ
ПафНутиЙ 24 июля 2016 20:05
Это два разных модуля.
Но вам ничто не мешает взять скрипт модальных окон, используемых в editRating и использовать его в ajaxFullStory.
Скрипт этот называется magnific-popup и он очень хорошо документирован.
andros0789
andros0789 24 июля 2016 22:11
ПафНутиЙ,
сделал немного по другому))
<script>
        
$(document).on('click', '[data-afs-id]', function () {
	var $this = $(this),
		$data = $this.data();

	$.ajax({
			url: dle_root + 'engine/ajax/full-story.php',
			type: 'GET',
			dataType: 'html',
			data: {
				newsId: $data.afsId, // Обязательная переменная
				preset: ($data.afsPreset) ? $data.afsPreset : '', // Название файла с настройками (необязательно)
				template: ($data.afsTemplate) ? $data.afsTemplate : '', // Название файла с шаблоном (необязательно)
			},
		})
		.done(function (data) {
			var $html = $(data);

			$.magnificPopup.open({
				items: {
					src: $html
				},
				type: 'inline'
			});

		})
		.fail(function () {
			console.log("full-story error");
		});
});

      </script>
Yamakasi
Yamakasi 30 июля 2016 03:03
подскажите такую вещь, как убрать так сказать автоматическую активации клавиатуры например если со смартфона нажимаешь кнопку, то есть по факту если открывается форма, то автоматом например если с компа, то мышь активируется в первом текстовом окошке для ввода, а если с мобилы, то автоматом так сказать туда происходит клик в поле ввода, ну например text поле в инпуте. и тем самым открывается автоматом на телефоне клавиатура, как это убрать?
просто мешает сильно! тем самым форма не помещается в окошко и сразу считай если человек нажимает например на кнопку купить, открывается форма и сразу открывается клава и первая строчка ввода text в input получается, тем самым экран сужает автомат ещё и виджет не помещается)))
Yamakasi
Yamakasi 30 июля 2016 03:19
почему я такой))))
всегда так, вроде пробую ищу, решу написать/спросить, а потом пока жду ответ, попутно ещё пару раз тыкаю и нахожу сам ответ)))
на мой вопрос следующий, в css заменить: uf-input-first на uf-input
думаю тем кто особого в эту кухню не ударялся будет полезно! так как в мобильном виде если Вы адаптируете окно, то при uf-input-first - автоматом открывается клавиатура и тем самым портит вид!
ПафНутиЙ
ПафНутиЙ 30 июля 2016 09:52
Цитата: Yamakasi
и тем самым портит вид!

Зависит от того, с какой целью используется форма.
В большинстве случаев форму открывают, что бы ввести сообщение и автоматическое открытие клавиатуры очень удобно.
Yamakasi
Yamakasi 30 июля 2016 10:11
моё мнение на мобильной версии например сайта, когда окно почти на 80%, автомат неудобен( так как получается на пол экрана клавиатура и виджет, а точнее адаптация окна съезжает(( и получается всю форму не видит человек))
удобно если форма маленькая и автомат клавы не сужает, так сказать помещается вместе с окном) ну или вообще например на планшете тоже удобно, а чисто смартфоне/айфоне неудобно)
p.s. ну да может ещё для чего используешь, но всё же мне кажется какая разница на для чего используешь, всё равно в любом случае кривить будет, а я использую Ваш скрипт в основном для "купить в 1 клик" или "закатать обратный звонок" - то есть из DLE делаем мини интернет магазин))
--
как Вам уже предлагали, если допустим на pro версии сделать ещё корзину lite версии допустим, будет вообще супер!
desking
desking 12 августа 2016 20:07
Добрый день, мне приходит вот такие письма:
[email]{email}[/email] : бббббб@mail.ru
[field1]{field1}[/field1] : df
[select1]{select1}[/select1] : WebMoney
[field2]{field2}[/field2] : f
[site_home_title]{site_home_title}[/site_home_title] : DataLife Engine
[site_http_home_url]{site_http_home_url}[/site_http_home_url] : http://dle.ru/
[site_short_title]{site_short_title}[/site_short_title] : Демонстрационный сайт
[user_group]{user_group}[/user_group] : 1
[user_name]{user_name}[/user_name] : admin
[user_fullname]{user_fullname}[/user_fullname] : 
[user_email]{user_email}[/user_email] : dimakvashenko@mail.ru
[user_foto]{user_foto}[/user_foto] : 
[user_land]{user_land}[/user_land] : admin


как сделать что-бы вместо [field1]{field1}[/field1] писалось русскими буквами "Поле 1", идентично с остальными полми
ПафНутиЙ
ПафНутиЙ 12 августа 2016 20:56
Просто вводите в форму русские буквы идентично с остальными полями.
desking
desking 13 августа 2016 10:18
Можете описать поподробнее
ПафНутиЙ
ПафНутиЙ 14 августа 2016 08:52
Могу, но похоже я не понимаю что вы хотите знать.
phoen
phoen 17 августа 2016 16:08
вывел непосредственно на странице, но при нажатии отправить, перекидывает на пустую страницу с надписью - error :(
phoen
phoen 17 августа 2016 16:45
решили, 2 библиотеки подключено было
genius404
genius404 18 августа 2016 19:40
где указать мой email где я получу отпровлены собщение ?

Добавить комментарий

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

Информация

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