Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/src/CoreBundle/Menu/LeftMenuBuilder.php

467 lines
14 KiB

<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Menu;
use Knp\Menu\FactoryInterface;
use Knp\Menu\ItemInterface;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerAwareTrait;
/**
* Class LeftMenuBuilder.
*
* @package Chamilo\CoreBundle\Menu
*/
class LeftMenuBuilder implements ContainerAwareInterface
{
use ContainerAwareTrait;
/**
* Course menu.
*
* @param FactoryInterface $factory
* @param array $options
*
* @return ItemInterface
*/
public function courseMenu(FactoryInterface $factory, array $options)
{
$checker = $this->container->get('security.authorization_checker');
$menu = $factory->createItem('root');
$translator = $this->container->get('translator');
$checked = $this->container->get('session')->get('IS_AUTHENTICATED_FULLY');
$settingsManager = $this->container->get('chamilo.settings.manager');
if ($checked) {
$menu->setChildrenAttribute('class', 'nav nav-pills nav-stacked');
$menu->addChild(
$translator->trans('MyCourses'),
[
'route' => 'userportal',
'routeParameters' => ['type' => 'courses'],
]
);
return $menu;
if (api_is_allowed_to_create_course()) {
$lang = $translator->trans('CreateCourse');
if ($settingsManager->getSetting('course.course_validation') == 'true') {
$lang = $translator->trans('CreateCourseRequest');
}
$menu->addChild(
$lang,
['route' => 'add_course']
);
}
$link = $this->container->get('router')->generate('web.main');
$menu->addChild(
$translator->trans('ManageCourses'),
[
'uri' => $link.'auth/courses.php?action=sortmycourses',
]
);
$browse = $settingsManager->getSetting('display.allow_students_to_browse_courses');
if ($browse == 'true') {
if ($checker->isGranted('ROLE_STUDENT') && !api_is_drh(
) && !api_is_session_admin()
) {
$menu->addChild(
$translator->trans('CourseCatalog'),
[
'uri' => $link.'auth/courses.php',
]
);
} else {
$menu->addChild(
$translator->trans('Dashboard'),
[
'uri' => $link.'dashboard/index.php',
]
);
}
}
/** @var \Knp\Menu\MenuItem $menu */
$menu->addChild(
$translator->trans('History'),
[
'route' => 'userportal',
'routeParameters' => [
'type' => 'sessions',
'filter' => 'history',
],
]
);
}
return $menu;
}
/**
* Course menu.
*
* @param FactoryInterface $factory
* @param array $options
*
* @return ItemInterface
*/
public function sessionMenu(FactoryInterface $factory, array $options)
{
$checker = $this->container->get('security.authorization_checker');
$menu = $factory->createItem('root');
$translator = $this->container->get('translator');
$settingsManager = $this->container->get('chamilo.settings.manager');
if ($checker->isGranted('IS_AUTHENTICATED_FULLY')) {
$menu->setChildrenAttribute('class', 'nav nav-pills nav-stacked');
$menu->addChild(
$translator->trans('MySessions'),
[
'route' => 'userportal',
'routeParameters' => ['type' => 'sessions'],
]
);
if ($checker->isGranted('ROLE_ADMIN')) {
$menu->addChild(
$translator->trans('AddSession'),
[
'route' => 'legacy_main',
'routeParameters' => ['name' => 'session/session_add.php'],
]
);
}
}
return $menu;
}
/**
* @param FactoryInterface $factory
* @param array $options
*
* @return ItemInterface
*/
public function profileMenu(FactoryInterface $factory, array $options)
{
$menu = $factory->createItem('root');
$security = $this->container->get('security.authorization_checker');
$translator = $this->container->get('translator');
if ($security->isGranted('IS_AUTHENTICATED_FULLY')) {
$menu->setChildrenAttribute('class', 'navbar-nav');
$menu->addChild(
$translator->trans('Inbox'),
[
'route' => 'legacy_main',
'routeParameters' => [
'name' => 'messages/inbox.php',
],
]
);
$menu->addChild(
$translator->trans('Compose'),
[
'route' => 'legacy_main',
'routeParameters' => [
'name' => 'messages/new_message.php',
],
]
);
$menu->addChild(
$translator->trans('PendingInvitations'),
[
'route' => 'legacy_main',
'routeParameters' => [
'name' => 'social/invitations.php',
],
]
);
$menu->addChild(
$translator->trans('MyFiles'),
[
'route' => 'legacy_main',
'routeParameters' => [
'name' => 'social/myfiles.php',
],
]
);
$menu->addChild(
$translator->trans('EditProfile'),
[
'route' => 'legacy_main',
'routeParameters' => [
'name' => 'messages/inbox.php',
],
]
);
$menu->addChild(
$translator->trans('Inbox'),
[
'route' => 'legacy_main',
'routeParameters' => [
'name' => 'messages/inbox.php',
],
]
);
}
// Set CSS classes for the items
foreach ($menu->getChildren() as $child) {
$child
->setLinkAttribute('class', 'nav-link')
->setAttribute('class', 'nav-item');
}
return $menu;
}
/**
* @todo add validations
*
* @param FactoryInterface $factory
* @param array $options
*
* @return ItemInterface
*/
public function socialMenu(FactoryInterface $factory, array $options)
{
$menu = $factory->createItem('root');
$security = $this->container->get('security.authorization_checker');
$translator = $this->container->get('translator');
if ($security->isGranted('IS_AUTHENTICATED_FULLY')) {
$menu->setChildrenAttribute('class', 'nav nav-pills nav-stacked');
$menu->addChild(
$translator->trans('Home'),
[
'route' => 'legacy_main',
'routeParameters' => [
'name' => 'social/home.php',
],
]
);
$menu->addChild(
$translator->trans('Messages'),
[
'route' => 'legacy_main',
'routeParameters' => [
'name' => 'messages/inbox.php',
],
]
);
$menu->addChild(
$translator->trans('Invitations'),
[
'route' => 'legacy_main',
'routeParameters' => [
'name' => 'social/invitations.php',
],
]
);
$menu->addChild(
$translator->trans('ViewMySharedProfile'),
[
'route' => 'legacy_main',
'routeParameters' => [
'name' => 'social/profile.php',
],
]
);
$menu->addChild(
$translator->trans('Friends'),
[
'route' => 'legacy_main',
'routeParameters' => [
'name' => 'social/friends.php',
],
]
);
$menu->addChild(
$translator->trans('SocialGroups'),
[
'route' => 'legacy_main',
'routeParameters' => [
'name' => 'social/groups.php',
],
]
);
$menu->addChild(
$translator->trans('Search'),
[
'route' => 'legacy_main',
'routeParameters' => [
'name' => 'social/search.php',
],
]
);
$menu->addChild(
$translator->trans('MyFiles'),
[
'route' => 'legacy_main',
'routeParameters' => [
'name' => 'social/myfiles.php',
],
]
);
}
return $menu;
}
/**
* Skills menu.
*
* @param FactoryInterface $factory
* @param array $options
*
* @return ItemInterface
*/
public function skillsMenu(FactoryInterface $factory, array $options)
{
$checker = $this->container->get('security.authorization_checker');
$translator = $this->container->get('translator');
$settingsManager = $this->container->get('chamilo.settings.manager');
$allow = $settingsManager->getSetting('certificate.hide_my_certificate_link');
$menu = $factory->createItem('root');
if ($checker->isGranted('IS_AUTHENTICATED_FULLY')) {
$menu->setChildrenAttribute('class', 'nav nav-pills nav-stacked');
if ($allow == false) {
$menu->addChild(
$translator->trans('MyCertificates'),
[
'route' => 'legacy_main',
'routeParameters' => ['name' => 'gradebook/my_certificates.php'],
]
);
}
if ($settingsManager->getSetting(
'allow_public_certificates'
) === 'true'
) {
$menu->addChild(
$translator->trans('Search'),
[
'route' => 'legacy_main',
'routeParameters' => ['name' => 'gradebook/search.php'],
]
);
}
if ($settingsManager->getSetting('allow_skills_tool') === 'true') {
$menu->addChild(
$translator->trans('MySkills'),
[
'route' => 'legacy_main',
'routeParameters' => ['name' => 'social/my_skills_report.php'],
]
);
if ($checker->isGranted('ROLE_TEACHER')) {
$menu->addChild(
$translator->trans('ManageSkills'),
[
'route' => 'legacy_main',
'routeParameters' => ['name' => 'admin/skills_wheel.php'],
]
);
}
}
}
return $menu;
}
/**
* Register/reset password menu.
*
* @param FactoryInterface $factory
* @param array $options
*
* @return ItemInterface
*/
public function loginMenu(FactoryInterface $factory, array $options)
{
$menu = $factory->createItem('legacy_main');
$translator = $this->container->get('translator');
$settingManager = $this->container->get('chamilo.settings.manager');
if ($settingManager->getSetting('allow_registration') === 'true') {
$menu->addChild(
$translator->trans(
'registration.submit',
[],
'FOSUserBundle'
),
[
'route' => 'legacy_main',
'routeParameters' => ['name' => 'auth/inscription.php'],
['attributes' => ['id' => 'nav']],
]
);
}
if ($settingManager->getSetting('allow_lostpassword') === 'true') {
$menu->addChild(
$translator->trans(
'resetting.request.submit',
[],
'FOSUserBundle'
),
[
//'route' => 'fos_user_resetting_request',
'route' => 'legacy_main',
'routeParameters' => ['name' => 'auth/lostPassword.php'],
['attributes' => ['id' => 'nav']],
]
);
}
return $menu;
}
/**
* @param FactoryInterface $factory
* @param array $options
*
* @return ItemInterface
*/
public function helpMenu(FactoryInterface $factory, array $options)
{
$translator = $this->container->get('translator');
$menu = $factory->createItem('legacy_main');
$menu->addChild(
$translator->trans('Forum'),
[
'uri' => 'https://chamilo.org/forum/',
['attributes' => ['id' => 'nav']],
]
);
return $menu;
}
}