Дмитрий

Дмитрий

С нами с 05 ноября 2018; Место в рейтинге пользователей: #363
Дмитрий
14 марта 2020, 17:36
0
В том числе, при смене родительского ресурса, как у неопубликованного тикета, так и у опубликованного меняется замороженный url. Зачем он тогда вообще нужен?

И если раньше ошибка:
...../core/xpdo/om/xpdoquery.class.php: 764) Encountered empty IN condition with key id
была только при смене родительского ресурса у неопубликованного тикета, то теперь она возникает и у опубликованного.
Дмитрий
14 марта 2020, 17:05
0
При установки пакета выдает ошибку в установщике:
...
Trying to install pdoTools. Please wait...
modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
...
Пробовал на чистой установке на 2-x хостингах, в том числе на modhost.pro

Кроме того, я уже писал об этом здесь
При смене в админке родительского ресурса у неопубликованного тикета в лог летит ошибка:
...../core/xpdo/om/xpdoquery.class.php: 764) Encountered empty IN condition with key id
И с замороженным URL хрень какая-то, такое ощущение, что ЭТО живет само по себе. Снимаешь галочку, например, и удаляешь url, но после сохранения опять чекбокс отмечен и url вписывается той категории, в которой изначально был создан тикет. И другие баги с замороженным url
Дмитрий
14 марта 2020, 15:44
0
Нет, она не мешает сохранять ресурс и вроде бы ни на что не влияет с первого взгляда.
Но ошибка есть.

Я так понимаю, при сохранении ресурса создается второй экземпляр с этим же id.
А в файле ckeditor.js в строке 347 следующий код предотвращает это и одновременно выдает ошибку:
if(a.getEditor())throw'The editor instance "'+a.getEditor().name+'" is already attached to the provided element.';

Именно при сохранении, так как в другом случае, например, при обновлении страницы в админке вот эта конструкция:
a.getEditor() // выдает null
А при сохранении там уже объект с id: tv1 или tv2, tv3 и т.д., в зависимости от id TV
Дмитрий
14 марта 2020, 15:21
0
Как нет?
Заходишь в ресурс, открываешь консоль, сохраняешь ресурс и в консоль летит ошибка.
В указанной демо версии: Uncaught The editor instance «tv1» is already attached to the provided element.
в файле ckeditor.js:347

Дмитрий
04 февраля 2020, 19:13
0
Благодарю, но немного не то.
Задача отловить изменение значения TV при сохранении ресурса и передать новое значение скрипту, а не отлавливать ввод с клавиатуры в одно поле с тем чтобы значение менялось в другом
Дмитрий
04 февраля 2020, 19:12
1
0
Пока получилось добиться следующего.
switch ($modx->event->name) {
    case 'OnDocFormPrerender':
    $modx->controller->addHTML('
	<script type="text/javascript">	
			Ext.ComponentMgr.onAvailable("modx-panel-resource", function (e) {			
			var res = Ext.getCmp("modx-panel-resource");
			res.on("beforeSubmit", function(){			
			// Меняем зачение TV поля			
			Ext.get("tv45").dom.value = "'.$resource->getTVValue(6).'";			
			});		    
		});
    </script>');
    break;
}

Значение поля меняется сразу после сохранения без перезагрузки страницы. Вставляется сразу значение и оно видно в поле, исключение TV поле типа image, так как в image вставляется вначале в скрытое поле (как сделать чтобы в TV типа image значение сразу было видно в поле, пока не понял).

Значение вставляется, однако это значение получено из базы до изменения (то есть старое значение), поскольку событие «OnDocFormPrerender» происходит до загрузки формы редактирования ресурса в менеджере и скрипт регистрируется со старым значением.

Проблемы (задачи/вопросы).
1. Как отловить изменение значения при сохранении ресурса и передать новое значение скрипту, не могу понять. Ведь как-то, думаю, на ExtJS можно отловить это событие (изменение значения при сохранении ресурса «OnDocFormSave») и передать уже зарегистрированному скрипту???

2. Как сделать, чтобы в TV поле типа image вставляемое скриптом значение сразу становилось видимым?

А пока данный кодом можно воспользоваться (может кому пригодиться), если нужно вставить при сохранении ресурса значение из одного TV поля в другое, при этом значение сразу видно в админке и сохраняется в базе.
Дмитрий
03 февраля 2020, 20:51
0
Неужели в MODX ExtJS все настолько запутано, и никто в нем не разбирается, что уже 3 суток знающих не находится?
Дмитрий
02 февраля 2020, 19:31
0
вместо консоль лога, делай запрос на самописный контроллер и проверяй то что нужно изменить, очень извращенный вариант)))
так это будет меняться только при ручном вводе в инпут

лучше напиши задачу полностью, может есть более элегантное решение
Нужно чтобы при изменении значения определенного tv поля в плагине на событие 'OnDocFormSave' значение tv сразу менялось в инпуте в админке.
А то получается, что значение поля изменено, а в инпуте этого TV поля остается старое значение. И получается. что так до бесконечности можно изменять, а значение в инпут будет старое, пока не перезагрузишь страницу Ctrl+F5
Дмитрий
02 февраля 2020, 19:03
0
Если нужно изменить TV во время сохранения (в базе), думаю это событие подойдет OnDocFormSave. По событиям гуглится на ура, например pitrooo.ru/note/modx-plaginyi-i-sobyitiya-dlya-nix-(events).html
Так у меня так и меняется, но изменение в админке не видно, значение TV в инпут изменяется только после перезагрузки страницы. Если страницу не перезагружать, то в инпут значение не меняется. Как в этом случае воспользоваться событием js или jquery на изменение.

Например
$("#tv10").on("input",function() {
  console.log($("#tv10").val());
});
будет отслеживать в реальном времени при вводе в инпут, но никак не будет отслеживать изменение значения в базе.

Если нужно на лету подменять значение, то js в помощь
можно пример. применительно к поставленной задаче…
Дмитрий
02 февраля 2020, 18:18
0
А попробуйте в скрипте вместо события beforeSubmit
поставить submit
Это ничего не даст.
Дмитрий
02 февраля 2020, 18:17
0
Повесь отдельный js на инпут и отслеживай изменение, а дальше по обстоятельствам… либо меняй значение, либо перезагружай страницу.
Сомневаюсь, что обычным js это получится, так как сами изменения происходят не в инпут, а в базе (как я понимаю). А в инпуте происходят изменения как раз после перезагрузки страницы.

По ExtJs куча документация на офф сайте docs.sencha.com/extjs/3.4.0/
Да офф документация есть, но документации именно по MODX ExtJs нет. И как применить это все к MODX никак не могу разобраться.
Дмитрий
02 февраля 2020, 16:21
0
Поменял заголовок вопроса, кто знаком с MODX ExtJS, прошу помочь!
Как в админке с помощью ExtJS отследить изменение значения TV и поменять его сразу или перезагрузкой стараницы?
Дмитрий
02 февраля 2020, 15:31
0
Это я в качестве примера указал, а так видимо отслеживать изменение полей надо на ExtJS, но документации по MODX ExtJS нет, как и примеров.
Дмитрий
02 февраля 2020, 00:26
0
Раньше, запускается до загрузки формы редактирования ресурса в менеджере и регистрируется ExtJS.
Дмитрий
05 января 2020, 23:21
0
Твой вариант почти в 2 раза быстрее отрабатывает.
Дмитрий
05 января 2020, 23:03
0
Было бы вообще замечательно узнать, как из TV image вытащить basePath — это был бы универсальный вариант. Но пока попытки не увенчались успехом.
Дмитрий
05 января 2020, 22:57
0
Благодарю, то что нужно.
Я прежде чем спрашивать, вначале сам предпринимаю попытки решить. Просто писать, что предпринимал, во-первых уже не помню, во-вторых, это необходимо документировать, но думаю это глупо, если не получалось.

Вот мой вариант с попытки № хз какой...:))
$source = $modx->getObject('modMediaSource', 4);
$properties = $source->getProperties();
$basePath = $properties['basePath']['value'];

Думаю, что примерно одно и то же. Или какой-то вариант предпочтителен и более правильный?
Как более опытный, подскажи.
Дмитрий
05 января 2020, 20:20
0
Такая тишина больше суток, что думается это сделать не возможно? Или все-таки возможно, но никто не задавался таким вопросом?
Или знающие еще не увидели этот вопрос?
Дмитрий
29 декабря 2019, 23:58
0
Сделал генерацию изображений такого вида: mymameimage-1.jpg не хакая родной класс.

Создал свой собственный класс, который унаследовал исходный класс ogImage и заменил его метод generatePreview.

Вот статья Василия, может кому пригодится. Сам только сегодня ее обнаружил.