Свежий релиз сборки с вкусной плюшкой :) работает только на новой тебе с DropdownMenu

Теперь можно менять элементы в дереве (через плагин на событие OnManagerNodePrerender), к примеру иконки скрывать дочерние документы, менять логику действия по клику, изменять контекстное меню и другое


Так же появилась галочка которая скрывает все дочерние документы из дерева массово:


Полный список изменений:
- refactor onManagerNodePrerender (now can full castomize tree, only for MODxRE_dropdownMenu)
- update IF 
- update DocLister to 2.3.1
- update DLBuildMenu to 1.2
- alias_visible fix - select children of hidden parents when building cache
- Fix install check db version
- update tinyMCE to 4.6.1


Пример плагина который меняет контекстное меню:
$e = &$modx->Event;
switch($e->name){
	case 'OnManagerNodePrerender':
		if($ph['id'] == '9'){
			//Просто меняем иконку если id 9
			$ph['icon'] = "<i class='fa fa-address-card-o'></i>";
		}

		if($ph['id'] == '10'){
			//скрываем дочерние документы + меняем иконку + пишем в лог переменные масива ph что б глянуть что же можно изменять
			$ph['icon'] = "<i class='fa fa-list'></i>";
			//$ph['icon_folder_open'] = "<i class='fa fa-list-alt'></i>";
			//$ph['icon_folder_close'] = "<i class='fa fa-list-ul'></i>";
			$ph['showChildren'] = '0';
			$ph['tree_page_click'] = 'index.php?a=3&id='.$ph['id'].'&tab=1';

			$modx->logEvent(123, 1, '<pre>- '.print_r($ph, true).' -</pre>', 'Заголовок сообщения'. $ph['id']);
		}

		if($ph['id'] == '10') {
			//Свое кастомное меню для примера взял стандартное что б было понятно что изменять
			$ph['contextmenu'] = array(
				'header1' => array(
					'innerText' => $ph['nodetitle'],
				),
				'item3' => array(
					'innerHTML' => '<i class="fa fa-file-o fa-fw fa-lg"></i> Добавить товар',
					'title' => 'Дочерний ресурс',
					'id' => 'item3',
					'onclick' => "modx.tree.menuHandler(3);",
				),
				'item2' => array(
					'innerHTML' => '<i class="fa fa-pencil-square-o fa-fw fa-lg"></i> Редактировать',
					'title' => ' Редактировать',
					'id' => 'item2',
					'onclick' => "modx.tree.menuHandler(2);",
				),
				'item5' => array(
					'innerHTML' => '<i class="fa fa-arrows fa-fw fa-lg"></i> Переместить',
					'title' => 'Переместить',
					'id' => 'item5',
					'onclick' => "modx.tree.menuHandler(5);",
				),
				'item7' => array(
					'innerHTML' => '<i class="fa fa-clone fa-fw fa-lg"></i> Сделать копию',
					'title' => 'Сделать копию',
					'id' => 'item7',
					'onclick' => "modx.tree.menuHandler(7);",
				),
				'item11' => array(
					'innerHTML' => '<i class="fa fa-sort-numeric-asc fa-fw fa-lg"></i> Сортировать по позиции в меню',
					'title' => 'Сортировать по позиции в меню',
					'id' => 'item11',
					'onclick' => "modx.tree.menuHandler(11);",
				),
				'seperator' => '',
				'item9' => array(
					'innerHTML' => '<i class="fa fa-arrow-up fa-fw fa-lg"></i> Опубликовать',
					'title' => 'Опубликовать',
					'id' => 'item9',
					'onclick' => "modx.tree.menuHandler(9);",
				),
				'item10' => array(
					'innerHTML' => '<i class="fa fa-arrow-down fa-fw fa-lg"></i> Отменить публикацию',
					'title' => 'Отменить публикацию',
					'id' => 'item10',
					'onclick' => "modx.tree.menuHandler(10);",
				),
				'item4' => array(
					'innerHTML' => '<i class="fa fa-trash fa-fw fa-lg"></i> Удалить',
					'title' => 'Удалить',
					'id' => 'item4',
					'onclick' => "modx.tree.menuHandler(4);",
				),
				'item8' => array(
					'innerHTML' => '<i class="fa fa-arrow-circle-o-up fa-fw fa-lg"></i> Восстановить',
					'title' => 'Восстановить',
					'id' => 'item8',
					'onclick' => "modx.tree.menuHandler(8);",
				),
				'seperator2' => '',
				'item6' => array(
					'innerHTML' => '<i class="fa fa-link fa-fw fa-lg"></i> Дочерняя веб-ссылка',
					'title' => 'Дочерняя веб-ссылка',
					'id' => 'item6',
					'onclick' => "modx.tree.menuHandler(6);",
				),
				'seperator3' => '',
				'item1' => array(
					'innerHTML' => '<i class="fa fa-list fa-fw fa-lg"></i> Все товары',
					'title' => 'Обзор ресурса',
					'id' => 'item1',
					'onclick' => "modx.tree.menuHandler(1);",
				),
				'item12' => array(
					'innerHTML' => '<i class="fa fa-eye fa-fw fa-lg"></i> Просмотр',
					'title' => 'Просмотр',
					'id' => 'item12',
					'onclick' => "modx.tree.menuHandler(12);",
				),
				'seperator4' => '',
				'item100' => array(
					'innerHTML' => '<i class="fa fa-info fa-fw"></i> Пример своего пункта',
					'title' => 'Title',
					'id' => 'item1',
					'onclick' => "alert('Простой алерт можно заменить на что угодно работает любой js')",
				),

				'image2' => array(
					'innerHTML' => '<img src="/assets/images/modx-logo.png" width="200" />'
				)
			);
			//Незабываем проверять если документ опубликован то ссылка опубликовать не имеет смысла так же как и сортировка пунктов если это не папка. 

			if ($ph['isfolder']=='0') unset($ph['contextmenu']['item11']);
			if ($ph['deleted']=='0') unset($ph['contextmenu']['item8']);
			if ($ph['deleted']=='1') unset($ph['contextmenu']['item4']);
			if ($ph['published']=='0') unset($ph['contextmenu']['item10']);
			if ($ph['published']=='1') unset($ph['contextmenu']['item9']);
		}

		$e->output(serialize($ph));
		break;
}


В целом логика работы 1 в 1 с работой плагина на изменение верхнего меню:
$e = &$modx->Event;
switch($e->name){
        case 'OnManagerMenuPrerender':
	        if($_SESSION['mgrRole']!=='2') return;
                unset($menu['reports']);
				unset($menu['tools']);
				unset($menu['users']);
	            unset($menu['modules']);
				unset($menu['elements']);
				unset($menu['add_resource']);
				unset($menu['add_weblink']);

                $menu['remove_locks']     = array('remove_locks','site','Удалить блокировки','javascript:removeLocks();','Удалить блокировки','this.blur();','remove_locks','',0,20,'');

                $e->output(serialize($menu));
        break;
}


Таким образом мы можем полностью изменять админку под свои нужны.
Ну и еще минус 2 преимущества REVO(изменение меню и collections), по части collections в планах сделать модуль который даст возможность удобно работать с документами ибо это очень важная часть для Интернет магазинов и нужен мне в evoShop.

Скачивать как всегда с гит или тут: modx.com.ua