diff options
| author | Philipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de> | 2024-09-24 10:53:31 +0200 |
|---|---|---|
| committer | Philipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de> | 2024-09-24 10:53:31 +0200 |
| commit | 4459dd7917f4d1c34f40bb68f0e991e9c3d53e4c (patch) | |
| tree | 5c07151ae61276d334e88f6309c30d439a85c12e /lib/navigation | |
| parent | da0022e5c1abbf9825ae76debaabdff7e8623bb4 (diff) | |
| parent | 97a188592c679890a25c37ab78463add76a52ff7 (diff) | |
Merge branch 'main' into issue-3911issue-3911
Diffstat (limited to 'lib/navigation')
| -rw-r--r-- | lib/navigation/AdminNavigation.php | 14 | ||||
| -rw-r--r-- | lib/navigation/BrowseNavigation.php | 13 | ||||
| -rw-r--r-- | lib/navigation/ContentsNavigation.php | 9 | ||||
| -rw-r--r-- | lib/navigation/CourseNavigation.php | 68 | ||||
| -rw-r--r-- | lib/navigation/FooterNavigation.php | 9 | ||||
| -rw-r--r-- | lib/navigation/LoginNavigation.php | 6 | ||||
| -rw-r--r-- | lib/navigation/Navigation.php | 7 | ||||
| -rw-r--r-- | lib/navigation/ProfileNavigation.php | 6 | ||||
| -rw-r--r-- | lib/navigation/ResourceNavigation.php | 6 | ||||
| -rw-r--r-- | lib/navigation/StartNavigation.php | 5 | ||||
| -rw-r--r-- | lib/navigation/StudipNavigation.php | 2 |
11 files changed, 70 insertions, 75 deletions
diff --git a/lib/navigation/AdminNavigation.php b/lib/navigation/AdminNavigation.php index 7d9cd2d..3e63876 100644 --- a/lib/navigation/AdminNavigation.php +++ b/lib/navigation/AdminNavigation.php @@ -75,9 +75,6 @@ class AdminNavigation extends Navigation $navigation->addSubNavigation('faculty', new Navigation(_('Mitarbeiter'), 'dispatch.php/institute/members?admin_view=1')); $navigation->addSubNavigation('groups', new Navigation(_('Funktionen / Gruppen'), 'dispatch.php/admin/statusgroups?type=inst')); - if (Config::get()->EVAL_ENABLE) { - $navigation->addSubNavigation('evaluation', new Navigation(_('Evaluationen'), 'admin_evaluation.php?view=eval_inst')); - } if (Config::get()->EXTERN_ENABLE) { $navigation->addSubNavigation('external', new Navigation(_('Externe Seiten'), 'dispatch.php/institute/extern')); @@ -129,7 +126,7 @@ class AdminNavigation extends Navigation $navigation->addSubNavigation('banner', new Navigation(_('Werbebanner'), 'dispatch.php/admin/banner')); } - if (PluginManager::getInstance()->getPlugin('CoursewareModule')) { + if (PluginManager::getInstance()->getPlugin(CoursewareModule::class)) { $navigation->addSubNavigation( 'courseware', new Navigation( @@ -207,17 +204,8 @@ class AdminNavigation extends Navigation $navigation->addSubNavigation('cronjobs', new Navigation(_('Cronjobs'), 'dispatch.php/admin/cronjobs/schedules')); } - if (Config::get()->PERSONALDOCUMENT_ENABLE) { - $navigation->addSubNavigation('document_area', new Navigation(_('Pers. Dateibereich'), 'dispatch.php/document/administration')); - } - - $navigation->addSubNavigation('admissionrules', new Navigation(_('Anmelderegeln'), 'dispatch.php/admission/ruleadministration')); - if (Config::get()->API_ENABLED) { - $navigation->addSubNavigation('api', new Navigation(_('API'), 'dispatch.php/admin/api')); - } - $navigation->addSubNavigation('oauth2', new Navigation(_('OAuth2'), 'dispatch.php/admin/oauth2/index')); $navigation->addSubNavigation('globalsearch', new Navigation(_('Globale Suche'), 'dispatch.php/globalsearch/settings')); diff --git a/lib/navigation/BrowseNavigation.php b/lib/navigation/BrowseNavigation.php index 8a89d6c..7faf0c6 100644 --- a/lib/navigation/BrowseNavigation.php +++ b/lib/navigation/BrowseNavigation.php @@ -22,14 +22,10 @@ class BrowseNavigation extends Navigation */ public function __construct() { - global $user, $perm; + global $perm; $courselink = null; - // check if logged in - $coursetext = ''; - $courseinfo = ''; - $courselink = null; - if (is_object($user) && $user->id != 'nobody') { + if (User::findCurrent()) { $coursetext = _('Veranstaltungen'); $courseinfo = _('Meine Veranstaltungen & Einrichtungen'); @@ -37,14 +33,15 @@ class BrowseNavigation extends Navigation $courselink = 'dispatch.php/admin/courses'; } } else { - $coursetext = _('Freie'); + $coursetext = _('Freie Veranstaltungen'); $courseinfo = _('Freie Veranstaltungen'); $courselink = 'dispatch.php/public_courses'; } parent::__construct($coursetext, $courselink); + if (!Context::getId()) { - $this->setImage(Icon::create('seminar', 'navigation', ["title" => $courseinfo])); + $this->setImage(Icon::create('seminar', Icon::ROLE_NAVIGATION, ['title' => $courseinfo])); } } diff --git a/lib/navigation/ContentsNavigation.php b/lib/navigation/ContentsNavigation.php index 821d3ad..a00adb6 100644 --- a/lib/navigation/ContentsNavigation.php +++ b/lib/navigation/ContentsNavigation.php @@ -42,7 +42,7 @@ class ContentsNavigation extends Navigation $this->addSubNavigation('overview', $overview); - if (PluginManager::getInstance()->getPlugin('CoursewareModule')) { + if (PluginManager::getInstance()->getPlugin(CoursewareModule::class)) { $courseware = new Navigation(_('Courseware')); $courseware->setDescription(_('Erstellen und Sammeln von Lernmaterialien')); $courseware->setImage(Icon::create('courseware')); @@ -124,13 +124,6 @@ class ContentsNavigation extends Navigation } } - if (Config::get()->EVAL_ENABLE) { - $eval = new Navigation(_('Evaluationen'), 'admin_evaluation.php', ['rangeID' => $GLOBALS['user']->username]); - $eval->setImage(Icon::create('test')); - $eval->setDescription(_('Erstellen Sie komplexe Befragungen')); - $this->addSubNavigation('evaluation', $eval); - } - // elearning if (Config::get()->ELEARNING_INTERFACE_ENABLE) { $elearning = new Navigation(_('Lernmodule'), 'dispatch.php/elearning/my_accounts'); diff --git a/lib/navigation/CourseNavigation.php b/lib/navigation/CourseNavigation.php index 6e37cf5..7db8019 100644 --- a/lib/navigation/CourseNavigation.php +++ b/lib/navigation/CourseNavigation.php @@ -15,28 +15,34 @@ class CourseNavigation extends Navigation { + private $range; + /** * Initialize a new Navigation instance. */ - public function __construct() + public function __construct(Range $range) { - global $user, $perm; + if (!($range instanceof Course) && !($range instanceof Institute)) { + throw new InvalidArgumentException('Invalid range type "' . get_class($range) . '" for course navigation'); + } + + $this->range = $range; // check if logged in - if (is_object($user) && $user->id != 'nobody') { + if (User::findCurrent()) { $coursetext = _('Veranstaltungen'); $courseinfo = _('Meine Veranstaltungen & Einrichtungen'); $courselink = 'dispatch.php/my_courses'; } else { - $coursetext = _('Freie'); + $coursetext = _('Freie Veranstaltungen'); $courseinfo = _('Freie Veranstaltungen'); $courselink = 'dispatch.php/public_courses'; } parent::__construct($coursetext, $courselink); - if (is_object($user)) { - $this->setImage(Icon::create('seminar', 'navigation', ["title" => $courseinfo])); + if (User::findCurrent()) { + $this->setImage(Icon::create('seminar', Icon::ROLE_NAVIGATION, ['title' => $courseinfo])); } } @@ -48,21 +54,19 @@ class CourseNavigation extends Navigation { parent::initSubNavigation(); - $context = Context::get(); - if (!$context) { - return; - } - $admin_plugin_ids = []; - $core_admin = PluginManager::getInstance()->getPlugin('CoreAdmin'); + + $core_admin = PluginManager::getInstance()->getPlugin(CoreAdmin::class); if ($core_admin) { $admin_plugin_ids[] = $core_admin->getPluginId(); } - $core_studygroup_admin = PluginManager::getInstance()->getPlugin('CoreStudygroupAdmin'); + + $core_studygroup_admin = PluginManager::getInstance()->getPlugin(CoreStudygroupAdmin::class); if ($core_studygroup_admin) { $admin_plugin_ids[] = $core_studygroup_admin->getPluginId(); } - $tools = $context->tools->getArrayCopy(); + + $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; @@ -72,22 +76,32 @@ class CourseNavigation extends Navigation } return $a['position'] - $b['position']; }); + foreach ($tools as $tool) { - if (Context::isInstitute() || Seminar_Perm::get()->have_studip_perm($tool->getVisibilityPermission(), $context->id)) { - $studip_module = $tool->getStudipModule(); - if ($studip_module instanceof StudipModule) { - $tool_nav = $studip_module->getTabNavigation($context->id) ?: []; - foreach ($tool_nav as $nav_name => $navigation) { - if ($nav_name && is_a($navigation, "Navigation")) { - if ($tool->metadata['displayname']) { - $navigation->setTitle($tool->getDisplayname()); - } - $this->addSubNavigation($nav_name, $navigation); - } - } + 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); } } } - } diff --git a/lib/navigation/FooterNavigation.php b/lib/navigation/FooterNavigation.php index 32a4182..4319c97 100644 --- a/lib/navigation/FooterNavigation.php +++ b/lib/navigation/FooterNavigation.php @@ -69,13 +69,20 @@ class FooterNavigation extends Navigation && User::findCurrent() ) ) { + $url = Request::url(); + + // Remove 'page' parameter if the page links to itself + if (str_contains($url, 'dispatch.php/accessibility/forms/report_barrier')) { + $url = URLHelper::getURL($url, ['page' => null], true); + } + $this->addSubNavigation( 'report_barrier', new Navigation( _('Barriere melden'), URLHelper::getURL( 'dispatch.php/accessibility/forms/report_barrier', - ['page' => Request::url(), 'cancel_login' => '1'] + ['page' => $url, 'cancel_login' => '1'] ) ) ); diff --git a/lib/navigation/LoginNavigation.php b/lib/navigation/LoginNavigation.php index f5a1a38..7eb3cf0 100644 --- a/lib/navigation/LoginNavigation.php +++ b/lib/navigation/LoginNavigation.php @@ -36,7 +36,11 @@ class LoginNavigation extends Navigation $standard_login_active = true; } if ($auth_plugin instanceof StudipAuthSSO && isset($auth_plugin->login_description)) { - $navigation = new Navigation($auth_plugin->plugin_fullname . ' ' . _('Login'), '?sso=' . $auth_plugin->plugin_name); + $navigation = new Navigation( + $auth_plugin->plugin_fullname . ' ' . _('Login'), + Request::url(), + ['again' => 'yes', 'sso' => $auth_plugin->plugin_name, 'cancel_login' => 1] + ); $navigation->setDescription($auth_plugin->login_description); $this->addSubNavigation('login_' . $auth_plugin->plugin_name, $navigation); } diff --git a/lib/navigation/Navigation.php b/lib/navigation/Navigation.php index 3c02e86..af4355b 100644 --- a/lib/navigation/Navigation.php +++ b/lib/navigation/Navigation.php @@ -562,12 +562,9 @@ class Navigation implements IteratorAggregate } /** - * IteratorAggregate: Create interator for request parameters. - * - * @todo Add Traversable return type when Stud.IP requires PHP8 minimal + * IteratorAggregate: Create iterator for request parameters. */ - #[\ReturnTypeWillChange] - public function getIterator() + public function getIterator(): Traversable { return new ArrayIterator($this->getSubNavigation()); } diff --git a/lib/navigation/ProfileNavigation.php b/lib/navigation/ProfileNavigation.php index 50dcfec..307cd98 100644 --- a/lib/navigation/ProfileNavigation.php +++ b/lib/navigation/ProfileNavigation.php @@ -114,10 +114,6 @@ class ProfileNavigation extends Navigation $navigation->addSubNavigation('deputies', new Navigation(_('Standardvertretung'), 'dispatch.php/settings/deputies')); } - if (Config::Get()->API_ENABLED) { - $navigation->addSubNavigation('api', new Navigation(_('API-Berechtigungen'), 'dispatch.php/api/authorizations')); - } - if (TwoFactorAuth::isEnabledForUser()) { $navigation->addSubNavigation('tfa', new Navigation(_('Zwei-Faktor-Authentifizierung'), 'dispatch.php/tfa')); } @@ -139,7 +135,7 @@ class ProfileNavigation extends Navigation // Add consultations if appropriate if (Config::get()->CONSULTATION_ENABLED) { - $plugin = PluginEngine::getPlugin('ConsultationModule'); + $plugin = PluginEngine::getPlugin(ConsultationModule::class); if ($current_user && $plugin && PluginManager::getInstance()->isPluginActivatedForUser($plugin->getPluginId(), $current_user->id)) { $this->addSubNavigation('consultation', new ConsultationNavigation($current_user)); } diff --git a/lib/navigation/ResourceNavigation.php b/lib/navigation/ResourceNavigation.php index 17ca4be..02c2b40 100644 --- a/lib/navigation/ResourceNavigation.php +++ b/lib/navigation/ResourceNavigation.php @@ -30,14 +30,16 @@ class ResourceNavigation extends Navigation public function initItem() { + parent::initItem();; + $user = User::findCurrent(); - if (ResourceManager::userHasGlobalPermission($user, 'user')) { + if (ResourceManager::userHasGlobalPermission($user)) { $this->setURL('dispatch.php/room_management/overview/index'); } else { $this->setURL('dispatch.php/room_management/overview/rooms'); } $this->setImage( - Icon::create('resources', 'navigation', ['title' => _('Raumverwaltung')]) + Icon::create('resources', Icon::ROLE_NAVIGATION, ['title' => _('Raumverwaltung')]) ); } diff --git a/lib/navigation/StartNavigation.php b/lib/navigation/StartNavigation.php index 913f3fa..0a6d52a 100644 --- a/lib/navigation/StartNavigation.php +++ b/lib/navigation/StartNavigation.php @@ -222,7 +222,7 @@ class StartNavigation extends Navigation // contents $navigation = new Navigation(_('Mein Arbeitsplatz'), 'dispatch.php/contents/overview'); - if (PluginManager::getInstance()->getPlugin('CoursewareModule')) { + if (PluginManager::getInstance()->getPlugin(CoursewareModule::class)) { $navigation->addSubNavigation('courseware', new Navigation(_('Courseware'), 'dispatch.php/contents/courseware')); } @@ -231,9 +231,6 @@ class StartNavigation extends Navigation if (Config::get()->VOTE_ENABLE) { $navigation->addSubNavigation('questionnaire', new Navigation(_('Ankündigungen'), 'dispatch.php/news/admin_news')); } - if (Config::get()->EVAL_ENABLE) { - $navigation->addSubNavigation('evaluation', new Navigation(_('Evaluationen'), 'admin_evaluation.php', ['rangeID' => $auth->auth['uname']])); - } // elearning if (Config::get()->ELEARNING_INTERFACE_ENABLE) { diff --git a/lib/navigation/StudipNavigation.php b/lib/navigation/StudipNavigation.php index 4a61153..bc3fae9 100644 --- a/lib/navigation/StudipNavigation.php +++ b/lib/navigation/StudipNavigation.php @@ -40,7 +40,7 @@ class StudipNavigation extends Navigation // if a course is selected, the navigation for it will be loaded if (Context::getId()) { - $this->addSubNavigation('course', new CourseNavigation()); + $this->addSubNavigation('course', new CourseNavigation(Context::get())); } try { |
