Сергей Шлоков

Сергей Шлоков

С нами с 31 января 2013; Место в рейтинге пользователей: #3
Сергей Шлоков
09 ноября 2015, 09:44
+3
Все компоненты ExtJs выводятся в контейнерах. Основные контейнеры — это панели и окна. В данном случае, контейнер с вкладками Ресурсы, Элементы, Файлы — это tabPanel. Если посмотреть исходный код, то можно увидеть, что у этого контейнера есть id — 'modx-leftbar-tabpanel'. Получая компонент через метод Ext.getCmp(), можно использовать все его методы, в том числе и add(), который добавляет дочерние элементы — табы. Но можно воспользоваться альтернативным способом. В MODX есть метод addTab(), который также добавляет вкладку указанной панели.
MODx.addTab('modx-leftbar-tabpanel',{
	id: "id нового таба",
	title: "Заголовок таба",
	items: [{
		xtype: "x-type элемента, который будет показан на вкладке (в данном случае это дерево)"
		//, другие параметры 
	}]
})
П.С. Начинать изучать ExtJs с дерева — не очень хорошая идея. Это сложный компонент. Лучше начинать разбираться с чего-то попроще.
В ближайшее время выйдет статья, где поподробнее поговорим о компонентах ExtJs.
Сергей Шлоков
07 ноября 2015, 21:49
+1
У комбобокса, как и у любого поля формы, должно быть имя — атрибут name, а также hiddenName. Они должны совпадать друг с другом. А для зачитки данных с сервера нужно указать mode: 'remote'.
Сергей Шлоков
06 ноября 2015, 22:41
+1
Если понять принцип работы компонентов, то все становится просто
'select': {
	fn: function (o) {
		var hostpanel_combo_version = Ext.getCmp( config.id +'-version'),
			store = hostpanel_combo_version.store;
		// Удаляем старые записи из комбобокса
		store.removeAll();
		// Прописываем нужный параметр для getlist процессора
		store.baseParams['parent'] = o.value;
		// Зачитываем новые записи
		store.load();
		// Очищаем поле комбобокса
		hostpanel_combo_version.setValue('');
	}, scope:this
}
Сергей Шлоков
06 ноября 2015, 20:23
+1
Спать вчетвером. :)
Сергей Шлоков
06 ноября 2015, 20:20
+1
Подход абсолютно не правильный. Ничего удалять не надо. У каждого комбобокса есть store. Нужно для store второго комбобокса указать выбранное значение в качестве параметра baseParams, а в его getlist процессоре учитывать этот параметр для ограничения запроса. Затем перечитать store.load().
Дал направление для самостоятельной попытки. Если не получится, пиши.
Сергей Шлоков
06 ноября 2015, 09:16
+1
В смысле getlist процессором, который выглядит так
<?php
class hostPanelSettingsGetListProcessor extends modObjectGetListProcessor {
	public $objectType = 'hostPanelSettings';
	public $classKey = 'hostPanelSettings';

return 'hostPanelSettingsGetListProcessor';
Сергей Шлоков
05 ноября 2015, 21:18
+1
И то, и другое содержат ошибки. Данные в комбобокс нужно зачитывать gitlist процессором.
Сергей Шлоков
05 ноября 2015, 10:10
0
Лучше это делать через создание пакета.
Сергей Шлоков
04 ноября 2015, 19:38
+1
Ясно.
П.С. Wassi, дружище, извини за небольшой флуд.
Сергей Шлоков
04 ноября 2015, 18:21
0
День работы (8 часов) выходит в 4400 руб, 2 дня — 8800 руб. Я просто не знаком с правилами фрилансеров. Хотелось бы понять (чисто для себя) как рассчитывается стоимость работ.
Сергей Шлоков
04 ноября 2015, 18:13
0
А сколько же сейчас стоит час программиста?
Сергей Шлоков
04 ноября 2015, 11:19
0
как НА чудо :)
Странно, что ни одного вопроса нет.
Сергей Шлоков
04 ноября 2015, 10:49
+1
ShowLog же включен, смотри получившийся sql запрос.
Сергей Шлоков
03 ноября 2015, 11:10
1
+2
Микросниппет, который выводит группы пользователей через запятую, если их несколько
$groups = implode(',',$modx->user->getUserGroupNames());
return $groups;
Сергей Шлоков
03 ноября 2015, 08:16
0
Автор статьи может быть одновременно членом групп Копирайтер и Администраторы. Чего выводить?