Alexander
т.е. вот внизу, если validForm == true
Alexander
Вывожу popup
Alexander
И чищу форму
Alexander
А, бля
Alexander
очистку мб убрать
Alexander
Да, все заебато
Alexander
Спасибо всем
Alexander
Вы молодцы
Иван
Всеобщий салам Подскажите плагин или как самому лучше сделать Есть 3 формы на страничке по 2 поля. (имя, email) Мне надо сейвить эти данные в админку с возможностью выгрузки в виде json или xml Как лучше подойти к этому? Мне предложили создавать ресурсы, но мне кажется это избыточным Какие можете предложить варианты, плагины?
Создаем каталог assets/components/sendexExport В нем assets/components/sendexExport/action.php <?php require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/config.core.php'; require_once MODX_CORE_PATH . 'config/' . MODX_CONFIG_KEY . '.inc.php'; require_once MODX_CONNECTORS_PATH . 'index.php'; $corePath = $modx->getOption('sendex_core_path', null, $modx->getOption('core_path') . 'components/sendex/'); require_once $corePath . 'model/sendex/sendex.class.php'; $modx->sendex = new Sendex($modx); $list = $modx->getIterator('sxSubscriber'); $out = [ 'success'=>true, 'url'=>'/assets/components/sendexExport/export.csv?'.time(), ]; $fp = fopen('export.csv', 'w'); foreach ($list as $item){ fputcsv($fp, ['id'=>$item->id,'email'=>$item->email]); } fclose($fp); echo json_encode($out,256); В нем assets/components/sendexExport/js/sendexExport.js if(typeof(Sendex.page.Home ) != "undefined"){ Ext.ComponentMgr.onAvailable("sendex-grid-newsletter-subscribers", function (e) { var newWindow = Ext.getCmp("sendex-grid-newsletter-subscribers"); newWindow.exportForm = function () { MODx.msg.confirm({ title: ('Подтвердите экспорт'), text: ('Экспортировать email адреса?'), url: '/assets/components/sendexExport/action.php', listeners: { 'success': { fn: function (data) { var newlink = document.createElement('a'); newlink.setAttribute('target', '_blank'); newlink.setAttribute('download', 'data.csv'); newlink.setAttribute('href',data.url); newlink.click() }, scope: this }, 'error': { fn: function (data) { MODx.msg.status({ title: _('error'), message: 'Произошла ошибка!' }); }, scope: this } } }); return true; }; newWindow.tbar = [{ xtype: 'sendex-combo-user' , name: 'user_id' , hiddenName: 'user_id' , width: 200 , listeners: { select: {fn: this.addSubscriber, scope: this} } }, { xtype: 'button', text: ('<i class="icon-arrow-circle-down icon"></i> Экспорт'), id: 'modx-exportForm', cls: 'x-btn-restore-all', listeners: { 'click': {fn: this.exportForm, scope: this} } }, '->', { xtype: 'sendex-combo-group' , name: 'group_id' , hiddenName: 'group_id' , width: 200 , listeners: { select: {fn: this.addSubscribers, scope: this} } }] }); } Создаем плагин sendexExport на событие OnManagerPageInit <?php $file = MODX_ASSETS_URL.'components/sendexExport/js/sendexExport.js'; $modx->regClientStartupScript($file); в хуках указываем 'hooks' => 'spam,email,FormItSaveForm,SendexSubscribe',
Иван
Alexander
Епа, парень
Alexander
Это все супер
Alexander
вы такие отзывчивые
Alexander
Спасибо
Alexander
Но я все сделал)
Alexander
Блин, даже жалко
Alex
Ну имхо лучше использовать стандартные средства из коробки, что бы тот человек который будет править после быстро разобрался
Иван
+
Alex
Сейчас правлю сайт....чувак знал php Но впервые видел Modx, любая задача - свой плагин, хотя 99% этого сделал бы pdoTools.....
Alex
самописные плагины его конечно же без проверок на пустоту, опубликованность итд
Alex
Иван
У нас сегодня ДР у @Jonik73. Давайте пожелаем всяких штук хороших =)
Alexander
А как вот этот дефолтный алерт убить?
Иван
А как вот этот дефолтный алерт убить?
<style> #jGrowl .af-message-success { display:none !important; } </style>
Артём
Через css?
Alex
А как вот этот дефолтный алерт убить?
его можно просто стилизовать красиво на чистом CSS
Alex
Да
Alexander
У меня есть попап, если норм валидацию прошел
Alexander
Может как-то их местами можно поменять
Alexander
Чтобы без js
Alexander
И после отправки а не валидации?
Alexander
Ну вот
Anton
<style> #jGrowl .af-message-success { display:none !important; } </style>
уж лучше на странице скрипт прописать с ajaxForm.Message.success = ajaxForm.Message.error = ajaxForm.Message.info = function(){return true}
Alex
этот код уже старый, но что есть под рукой
Alex
/*Кастомизация всплывающих сообщений Formit'a*/ #jGrowl { font-size:18px; margin:0 12px 0; } #jGrowl:before{ content: ''; position: fixed; width: 200%; height: 200%; background: rgba(0, 0, 0, 0.5); margin-top: -50%; margin-left: -50%; } .jGrowl.top-right { left: calc(59% - 400px) !important; top:35% !important; } @media screen and (max-width: 768px){ .jGrowl.top-right { left: 0 !important; } } #jGrowl .jGrowl-notification { position: relative; width: 400px; padding: 50px 40px; text-align: center; background: none repeat 0 0 #fff !important; box-shadow: none !important; border: 0 !important; z-index: 1000; border-radius: 4px; } #jGrowl .jGrowl-notification .jGrowl-close { position: absolute; right: 2px; top: 2px; font-weight: normal; width: 45px; height: 45px; } #jGrowl .jGrowl-notification .jGrowl-close:before{ font-family: "Font Awesome 5 Free"; font-weight: 400; content: "\f057"; color: #777; font-size: 30px; } #jGrowl .jGrowl-notification .jGrowl-message { color:#000 !important; }
Alex
Результатом должно быть типо
Alex
вместо стандартного вида jGrowl)
Alexander
Так, ребят
Alexander
а в параметр emailTo
Alexander
Можно передать данные из формы?
Alexander
Чтобы приветственное письмо отправить
Alexander
+
Alex
делал, вспомнить бы на каком сайте...
Alex
тяжело когада в Шторме больше 200 проектов((
Алексей
Alexander
Зато на работу легко устраиваться
Alex
Зато на работу легко устраиваться
ну не сказал бы, нужны людям узкие специалисты) на хедхайнтере глянь, вакансий по Modx мизерное кол-во и низкая зп
Alex
надо было учить пхп и битрикс, получать как друзья 150-200)
Alex
а я херней занимаюсь))
Roman 🚀
а в параметр emailTo
там есть специальный хук для этого
Alex
там есть специальный хук для этого
и кстати можно свои хуки тоже в Formit добавлять если что
Alex
там есть специальный хук для этого
один из этих если я не ошибаюсь) https://docs.modx.com/current/en/extras/formit/formit.hooks/email
Alex
emailSelectField - The name of the form field, that selects the email addresses to send to. (4.2.5+) вроде оно
Roman 🚀
FormItAutoResponder
Alex
FormItAutoResponder
да, действительно
Alexander
Да
Alexander
Супер
Alexander
Спасибо
Alex
Там же кстати есть хук и капчи (Math) хорошо работает если одна форма на странице
Roman 🚀
Та что невидимая а не «я не робот»
Alex
Капча легко делается гугловой рекапчей
От гугловской отказался в пользу комбинации скрытых полей, гугловская видимая - слишком сильно бьет по скорости загрузки, невидимая - блочит нормальных клиентов
Alex
Мы собрали статистику с 3 сайтов, около 10% заявок она кидает в спам
Alex
вы никогда о них даже не узнаете если нету своего лога)
Alex
причем даже если в настройках невидимой рекапчи выставить очень низкий коэффициент порядка 0.2
Alex
Можете подключить на какой-нибудь популярный проект где много заявок через формы и сравнить через месяц лог и пришедшие в админку данные /*Log*/ $(document).on("af_complete", function(i, e) { var form = e.form; $.ajax({ type: "POST", url: "/clients.php", data: form.serialize() }); }); в пыхе пишем в txt файл все заявки
Alexander
Нихрена не отправляет автоответ
Alexander
Alexander
Alex
по просьбам трудящихся сразу код пыхи <?php foreach ( $_POST as $key => $value ) { $message .= $key . ' : ' . $value . PHP_EOL; } /*Save log*/ $file = 'clients-log.php'; $date = $date = date("h:i:s | d.m.Y"); $text = PHP_EOL . $date . PHP_EOL . '=======================' . PHP_EOL; $text .= PHP_EOL . strip_tags ($message) . PHP_EOL; $fOpen = fopen($file,'a'); fwrite($fOpen, $text); fclose($fOpen);
Роман
Осуществили перенос сайта с бегет на платный хостинг, база подключена (Под своим логином вошел) но вечная загрузка, системные настройки не заходит, ресурсы, файлы не вижу ничего
Роман
Что нужно произвести чтобы исправить