Open tcse opened 1 year ago
фигасе, уже php8 вышла)))
Прикол в том, что DLE 15.3 намекает прямо в теле админка: Внимание! Версия PHP, установленная на сервере, устарела. Часть функций скрипта с этой версией PHP будет недоступна, поэтому мы рекомендуем связаться с администрацией хостинга для обновления версии PHP! Рекомендуемая версия PHP для работы скрипта не ниже 8.1. Скачать последнюю версию можно на официальном сайте http://php.net/.
Но и на php7.4 в целом все работает. Без некоторых новых фичей. Но без них жить можно, а вот без Uniform нет.
15 нояб. 2022 г., в 15:46, Pavel Belousov @.***> написал(а):
фигасе, уже php8 вышла)))
— Reply to this email directly, view it on GitHub https://github.com/dle-modules/DLE-UniForm/issues/112#issuecomment-1315261967, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAX7CM6BWS2RHAWA6LAJIOLWIOA3TANCNFSM6AAAAAASA43IHU. You are receiving this because you authored the thread.
Уже PHP 8.2 вышла и тоже формы не работают. Вернее у меня форма открывается, но ничего не отправляется, лоадер на кнопке крутится и все... А если в настройках DLE установить использование JQuery 3.xxx, то даже формы не открываются... Пробовал сам разобраться в PHP файлах, но явных ошибок и проблем не увидел. Поэтому убедительная просьба (думаю все меня поддержат), доработайте, пожалуйста, под PHP 8.x, а также для JQuery 3.xx Понятно, как будет у вас время и возможность...
Перевел сайт на PHP 7.4 но все равно сообщения не отправляются. Скриншот: https://disk.yandex.ru/i/MhAu1KymbaoWow Может подскажете причину где, что подправить? Уже голову сломал...
только что проверил на тестовом домен вот с таким конфигом:
Версия jQuery для вашего сайта: 3.xx Версия DataLife Engine: | 15.3 Тип лицензии скрипта: | Лицензия активирована Операционная система: | Linux 5.4.0-120-generic Версия PHP: | 7.3.33 Версия MySQL: | 5.7.35-38
Формы плагина Uniform - работают.
Про php 7.4 прямо сейчас уточнить не смогу (так как многие другие модули работают тоже только до версии 7.3 и ниже.
только что проверил на тестовом домен вот с таким конфигом:
Версия jQuery для вашего сайта: 3.xx Версия DataLife Engine: | 15.3 Тип лицензии скрипта: | Лицензия активирована Операционная система: | Linux 5.4.0-120-generic Версия PHP: | 7.3.33 Версия MySQL: | 5.7.35-38
Формы плагина Uniform - работают.
Про php 7.4 прямо сейчас уточнить не смогу (так как многие другие модули работают тоже только до версии 7.3 и ниже.
Создал тестовый домен с таким конфигом: Версия jQuery для вашего сайта: 3.xx (2.хх тоже пробовал) Версия DataLife Engine: | 15.3 Тип лицензии скрипта: | Лицензия активирована Операционная система: | Linux 5.10.109-0 Версия PHP: | 7.3.31 Версия MySQL: | 5.7.21
Все равно не отправляет сообщения. На кнопке "Отправить" лоадер крутится и всё, и ничего не происходит. Чувствую, что дело вовсе не в PHP... У меня шаблон на Bootstrap, может в этом проблема? Может от Bootstrap скрипты какие-то мешают? Пробовал в main.tpl подключать скрипты от uniform раньше и позже подключения {AJAX{ и скриптов от Bootstrap, всё равно не хочет...
P.S. Сейчас попробовал на шаблоне Default, та же песня...
Во всех случаях заметил еще кое-что:
<span data-uniform="/engine/ajax/uniform/uniform.php" data-uf-settings='{"formConfig": "callback"}' class="uf-btn">Заказать звонок</span>
то форма не открывается вообще, и неважно какой шаблон или какая версия PHP или JQuery<a class="ttm-btn btn-inline ttm-btn-color-skincolor" data-uniform='{"formConfig": "feedback"}' href="#">Обратный звонок</a>
то форма открывается, но сообщения не отправляются...Может от Bootstrap скрипты какие-то мешают?
у меня все проекты на bootstrap - так что дело точно не в этом. Вот ссылки на проекты с dle 15.3 ( www.iv-service.ru и www.dalegion.com ) там стоит dle-uniform
Предположу, что у вас могут быть не внедрены правки исходников плагина:
Для DLE 15.0 и 15.1 исправление работы отправки писем.
найти строку:
// Если данные передаются постом — надо бы их обработать
require_once ENGINE_DIR . '/classes/parse.class.php';
$parse = new ParseFilter();
и ВЫШЕ поставить:
include_once (DLEPlugins::Check(ENGINE_DIR . '/classes/htmlpurifier/HTMLPurifier.s
include_once (DLEPlugins::Check(ENGINE_DIR . '/classes/htmlpurifier/HTMLPurifier.s
Спасибо огромное! Помогло!
Однако, работает только если подключать так: **data-uniform='{"formConfig": "callback"}'**
Если подключить так (как написано в инструкции) : **data-uniform="/engine/ajax/uniform/uniform.php" data-uf-settings='{"formConfig": "callback"}'**
, то форма не открывается вообще...
Добавил ваше исправление через систему плагинов и всё пошло как надо... Да, и кстати, Это работает на PHP 8.2 и c JQuery 3.xx
Еще раз спасибо!!!
Однако, работает только если подключать так:
**data-uniform='{"formConfig": "callback"}'**
Если подключить так (как написано в инструкции) :**data-uniform="/engine/ajax/uniform/uniform.php" data-uf-settings='{"formConfig": "callback"}'**
, то форма не открывается вообще...
Это 2 разных способа подключения в зависимости от версии модуля.
Пояснения:
DLE-Unirofm-1 - более не поддерживается разработчиком. Предназначена для DLE 9 - 13 без поддержки системы плагинов DLE. Используется старый синтаксис вызова форм обратной связи.
<span data-uf-open="/engine/ajax/uniform/uniform.php" data-uf-settings='{"formConfig": "_feedback"}' class="uf-btn">Обратная связь</span>
DLE-Unirofm-2 - актуальная версия плагина Используется новый синтаксис вызова форм обратной связи.
<span data-uniform="/engine/ajax/uniform/uniform.php" data-uf-settings='{"formConfig": "__feedback"}' class="uf-btn">Обратная связь</span>
Описанный ваш рабочий способ относится в версии DLE-Uniform 2 Версии с фиксами исходников тут https://github.com/tcse/DLE-Uniform-Help
Описанный ваш рабочий способ относится в версии DLE-Uniform 2 Версии с фиксами исходников тут https://github.com/tcse/DLE-Uniform-Help
Добрый день! Установил вашу пофиксенную версию отсюда: https://github.com/tcse/DLE-Uniform-Help/tree/main/Uniform-2. Все работает без дополнительных телодвижений на PHP 8.2
Появился вопрос по атачу. Я добавил в форму feedback ( {THEME}/uniform/feedback/form.tpl ) возможность прикреплять файлы к сообщению по примеру из папки attachments, но теперь сообщения отправляются только если прикрепить к нему файлы. Как сделать, чтобы прикрепление файлов было необязательным? Посмотрел в файле sendmail.php из папки engine/modules/uniform есть такой код:
// Добавляем вложения
/** @var array $arSendAttachments */
if (count($arSendAttachments)) {
foreach ($arSendAttachments as $attach) {
$mail->addAttachment($attach['tmp_name'], $attach['name']);
}
}
Насколько я понял, то он проверяет есть ли вложения и в принципе всё правильно, если count($arSendAttachments) == 0
, то этот кусок кода должен быть проигнорирован. Но сообщения не отправляются если пользователь не прикрепил файлы к сообщению. На кнопке Отправить крутится лоадер и ничего не происходит.
Может я неправильно что-то делаю?
Подскажите, пожалуйста, как лучше организовать в форме feedback прикрепление файлов так, чтобы эта возможность была необязательной?
Заранее благодарю за помощь!
С уважением, Олег.
Еще проблема с отправкой сообщения из тестовой формы. Тоже ничего не отправляется и на кнопке "Отправить" крутится лоадер и ничего не происходит. Подключил в htaccess вывод PHP-ошибок в файл и вот содержимое файла, который получился в папке engine/ajax:
[13-Jan-2023 15:39:49 Europe/Moscow] PHP Fatal error: Uncaught TypeError: str_replace(): Argument #2 ($replace) must be of type string when argument #1 ($search) is a string in .../public_html/engine/modules/uniform/uniform.php:211
Stack trace:
#0 .../public_html/engine/modules/uniform/uniform.php(211): str_replace('{uf_field_selec...', Array, '\n<div class="uf...')
#1 .../public_html/engine/ajax/uniform.php(99): include('/home/o/ovpmus8...')
#2 .../public_html/engine/ajax/controller.php(194): include_once('/home/o/ovpmus8...')
#3 {main}
thrown in .../public_html/engine/modules/uniform/uniform.php on line 211
Похожие ошибки возникают если попытаться отправить форму feedback с добавленной возможностью прикрепления файлов к сообщению (см. коммент выше)...
Разобрался где ошибка...
В файле engine/modules/uniform/uniform.php найти:
$tpl->copy_template = str_replace("{uf_field_{$k}}", $val, $tpl->copy_template);
заменить на:
$tpl->copy_template = str_replace("{uf_field_{$k}}", ".$val.", $tpl->copy_template);
Переменная $val должна быть типом string в любом случае, иначе отправка формы без аттача не происходит...
Теперь, даже если не прикреплять файлы к сообщению, то отправка происходит нормально.
Протестировал на DLE 16.0 и PHP 8.2 - всё прекрасно работает.
Сделал подключение кода через систему плагинов, чтобы не вносить изменения в исходник.
Привет. При обновлении на php 8.1 плагин не запускается. Как только откатываешь на php7.4 или на php7.3 никаких проблем нет.