R2m0x94 (Vasily)

R2m0x94 (Vasily)

С нами с 07 мая 2018; Место в рейтинге пользователей: #315
02 мая 2022, 12:54
0
По сути на обновление надо повесить ace, и на создание, вопрос как?
FAQ.window.UpdateItem = function (config) {
    config = config || {};
    if (!config.id) {
        config.id = 'faq-item-window-update';
    }
    Ext.applyIf(config, {
        title: _('faq_item_update'),
        width: 550,
        autoHeight: true,
        url: FAQ.config.connector_url,
        action: 'mgr/item/update',
        fields: this.getFields(config),
        keys: [{
            key: Ext.EventObject.ENTER, shift: true, fn: function () {
                this.submit()
            }, scope: this
        }]
    });
    MODx.ux.Ace.replaceTextAreas(Ext.query('[name="answer"]')); // вроде правильно, но не работает
    FAQ.window.UpdateItem.superclass.constructor.call(this, config);
};
02 мая 2022, 12:44
0
А как в Ответ «answer» к полю в окне редактирования включить редактор Ace?

// assets/components/faq/js/mgr/widgets/items.windows.js
Ext.onReady(function(){
	if(MODx.ux.Ace.replaceTextAreas) {
		MODx.ux.Ace.replaceTextAreas(Ext.query('[name="answer"]'));
	}
});
добавляю Ext, но почему-то не получилось
17 апреля 2022, 10:26
1
0
В сниппете mFilter2 раскомментируйте или добавьте строку на ~408, чтобы посмотреть в журнале ошибок — на какой странице проблема.
<?php
if (in_array($v['type'], array('number', 'decimal')) && isset($suggestions[$filter_key])) {
    $tmp = $suggestions[$filter_key];
    array_walk($tmp, function($v, $k) use (&$tmp) {
        if (empty($v)) {
            unset($tmp[$k]);
        }
    });
    $tmp = array_keys($tmp);
    if ($v['type'] == 'number') {
        $current_value = ($idx == 0)
            ? floor(min($tmp))
            : ceil(max($tmp));
            //$modx->log(modX::LOG_LEVEL_ERROR, 'PHP warning: min & max: [mSearch2] array("number", "decimal"): on "'.urldecode($_SERVER['REQUEST_URI']).'"');
    } else {
        $current_value = ($idx == 0)
            ? min($tmp)
            : max($tmp);
    }
}
Далее, проверьте в самом вызове сниппета параметр &suggestions — какой фильтр используется, потом перейдите в чанк с input type=[number] и добавьте к input атрибуты min=«0» и max=«1000», max можно не указывать. Надеюсь помог.
18 марта 2022, 19:11
0
Получилось, спасибо. Более детально описал ниже.
18 марта 2022, 19:10
0
Возможное решение:
Решение не совсем правильное, так как если выгрузить на хостинг ошибка пропадает, зато если разработка ведётся локально, то напрягает, поэтому временно идём в Медиа > Источники файлов, там ставим в графах basePath & baseUrl полный путь с диска до корня, например: E:\OSPanel\domains\site.ru\

Ошибка пропадает, изображение грузится ОК, но при этом выбор файла не доступен. Удачных разработок и перед выгрузкой на хостинг ставим медиа источник обратно.

Лирика:
Конечно времени ездить по файлом почти ни у кого нет core\model\phpthumb\phpthumb.class.php:3474 функция SetCacheFilename(), там есть такой код:
if ($this->md5s) {
	// source image MD5 hash provided
	// do not source image modification date --
	// cached image will be used even if file was modified or removed
} elseif (!$this->config_cache_source_filemtime_ignore_remote && preg_match('#^(f|ht)tps?\://#i', $this->src)) {
	$this->cache_filename .= '_dat'.intval(phpthumb_functions::filedate_remote($this->src));
} elseif (!$this->config_cache_source_filemtime_ignore_local && $this->src && !$this->rawImageData) {
	$this->cache_filename .= '_dat'.intval(@filemtime($this->sourceFilename));
}
Можно увидеть, что в строке есть функция filemtime(), которая отдаёт 0, почему? Потому, что если убрать ссылку @ от функции, то вы увидите в журнале не корректный путь, который конечно можно перезапрограмировать в этой строке:
$this->cache_filename .= '_dat'.intval(@filemtime($this->sourceFilename));
Надеюсь помог, и не забываем про обратный слэш \/

Скорей всего в новых версиях ModX >= 3 это уже исправят.
28 февраля 2022, 15:00
0
А у меня стоит на submit minishop2 «msCustomerAutoReg», и он при создании нового пользователя, когда логгинет в ЛК, выдаёт это предупреждение на стоках core/model/modx/error/moderror.class.php:168 и 250, пока временно внёс правки хотя знаю, что так делать нельзя.

168 строка
if (is_array($this->errors) || is_object($this->errors)) {
    $count_errors = count($this->errors);
} else {
    $count_errors = '';
}
return array (
    'success' => $status,
    'message' => $this->message,
    'total' => isset ($this->total) && $this->total != 0 ? $this->total : $count_errors,
    'errors' => $this->errors,
    'object' => $objarray,
);
250 строка
public function hasError() {
    if (is_array($this->errors) || is_object($this->errors)) {
        $count_errors = count($this->errors);
    }
    return $count_errors > 0 || $this->message != '';
}
17 февраля 2022, 12:14
0
Проверил, у меня ресурс программно создаётся и даже в searchable 1 — В индекс не добавляется. Сейчас из консольки попробовал запустить процессор, всё хорошо. Ваше решение помогло, спасибо огромное, а на дебаге вот:
Notice: Trying to access array offset on value of type int in /core/components/msearch2/phpmorphy/src/fsa/access/fsa_sparse_file.php on line 32
17 февраля 2022, 12:11
0
Спасибо, это самое, то что надо.
16 февраля 2022, 21:07
0
Там, я уже был. Спасибо.

Мне нужно добавление слов в индекс при создании товара, то есть из плагина. А настройка mse2OnBeforeSearchIndex, что-то не срабатывает и в бд слова не пишутся. От того и вопрос, как выполнить индексацию слов при том, что есть публичная функция Index()

Индексация происходит в админке и за неё отвечает assets/components/msearch2/js/mgr/widgets/index.form.js:27
core/components/msearch2/processors/mgr/index/create.class.php:148
14 февраля 2022, 15:30
0
Проблема была успешно ликвидирована путем, что расширял класс с тем же названием, а надо было create another base class, от туда и не срасталось, а пишу, что всё делал по инструкции. Прошу прощения, виноват, делал на скорую руку.
14 февраля 2022, 14:04
0
Возможно я что-то упустил или в видео этого нет, но попробую обуздать в примерах понимании об addPackage, loadClass и getService и подключении сторонних таблиц, хотя так-то из консоли кастомный класс работает, добавляет объект и получает объект и коллекцию, что на обычной версии, что на про версии.
14 февраля 2022, 13:13
0
Попробовал на тестовом сделать, как у Вас на видео. Делал всё по видео инструкции, но валятся ошибки
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/xpdo/xpdo.class.php : 1321) Could not get table class for class: PromoCupons
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/xpdo/xpdo.class.php : 1290) Could not get table name for class: PromoCupons
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/xpdo/xpdo.class.php : 1321) Could not get table class for class: PromoCupons
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/xpdo/xpdo.class.php : 1290) Could not get table name for class: PromoCupons
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/xpdo/xpdo.class.php : 762) PromoCupons::getSelectColumns() is not a valid static method.
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/xpdo/xpdo.class.php : 762) PromoCupons::loadCollection() is not a valid static method.
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/model/modx/modprocessor.class.php : 525) PHP warning: Invalid argument supplied for foreach()
В консоле ругань или на manager/assets/ext3/ext-all.js или на assets/components/promocupons/connector.php при добавлении в бд из меню Promo Cupons.

Не знаю в чем дело, не получилось и да в бд добавлял запись проверить отображение в админке — тоже не вышло.
07 февраля 2022, 11:01
0
А компонент msOrderFields дополняет msOrderDiscount? Хочу поставить, но боюсь конфликта с msOrderDiscount
05 февраля 2022, 12:28
+1
В любом случае должно получится, а иначе попробовать можно msOrderFields (490 р)
05 февраля 2022, 02:11
0
Кэш браузера чистили?
24 декабря 2021, 17:03
0
Разумеется, если в настройке ms2_plugins была бы возможность добавлять плагины просто через запятую (например ms2_plugins: availability, custom_modules, deliverytime и т.д., которые подключены напрямую из папки plugins/), то отпали бы такие заметки, и деактивация плагинов проходила бы глаже при регистрации того же плагина в другое место.

Надеюсь на то, что в minishop3 появится такая возможность из коробки.
24 декабря 2021, 14:49
0
Привет, лично у меня при разработке ушло на это время, и я не смог понять, почему если я регистрирую плагин относительно пути
/plugins/order/custom_modules/index.php
И вдруг захотел сменить путь на более удобный
/plugins/custom_fields/index.php
У меня появляется эта ошибка, сразу задался вопросом, а как же происходит регистрация плагинов, но ответа не нашел, поэтому и решил проблему таким способом
/plugins/custom_fields/ms2/index.php
Странно, но работает))
24 декабря 2021, 14:29
0
Да, и главное не надо боятся переименовывать, переносить папки и файлы указывая правильные пути на сервере, а также переименовывать результат в ms2_plugins, чтобы не трогать бэкапы.
SELECT * FROM `modx_system_settings` WHERE `key` LIKE 'ms2_plugins'
23 декабря 2021, 19:26
1
0
На всякий случай если не заработает, то
// удаляем плагин
if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->removePlugin('cart');
}
// добавляем вновь
$plugin = '{core_path}components/minishop2/plugins/cart/availability/index.php';
if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->addPlugin('availability', $plugin);
}
// результат в ms2_plugins: {"availability":"{core_path}components\/minishop2\/plugins\/cart\/availability\/index.php"}

/* Вложенность иерархии в дереве и подключение, тоже имеют значение:
plugins
|_cart
|_|_availability
|_|_|_index.php
|_|_|_msproductdata.map.inc.php
*/
22 декабря 2021, 18:38
0
Точнее так будет более правильнее:
$plugin = ['availability' => '{core_path}components/minishop2/plugins/cart/availability/index.php'];
if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->addPlugin('cart', $plugin);
}