range = $range; global $user; // check if logged in if (User::findCurrent()) { $coursetext = _('Veranstaltungen'); $courseinfo = _('Meine Veranstaltungen & Einrichtungen'); $courselink = 'dispatch.php/my_courses'; } else { $coursetext = _('Freie'); $courseinfo = _('Freie Veranstaltungen'); $courselink = 'dispatch.php/public_courses'; } parent::__construct($coursetext, $courselink); if (User::findCurrent()) { $this->setImage(Icon::create('seminar', Icon::ROLE_NAVIGATION, ['title' => $courseinfo])); } } /** * Initialize the subnavigation of this item. This method * is called once before the first item is added or removed. */ public function initSubNavigation() { parent::initSubNavigation(); $admin_plugin_ids = []; $core_admin = PluginManager::getInstance()->getPlugin(CoreAdmin::class); if ($core_admin) { $admin_plugin_ids[] = $core_admin->getPluginId(); } $core_studygroup_admin = PluginManager::getInstance()->getPlugin(CoreStudygroupAdmin::class); if ($core_studygroup_admin) { $admin_plugin_ids[] = $core_studygroup_admin->getPluginId(); } $tools = $this->range->tools->getArrayCopy(); usort($tools, function ($a, $b) use ($admin_plugin_ids) { if (in_array($a['plugin_id'], $admin_plugin_ids)) { return -1; } if (in_array($b['plugin_id'], $admin_plugin_ids)) { return 1; } return $a['position'] - $b['position']; }); foreach ($tools as $tool) { if ( !($this->range instanceof Institute) && !Seminar_Perm::get()->have_studip_perm($tool->getVisibilityPermission(), $this->range->id) ) { continue; } $studip_module = $tool->getStudipModule(); if (!($studip_module instanceof StudipModule)) { continue; } $tool_nav = $studip_module->getTabNavigation($this->range->id) ?: []; foreach ($tool_nav as $nav_name => $navigation) { if (!$nav_name || !$navigation instanceof Navigation) { continue; } if ($tool->metadata['displayname']) { $navigation->setTitle($tool->getDisplayname()); } $this->addSubNavigation($nav_name, $navigation); } } } }