R2m0x94 (Vasily)

R2m0x94 (Vasily)

С нами с 07 мая 2018; Место в рейтинге пользователей: #396
R2m0x94 (Vasily)
23 мая 2022, 15:57
0
Точнее в шаблоне 404 ошибки вызывайте этот сниппет и всё будет ОК.
R2m0x94 (Vasily)
23 мая 2022, 15:55
0
Или если нет страницы, то в плагине на событие OnHandleRequest отдать этот ответ.
R2m0x94 (Vasily)
23 мая 2022, 15:53
0
У меня даже почему-то она с параметром идёт domain.ru/admin/?attempt=1
Не знаю почему, но ответ можете отдать какой угодно.
Сниппет:
<?php
header(' ', true, 404);
R2m0x94 (Vasily)
23 мая 2022, 15:14
0
А как в всплывающем окне TinyMce [HTML] textarea заменить на редактор кода Ace?
R2m0x94 (Vasily)
22 мая 2022, 09:59
0
Нет, тут необходима кастомизация только для Ace с TinyMce
R2m0x94 (Vasily)
22 мая 2022, 09:56
0
У меня такая потребность появляется, потому что я редактирую в Ace, а контент-менеджер в Mce, поэтому мне надо угодить ему, чтобы было удобно в Mce открыть htmlSource и оперативно верстать при помощи emmet, затем сохранять обратно в Mce.

Думаю тут будет уместным разобрать вопрос, чтобы к нему уже не возвращаться. По факту надо найти функцию Сhange и при переключении toggle подменять на Ace, но как это сделать в Ext ума не приложу, так как если делать на onReady подмену textarea, то только Ace грузится в поле content, нормально объяснил?
R2m0x94 (Vasily)
21 мая 2022, 15:08
0
Или же как-то во FrontendEditor включить Ace?
R2m0x94 (Vasily)
19 мая 2022, 18:29
0
Да, вроде log_level стояло значение 3 (INFO), исправил на 1 (ERROR) и всё прошло. Так как INFO это просто оповещение информации о том, что кэш-файл был удалён с сервера.
R2m0x94 (Vasily)
10 мая 2022, 03:18
0
А если с pdoPage, то $idx не пашет, как вариант просто отключить удаление, чтоб id не сбивался.
Возможно в ext.как-то заменить record.id и будет от последнего из бд, а не из record.id x2
R2m0x94 (Vasily)
03 мая 2022, 00:10
0
в FAQ_get_questions добавьте idx для удобства в отображении корректных нумераций
// строка ~37
$idx = 0;
foreach ($items as $item) {
    $idx += 1;
    $list[] = $modx->getChunk($tpl, array_merge($item->toArray(), ['idx' => $idx]));
}
В чанке просто [[+idx]] или {$idx}
R2m0x94 (Vasily)
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);
};
R2m0x94 (Vasily)
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, но почему-то не получилось
R2m0x94 (Vasily)
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 можно не указывать. Надеюсь помог.
R2m0x94 (Vasily)
18 марта 2022, 19:11
0
Получилось, спасибо. Более детально описал ниже.
R2m0x94 (Vasily)
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 это уже исправят.
R2m0x94 (Vasily)
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 != '';
}
R2m0x94 (Vasily)
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
R2m0x94 (Vasily)
17 февраля 2022, 12:11
0
Спасибо, это самое, то что надо.
R2m0x94 (Vasily)
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
R2m0x94 (Vasily)
14 февраля 2022, 15:30
0
Проблема была успешно ликвидирована путем, что расширял класс с тем же названием, а надо было create another base class, от туда и не срасталось, а пишу, что всё делал по инструкции. Прошу прощения, виноват, делал на скорую руку.