Newer
Older
<?php
# Lifter010: TODO
/**
* StudipNavigation.php - Stud.IP root navigation class
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* @author Elmar Ludwig
* @author Michael Riehemann <michael.riehemann@uni-oldenburg.de>
* @license http://www.gnu.org/licenses/gpl-2.0.html GPL version 2
* @category Stud.IP
*/
/**
* This is the class for the top navigation (toolbar) in the page header.
*/
class StudipNavigation extends Navigation
{
/**
* Initialize the subnavigation of this item. This method
* is called once before the first item is added or removed.
*/
public function initSubNavigation()
{
global $perm, $user;
parent::initSubNavigation();
// top navigation (toolbar)
$this->addSubNavigation('start', new StartNavigation());
// if the user is not logged in, he will see the free courses, otherwise
// the my courses page will be shown.
if ($user->id !== 'nobody' || Config::get()->ENABLE_FREE_ACCESS) {
$this->addSubNavigation('browse', new BrowseNavigation());
}
// if a course is selected, the navigation for it will be loaded
if (Context::getId()) {
$this->addSubNavigation('course', new CourseNavigation(Context::get()));
if (
Config::get()->RESOURCES_ENABLE
&& Config::get()->RESOURCES_SHOW_PUBLIC_ROOM_PLANS
&& $user->id === 'nobody'
&& Room::publicBookingPlansExists()
) {
//Show a navigation entry for the public booking plans overview.
$nav = new Navigation(
_('Belegungspläne'),
URLHelper::getURL('dispatch.php/room_management/overview/public_booking_plans')
);
$nav->setImage(Icon::create('timetable', 'navigation'));
$this->addSubNavigation('public_booking_plans', $nav);
}
} catch (PDOException $e) {
//The resource migration probably hasn't run yet.
//Do nothing here.
}
// contents pages
$this->addSubNavigation('contents', new ContentsNavigation());
}
// contents pages
if (
Config::get()->OERCAMPUS_ENABLED
&& isset($perm)
&& $perm->have_perm(Config::get()->OER_PUBLIC_STATUS)
) {
$this->addSubNavigation('oer', new OERNavigation());
}
// internal message system
$this->addSubNavigation('messaging', new MessagingNavigation());
// community page
$this->addSubNavigation('community', new CommunityNavigation());
// user profile page
$this->addSubNavigation('profile', new ProfileNavigation());
// calendar and schedule page
$this->addSubNavigation('calendar', new CalendarNavigation());
// search page
$this->addSubNavigation('search', new SearchNavigation());
// avatar menu
$this->addSubNavigation('avatar', new AvatarNavigation());
} elseif (Config::get()->COURSE_SEARCH_IS_VISIBLE_NOBODY) {
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
// search page
$this->addSubNavigation('search', new SearchNavigation());
}
//Add the resource management icon, if that area is enabled
//and the current user either has global admin permissions in the
//room and resource management or if the the current user has
//autor permissions on at least one resource.
$current_user = User::findCurrent();
//The resources navigation entry shall only be visible
//for users who are logged in.
if ($current_user) {
try {
$show_resources_navigation = (
(
RoomManager::userHasRooms($current_user)
||
ResourceManager::userHasGlobalPermission(
$current_user,
'user'
)
)
&&
Config::get()->RESOURCES_ENABLE
);
if ($show_resources_navigation) {
$this->addSubNavigation('resources', new ResourceNavigation());
}
} catch (PDOException $e) {
//The resource migration probably hasn't run yet.
//Do nothing here.
}
}
// admin page
$this->addSubNavigation('admin', new AdminNavigation());
}
//mvv pages
if (MVV::isVisible()) {
$this->addSubNavigation('mvv', new MVVNavigation());
}
// quick links
$links = new Navigation('Links');
// login / logout
if (in_array('CAS', $GLOBALS['STUDIP_AUTH_PLUGIN'])) {
$links->addSubNavigation('login_cas', new Navigation(_('Login CAS'), Request::url(), ['again' => 'yes', 'sso' => 'cas', 'cancel_login' => 1]));
}
if (in_array('Shib', $GLOBALS['STUDIP_AUTH_PLUGIN'])) {
$links->addSubNavigation('login_shib', new Navigation(_('Login Shibboleth'), Request::url(), ['again' => 'yes', 'sso' => 'shib', 'cancel_login' => 1]));
}
$links->addSubNavigation('login', new Navigation(_('Login'), Request::url(), ['again' => 'yes']));
}
$this->addSubNavigation('links', $links);
// footer links
$this->addSubNavigation('footer', new FooterNavigation(_('Footer')));
// login page
$this->addSubNavigation('login', new LoginNavigation(_('Login')));
}
}