Add twig listener, entrypoint.js now loads env variable

pull/3272/head
Julio Montoya 6 years ago
parent 6c6efebd6a
commit cd057a6b65
  1. 2
      .env
  2. 2
      assets/vue/App.vue
  3. 1
      assets/vue/config/entrypoint.js
  4. 3
      public/main/inc/lib/template.lib.php
  5. 20
      src/CoreBundle/Controller/IndexController.php
  6. 4
      src/CoreBundle/Controller/SecurityController.php
  7. 41
      src/CoreBundle/EventListener/TwigListener.php
  8. 82
      src/CoreBundle/Resources/config/services.yml
  9. 735
      yarn.lock

@ -26,6 +26,8 @@ APP_LOCALE='en'
APP_MULTIPLE_ACCESS_URL=''
APP_API_PLATFORM_URL='http://localhost/api/'
###< chamilo ###
###> symfony/mailer ###

@ -275,7 +275,7 @@
console.log('ajax');
axios.get(url, {
params: {
fromVue: 1
from_vue: 1
}
})
.then((response) => {

@ -0,0 +1 @@
export const ENTRYPOINT = process.env.APP_API_PLATFORM_URL;

@ -684,8 +684,7 @@ class Template
$encoded = json_encode($user);
}
$params['user'] = $encoded;
$params['from_vue'] = isset($_REQUEST['fromVue']) ? 1 : 0;
$params['from_vue'] = isset($_REQUEST['from_vue']) ? 1 : 0;
}
/**

@ -24,19 +24,9 @@ class IndexController extends BaseController
*/
public function indexAction(SerializerInterface $serializer): Response
{
$user = $this->getUser();
$data = null;
if (!empty($user)) {
$userClone = clone $user;
$userClone->setPassword('');
$data = $serializer->serialize($userClone, JsonEncoder::FORMAT);
}
return $this->render(
'@ChamiloCore/Index/vue.html.twig',
[
'is_authenticated' => json_encode(!empty($this->getUser())),
'user' => $data ?? json_encode($data),
'content' => '',
]
);
@ -44,19 +34,9 @@ class IndexController extends BaseController
public function resources(SerializerInterface $serializer): Response
{
$user = $this->getUser();
$data = null;
if (!empty($user)) {
$userClone = clone $user;
$userClone->setPassword('');
$data = $serializer->serialize($userClone, JsonEncoder::FORMAT);
}
return $this->render(
'@ChamiloCore/Index/vue.html.twig',
[
'is_authenticated' => json_encode(!empty($this->getUser())),
'user' => $data ?? json_encode($data),
'content' => '',
]
);

@ -44,8 +44,6 @@ class SecurityController extends AbstractController
return $this->render('@ChamiloCore/Index/vue.html.twig', [
'last_username' => $lastUsername,
'is_authenticated' => json_encode(!empty($this->getUser())),
'user' => $data ?? json_encode($data),
'error' => $error,
]);
/*return $this->render('@ChamiloCore/login.html.twig', [
@ -82,8 +80,6 @@ class SecurityController extends AbstractController
return $this->render('@ChamiloCore/login.html.twig', [
'last_username' => $lastUsername,
'is_authenticated' => json_encode(!empty($this->getUser())),
'user' => $data ?? json_encode($data),
'error' => $error,
]);
}

@ -0,0 +1,41 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\EventListener;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\SerializerInterface;
use Twig\Environment;
class TwigListener
{
private $twig;
public function __construct(Environment $twig, SerializerInterface $serializer, TokenStorageInterface $tokenStorage)
{
$this->twig = $twig;
$this->tokenStorage = $tokenStorage;
$this->serializer = $serializer;
}
public function __invoke(RequestEvent $event): void
{
$request = $event->getRequest();
$user = $this->tokenStorage->getToken()->getUser();
$data = null;
$isAuth = false;
if ($user instanceof UserInterface) {
$userClone = clone $user;
$userClone->setPassword('');
$data = $this->serializer->serialize($userClone, JsonEncoder::FORMAT);
$isAuth = true;
}
$this->twig->addGlobal('from_vue', $request->request->get('from_vue') ? 1 : 0);
$this->twig->addGlobal('is_authenticated', json_encode($isAuth));
$this->twig->addGlobal('user', $data ?? json_encode($data));
}
}

@ -182,7 +182,6 @@ services:
tags:
- {name: kernel.event_listener, event: chamilo_course.course.session, method: onSessionAccessEvent}
# When Course entity is loaded
chamilo_core.listener.course:
class: Chamilo\CoreBundle\Entity\Listener\CourseListener
@ -219,27 +218,31 @@ services:
tags:
- {name: kernel.event_listener, event: sylius.settings.pre_save, method: onSettingPreSave}
# Menu listener
chamilo_core.listener.navbar_menu_listener:
class: Chamilo\CoreBundle\EventListener\MenuListener
arguments: ['@service_container']
Chamilo\CoreBundle\EventListener\TwigListener:
tags:
- {name: kernel.event_listener, event: theme.sidebar_left_menu, method: onSetupMenu}
- {name: kernel.event_listener, event: theme.breadcrumb, method: onSetupMenu}
- {name: kernel.event_listener}
chamilo_core.listener.navbar_user_listener:
class: Chamilo\CoreBundle\EventListener\ShowUserListener
arguments: ['@service_container']
tags:
- {name: kernel.event_listener, event: theme.navbar_user, method: onShowUser}
- {name: kernel.event_listener, event: theme.sidebar_user, method: onShowUser}
# # Menu listener
# chamilo_core.listener.navbar_menu_listener:
# class: Chamilo\CoreBundle\EventListener\MenuListener
# arguments: ['@service_container']
# tags:
# - {name: kernel.event_listener, event: theme.sidebar_left_menu, method: onSetupMenu}
# - {name: kernel.event_listener, event: theme.breadcrumb, method: onSetupMenu}
# chamilo_core.listener.navbar_user_listener:
# class: Chamilo\CoreBundle\EventListener\ShowUserListener
# arguments: ['@service_container']
# tags:
# - {name: kernel.event_listener, event: theme.navbar_user, method: onShowUser}
# - {name: kernel.event_listener, event: theme.sidebar_user, method: onShowUser}
# Menu
chamilo_core.listener.message_listener:
class: Chamilo\CoreBundle\EventListener\MessageListener
arguments: ['@service_container']
tags:
- {name: kernel.event_listener, event: theme.messages, method: onListMessages}
# chamilo_core.listener.message_listener:
# class: Chamilo\CoreBundle\EventListener\MessageListener
# arguments: ['@service_container']
# tags:
# - {name: kernel.event_listener, event: theme.messages, method: onListMessages}
# Course upload listener
chamilo_core.listener.resource_upload_listener:
@ -248,10 +251,6 @@ services:
tags:
- {name: kernel.event_listener, event: oneup_uploader.post_persist, method: onUpload}
# chamilo_core.menu.simple_menu:
# class: Chamilo\CoreBundle\Menu\SimpleMenuBuilder
# arguments: ['@service_container']
chamilo_core.menu.nav_builder:
class: Chamilo\CoreBundle\Menu\NavBuilder
arguments:
@ -287,44 +286,5 @@ services:
tags:
- {name: templating.helper, alias: chamilo_settings}
# Block services
# chamilo_core.block.course:
# class: Chamilo\CoreBundle\Block\CourseBlockService
# arguments: [chamilo_core.block.course, '@templating']
# tags:
# - {name: sonata.block}
# chamilo_core.block.skill:
# class: Chamilo\CoreBundle\Block\SkillBlockService
# arguments: [chamilo_core.block.skill, '@templating']
# tags:
# - {name: sonata.block}
# Breadcrumb
# chamilo_core.block.breadcrumb:
# class: Chamilo\CoreBundle\Block\BreadcrumbBlockService
# arguments: ['chamilo_core.block.breadcrumb', 'breadcrumb', '@templating', '@knp_menu.menu_provider', '@knp_menu.factory']
# tags:
# - {name: sonata.block}
# - {name: sonata.breadcrumb}
# Chamilo\CoreBundle\Block\BreadcrumbBlockService: '@chamilo_core.block.breadcrumb'
# Chamilo\CoreBundle\Controller\ResourceUploadController:
# autowire: false
# Form types
# chamilo_user.registration.form.type:
# class: Chamilo\CoreBundle\Form\Type\RegistrationFormType
# arguments: ['%fos_user.model.user.class%']
# tags:
# - {name: form.type, alias: chamilo_sonata_user_registration}
# chamilo_user.profile.form.type:
# class: Chamilo\CoreBundle\Form\ProfileType
# arguments: ['%fos_user.model.user.class%']
# tags:
# - {name: form.type, alias: chamilo_sonata_user_profile}
Liip\ImagineBundle\Service\FilterService:
alias: 'liip_imagine.service.filter'

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save