Size: a a a

MODX. Русскоязычное сообщество.

2020 September 08

AR

Alexandr Rybakov in MODX. Русскоязычное сообщество.
Вы молодцы
источник

ИБ

Иван Бочкарев... in MODX. Русскоязычное сообщество.
Alexandr Rybakov
Всеобщий салам
Подскажите плагин или как самому лучше сделать

Есть 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',
источник

ИБ

Иван Бочкарев... in MODX. Русскоязычное сообщество.
источник

AR

Alexandr Rybakov in MODX. Русскоязычное сообщество.
Епа, парень
источник

AR

Alexandr Rybakov in MODX. Русскоязычное сообщество.
Это все супер
источник

AR

Alexandr Rybakov in MODX. Русскоязычное сообщество.
вы такие отзывчивые
источник

AR

Alexandr Rybakov in MODX. Русскоязычное сообщество.
Спасибо
источник

AR

Alexandr Rybakov in MODX. Русскоязычное сообщество.
Но я все сделал)
источник

AR

Alexandr Rybakov in MODX. Русскоязычное сообщество.
Блин, даже жалко
источник

AA

Alex Arahort in MODX. Русскоязычное сообщество.
Ну имхо лучше использовать стандартные средства из коробки, что бы тот человек который будет править после быстро разобрался
источник

ИБ

Иван Бочкарев... in MODX. Русскоязычное сообщество.
+
источник

AA

Alex Arahort in MODX. Русскоязычное сообщество.
Сейчас правлю сайт....чувак знал php Но впервые видел Modx, любая задача - свой плагин, хотя 99% этого сделал бы pdoTools.....
источник

AA

Alex Arahort in MODX. Русскоязычное сообщество.
самописные плагины его конечно же без проверок на пустоту, опубликованность итд
источник

AA

Alex Arahort in MODX. Русскоязычное сообщество.
источник

ИБ

Иван Бочкарев... in MODX. Русскоязычное сообщество.
У нас сегодня ДР у @Jonik73. Давайте пожелаем всяких штук хороших =)
источник

AR

Alexandr Rybakov in MODX. Русскоязычное сообщество.
А как вот этот дефолтный алерт убить?
источник

AA

Alex Arahort in MODX. Русскоязычное сообщество.
Alexandr Rybakov
А как вот этот дефолтный алерт убить?
смотри инфу по jGowl
источник

ИБ

Иван Бочкарев... in MODX. Русскоязычное сообщество.
Alexandr Rybakov
А как вот этот дефолтный алерт убить?
<style>
   #jGrowl .af-message-success { display:none !important; }
</style>
источник

AM

Artem Malcov in MODX. Русскоязычное сообщество.
Через css?
источник

AA

Alex Arahort in MODX. Русскоязычное сообщество.
Alexandr Rybakov
А как вот этот дефолтный алерт убить?
его можно просто стилизовать красиво на чистом CSS
источник