Василий Столейков

Василий Столейков

С нами с 19 декабря 2012; Место в рейтинге пользователей: #25
Отправить деньги
Василий Столейков
07 сентября 2017, 14:50
0
— либо твой комбо гдето ниже еще переопределяется
Блестяще! Спасибо за наводку! Поменял название комбо и всё заработало!
Кстати, спасибо тебе, Володя, и Василию, за классные компоненты, по коду которых я сейчас и делаю всё это…
Василий Столейков
07 сентября 2017, 11:55
0
Мне нужно вывести список ресурсов в combobox.
Описанный же метод в статье выводит список добавленных предметов в customExtra.
Попытался внедриться в getlist.class.php, но не получилось сделать выборку ресурсов.
Создал отдельный файл процессора getproducts.class.php и указал к нему путь в combobox-е, но почему-то combobox упорно не хочет видеть указанный ему файл процессора и обращается к старому.

Вот регистрация комбобокса:
customExtra.combo.items = function(config) {
    config = config || {};
    Ext.applyIf(config,{
        name: 'id1'
        ,fieldLabel: 'Товар'
        ,hiddenName: 'id1'
        ,displayField: 'pagetitle'
        ,valueField: 'id'
        ,anchor: '99%'
        ,fields: ['id', 'pagetitle']
        ,pageSize: 20
        ,hideMode: 'offsets'
        // Если будете использовать не в CustomExtra, не забудьте проверить правильность
        // написание параметра connector_url - у вас он может отличатсья.
        ,url: customExtra.config.connector_url
        ,editable: true
        ,allowBlank: false
        ,emptyText: 'Выберите товар'
        ,baseParams: {
            action: 'mgr/item/getproducts' // ПУТЬ К НОВОМУ ФАЙЛУ ПРОЦЕССОРА
            ,combo: true
        }
        /*
        ,tpl: new Ext.XTemplate(
            '<tpl for=".">\
                <div class="x-combo-list-item">\
                    <strong>{resource_pagetitle}</strong> <sup>({resource_id})</sup>\
                </div>\
            </tpl>'
            ,{compiled: true}
        )
        */
    });
    customExtra.combo.items.superclass.constructor.call(this,config);
};
Ext.extend(customExtra.combo.items,MODx.combo.ComboBox);
Ext.reg('customextra-combo-items',customExtra.combo.items);

А вот и код самого процессора getproducts.class.php:
<?php
class msResourceGetListProcessor extends modObjectGetListProcessor
{
    public $classKey = 'modResource';
    public $languageTopics = array('resource');
    public $defaultSortField = 'pagetitle';


    /**
     * @param xPDOQuery $c
     *
     * @return xPDOQuery
     */
    public function prepareQueryBeforeCount(xPDOQuery $c)
    {
        if ($this->getProperty('combo')) {
            $c->select('id,pagetitle');
        }
        if ($id = (int)$this->getProperty('id')) {
            $c->where(array('id' => $id));
        }
        if ($query = trim($this->getProperty('query'))) {
            $c->where(array('pagetitle:LIKE' => "%{$query}%"));
        }

        return $c;
    }


    /**
     * @param xPDOObject $object
     *
     * @return array
     */
    public function prepareRow(xPDOObject $object)
    {
        if ($this->getProperty('combo')) {
            $array = array(
                'id' => $object->get('id'),
                'pagetitle' => '(' . $object->get('id') . ') ' . $object->get('pagetitle'),
            );
        } else {
            $array = $object->toArray();
        }

        return $array;
    }

}

return 'msResourceGetListProcessor';

Почему combobox не видит файл нового процессора? Или как по-другому подсунуть комбобоксу список ресурсов?
Василий Столейков
07 сентября 2017, 11:45
0
Ок, спасибо, очень кстати!
Сейчас как раз пробую сделать вывод в combobox список ресурсов, и для этого мне как раз нужно знать что творится в классе процессора…
Василий Столейков
07 сентября 2017, 11:34
0
В процессоре не срабатывает $scriptProperties, не срабатывает там и логирование MODX, чтобы выяснить что попадает в какие переменные.
Сделал следующим образом:
if(!empty($this->getProperty('id3'))) {
    $this->setProperty('id3',strtotime($this->getProperty('id3')));
}
Спасибо за наводку!
Василий Столейков
06 сентября 2017, 18:57
0
Ок, спасибо!
Я похоже тоже до этого дошел понемножку…
Василий Столейков
06 сентября 2017, 16:05
0
Если использую xtype xdatetime, то в базу сохраняется только 4 цифры года…
Как сохранить дату в timestamp?
Василий Столейков
06 сентября 2017, 15:34
0
Дата и время хранятся в id1 (в формате unix timestamp)
Как у тебя время хранится в формате unix timestamp?
У меня не получается сохранить его в такой формат.
Например при выборе даты 05.09.2017 он сохраняет в базе только 5. А при дате 18.09.2013 сохраняет 18. То есть только день, цифры до точки.

P.S. xtype у меня datefield
Василий Столейков
06 сентября 2017, 14:02
0
А, точно, спасибо! Очевидно же! У меня уже глаза замылились, пора развеятся… )))
Спасибо за подсказки!
Василий Столейков
06 сентября 2017, 13:57
0
Ок, спасибо! Похоже я тоже его нашел.
Просто есть много похожих файлов, например файлов с названием getlist.class.php есть в каждой из папок (item, link, media, operation, order). Я ещё не совсем понял для чего каждая из этих папок отвечает.
Василий Столейков
06 сентября 2017, 13:39
0
И в файле, ответственном за построение таблицы, укажем, что показывать надо имя, а не id
Вы не уточнили, какой именно файл ответственен за построение таблицы. Такие кусочки кода есть в разных файлах customExtra, например в media.grid.js
Василий Столейков
04 сентября 2017, 12:23
+1
getResources, getProducts для шопкипера, у них политика другая — всё должно прописываться ручками в чанке, об этом автор шопкипера сам писал как-то в перепалке с Василием, когда Василий ему указывал на это отличие в pdoTools.
Василий Столейков
30 августа 2017, 12:16
1
0
Ок, я так и думал. Просто вводит в заблуждение эта фраза:
Старые покупатели обновляются бесплатно.
:)
Василий Столейков
30 августа 2017, 12:09
0
Супер, да, пример проверки доступа даже в последнем примере описан.
Спасибо, будем осторожно обновляться…
Василий Столейков
30 августа 2017, 11:54
0
Здорово, спасибо!
А вопрос: можно с помощью этого пакета реализовать платную подписку на услуги, и потом проверять их по всему сайту? В прошлой версии я делал это костылями, подписывал на скрытый ресурс, и потом отдельным сниппетом проверял по базе подписан на него пользователь или нет.
Пример такой реализации: подписка на Премиум-аккаунт, открывающий различные возможности на сайте.
Василий Столейков
28 августа 2017, 06:25
0
Лучше напишите об этом в соответствующей теме компонента tagElementPlugin: modx.pro/components/9951-tagelementplugin-hotkeys-for-chunks-copying/
Василий Столейков
23 августа 2017, 07:24
0
Не работает. Качал с Яндекса, не сжимает. Режим crazy, файлы разные, от мегабайта до 14 мб.
Василий Столейков
23 августа 2017, 05:44
0
Почему на загрузите пакет в Modstore?
Уверен, так для многих будет удобнее и обновлять и использовать в будущем!
P.S. Сам компонент улётный — спасибо большое!
Василий Столейков
23 августа 2017, 05:28
+2
Свершилось! Поздравляю, это очень важная новость!

Ну и заодно вы сможете сэкономить на жадном регистраторе, который не хочет предоставлять вам свои NS сервера бесплатно.
Приходилось извращаться, находить регистраторы, у которых можно изменять А-записи бесплатно, делегировать на них домены и с них уже указывать на modhost…
Плюс есть такие регистраторы некоторых доменных зон, которые вообще не желают ничего трогать, кроме dns-адресов и только с дюжины пинков через техподдержку могут это сделать.

Спасибо за проделанную работу — теперь стало всё ещё проще!