Всего 122 777 комментариев

Василий Наумкин
19 сентября 2013, 16:00
0
Он по понятиям косячит, или как? На счетчик не пробовал ставить?
Пётр Молчанов
19 сентября 2013, 14:46
0
Да гуглил уже 2е суток)
Василий Наумкин
19 сентября 2013, 13:59
0
Думаю, да.

Но лучше еще погуглить.
Андрей
19 сентября 2013, 13:52
0
Как ни игрался, и вперед вставлял и назад, и $resource->clearCache(); добавлял — все равно последний добавленный тикет отображается со старыми значениями.
Пётр Молчанов
19 сентября 2013, 13:39
0
Вот видимо и нашлось решение моих бед) Раз уж завязался диалог, подскажи, корректно ли использовать эту куку для определения включены ли куки?
Василий Наумкин
19 сентября 2013, 13:34
0
Насколько я помню, именно она именует PHPSESSID.

Так что, да.
Пётр Молчанов
19 сентября 2013, 13:20
0
А имеет ли значение, если я в настройках у session_name указал своё?
Василий Наумкин
19 сентября 2013, 13:17
0
Попробуй добавить перед сохранением.

Я сейчас не соображу, как правильно должно быть, поэтому просто поиграйся.
У тебя есть метод для очистки и родителя и самого тикета — это clearCache().
Андрей
19 сентября 2013, 13:15
0
Добавил твой код после $resource->save();
Теперь вновь созданный тикет — со старыми значениями pagetitle и uri (т.е. не изменяются), а все предыдущие становятся как нужно.
switch($modx->event->name) {
	case 'OnDocFormSave':
		if ($mode == 'new' && $resource->class_key == "Ticket") {		
                    $resource->set('pagetitle', $id);
                    $resource->set('alias', $id);
                    $resource->set('uri', 'q/'.$id.'/');
                    $resource->set('uri_override', 1);
                    $resource->set('published', 1);
                    $resource->save();

                    if ($parent = $resource->getOne('Parent')) {
                      if ($parent instanceof TicketsSection) {
                 	$parent->clearCache();
                      }
                    }
	break;
}
Василий Наумкин
19 сентября 2013, 13:02
0
Надо чистить кэш родительской секции тикетов.

if ($parent = $resource->getOne('Parent')) {
	if ($parent instanceof TicketsSection) {
		$parent->clearCache();
	}
}
Василий Наумкин
19 сентября 2013, 12:47
0
Ну а как тогда в MODX работает сессия, без PHPSESSID?

Я сейчас в хроме удаляю куку, перезагружаю страницу и вижу новую, с другим значением. Из админки вышел, смотрю в анонимном режиме.

Так что, всё на месте.
Пётр Молчанов
19 сентября 2013, 12:39
0
Прежде, чем лезть в php.ini я глянул куки в файрбаге и, не найдя PHPSESSID для своего домена, стал что-то делать

З.Ы. щас глянул еще раз: на фронте PHPSESSID нет, а в бэке — есть
Василий Наумкин
19 сентября 2013, 12:33
0
У MODX сессии хранятся в БД, и стартует он их сам, выставляя нужные куки.

Поэтому, делать ничего не нужно, просто обратись к $_COOKIE['PHPSESSID'] — должно работать.


А сейчас ты, как я думаю, просто мешаешь работать MODX изменениями php.ini.
Муравьев Олег
19 сентября 2013, 12:02
0
у меня такая же проблема. Только не пойму логики modx, зачем они так сделали?!
Oliver Inkman
19 сентября 2013, 11:19
0
Почему же мечты, я добавляю версии иконок 24px-512px, на счет SVG сомневаюсь, зато я добавлю CSS файлы с готовыми классами всех иконок!
Алексей Карташов
19 сентября 2013, 10:17
0
Пока завёл баг в трекере. Как у себя логику проработаю — буду им потом pull-r выкатывать.
Василий Наумкин
19 сентября 2013, 09:02
0
Чего переживать? Создай вопрос на bugs.modx.com
Если есть желание — предложи своё решение, а там пусть думают как лучше сделать.

В конце концов, процессор — это класс, и из него можно запускать методы отдельно — они там все public.
if ($processor = new modResourceDeleteProcessor($this->modx, $this->properties)) {
	$childrenIds = $processor->getChildrenIds();
	$processor->fireBeforeDelete($childrenIds);
	$processor->deleteChildren();
	// и так далее...
}
Алексей Карташов
19 сентября 2013, 08:57
0
А с точки зрения организации кода — можно ли запускать процессор из процессора?
Такого в родных процессорах я вроде не встречал и этого могут не принять.
Да и, скорей всего, это будет не правильно — ведь в процессорах на (un)publish/delete в конце чистится кеш, ставятся/снимаются блокировки — всё это и так делается в процессоре на update. Такого точно не примут.
Значит надо будет методы переносить и компоновать.
Василий Наумкин
19 сентября 2013, 08:50
0
Это однозначно ошибка.
Проверяется просто: через контекстное меню удалить стартовую страницу нельзя, а через редактирование — можно.

На мой взгляд, из процессора update нужно запускать процессоры publish и delete в нужных случаях, чтобы было всё верно.

Пиши коммит.
Василий Наумкин
19 сентября 2013, 03:36
0
Если делаешь для себя и переносить никуда не планируешь — то вполне правильный метод.