Remove unused menus

pull/3890/head
Julio Montoya 5 years ago
parent ba300d0421
commit c5033bd6b1
  1. 1
      ecs.php
  2. 1
      phpstan.neon
  3. 1
      psalm.xml
  4. 1
      rector.php
  5. 440
      src/CoreBundle/Menu/LeftMenuBuilder.php
  6. 60
      src/CoreBundle/Menu/MenuVoter.php
  7. 498
      src/CoreBundle/Menu/NavBuilder.php
  8. 46
      src/CoreBundle/Resources/views/Sidebar/left_menu.html.twig
  9. 35
      src/CoreBundle/Resources/views/Sidebar/menu_knp.html.twig
  10. 12
      src/CoreBundle/Resources/views/Sidebar/search-form.html.twig
  11. 11
      src/CoreBundle/Resources/views/Sidebar/social-menu.html.twig
  12. 9
      src/CoreBundle/Resources/views/Sidebar/social-panel.html.twig
  13. 24
      src/CoreBundle/Resources/views/Sidebar/user-panel.html.twig

@ -98,7 +98,6 @@ return static function (ContainerConfigurator $containerConfigurator): void {
__DIR__.'/src/CoreBundle/Hook/*', __DIR__.'/src/CoreBundle/Hook/*',
__DIR__.'/src/CoreBundle/Component/HTMLPurifier/Filter/AllowIframes.php', __DIR__.'/src/CoreBundle/Component/HTMLPurifier/Filter/AllowIframes.php',
__DIR__.'/src/CoreBundle/Traits/*', __DIR__.'/src/CoreBundle/Traits/*',
__DIR__.'/src/CoreBundle/Menu/*',
__DIR__.'/src/CourseBundle/Component/*', __DIR__.'/src/CourseBundle/Component/*',
__DIR__.'/src/DataFixtures/*', __DIR__.'/src/DataFixtures/*',
IncrementStyleFixer::class => 'post', IncrementStyleFixer::class => 'post',

@ -59,7 +59,6 @@ parameters:
- public/main/wiki/* - public/main/wiki/*
- src/CoreBundle/Hook/* - src/CoreBundle/Hook/*
- src/CoreBundle/Menu/*
- src/CoreBundle/Migrations/* - src/CoreBundle/Migrations/*
- src/CoreBundle/Twig/SettingsHelper.php - src/CoreBundle/Twig/SettingsHelper.php
- src/CoreBundle/Settings/SettingsResolver.php - src/CoreBundle/Settings/SettingsResolver.php

@ -146,7 +146,6 @@
<ignoreFiles> <ignoreFiles>
<directory name="vendor/*"/> <directory name="vendor/*"/>
<directory name="src/CoreBundle/Menu"/>
<directory name="src/CoreBundle/Component/Editor"/> <directory name="src/CoreBundle/Component/Editor"/>
<directory name="src/CourseBundle/Component/CourseCopy"/> <directory name="src/CourseBundle/Component/CourseCopy"/>
<directory name="src/LtiBundle"/> <directory name="src/LtiBundle"/>

@ -57,7 +57,6 @@ return static function (ContainerConfigurator $containerConfigurator): void {
Option::SKIP, Option::SKIP,
[ [
__DIR__.'/public/*', __DIR__.'/public/*',
__DIR__.'/src/CoreBundle/Menu/*',
__DIR__.'/src/CoreBundle/Component/Editor/*', __DIR__.'/src/CoreBundle/Component/Editor/*',
__DIR__.'/src/CourseBundle/Component/CourseCopy/*', __DIR__.'/src/CourseBundle/Component/CourseCopy/*',
__DIR__.'/src/CoreBundle/Component/HTMLPurifier/*', __DIR__.'/src/CoreBundle/Component/HTMLPurifier/*',

@ -1,440 +0,0 @@
<?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.
*/
class LeftMenuBuilder implements ContainerAwareInterface
{
use ContainerAwareTrait;
/**
* Course menu.
*
* @return ItemInterface
*/
public function courseMenu(FactoryInterface $factory, array $options)
{
$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('My courses'),
[
'route' => 'userportal',
'routeParameters' => ['type' => 'courses'],
]
);
return $menu;
if (api_is_allowed_to_create_course()) {
$lang = $translator->trans('Create course');
if ('true' == $settingsManager->getSetting('course.course_validation')) {
$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 ('true' == $browse) {
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.
*
* @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('My sessions'),
[
'route' => 'userportal',
'routeParameters' => ['type' => 'sessions'],
]
);
if ($checker->isGranted('ROLE_ADMIN')) {
$menu->addChild(
$translator->trans('Add a training session'),
[
'route' => 'legacy_main',
'routeParameters' => ['name' => 'session/session_add.php'],
]
);
}
}
return $menu;
}
/**
* @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('Pending invitations'),
[
'route' => 'legacy_main',
'routeParameters' => [
'name' => 'social/invitations.php',
],
]
);
/*$menu->addChild(
$translator->trans('My files'),
[
'route' => 'legacy_main',
'routeParameters' => [
'name' => 'social/myfiles.php',
],
]
);*/
$menu->addChild(
$translator->trans('Edit profile'),
[
'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
*
* @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('My shared profile'),
[
'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('Social groups'),
[
'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('My files'),
[
'route' => 'legacy_main',
'routeParameters' => [
'name' => 'social/myfiles.php',
],
]
);*/
}
return $menu;
}
/**
* Skills menu.
*
* @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 ('false' === $allow) {
$menu->addChild(
$translator->trans('My certificates'),
[
'route' => 'legacy_main',
'routeParameters' => ['name' => 'gradebook/my_certificates.php'],
]
);
}
if ('true' === $settingsManager->getSetting('allow_public_certificates')) {
$menu->addChild(
$translator->trans('Search'),
[
'route' => 'legacy_main',
'routeParameters' => ['name' => 'gradebook/search.php'],
]
);
}
if ('true' === $settingsManager->getSetting('allow_skills_tool')) {
$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.
*
* @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 ('true' === $settingManager->getSetting('allow_registration')) {
$menu->addChild(
$translator->trans(
'registration.submit',
[],
'FOSUserBundle'
),
[
'route' => 'legacy_main',
'routeParameters' => ['name' => 'auth/inscription.php'],
['attributes' => ['id' => 'nav']],
]
);
}
if ('true' === $settingManager->getSetting('allow_lostpassword')) {
$menu->addChild(
$translator->trans(
'resetting.request.submit',
[],
'FOSUserBundle'
),
[
'route' => 'legacy_main',
'routeParameters' => ['name' => 'auth/lostPassword.php'],
['attributes' => ['id' => 'nav']],
]
);
}
return $menu;
}
/**
* @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;
}
}

@ -1,60 +0,0 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Menu;
use Knp\Menu\ItemInterface;
use Knp\Menu\Matcher\Voter\VoterInterface;
use Symfony\Component\HttpFoundation\RequestStack;
/**
* Class NavBuilder.
*/
class MenuVoter implements VoterInterface
{
/**
* @var RequestStack
*/
private $requestStack;
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
}
public function matchItem(ItemInterface $item): ?bool
{
$request = $this->requestStack->getCurrentRequest();
$currentUri = $item->getUri();
$currentUrl = $request->getUri();
if (null !== $item->getExtra('routes') &&
in_array($request->attributes->get('_route'), $item->getExtra('routes'))
) {
return true;
}
if (false !== strpos($currentUri, 'user_portal.php') &&
false !== strpos($currentUrl, 'user_portal.php')
) {
return true;
}
if (false !== strpos($currentUri, '/main/')) {
$pos = strpos($currentUri, '/main/');
$partSelected = substr($currentUri, $pos);
$partSelected = str_replace('/%2E%2E/', '', $partSelected);
$pos = strpos($currentUrl, '/main/');
$partCurrent = substr($currentUrl, $pos);
$partCurrent = rtrim($partCurrent, '/');
if ($partSelected === $partCurrent) {
return true;
}
}
return false;
}
}

@ -1,498 +0,0 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Menu;
use Chamilo\FaqBundle\Entity\Category;
use Chamilo\PageBundle\Entity\Page;
use Chamilo\PageBundle\Entity\Site;
use Knp\Menu\FactoryInterface;
use Knp\Menu\ItemInterface;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerAwareTrait;
use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
/**
* Class NavBuilder.
*/
class NavBuilder implements ContainerAwareInterface
{
use ContainerAwareTrait;
private $factory;
private $checker;
public function __construct(FactoryInterface $factory, AuthorizationChecker $checker)
{
$this->factory = $factory;
$this->checker = $checker;
}
/**
* @param array $itemOptions The options given to the created menuItem
* @param string $currentUri The current URI
*
* @return ItemInterface
*/
public function createCategoryMenu(array $itemOptions = [], $currentUri = null)
{
$factory = $this->container->get('knp_menu.factory');
$menu = $factory->createItem('categories', $itemOptions);
$this->buildCategoryMenu($menu, $itemOptions, $currentUri);
return $menu;
}
/**
* @param ItemInterface $menu The item to fill with $routes
* @param array $options The item options
* @param string $currentUri The current URI
*/
public function buildCategoryMenu(ItemInterface $menu, array $options = [], $currentUri = null)
{
//$categories = $this->categoryManager->getCategoryTree();
//$this->fillMenu($menu, $categories, $options, $currentUri);
$menu->addChild('home', ['route' => 'home']);
}
/**
* Top menu left.
*/
public function menuApp(array $options): ItemInterface
{
$container = $this->container;
$checker = $this->checker;
$translator = $container->get('translator');
$router = $container->get('router');
$factory = $this->factory;
$menu = $factory->createItem('root', ['childrenAttributes' => ['class' => 'navbar-nav']]);
$settingsManager = $container->get('chamilo.settings.manager');
$rootWeb = $router->generate('home');
$menu->addChild(
'home',
[
'label' => $translator->trans('Home'),
'route' => 'home',
'icon' => 'home',
]
);
if ($checker && $checker->isGranted('IS_AUTHENTICATED_FULLY')) {
$menu->addChild(
'courses',
[
'label' => $translator->trans('Courses'),
'route' => 'legacy_main',
'routeParameters' => ['name' => 'index/user_portal.php'],
'icon' => 'book',
]
)->setLinkAttribute('class', 'jui');
$menu['courses']->addChild(
'courses',
[
'label' => $translator->trans('My courses'),
'route' => 'legacy_main',
'routeParameters' => ['name' => 'index/user_portal.php'],
]
);
$browse = $settingsManager->getSetting('display.allow_students_to_browse_courses');
if ('true' === $browse) {
if ($checker->isGranted('ROLE_STUDENT') && !api_is_drh() && !api_is_session_admin()) {
$menu['courses']->addChild(
'catalog',
[
'label' => $translator->trans('Course catalog'),
'route' => 'legacy_main',
'routeParameters' => ['name' => 'auth/courses.php'],
]
);
}
}
/*$menu['courses']->addChild(
$translator->trans('Course history'),
[
'route' => 'legacy_main',
'routeParameters' => ['name' => '../user_portal.php'],
]
);*/
if (api_is_allowed_to_create_course()) {
$lang = $translator->trans('Create course');
if ('true' === $settingsManager->getSetting('course.course_validation')) {
$lang = $translator->trans('Create course request');
}
$menu['courses']->addChild(
'create-course',
[
'label' => $lang,
'route' => 'legacy_main',
'routeParameters' => ['name' => 'create_course/add_course.php'],
]
);
}
if ($checker->isGranted('ROLE_ADMIN')) {
$menu['courses']->addChild(
$translator->trans('Create session'),
[
'route' => 'legacy_main',
'routeParameters' => ['name' => 'session/session_add.php'],
]
);
}
$menu->addChild(
'calendar',
[
'label' => $translator->trans('Calendar'),
'route' => 'legacy_main',
'routeParameters' => ['name' => 'calendar/agenda_js.php'],
'icon' => 'calendar-alt',
]
);
$menu->addChild(
'reports',
[
'label' => $translator->trans('Reporting'),
'route' => 'legacy_main',
'routeParameters' => ['name' => 'mySpace/index.php'],
'icon' => 'chart-bar',
]
);
if ('true' === $settingsManager->getSetting('social.allow_social_tool')) {
$menu->addChild(
'social',
[
'label' => $translator->trans('Social'),
'route' => 'legacy_main',
'routeParameters' => ['name' => 'social/home.php'],
'icon' => 'heart',
]
);
/*$menu['social']->addChild(
$translator->trans('My profile'),
[
'route' => 'legacy_main',
'routeParameters' => ['name' => 'social/home.php'],
]
);
$menu['social']->addChild(
$translator->trans('My shared profile'),
[
'route' => 'legacy_main',
'routeParameters' => ['name' => 'social/profile.php'],
]
);*/
$menu['social']->addChild(
$translator->trans('Friends'),
[
'route' => 'legacy_main',
'routeParameters' => ['name' => 'social/friends.php'],
]
);
$menu['social']->addChild(
$translator->trans('Groups'),
[
'route' => 'legacy_main',
'routeParameters' => ['name' => 'social/groups.php'],
]
);
/*$menu['social']->addChild(
$translator->trans('My Files'),
[
'route' => 'legacy_main',
'routeParameters' => ['name' => 'social/myfiles.php'],
]
);*/
}
if ($checker->isGranted('ROLE_ADMIN')) {
$menu->addChild(
'administrator',
[
'label' => $translator->trans('Administration'),
'route' => 'legacy_main',
'routeParameters' => ['name' => 'admin/index.php'],
'icon' => 'cogs',
]
);
$menu['administrator']->addChild(
'options',
[
'label' => $translator->trans('All options'),
'route' => 'legacy_main',
'routeParameters' => ['name' => 'admin/index.php'],
]
);
$menu['administrator']->addChild(
'userlist',
[
'label' => $translator->trans('Users'),
'route' => 'legacy_main',
'routeParameters' => ['name' => 'admin/user_list.php'],
]
);
$menu['administrator']->addChild(
'courselist',
[
'label' => $translator->trans('Courses'),
'route' => 'legacy_main',
'routeParameters' => ['name' => 'admin/course_list.php'],
]
);
$menu['administrator']->addChild(
'sessionlist',
[
'label' => $translator->trans('Sessions'),
'route' => 'legacy_main',
'routeParameters' => ['name' => 'session/session_list.php'],
]
);
/*$menu['administrator']->addChild(
'languages',
[
'label' => $translator->trans('Languages'),
'route' => 'legacy_main',
'routeParameters' => ['name' => 'admin/languages.php'],
]
);*/
$menu['administrator']->addChild(
'plugins',
[
'label' => $translator->trans('Plugins'),
'route' => 'legacy_main',
'routeParameters' => ['name' => 'admin/settings.php', 'category' => 'Plugins'],
]
);
$menu['administrator']->addChild(
'settings',
[
'label' => $translator->trans('Settings'),
'uri' => $rootWeb.'admin/settings/platform',
]
);
}
}
$categories = $container->get('doctrine')->getRepository('ChamiloFaqBundle:Category')->retrieveActive();
if ($categories) {
$faq = $menu->addChild('FAQ', ['route' => 'faq_index']);
/** @var Category $category */
foreach ($categories as $category) {
$faq->addChild(
$category->getHeadline(),
[
'route' => 'faq',
'routeParameters' => [
'categorySlug' => $category->getSlug(),
'questionSlug' => '',
],
]
)->setAttribute('divider_append', true);
}
}
// Getting site information
$site = $container->get('sonata.page.site.selector');
$host = $site->getRequestContext()->getHost();
$siteManager = $container->get('sonata.page.manager.site');
/** @var Site $site */
$site = $siteManager->findOneBy([
'host' => [$host, 'localhost'],
'enabled' => true,
]);
// Needed when loading legacy pages (inside main)
//$isLegacy = $container->get('request_stack')->getCurrentRequest()->get('load_legacy');
$legacyIndex = '';
if ($site) {
$pageManager = $container->get('sonata.page.manager.page');
// Parents only of homepage
$criteria = ['site' => $site, 'enabled' => true, 'parent' => 1];
$pages = $pageManager->findBy($criteria);
//$pages = $pageManager->loadPages($site);
/** @var Page $page */
foreach ($pages as $page) {
/*if ($page->getRouteName() !== 'page_slug') {
continue;
}*/
// Avoid home
if ('/' === $page->getUrl()) {
continue;
}
if (!$page->isCms()) {
continue;
}
$url = $legacyIndex.$page->getUrl();
$subMenu = $menu->addChild(
$page->getName(),
[
'route' => $page->getRouteName(),
'routeParameters' => [
'path' => $url,
],
]
);
/** @var Page $child */
foreach ($page->getChildren() as $child) {
$url = $legacyIndex.$child->getUrl();
$subMenu->addChild(
$child->getName(),
[
'route' => $page->getRouteName(),
'routeParameters' => [
'path' => $url,
],
]
)->setAttribute('divider_append', true);
}
}
}
//$menu->setLinkAttribute('ancestorClass', 'julio');
// Set CSS classes for the items
foreach ($menu->getChildren() as $child) {
$childClass = '';
$hasChildren = $child->hasChildren();
if ($hasChildren) {
$childClass = 'nav-dropdown';
$child->setChildrenAttribute('class', 'nav-dropdown-items');
if ($child->isCurrent()) {
$child->setChildrenAttribute('style', 'display:block');
}
}
$child
->setLinkAttribute('class', 'nav-link')
->setAttribute('class', 'nav-item '.$childClass)
;
if ($child->isCurrent()) {
$child->setAttribute('class', 'nav-item '.$childClass);
}
if ($hasChildren) {
$child
->setLinkAttribute('class', 'nav-link nav-dropdown-toggle ') //dropdown-toggle
//->setLinkAttribute('data-toggle', 'dropdown')
//->setLinkAttribute('role', 'button')
//->setLinkAttribute('aria-haspopup', 'true')
//->setLinkAttribute('aria-expanded', 'false')
;
$children = $child->getChildren();
foreach ($children as $subChild) {
$subChild
->setLinkAttribute('class', 'nav-link ')
->setAttribute('class', 'nav-item ');
}
}
}
return $menu;
}
/**
* Course menu.
*
* @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 ('true' == $settingsManager->getSetting('course.course_validation')) {
$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 ('true' == $browse) {
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;
}
}

@ -1,46 +0,0 @@
<!-- @todo add permissions for each menu sidebar menu: : style can be found in sidebar.less -->
{% import '@ChamiloCore/Macros/box.html.twig' as macro %}
{% autoescape false %}
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
{# {{ macro.panel(#}
{# 'Profile' | trans,#}
{# mopa_bootstrap_menu('ChamiloCoreBundle:LeftMenuBuilder:profileMenu', {'automenu': 'navbar', 'stacked':false})#}
{# ) }}#}
{# {{ macro.panel(#}
{# 'Courses' | trans,#}
{# mopa_bootstrap_menu('ChamiloCoreBundle:LeftMenuBuilder:courseMenu', {'automenu': 'navbar', 'stacked':false})#}
{# ) }}#}
{# {{ macro.panel(#}
{# 'Sessions' | trans,#}
{# mopa_bootstrap_menu('ChamiloCoreBundle:LeftMenuBuilder:sessionMenu', {'automenu': 'navbar', 'stacked':false})#}
{# ) }}#}
{# {{ macro.panel(#}
{# 'Skills' | trans,#}
{# mopa_bootstrap_menu('ChamiloCoreBundle:LeftMenuBuilder:skillsMenu', {'automenu': 'navbar', 'stacked':false})#}
{# ) }}#}
{% else %}
{# Plugin login before/after tpls #}
{% if plugin_login_top is not null %}
<div id="plugin_login_top">
{{ plugin_login_top }}
</div>
{% endif %}
{% include '@ChamiloCore/Sidebar/login.html.twig' %}
{% if plugin_login_bottom is not null %}
<div id="plugin_login_bottom">
{{ plugin_login_bottom }}
</div>
{% endif %}
{% endif %}
{{ macro.panel(
'Help' | trans,
mopa_bootstrap_menu('ChamiloCoreBundle:LeftMenuBuilder:helpMenu', {'automenu': 'pills', 'stacked':true})
) }}
{% endautoescape %}

@ -1,35 +0,0 @@
{#<!-- sidebar menu: : style can be found in sidebar.less -->#}
{#{% import '@ChamiloCore/Macros/box.html.twig' as macro %}#}
{#{% autoescape false %}#}
{#{% if is_granted('IS_AUTHENTICATED_FULLY') %}#}
{# #}{#'Profile' | trans,#}
{# #}{#mopa_bootstrap_menu('ChamiloCoreBundle:SimpleMenuBuilder:mainMenu', {'automenu': 'pills', 'stacked':true})) }}#}
{# {{ macro.panel(#}
{# 'Courses' | trans,#}
{# mopa_bootstrap_menu('ChamiloCoreBundle:CourseMenuBuilder:courseMenu', {'automenu': 'pills', 'stacked':true})) }}#}
{# {{ macro.panel(#}
{# 'Skills' | trans,#}
{# mopa_bootstrap_menu('ChamiloCoreBundle:CourseMenuBuilder:skillsMenu', {'automenu': 'pills', 'stacked':true})) }}#}
{#{% else %}#}
{# <div class="user-panel">switcher#}
{# </div>#}
{# <form action="{{ path("fos_user_security_check") }}" method="post" role="form" class="sidebar-form">#}
{# <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}"/>#}
{# <div class="form-group">#}
{# <label for="username">{{ 'security.login.username' | trans({}, 'FOSUserBundle') }}</label>#}
{# <input type="text" class="form-control" id="username" name="_username" >#}
{# </div>#}
{# <div class="form-group">#}
{# <label for="password">{{ 'security.login.password' | trans({}, 'FOSUserBundle') }}</label>#}
{# <input type="password" class="form-control" id="password" name="_password">#}
{# </div>#}
{# <button type="submit" class="btn btn-default">{{ 'security.login.submit' | trans({}, 'FOSUserBundle') }}</button>#}
{# </form>#}
{# {{ mopa_bootstrap_menu('ChamiloCoreBundle:SimpleMenuBuilder:notLoginMenu', {'automenu': 'pills', 'stacked':true}) }}#}
{#{% endif %}#}
{#{% endautoescape %}#}

@ -1,12 +0,0 @@
<!-- @todo search form -->
<form action="#" method="get" class="sidebar-form">
<div class="input-group">
<input type="text" name="q" class="form-control" placeholder="Search..."/>
<span class="input-group-btn">
<button type='submit' name='seach' id='search-btn' class="btn btn-flat">
<i class="fa fa-search"></i>
</button>
</span>
</div>
</form>
<!-- /.search form -->

@ -1,11 +0,0 @@
{% set pathInfo = path(
app.request.attributes.get('_route'),
app.request.attributes.get('_route_params'))
%}
{# Profile block #}
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
{{ render(controller('ChamiloCoreBundle:Sidebar:userPanel', {'pathInfo': pathInfo })) }}
{#{{ render(controller('ChamiloCoreBundle:Sidebar:searchForm')) }}#}
{{ render(controller('ChamiloCoreBundle:Sidebar:socialPanel', {'pathInfo': pathInfo })) }}
{% endif %}

@ -1,9 +0,0 @@
{% import '@ChamiloCore/Macros/box.html.twig' as macro %}
{% import '@ChamiloCore/Macros/image.html.twig' as macro_image %}
{{
macro.panel(
'SocialNetwork' | trans,
mopa_bootstrap_menu('ChamiloCoreBundle:LeftMenuBuilder:socialMenu', {'automenu': 'pills', 'stacked':true})
)
}}

@ -1,24 +0,0 @@
{% import '@ChamiloCore/Macros/box.html.twig' as macro %}
{% import '@ChamiloCore/Macros/image.html.twig' as macro_image %}
<!-- Sidebar user panel -->
<div style="text-align:center;" id="user_image_block" class="panel panel-default">
<div class="panel-body">
{% if user.avatar %}
{{ macro_image.avatar_from_media(user.avatar, user.username) }}
{% else %}
{{ macro_image.avatar('img/icons/128/unknown.png', user.username) }}
{% endif %}
<p>{{ 'Hello, %user%'| trans( {'%user%': user.username }, 'ChamiloCoreBundle') }}</p>
<a href="#">
<i class="fa fa-circle text-success"></i> {{ 'Online' | trans }}
</a>
{% if is_granted('ROLE_PREVIOUS_ADMIN') %}
<a href="{{ path('home', {'_switch_user': '_exit'}) }}">
{{ 'Exit impersonation' | trans }}
</a>
{% endif %}
</div>
</div>
Loading…
Cancel
Save