Василий Наумкин

Василий Наумкин

С нами с 08 декабря 2012; Место в рейтинге пользователей: #1
Василий Наумкин
19 сентября 2013, 16:00
0
Он по понятиям косячит, или как? На счетчик не пробовал ставить?
Василий Наумкин
19 сентября 2013, 13:59
0
Думаю, да.

Но лучше еще погуглить.
Василий Наумкин
19 сентября 2013, 13:34
0
Насколько я помню, именно она именует PHPSESSID.

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

Я сейчас не соображу, как правильно должно быть, поэтому просто поиграйся.
У тебя есть метод для очистки и родителя и самого тикета — это clearCache().
Василий Наумкин
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:33
0
У MODX сессии хранятся в БД, и стартует он их сам, выставляя нужные куки.

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


А сейчас ты, как я думаю, просто мешаешь работать MODX изменениями php.ini.
Василий Наумкин
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:50
0
Это однозначно ошибка.
Проверяется просто: через контекстное меню удалить стартовую страницу нельзя, а через редактирование — можно.

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

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

Я думаю, теперь ты чаще будешь видеть свои иконки, учитывая популярность HybridAuth для MODX.

Обновление с радостью добавлю!
Василий Наумкин
18 сентября 2013, 17:23
9
0
<?php
$tvid = 1; // id нужного ТВ параметра
$res = array(); // Сюда забиваем результаты

$q = $modx->newQuery('modTemplateVarResource', array('tmplvarid' => $tvid));
$q->select('contentid,value');
if ($q->prepare() && $q->stmt->execute()) {
	while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
		$res[$row['contentid']] = $row['value'];
	}
}
print_r($res);

Получишь массив с id ресурсов и значенями ТВ c id = 1.
Василий Наумкин
18 сентября 2013, 14:32
0
stateful — это встроенная фишка ExtJS, у них в доках описано.
Все само сохраняет и делает, нужно только указать верные параметры и функцию getState().

У меня отключено потому, что показалось не очень удобно, когда у юзера запоминается таб — он чаще нужен только первый.
Василий Наумкин
18 сентября 2013, 10:56
0
По второму вопросу сказать не могу — голова занята другим.

А по первому — держи плагин от Extras, там всё понятно:
if ($modx->event->name == 'OnManagerPageBeforeRender') {

	$controller->Extras = $Extras = $modx->getService('extras','Extras', MODX_CORE_PATH . 'components/extras/model/extras/', array());

	$controller->addLexiconTopic('extras:default');
	//$controller->addJavascript($this->modx->getOption('manager_url',null,MODX_MANAGER_URL).'assets/modext/util/datetime.js');
	$controller->addJavascript($Extras->config['jsUrl'].'mgr/extras.js');
	$controller->addJavascript($Extras->config['jsUrl'].'misc/extras.combo.js');
	$controller->addJavascript($Extras->config['jsUrl'].'mgr/widgets/key/keys.grid.js');
	$controller->addJavascript($Extras->config['jsUrl'].'mgr/widgets/extras.tree.js');
	$controller->addCss($Extras->config['cssUrl'].'mgr/main.css');

	$scripts = array(
		'head' => '
			Extras.config = '.$modx->toJSON($Extras->config).';
			Extras.config.connector_url = "'.$Extras->config['connectorUrl'].'";
		'
		,'tree' => $modx->hasPermission('extras_tree')
			? '
			Ext.ComponentMgr.onAvailable(\'modx-leftbar-tabpanel\', function() {
				this.on(\'beforerender\', function() {
					this.add({
						title: _(\'extras_packages\')
						,xtype: \'extras-tree-extras\'
						,id: \'extras-tree-extras\'
					});
				});
			});
			'
			: ''
		,'user' => '
			Ext.ComponentMgr.onAvailable(\'modx-user-tabs\', function() {
			/*
				Ext.apply(this, {
					activeTab: 0
					,stateful: true
					,stateId: \'modx-user-tabs\'
					,stateEvents: [\'tabchange\']
					,getState: function() {
						return {
							activeTab:this.items.indexOf(this.getActiveTab())
						};
					}
				});
			*/
				this.on(\'beforerender\', function() {
					this.add({
						title: _(\'extras_keys\')
						,xtype: \'extras-panel-keys\'
						,id: \'extras-panel-keys\'
					});
				});
			});
		'
		,'permissions' => $modx->hasPermission('extras_repository_new')
			? 'MODx.perm.extras_repository_new = true;'
			: ''
	);

	$controller->addHtml('<script type="text/javascript">'.implode("\n", $scripts).'</script>');
}

Вся соль в волшебном методе Ext.ComponentMgr.onAvailable.
Василий Наумкин
17 сентября 2013, 19:44
0
Да мне то без разницы как у тебя сайт будет работать.

Просто предупредил.
Василий Наумкин
17 сентября 2013, 10:40
0
Начал писать, понял, что это долго и сложно.

Проще сделать новую версию, с этим изменением. Постараюсь сегодня выпустить.
Василий Наумкин
17 сентября 2013, 10:18
0
Не знаю, надо у них на сайте почитать.
Василий Наумкин
17 сентября 2013, 09:28
0
(ворчит про поисковики и ленивых читателей)

Держи ссылку — там и про добавление иконки в launcher есть.
Василий Наумкин
17 сентября 2013, 09:12
0
Надо смотреть, какой указан шаблон у ресурса.
Потом идти в него, и отключать там сниппеты по одному, добавляя "-" в имени:
[[-!Wayfinder]]
И таким образом искать, что мешает.

Скорость загрузки нужно выводить плейсхолдером [^t^] (у меня в левом нижнем углу сайта, например, всегда показывается).