Константин Ильин

Константин Ильин

С нами с 10 февраля 2014; Место в рейтинге пользователей: #151
Константин Ильин
01 января 2017, 12:55
+3
Для меня не столь как библиотека хороша, а столько как пример подсмотреть — что, откуда и как.
А описание каждой функции отличное, это меня прям подкупило))
Константин Ильин
23 декабря 2016, 22:47
0
Ну уж не надо было в полтретьего утра)Спасибо Василий!

Ну вот я захожу на страницу в modstore, там Документация. Как бы логично, чтобы на официальном сайте продукта она была в нормальном виде.

Вообще я сделал это как небольшое замечание, причем замечание на пользу, то что в документации пусто, а раздули как будто я негодяй.
Константин Ильин
23 декабря 2016, 22:30
0
Это тоже я знал)
НО, документация же… люди, документация)
Константин Ильин
23 декабря 2016, 19:29
0
Какие все нехорошие)

Я намекаю на то, что в документации нету таких параметров например как:

&tplRow=``
&tplOuter=``
&tplEmpty=``
Я например не мог вспомнить их на память, зашел в документацию, а их там нет. Нашел в другом месте, но они же должны быть в документации.
Константин Ильин
21 декабря 2016, 12:46
0
Хостинги: таймвеб, бигет
После обновления:
У меня было такое, когда я в ручную вызвал инициализацию:
<script type="text/javascript">AjaxForm.initialize({"assetsUrl":"\/assets\/components\/ajaxform\/","actionUrl":"\/assets\/components\/ajaxform\/action.php","closeMessage":"\u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0432\u0441\u0435","formSelector":"form.ajax_form","pageId":687});</script>
Выводилось две ошибки после обновления. Соответственно удалил ручной вызов,

— В некоторых случаях, в ручную прописывал для форм action="[[*uri]]"

— Была проблема на рег.ру, там нихера не хотел работать и не заработал.

— А также я всегда в .htaccess разкоментироваю php_flag register_globals Off

Ну и после обновления надо чистить кеш :)
Константин Ильин
17 декабря 2016, 18:25
0
приходящие данные хранятся $data
switch ($modx->event->name) {
    // События на добавление товара
	case 'msOnBeforeAddToCart': 
		$modx->log(modX::LOG_LEVEL_ERROR, print_r($options,true));
        	$modx->log(modX::LOG_LEVEL_ERROR, print_r($data,true));
	break;
}
Константин Ильин
02 декабря 2016, 12:23
0
Наверно проще было бы использовать AjaxForm.
Но для каждой записи(ресурса) будет тег form и запускаться сниппет это не есть хорошо.

Проще как писали выше написать свое.
Допустим при клике берется айди ресурса, посылается аяксом на страницу, а там уже ждет сниппет удаления ресурса.

$('.delRes').on('click', function() {

    var id = $(this).data('id');

    $.ajax({
        url: '/delRes.html',
        dataType: 'json',
        data: {
            id: id
        },
        success: function(res) {
            if (res['success']) {
                console.log('Ресурс удален');
            } else {
                console.log('Ресурс Не удален');
            }
        }
    });

});
Естественно в Сниппете должны быть проверки типа разрешено удалять или нет, аякс запрос и т.д.

И как я понял из документации AjaxSnippet — это подгрузчик инфы через аякс.
Константин Ильин
30 ноября 2016, 12:19
0
не нашел решения, только смена хостинга.
Константин Ильин
28 ноября 2016, 18:52
0
Подскажите пожалуйста, как отключить функционал сброса пароля?
Т.е. мне не нужно чтобы человек ввел Логин(емайл) и ему тут же сбросился пароль.
Константин Ильин
28 ноября 2016, 18:07
0
Если встречу еще раз такую проблему — попробую)
В итоге на всех хостах норм работало, а на рег.ру нет.
Константин Ильин
28 ноября 2016, 13:13
+3
global modx;
в функции прописали?

Должно быть так:

// Подключаем
require_once 'config.core.php';
require_once MODX_CORE_PATH.'model/modx/modx.class.php';
$modx = new modX();
$modx->initialize('web');
$modx->getService('error','error.modError', '', '');

 function getParserTag($content)
{
    global $modx;
    $maxIterations = (integer) $modx->getOption('parser_max_iterations', null, 10);
    $modx->getParser()->processElementTags('', $content, false, false, '[[', ']]', array(), $maxIterations);
    $modx->getParser()->processElementTags('', $content, true, true, '[[', ']]', array(), $maxIterations);
        
    return $content;
}

$tpl = $modx->getChunk("head");

echo getParserTag($tpl);
У меня замечательно работает, и сниппет внутри чанка head, отрабатывает.
Константин Ильин
25 ноября 2016, 16:39
+1
хех, я про него писал тебе
base_url в верстке есть?
Смотря для чего написано это условие, т.е. на странице 5377 что-то делается видимо
а так пишут просто
<base href="[[++site_url]]" />
Константин Ильин
25 ноября 2016, 16:11
0
Платформа норм, у моногих же все получается :)
Что-то феноменальное у тебя)
Скинь ссылку и доступы в личку
Константин Ильин
25 ноября 2016, 14:56
0
Много раз делал на поддомене, потом не возникало проблем. В config точно все пути поменял? там их много
setup не попробовал закачать и запустить?
base_url в верстке есть?
Константин Ильин
23 ноября 2016, 22:19
+2
Стоит последняя версия минишопа drag-and-drop товара работает нормально.
Константин Ильин
20 ноября 2016, 11:46
0
Явно вас пытаются ломать по полю email. Поставьте проверку email как на фронте так и в бекенде.
Константин Ильин
18 ноября 2016, 10:51
1
0
Василий, проблему встречаю не впервой. Сейчас на сайте у меня много контекстов.

joxi.ru/EA4nO8WIwDZY8m

После нажатия на кнопку отправить
joxi.ru/RmzKwP1U0WG4Y2
joxi.ru/82Qpan0sj13oqm

Причем контекст на скринах — web.

— Проверял в хроме, мозиле, яндексе
— Где-то вообще не залогинен, где-то под админом, но ошибка такая же
— Кеш чистил
— Проблему встречал на сайтах с 1 контекстом
— голобальные отключены
— Хостинг этого сайта бигет. Была такая проблема с рег.ру.

Объясни мне криворукому раз и навсегда как надо))

Константин Ильин
16 ноября 2016, 19:55
2
+2
Чтож, уже ноябрь, но лучше поздно чем никогда)

Спасибо Сергей Шлокову, он на пальцах мне обьяснил что так как я хотел сделать выше — нельзя.
Последовательность такая:
1. Нажимается кнопка.
2. В функции кнопки вызывается ajax запрос к процессору который выдает поля.
3. Только когда ajax выполнился вызывается окно. В вызов окна сразу подсовываются готовые поля, сформированные из ответа ajax.

Код функции процессора — process ()
public function process()
    {
        /*некий код*/
	$fields = '';
        // Существует какая то некая таблица в которой 1 строка это поле
        $table = $this->modx->getTableName('FieldsItems');
        $query = $this->modx->query("SELECT * FROM ".$table." WHERE active = 1");
	
        if (!is_object($query)) {
           
           return $this->failure($this->modx->lexicon('fl_data_err_get_field'));

        }else{

           $arr = $query->fetchAll(PDO::FETCH_ASSOC);

           foreach ($arr as $value) {

               $fields[] = array(
                    'xtype' => 'textarea',
                    'fieldLabel' => $value['name'],
                    'name' => "fl-".$value['code'],
                    'id' => 'ext-gen-fl-'.$value['code'],
                    'anchor' => "99%",
                    'allowBlank' => "false",
                    'value' => $fieldsValues[$value['code']] 
                );
           }

        }
        return $this->success('',$fields); // Возвращаем массив полей
    }

Как это в EXT.JS. Тут два запроса ajax, первый получает поля, второй к процессору get который выдает данные об объекте.
MODx.Ajax.request({
            url: Fl.config.connectorUrl
            ,params: {
                action: "mgr/data/get_fields", // Тот самый процессор который выдает поля
                id_res: MODx.request.id,
            }
            ,listeners: {
                success: {fn: function(res) {
                    
                    var fieldsArr = res['object']; // Ответ от процессора с полями, он возвращает массив с данными полей
                    fieldsArr = fieldsArr || {}; 
                    MODx.Ajax.request({
                        url: this.config.url,
                        params: {
                            action: 'mgr/data/get',
                            id: MODx.request.id,
                        },
                        listeners: {
                            success: {
                                fn: function ( r ) { 
                                   
                                    var w = MODx.load({
                                        xtype: 'fl-data-window-update',
                                        id: Ext.id(),
                                        addFields: fieldsArr, // Здесь передаем поля в вызов окна
                                        record: r,
                                        listeners: {
                                            success: {
                                                fn: function () {
                                                    this.refresh();
                                                }, scope: this
                                            },
                                            hide: {
                                                fn: function () {
                                                    setTimeout(function(){w.destroy();},200);
                                                }, scope: this
                                            }
                                        }
                                    });
                                    w.reset();
                                    w.setValues(r.object);
                                    w.show(e.target);
                                }, scope: this
                            }
                        }
                    });
                }, scope: this}
            }
        });

В extende окна:
Ext.extend(Fl.window.UpdateItem, MODx.Window, {

    getFields: function (config) {
        return [{
            xtype: 'hidden',
            name: 'id',
            id: config.id + '-id',
            value: config.id
        },{
            xtype: 'xcheckbox',
            boxLabel: _('fl_lang_active'),
            name: 'active',
            id: config.id + '-active',
            checked: true,
        },
            config.addFields   // ВОТ ТУТ И ДОБАВЛЯЮТСЯ ПОЛЯ, т.е. тот массив полей который передали в ajax запросе
        ];
    },

    loadDropZones: function () {
    }

});
Ext.reg('fl-data-window-update', Fl.window.UpdateItem);
Как то так, наверняка посмотрев через год на этот код будет такая мысль:
«Под чем я был кода писал этот код»
Константин Ильин
15 ноября 2016, 16:05
0
[2016-11-15 15:56:18] (ERROR @ /-/core/components/minishop2/custom/payment/msppayanyway.class.php : 10) Recoverable error: Argument 1 passed to msppayanyway::__construct() must be an instance of xPDOObject, instance of modX given, called in /-/core/xpdo/xpdo.class.php on line 1246 and defined
Это связанно с сегодняшним обновлением MODX?