SEQUEL.ONE

SEQUEL.ONE

С нами с 16 июня 2015; Место в рейтинге пользователей: #85
SEQUEL.ONE
24 июня 2020, 16:42
0
API у них под мобайл заточен, но есть неофициальные API.
SEQUEL.ONE
24 июня 2020, 16:35
0
&context = `web`
Попробуйте до и после знака равно удалить пробелы.
SEQUEL.ONE
24 июня 2020, 13:07
0
Спасибо. То что нужно! =)
SEQUEL.ONE
23 июня 2020, 16:17
0
Не понятна структура вашего сайта в древе ресурсов. Но проблема здесь с параметром parents и level
SEQUEL.ONE
22 июня 2020, 12:12
0
Да, такая же. За исключением того, что я пытаюсь в компоненте modExtra это сделать в всплывающем окне при редактировании.
SEQUEL.ONE
22 июня 2020, 10:27
0
Проверил работу функции вроде бы хорошо подставляются данные в поля Артист и Участники, но вот в поле beatmaker ничего не подставляется, а в поле Название добавляется битмейкер со скобками:

43 (Павел Underground prod)
Нужно чтобы в поле name битмейкер в скобках не подставлялся. А в поле beatmaker должен добавляться только битмейкер без скобок.

Можно это как-то пофиксить?
SEQUEL.ONE
22 июня 2020, 01:26
+1
Вроде бы так должно работать.
function parseTrack($str) {
    [$first_part, $second_part] = explode(' - ', $str); 
    $first_part = preg_replace('~^\d+\. ?~', '', $first_part); 

    [$artist, $feat] = explode(' feat. ', $first_part);
    $feat = !empty($feat) ? explode(',', $feat) : null; 

    preg_match('~^(.*?)(?: \(([^(]+) prod.\))?$~', $second_part, $match);
    return [
        'artist' => $artist, 
        'feat' => $feat, 
        'name' => $match[1],
        'beatmaker' => isset($match[2]) ? $match[2] : null
    ];
}
SEQUEL.ONE
22 июня 2020, 00:22
0
Осталось разобраться как теперь из этого вырезать нужное.
SEQUEL.ONE
22 июня 2020, 00:20
0
Начало положено. Такой регуляркой можно вырезать цифры с точкой от начала:

^\K\d{2,}.
Потом, видимо, использовать PHP функцию типа trim, удаляющую пробел справа в начале и можем работать дальше с такими записями:

ГудВин[Герои Комиксов] — Орут сирены(фристайл)
Стильный Билли feat. aka Ахмед — Чисто ё (Стильный Билли prod.)
Nuttkase feat. Птаха — Если Друг (Хасол-Версия) (Phunk Masta Seven prod.)
Dr.MokRolog,Old Primus,JustSmile,Vine Bi — Электрограч (Pro100 Beatz prod.)
SEQUEL.ONE
21 июня 2020, 23:40
0
Сам никогда не юзал, но похоже то что вам нужно является параметром:
urlScheme
https://docs.modx.com/current/en/extras/simplesearch/simplesearch
SEQUEL.ONE
21 июня 2020, 14:57
0
Проблема так и не решилась. Видимо какой-то косяк с MODX.Window. Возможно проблема заключается в том, что выпадающий список у меня формируется из товаров miniShop2, но мне как раз необходим такой функционал. Может кто-то увидит этот комментарий и поможет разобраться?
SEQUEL.ONE
20 июня 2020, 15:00
0
А где бы сам процессор sort.class.php подсмотреть?)
SEQUEL.ONE
20 июня 2020, 02:07
0
В MIGX такое реализовано в TV, но как я понимаю там он создаёт JSON.
SEQUEL.ONE
16 июня 2020, 23:07
0
Не помогло =(
SEQUEL.ONE
16 июня 2020, 23:00
0
Или могу доступы дать к тестовому сайту.
SEQUEL.ONE
16 июня 2020, 22:59
0
Там последний коммит без этих художеств)
SEQUEL.ONE
16 июня 2020, 22:58
0
Что-то вообще перестало в это поле сохранять. Можете посмотреть что не так github.com/SequelONE/modExtra?
SEQUEL.ONE
16 июня 2020, 22:13
0
Вот get.class.php

<?php

class modExtraItemGetProcessor extends modObjectGetProcessor
{
    public $objectType = 'modExtraItem';
    public $classKey = 'modExtraItem';
    public $languageTopics = ['modextra:default'];
    //public $permission = 'view';


    /**
     * We doing special check of permission
     * because of our objects is not an instances of modAccessibleObject
     *
     * @return mixed
     */
    public function process()
    {
        if (!$this->checkPermissions()) {
            return $this->failure($this->modx->lexicon('access_denied'));
        }

        return parent::process();
    }

    public function cleanup()
    {
        $array = $this->object->toArray();
        if(!empty($array['products'])) {
            $array['products'] = explode(',', $array['products']);
        }
        return $this->success('', $array);
    }

}

return 'modExtraItemGetProcessor';
Вот create.class.php

<?php

class modExtraItemCreateProcessor extends modObjectCreateProcessor
{
    public $objectType = 'modExtraItem';
    public $classKey = 'modExtraItem';
    public $languageTopics = ['modextra'];
    //public $permission = 'create';


    /**
     * @return bool
     */
    public function beforeSet()
    {
        $name = trim($this->getProperty('name'));

        if (empty($name)) {
            $this->modx->error->addField('name', $this->modx->lexicon('modextra_item_err_name'));
        } elseif ($this->modx->getCount($this->classKey, ['name' => $name])) {
            $this->modx->error->addField('name', $this->modx->lexicon('modextra_item_err_ae'));
        }

        $this->setProperty('products', implode(',', $this->getProperty('products')));

        return parent::beforeSet();
    }

}

return 'modExtraItemCreateProcessor';
и update.class.php по аналогии с create.class.php
<?php

class modExtraItemUpdateProcessor extends modObjectUpdateProcessor
{
    public $objectType = 'modExtraItem';
    public $classKey = 'modExtraItem';
    public $languageTopics = ['modextra'];
    //public $permission = 'save';


    /**
     * We doing special check of permission
     * because of our objects is not an instances of modAccessibleObject
     *
     * @return bool|string
     */
    public function beforeSave()
    {
        if (!$this->checkPermissions()) {
            return $this->modx->lexicon('access_denied');
        }

        return true;
    }


    /**
     * @return bool
     */
    public function beforeSet()
    {
        $id = (int)$this->getProperty('id');
        $name = trim($this->getProperty('name'));
        if (empty($id)) {
            return $this->modx->lexicon('modextra_item_err_ns');
        }

        if (empty($name)) {
            $this->modx->error->addField('name', $this->modx->lexicon('modextra_item_err_name'));
        } elseif ($this->modx->getCount($this->classKey, ['name' => $name, 'id:!=' => $id])) {
            $this->modx->error->addField('name', $this->modx->lexicon('modextra_item_err_ae'));
        }

        $this->setProperty('products', implode(',', $this->getProperty('products')));

        return parent::beforeSet();
    }
}

return 'modExtraItemUpdateProcessor';
SEQUEL.ONE
16 июня 2020, 22:10
0
В базу сохраняет NULL, если в базе сохранить
1,2,3
ничего не отображается, и поломался Grid в добавок =(
SEQUEL.ONE
16 июня 2020, 21:25
0
Нет, в соседней ветке про superboxselect этот формат так назвали, по мне так это на JSON больше похоже)