Index: branches/unlabeled/unlabeled-1.27.2/core/units/admin/admin_tag_processor.php =================================================================== diff -u -r7036 -r7051 --- branches/unlabeled/unlabeled-1.27.2/core/units/admin/admin_tag_processor.php (.../admin_tag_processor.php) (revision 7036) +++ branches/unlabeled/unlabeled-1.27.2/core/units/admin/admin_tag_processor.php (.../admin_tag_processor.php) (revision 7051) @@ -223,6 +223,13 @@ $folder_label = $section_data['label']; ksort($section_data['children'], SORT_NUMERIC); foreach ($section_data['children'] as $priority => $section_name) { + // if only tabs in this section & none of them have permission, then skip section too + $section_data =& $sections_helper->getSectionData($section_name); + if ($section_data && isset($section_data['perm_prefix'])) { + // this section uses other section permissions + $section_name = $this->Application->getUnitOption($section_data['perm_prefix'].'.main', 'PermSection'); + } + $perm_status = $this->Application->CheckPermission($section_name.'.view', 1); if ($perm_status) { break; @@ -238,8 +245,13 @@ $section_data['label'] = $folder_label; // use folder label in tree $section_data['is_tab'] = 1; } - elseif (!$this->Application->CheckPermission($section_name.'.view', 1)) { - continue; + else { + if ($section_data && isset($section_data['perm_prefix'])) { + // this section uses other section permissions + $section_name = $this->Application->getUnitOption($section_data['perm_prefix'].'.main', 'PermSection'); + } + + if (!$this->Application->CheckPermission($section_name.'.view', 1)) continue; } $params['children_count'] = isset($section_data['children']) ? count($section_data['children']) : 0;