Add page menu see BT#10658

ofaj
jmontoyaa 10 years ago
parent 4d4a07f715
commit eef81dce65
  1. 43
      src/Chamilo/CoreBundle/Controller/LegacyController.php
  2. 92
      src/Chamilo/CoreBundle/Menu/NavBuilder.php
  3. 10
      src/Chamilo/CoreBundle/Resources/config/routing.yml
  4. 2
      src/Chamilo/ThemeBundle/Resources/views/Layout/base-layout.html.twig

@ -0,0 +1,43 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Controller;
use Doctrine\DBAL\Connection;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
/**
* Class LegacyController
* Manages the chamilo pages starting with Display::display_header and $tpl = new Template();
* @package Chamilo\CoreBundle\Controller
* @author Julio Montoya <gugli100@gmail.com>
*/
class LegacyController extends Controller
{
public $section;
/**
* @param string $name
* @param Request $request
* @return Response
*/
public function classicAction($name, Request $request)
{
// get.
$_GET = $request->query->all();
// post.
$_POST = $request->request->all();
$rootDir = $this->get('kernel')->getRealRootDir();
$home = $this->generateUrl('home');
$home = str_replace('web/app_dev.php/', '', $home);
$home .= 'main/'.$name;
return $this->redirect($home);
}
}

@ -3,6 +3,8 @@
namespace Chamilo\CoreBundle\Menu;
use Chamilo\PageBundle\Entity\Page;
use Chamilo\PageBundle\Entity\Site;
use Chamilo\UserBundle\Entity\User;
use Knp\Menu\FactoryInterface;
use Knp\Menu\ItemInterface;
@ -66,7 +68,7 @@ class NavBuilder extends ContainerAware
if ($checker->isGranted('IS_AUTHENTICATED_FULLY')) {
$menu->addChild(
$translator->trans('MyCourses'),
$translator->trans('My courses'),
array('route' => 'userportal')
);
/*
@ -120,6 +122,67 @@ class NavBuilder extends ContainerAware
}*/
}
// Getting site information
$site = $this->container->get('sonata.page.site.selector');
$host = $site->getRequestContext()->getHost();
$siteManager = $this->container->get('sonata.page.manager.site');
/** @var Site $site */
$site = $siteManager->findOneBy(array(
'host' => array($host, 'localhost'),
'enabled' => true,
));
if ($site) {
$pageManager = $this->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;
}
$subMenu = $menu->addChild(
$page->getName(),
[
'route' => $page->getRouteName(),
'routeParameters' => [
'path' => $page->getUrl(),
],
]
);
/** @var Page $child */
foreach ($page->getChildren() as $child) {
$subMenu->addChild(
$child->getName(),
array(
'route' => $page->getRouteName(),
'routeParameters' => array(
'path' => $child->getUrl(),
),
)
)->setAttribute('divider_append', true);
}
}
}
return $menu;
}
@ -142,17 +205,13 @@ class NavBuilder extends ContainerAware
$token = $this->container->get('security.token_storage');
/** @var User $user */
$user = $token->getToken()->getUser();
$menu->setChildrenAttribute('class', 'nav navbar-nav navbar-right');
$dropdown = $menu->addChild($user->getUsername())->setAttribute('dropdown', true);
$dropdown = $menu->addChild(
$user->getUsername()
)->setAttribute('dropdown', true);
$dropdown->addChild(
/*$dropdown->addChild(
$translator->trans('Profile'),
array('route' => 'fos_user_profile_show')
)->setAttribute('divider_append', true);
)->setAttribute('divider_append', true);*/
$dropdown->addChild(
$translator->trans('Inbox'),
@ -164,12 +223,25 @@ class NavBuilder extends ContainerAware
)
)->setAttribute('divider_append', true);
// legacy logout
$logoutLink = $menu->addChild(
$translator->trans('Logout'),
array(
'route' => 'main',
'routeParameters' => array(
'name' => '../../../index.php',
'logout' => 'logout',
'uid' => $user->getId(),
),
'query' => '1',
)
);
$logoutLink = $menu->addChild('Logout', array('route' => 'logout'));
$logoutLink
->setLinkAttributes(array(
'id' => 'logout_button',
'class' => 'fa fa-power-off'
'class' => 'fa fa-power-off',
))
->setAttributes(array(
/*'id' => 'signin',

@ -28,11 +28,11 @@
# prefix: /js
# Legacy routes
#main:
# path: /main/{name}
# defaults: { _controller: ChamiloCoreBundle:Legacy:classic }
# requirements:
# name: .+
main:
path: /main/{name}
defaults: { _controller: ChamiloCoreBundle:Legacy:classic }
requirements:
name: .+
# web url shortcuts for legacy templates
web.ajax:

@ -184,7 +184,7 @@
<div class="container">
{{ mopa_bootstrap_menu('ChamiloCoreBundle:NavBuilder:leftMenu', {'automenu': 'navbar', 'stacked':true}) }}
<div style="float:right">
{#{{ mopa_bootstrap_menu('ChamiloCoreBundle:NavBuilder:rightMenu', {'automenu': 'navbar'} ) }}#}
{{ mopa_bootstrap_menu('ChamiloCoreBundle:NavBuilder:rightMenu', {'automenu': 'navbar'} ) }}
</div>
</div>

Loading…
Cancel
Save