Forked from
Stud.IP / Stud.IP
2764 commits behind the upstream repository.
-
Jan-Hendrik Willms authored
Closes #1911 Merge request studip/studip!1255
Jan-Hendrik Willms authoredCloses #1911 Merge request studip/studip!1255
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
ResponsiveHelper.php 10.05 KiB
<?php
/**
* ResponsiveHelper.php
*
* This class collects helper methods for Stud.IP's responsive design.
*
* @author Jan-Hendrik Willms <tleilax+studip@gmail.com>
* @license GPL2 or any later version
* @copyright Stud.IP core group
* @since Stud.IP 3.2
*/
class ResponsiveHelper
{
/**
* Returns the current navigation as an array.
*
* @return Array containing the navigation
*/
public static function getNavigationArray()
{
$navigation = [];
$activated = [];
$link_params = array_fill_keys(array_keys(URLHelper::getLinkParams()), null);
foreach (Navigation::getItem('/')->getSubNavigation() as $path => $nav) {
$image = $nav->getImage();
$forceVisibility = false;
/*
* Special treatment for "browse" navigation which is normally hidden
* when we are inside a course.
*/
if ($path === 'browse' && !$image) {
$image = Icon::create('seminar');
$forceVisibility = true;
}
/*
* Special treatment for "footer" navigation because
* the real footer is hidden in responsive view.
*/
if ($path === 'footer' && !$image) {
$image = Icon::create('info');
$nav->setTitle(_('Impressum & Information'));
$forceVisibility = true;
}
$image_src = $image ? $image->copyWithRole('info_alt')->asImagePath() : false;
$item = [
'icon' => $image_src ? self::getAssetsURL($image_src) : false,
'title' => (string) $nav->getTitle(),
'url' => URLHelper::getURL($nav->getURL(), $link_params, true),
'parent' => '/',
'path' => $path,
'visible' => $forceVisibility ? true : $nav->isVisible(true),
'active' => $nav->isActive()
];
if ($nav->isActive()) {
// course navigation is integrated in course sub-navigation items
if ($path === 'course') {
$activated[] = 'browse/my_courses/' . (Context::get()->getId());
} else {
$activated[] = $path;
}
}
if ($nav->getSubnavigation() && $path != 'start') {
$item['children'] = self::getChildren($nav, $path, $activated);
}