aboutsummaryrefslogtreecommitdiff
path: root/lib/navigation
diff options
context:
space:
mode:
authorPhilipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de>2024-09-24 10:53:31 +0200
committerPhilipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de>2024-09-24 10:53:31 +0200
commit4459dd7917f4d1c34f40bb68f0e991e9c3d53e4c (patch)
tree5c07151ae61276d334e88f6309c30d439a85c12e /lib/navigation
parentda0022e5c1abbf9825ae76debaabdff7e8623bb4 (diff)
parent97a188592c679890a25c37ab78463add76a52ff7 (diff)
Merge branch 'main' into issue-3911issue-3911
Diffstat (limited to 'lib/navigation')
-rw-r--r--lib/navigation/AdminNavigation.php14
-rw-r--r--lib/navigation/BrowseNavigation.php13
-rw-r--r--lib/navigation/ContentsNavigation.php9
-rw-r--r--lib/navigation/CourseNavigation.php68
-rw-r--r--lib/navigation/FooterNavigation.php9
-rw-r--r--lib/navigation/LoginNavigation.php6
-rw-r--r--lib/navigation/Navigation.php7
-rw-r--r--lib/navigation/ProfileNavigation.php6
-rw-r--r--lib/navigation/ResourceNavigation.php6
-rw-r--r--lib/navigation/StartNavigation.php5
-rw-r--r--lib/navigation/StudipNavigation.php2
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 {