diff --git a/README.md b/README.md index 8484407..d2fdf1a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ## contactsnew -# Модуль Контакты New v1.2.5 +# Модуль Контакты New v1.2.6 ![Module Contacts new](https://gitget.ru/img/module_con_new.png "Module Contacts new") @@ -14,6 +14,12 @@ ## Changelog: +10.04.2019 - Версия 1.2.6 - изменена структура расположения демо-файлов, добавлен пример создания демо-формы с jQuery Validation Plugin и reCAPTCHA v3, +API ключи для reCAPTCHA v3 необходимо установить непосредственно в AVE.cms (версия 3.23 начиная с обновления в репозитории от 24.03.2019) в разделе +Системные настройки->Дополнительные настройки. В шаблоне демо-формы в js скрипте параметр data.score < 0.5 - означает минимальную оценку для успешной верификации reCAPTCHA. +Следите, что бы библиотека jQuery была подключена на странице только один раз и вверху , в секции <head> , т.е. первой по отношению к jquery.validate.min.js + + 07.04.2019 - Версия 1.2.5 - интегрирован jQuery Validation Plugin, в шаблон "Атрибуты тега поля" добавлен просмотр и копирование значения атрибута name, создающимся модулем и запрещенному к изменениям. diff --git a/contactsnew/class.contactsnew.php b/contactsnew/class.contactsnew.php index fd9aecf..ab9fe56 100755 --- a/contactsnew/class.contactsnew.php +++ b/contactsnew/class.contactsnew.php @@ -887,19 +887,30 @@ class ContactsNew if (!empty($_REQUEST['demo'])) { $demo = array(); - include(BASE_DIR . '/modules/contactsnew/demo.php'); + $req_demo = ''; + // если выбрана демоформа jQuery Validation Plugin и reCAPTCHA v3 + if ($_REQUEST['demo'] == 'jqval_cap') { + include(BASE_DIR . '/modules/contactsnew/demo/demo_jqval.php'); + } else { + include(BASE_DIR . '/modules/contactsnew/demo/demo.php'); + } $_REQUEST = array_merge($_REQUEST,$demo); // обновляем форму с данными примера $this->form_save($fid); // подставляем в шаблон новые id полей $demo['form_tpl'] = preg_replace_callback('/\[tag:fld:(\d+)]/', create_function('$matches','return "[tag:fld:" . $_REQUEST["demo_change"][(int)$matches[1]] . "]";'),$demo['form_tpl']); + // если выбрана демоформа jQuery Validation Plugin и reCAPTCHA v3 + if ($_REQUEST['demo'] == 'jqval_cap') { + // подставляем в шаблон новые значения атрибутов name + $demo['form_tpl'] = preg_replace_callback('/form-jqval_cap\[(\d+)]/', create_function('$matches','return "form-jqval_cap[" . $_REQUEST["demo_change"][(int)$matches[1]] . "]";'),$demo['form_tpl']); + } $AVE_DB->Query(" UPDATE " . PREFIX . "_module_contactsnew_forms SET form_tpl = '" . addslashes($demo['form_tpl']) . "' WHERE id = '" . $fid . "' "); - return $fid; + return $fid; } } diff --git a/contactsnew/demo.php b/contactsnew/demo/demo.php similarity index 100% rename from contactsnew/demo.php rename to contactsnew/demo/demo.php diff --git a/contactsnew/demo/demo_jqval.php b/contactsnew/demo/demo_jqval.php new file mode 100644 index 0000000..52162fa --- /dev/null +++ b/contactsnew/demo/demo_jqval.php @@ -0,0 +1,303 @@ + +'
+
+
+

Демо интеграции в Модуль Контакты New v1.2.5

jQuery Validation Plugin   и   reCAPTCHA v3

+
+
+ Если форма не работает, убедитесь, что библиотека jQuery (jquery.min.js - по умолчанию подключается модулем) подключена на странице только один раз! и расположена в секции <head> , а также подключен скрипт jquery.form.min.js (по умолчанию подключается модулем в разделе Скрипты и стили, необходимые для оформления и функционирования формы) + +
+
+
+
+

[tag:formtitle]

+
+
+
+[tag:fld:email] +[tag:fld:subject] +[tag:fld:6] +[tag:fld:7] +[tag:fld:8] +[tag:fld:9] +
+
+ +
+
+
+
+
+
+ +' +); + +$demo = array( + 'alias' => 'jqval_cap', + 'title' => 'Демо форма с jQuery Validation Plugin и reCAPTCHA v3', + 'mail_set' => array( + 'from_name' => '', + 'from_email' => '', + 'subject_tpl' => '[tag:fld:subject]', + 'receivers' => array( + array( + 'email' => '', + 'name' => '' + ) + ), + 'format' => 'text', + ), + 'rubheader' => ' + + + +', + 'form_tpl' => $form_tpl[$_REQUEST['demo']], + 'mail_tpl' => '[tag:easymail]', + 'finish_tpl' => '
+ Форма успешно отправлена! Обновить страницу +
+', + 'code_onsubmit' => '', + 'code_onvalidate' => '', + 'code_onsend' => '', + 'fields' => array( + 1 => array( + 'new' => true, + 'form_id' => $fid, + 'title' => 'email', + 'active' => 1, + 'type' => 'input', + 'main' => 1, + 'setting' => '', + 'required' => 0, + 'defaultval' => '', + 'attributes' => 'id="fld[[tag:id]]" class="form-control" placeholder="[tag:title]"', + 'tpl' => '
+ +
+[tag:fld] +
+
' + ), + 2 => array( + 'new' => true, + 'form_id' => $fid, + 'title' => 'subject', + 'active' => 1, + 'type' => 'input', + 'main' => 1, + 'setting' => '', + 'required' => 0, + 'defaultval' => '', + 'attributes' => 'id="fld[[tag:id]]" class="form-control" placeholder="[tag:title]"', + 'tpl' => '
+ +
+[tag:fld] +
+
' + ), + 3 => array( + 'new' => true, + 'form_id' => $fid, + 'title' => 'receivers', + 'active' => 0, + 'type' => 'select', + 'main' => 1, + 'setting' => '', + 'required' => 0, + 'defaultval' => 0, + 'attributes' => '', + 'tpl' => '' + ), + 4 => array( + 'new' => true, + 'form_id' => $fid, + 'title' => 'copy', + 'active' => 0, + 'type' => 'checkbox', + 'main' => 1, + 'setting' => '', + 'required' => 0, + 'defaultval' => 1, + 'attributes' => '', + 'tpl' => '' + ), + 5 => array( + 'new' => true, + 'form_id' => $fid, + 'title' => 'captcha', + 'active' => 0, + 'type' => 'input', + 'main' => 1, + 'setting' => '', + 'required' => 1, + 'defaultval' => '', + 'attributes' => '', + 'tpl' => '' + ), + 6 => array( + 'new' => true, + 'form_id' => $fid, + 'title' => 'Никнейм', + 'active' => 1, + 'type' => 'input', + 'main' => 0, + 'setting' => '', + 'required' => 0, + 'defaultval' => '', + 'attributes' => 'id="fld[[tag:id]]" class="form-control" placeholder="[tag:title]"', + 'tpl' => '
+ +
+[tag:fld] +
+
' + ), + 7 => array( + 'new' => true, + 'form_id' => $fid, + 'title' => 'Текст сообщения', + 'active' => 1, + 'type' => 'textarea', + 'main' => 0, + 'setting' => '', + 'required' => 0, + 'defaultval' => '', + 'attributes' => 'id="fld[[tag:id]]" class="form-control" placeholder="[tag:title]"', + 'tpl' => '
+ +
+[tag:fld] +
+
' + ), + 8 => array( + 'new' => true, + 'form_id' => $fid, + 'title' => 'Работа чекбокса', + 'active' => 1, + 'type' => 'checkbox', + 'main' => 0, + 'setting' => '', + 'required' => 0, + 'defaultval' => '', + 'attributes' => 'id="fld[[tag:id]]" value="agree"', + 'tpl' => '
+
+
+ +
+
+
' + ), + 9 => array( + 'new' => true, + 'form_id' => $fid, + 'title' => 'Оценка отправителя формы сервисом reCAPTCHA', + 'active' => 1, + 'type' => 'input', + 'main' => 0, + 'setting' => '', + 'required' => 0, + 'defaultval' => '', + 'attributes' => 'id="hidden_fld_[tag:formalias]" type="hidden"', + 'tpl' => '[tag:fld]' + ) + + + ) +); \ No newline at end of file diff --git a/contactsnew/demo/index.php b/contactsnew/demo/index.php new file mode 100644 index 0000000..9c20174 --- /dev/null +++ b/contactsnew/demo/index.php @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/contactsnew/lang/bg.txt b/contactsnew/lang/bg.txt index 6afc410..63d1e3e 100644 --- a/contactsnew/lang/bg.txt +++ b/contactsnew/lang/bg.txt @@ -182,4 +182,5 @@ title_pub_key_recap = "Открытый ключ reCAPTCHA v3 указанный found_key_recap_v3 = "В системных настройках обнаружены и будут использоваться модулем API ключи reCAPTCHA v3" notfound_key_recap_v3_1 ="API ключи reCAPTCHA v3 не обнаружены." notfound_key_recap_v3_2 =" Вы можете установить их в разделе " -notfound_key_recap_v3_3 ="Системные настройки" \ No newline at end of file +notfound_key_recap_v3_3 ="Системные настройки" +demo_jqval_cap = "с jQuery Validation Plugin и reCAPTCHA v3" \ No newline at end of file diff --git a/contactsnew/lang/en.txt b/contactsnew/lang/en.txt index 1cd8d9c..7325ecb 100644 --- a/contactsnew/lang/en.txt +++ b/contactsnew/lang/en.txt @@ -182,4 +182,5 @@ title_pub_key_recap = "Открытый ключ reCAPTCHA v3 указанный found_key_recap_v3 = "В системных настройках обнаружены и будут использоваться модулем API ключи reCAPTCHA v3" notfound_key_recap_v3_1 ="API ключи reCAPTCHA v3 не обнаружены." notfound_key_recap_v3_2 =" Вы можете установить их в разделе " -notfound_key_recap_v3_3 ="Системные настройки" \ No newline at end of file +notfound_key_recap_v3_3 ="Системные настройки" +demo_jqval_cap = "с jQuery Validation Plugin и reCAPTCHA v3" \ No newline at end of file diff --git a/contactsnew/lang/ru.txt b/contactsnew/lang/ru.txt index 4797205..d49d40a 100644 --- a/contactsnew/lang/ru.txt +++ b/contactsnew/lang/ru.txt @@ -182,4 +182,5 @@ title_pub_key_recap = "Открытый ключ reCAPTCHA v3 указанный found_key_recap_v3 = "В системных настройках обнаружены и будут использоваться модулем API ключи reCAPTCHA v3" notfound_key_recap_v3_1 ="API ключи reCAPTCHA v3 не обнаружены." notfound_key_recap_v3_2 =" Вы можете установить их в разделе " -notfound_key_recap_v3_3 ="Системные настройки" \ No newline at end of file +notfound_key_recap_v3_3 ="Системные настройки" +demo_jqval_cap = "с jQuery Validation Plugin и reCAPTCHA v3" \ No newline at end of file diff --git a/contactsnew/lang/ua.txt b/contactsnew/lang/ua.txt index 1cd8d9c..7325ecb 100644 --- a/contactsnew/lang/ua.txt +++ b/contactsnew/lang/ua.txt @@ -182,4 +182,5 @@ title_pub_key_recap = "Открытый ключ reCAPTCHA v3 указанный found_key_recap_v3 = "В системных настройках обнаружены и будут использоваться модулем API ключи reCAPTCHA v3" notfound_key_recap_v3_1 ="API ключи reCAPTCHA v3 не обнаружены." notfound_key_recap_v3_2 =" Вы можете установить их в разделе " -notfound_key_recap_v3_3 ="Системные настройки" \ No newline at end of file +notfound_key_recap_v3_3 ="Системные настройки" +demo_jqval_cap = "с jQuery Validation Plugin и reCAPTCHA v3" \ No newline at end of file diff --git a/contactsnew/module.php b/contactsnew/module.php index f3b5ba3..2c25049 100644 --- a/contactsnew/module.php +++ b/contactsnew/module.php @@ -16,7 +16,7 @@ if (defined('ACP')) { $modul['ModuleName'] = 'Контакты New'; $modul['ModuleSysName'] = 'contactsnew'; - $modul['ModuleVersion'] = '1.2.5'; + $modul['ModuleVersion'] = '1.2.6'; $modul['ModuleDescription'] = 'Данный модуль предназначен для создания веб-форм (например, обратной связи или простейшего оформления заказа), которые могут состоять из любого набора полей. Для вывода в публичной части сайта используйте тег [mod_contactsnew:XXX], где XXX - это id или алиас формы.'; $modul['ModuleAutor'] = 'vudaltsov UPD Repellent'; $modul['ModuleCopyright'] = '© 2007-2019 AVE.CMS Team'; diff --git a/contactsnew/templates/form_edit.tpl b/contactsnew/templates/form_edit.tpl index 2e87af5..8f488cf 100644 --- a/contactsnew/templates/form_edit.tpl +++ b/contactsnew/templates/form_edit.tpl @@ -168,6 +168,7 @@ $smarty['_refresh'] = '{#refresh#}';