{ | { | ||||
$assets = parent::configureAssets(); // TODO: Change the autogenerated stub | $assets = parent::configureAssets(); // TODO: Change the autogenerated stub | ||||
$assets->addWebpackEncoreEntry('common-switch-merchant') ; | |||||
$assets->addWebpackEncoreEntry('carac-common') ; | |||||
$assets->addWebpackEncoreEntry('carac-switch-merchant') ; | |||||
return $assets ; | return $assets ; | ||||
} | } |
$em->update($section); | $em->update($section); | ||||
$em->flush(); | $em->flush(); | ||||
} | } | ||||
$referer = $request->headers->get('referer'); | |||||
return $this->redirect($referer); | |||||
} | } | ||||
$referer = $request->headers->get('referer'); | |||||
return $this->redirect($referer); | |||||
} | } | ||||
} | } |
use Lc\CaracoleBundle\Model\User\UserMerchantInterface; | use Lc\CaracoleBundle\Model\User\UserMerchantInterface; | ||||
use Lc\CaracoleBundle\Resolver\MerchantResolver; | use Lc\CaracoleBundle\Resolver\MerchantResolver; | ||||
use Lc\CaracoleBundle\Resolver\SectionResolver; | use Lc\CaracoleBundle\Resolver\SectionResolver; | ||||
use Lc\SovBundle\Definition\RolesDefinition; | |||||
use Lc\SovBundle\Event\EntityManager\EntityManagerEvent; | use Lc\SovBundle\Event\EntityManager\EntityManagerEvent; | ||||
use Lc\SovBundle\Model\User\UserInterface; | use Lc\SovBundle\Model\User\UserInterface; | ||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface; | use Symfony\Component\EventDispatcher\EventSubscriberInterface; | ||||
$token = $this->tokenStorage->getToken(); | $token = $this->tokenStorage->getToken(); | ||||
$sessionUser = $token->getUser(); | $sessionUser = $token->getUser(); | ||||
if($sessionUser instanceof UserInterface) { | if($sessionUser instanceof UserInterface) { | ||||
$roles = $this->merchantResolver->getUserMerchant($sessionUser)->getRoles(); | |||||
if($roles != $sessionUser->getRoles()) { | |||||
$userMerchant = $this->merchantResolver->getUserMerchant($sessionUser) ; | |||||
if($userMerchant) { | |||||
$roles = $userMerchant->getRoles(); | |||||
} | |||||
else { | |||||
$roles = [RolesDefinition::ROLE_USER] ; | |||||
} | |||||
if ($roles != $sessionUser->getRoles()) { | |||||
$sessionUser->setRoles($roles); | $sessionUser->setRoles($roles); | ||||
$this->em->update($sessionUser); | $this->em->update($sessionUser); | ||||
$this->em->flush(); | $this->em->flush(); | ||||
); | ); | ||||
$this->security->setToken($token); | $this->security->setToken($token); | ||||
} | } | ||||
} | } | ||||
/* | /* | ||||
// This check can be just `is_object` like in symfony core | // This check can be just `is_object` like in symfony core |
<?php | |||||
namespace Lc\CaracoleBundle\Form\Merchant; | |||||
use Lc\CaracoleBundle\Model\Merchant\MerchantInterface; | |||||
use Lc\CaracoleBundle\Resolver\MerchantResolver; | |||||
use Lc\SovBundle\Doctrine\EntityManager; | |||||
use Lc\SovBundle\Model\User\UserInterface; | |||||
use Lc\SovBundle\Translation\TranslatorAdmin; | |||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType; | |||||
use Symfony\Component\Form\AbstractType; | |||||
use Symfony\Component\Form\Extension\Core\Type\HiddenType; | |||||
use Symfony\Component\Form\FormBuilderInterface; | |||||
use Symfony\Component\OptionsResolver\OptionsResolver; | |||||
class SwitchMerchantButtonAdminFormType extends AbstractType | |||||
{ | |||||
protected $em; | |||||
protected $translatorAdmin; | |||||
protected $merchantResolver; | |||||
public function __construct(EntityManager $em, TranslatorAdmin $translatorAdmin, MerchantResolver $merchantResolver) | |||||
{ | |||||
$this->em = $em; | |||||
$this->translatorAdmin = $translatorAdmin; | |||||
$this->merchantResolver = $merchantResolver; | |||||
} | |||||
public function buildForm(FormBuilderInterface $builder, array $options) | |||||
{ | |||||
$builder->add( | |||||
'merchant', | |||||
HiddenType::class, | |||||
[ | |||||
'data' => $options['merchant'] | |||||
] | |||||
); | |||||
$builder->add( | |||||
'context', | |||||
HiddenType::class, | |||||
[ | |||||
'data' => 'admin' | |||||
] | |||||
); | |||||
} | |||||
/** | |||||
* {@inheritdoc} | |||||
*/ | |||||
public function configureOptions(OptionsResolver $resolver) | |||||
{ | |||||
$resolver->setDefaults( | |||||
[ | |||||
'merchant' => $this->merchantResolver->getCurrent(), | |||||
] | |||||
); | |||||
} | |||||
} |
$classButton = 'btn-section'; | $classButton = 'btn-section'; | ||||
if ($section == $currentSection) { | if ($section == $currentSection) { | ||||
$classButton .= ' btn-section-current'; | $classButton .= ' btn-section-current'; | ||||
$styleButton = 'background-color: ' . $currentSection->getColor() . ';'; | |||||
$styleButton = 'color: white; background-color: ' . $currentSection->getColor() . ';'; | |||||
} | } | ||||
$builder->add( | $builder->add( |
body.admin { | |||||
nav.navbar.carac { | |||||
background-color: white ; | |||||
padding-top: 0px ; | |||||
padding-bottom: 0px ; | |||||
border-width: 2px; | |||||
ul.left { | |||||
position: relative ; | |||||
top: 16px ; | |||||
li { | |||||
form.switch-section { | |||||
button { | |||||
border-radius: 7px 7px 0px 0px ; | |||||
&:hover { | |||||
color: gray ; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
.content-header { | |||||
padding-top: 20px ; | |||||
} | |||||
} |
import './switchmerchant.js' ; | import './switchmerchant.js' ; | ||||
import './switchmerchant_admin.js' ; | |||||
import './switchmerchant_admin.scss' ; | import './switchmerchant_admin.scss' ; | ||||
$(document).ready(function() { | |||||
initSwitchMerchantAdmin() ; | |||||
}) ; | |||||
function initSwitchMerchantAdmin() { | |||||
let $modalSwitchMerchant = $('#carac-modal-switch-merchant') ; | |||||
if($modalSwitchMerchant.length) { | |||||
//$('#carac-modal-switch-merchant').modal('show') ; | |||||
} | |||||
} |
{% block navbar_header %} | {% block navbar_header %} | ||||
{{ parent() }} | {{ parent() }} | ||||
<nav class="navbar navbar-expand navbar-light main-header"> | |||||
<ul class="navbar-nav"> | |||||
{% set section_current = section_resolver.getCurrent() %} | |||||
<nav class="carac navbar navbar-expand navbar-light main-header" style="border-color: {{ section_current.color }};"> | |||||
<ul class="navbar-nav left"> | |||||
{% for section in carac_get_sections() %} | {% for section in carac_get_sections() %} | ||||
<li class="nav-item d-none d-sm-inline-block"> | <li class="nav-item d-none d-sm-inline-block"> | ||||
{% set form_switch_section = carac_get_form_switch_section(section) %} | {% set form_switch_section = carac_get_form_switch_section(section) %} | ||||
</li> | </li> | ||||
{% endfor %} | {% endfor %} | ||||
</ul> | </ul> | ||||
<ul class="navbar-nav ml-auto"> | |||||
<ul class="navbar-nav ml-auto right"> | |||||
<li class="nav-item nav-switch-merchant"> | <li class="nav-item nav-switch-merchant"> | ||||
<i class="fa fa-store"></i> | <i class="fa fa-store"></i> | ||||
{% set form_switch_merchant = carac_get_form_switch_merchant('admin') %} | {% set form_switch_merchant = carac_get_form_switch_merchant('admin') %} | ||||
</li> | </li> | ||||
</ul> | </ul> | ||||
</nav> | </nav> | ||||
{% endblock %} | |||||
{% block append_body %} | |||||
{# modal switch merchant #} | |||||
{% set user = app.user %} | |||||
{% set merchant_current = merchant_resolver.getCurrent() %} | |||||
{% if(user.favoriteMerchant != merchant_current) %} | |||||
{% embed '@LcSov/adminlte/embed/modal.twig' %} | |||||
{% block id %}carac-modal-switch-merchant{% endblock %} | |||||
{% block title %} | |||||
Switch merchant | |||||
{% endblock %} | |||||
{% block body %} | |||||
{% if not user.favoriteMerchant %} | |||||
<p>Vous n'avez pas de marchand favoris.</p> | |||||
{% endif %} | |||||
{% if user.favoriteMerchant and user.favoriteMerchant != merchant_current %} | |||||
<p>Vous n'êtes pas sur votre marchand par défaut.</p> | |||||
{% endif %} | |||||
{% endblock %} | |||||
{% block footer %} | |||||
{% set form_switch_merchant_button = carac_get_form_switch_merchant_button() %} | |||||
{% form_theme form_switch_merchant_button '@LcSov/adminlte/crud/form_theme.html.twig' %} | |||||
{{ form_start(form_switch_merchant_button) }} | |||||
{{ form(form_switch_merchant_button) }} | |||||
{{ form_end(form_switch_merchant_button) }} | |||||
<button type="button" class="btn btn-primary" | |||||
data-dismiss="modal">{{ 'action.switch_merchant'|trans }}</button> | |||||
<button type="button" class="btn btn-default" | |||||
data-dismiss="modal">{{ 'action.visit'|trans }}</button> | |||||
{% endblock %} | |||||
{% endembed %} | |||||
{% endif %} | |||||
{% endblock %} | {% endblock %} |
namespace Lc\CaracoleBundle\Twig; | namespace Lc\CaracoleBundle\Twig; | ||||
use Doctrine\ORM\EntityManagerInterface; | use Doctrine\ORM\EntityManagerInterface; | ||||
use Lc\CaracoleBundle\Form\Merchant\SwitchMerchantButtonAdminFormType; | |||||
use Lc\CaracoleBundle\Form\Merchant\SwitchMerchantFormType; | use Lc\CaracoleBundle\Form\Merchant\SwitchMerchantFormType; | ||||
use Lc\CaracoleBundle\Form\Section\SwitchSectionFormType; | use Lc\CaracoleBundle\Form\Section\SwitchSectionFormType; | ||||
use Lc\CaracoleBundle\Repository\Merchant\MerchantRepository; | use Lc\CaracoleBundle\Repository\Merchant\MerchantRepository; | ||||
return array( | return array( | ||||
new TwigFunction('carac_get_sections', [$this, 'getSections']), | new TwigFunction('carac_get_sections', [$this, 'getSections']), | ||||
new TwigFunction('carac_get_form_switch_merchant', [$this, 'getFormSwitchMerchant']), | new TwigFunction('carac_get_form_switch_merchant', [$this, 'getFormSwitchMerchant']), | ||||
new TwigFunction('carac_get_form_switch_merchant_button', [$this, 'getFormSwitchMerchantButton']), | |||||
new TwigFunction('carac_get_form_switch_section', [$this, 'getFormSwitchSection']), | new TwigFunction('carac_get_form_switch_section', [$this, 'getFormSwitchSection']), | ||||
); | ); | ||||
} | } | ||||
return $form->createView(); | return $form->createView(); | ||||
} | } | ||||
public function getFormSwitchMerchantButton() | |||||
{ | |||||
$form = $this->formFactory->create( | |||||
SwitchMerchantButtonAdminFormType::class, | |||||
null, | |||||
[ | |||||
'action' => $this->urlGenerator->generate('carac_switch_merchant'), | |||||
] | |||||
); | |||||
return $form->createView(); | |||||
} | |||||
public function getFormSwitchSection($section) | public function getFormSwitchSection($section) | ||||
{ | { | ||||
$form = $this->formFactory->create( | $form = $this->formFactory->create( |