Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 147 комментариев

Василий Наумкин
Василий Наумкин
stateful — это встроенная фишка ExtJS, у них в доках описано.
Все само сохраняет и делает, нужно только указать верные параметры и функцию getState().

У меня отключено потому, что показалось не очень удобно, когда у юзера запоминается таб — он чаще нужен только первый.
Алексей Карташов
Алексей Карташов
Круто-круто! Спасибо огромное!

А вот это:
/*
	Ext.apply(this, {
		activeTab: 0
		,stateful: true
		,stateId: \'modx-user-tabs\'
		,stateEvents: [\'tabchange\']
		,getState: function() {
			return {
				activeTab:this.items.indexOf(this.getActiveTab())
			};
		}
	});
*/
, на сколько я понимаю, для того, чтобы активную вкладку запоминать? И где-то есть метод. который в это куку записывает?

p.s. интересный способ вывода скриптов через массив и implode) Возьму на заметку))
Василий Наумкин
Василий Наумкин
По второму вопросу сказать не могу — голова занята другим.

А по первому — держи плагин от 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.
Юрий Эффа
Юрий Эффа
Василий, благодарю за совет — буду иметь ввиду.
Полагаю, что в мой адрес посыпятся гром и молнии, но всё таки… А если сайт небольшой и производительностью можно пренебречь в угоду упрощения работы контент-менеджера..?)
Василий Наумкин
Василий Наумкин
Надо смотреть, какой указан шаблон у ресурса.
Потом идти в него, и отключать там сниппеты по одному, добавляя "-" в имени:
[[-!Wayfinder]]
И таким образом искать, что мешает.

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