RequestStack $request, | RequestStack $request, | ||||
EntityManagerInterface $em, | EntityManagerInterface $em, | ||||
TranslatorAdmin $translatorAdmin | TranslatorAdmin $translatorAdmin | ||||
) | |||||
{ | |||||
) { | |||||
$this->session = $session; | $this->session = $session; | ||||
$this->request = $request; | $this->request = $request; | ||||
$this->em = $em; | $this->em = $em; | ||||
'title' => $this->translatorAdmin->transAction('edit') | 'title' => $this->translatorAdmin->transAction('edit') | ||||
) | ) | ||||
], | ], | ||||
Action::DETAIL => [ | |||||
'icon' => 'eye', | |||||
'add_class' => 'btn btn-success', | |||||
'label' => false, | |||||
'html_attributes' => array( | |||||
'data-toggle' => 'tooltip', | |||||
'title' => $this->translatorAdmin->transAction('detail') | |||||
) | |||||
], | |||||
Action::DELETE => [ | Action::DELETE => [ | ||||
'icon' => 'trash', | 'icon' => 'trash', | ||||
'dropdown' => true, | 'dropdown' => true, | ||||
]; | ]; | ||||
/* Boutons des actions dans l'édition */ | /* Boutons des actions dans l'édition */ | ||||
$actionSaveAndReturn = [ | $actionSaveAndReturn = [ | ||||
'add_class' => 'float-right', | 'add_class' => 'float-right', | ||||
'icon' => 'check', | 'icon' => 'check', | ||||
foreach ($actionsArray as $crudActionName => $actionsStyle) { | foreach ($actionsArray as $crudActionName => $actionsStyle) { | ||||
foreach ($actionsStyle as $actionName => $button) { | foreach ($actionsStyle as $actionName => $button) { | ||||
$actions->update( | |||||
$crudActionName, | |||||
$actionName, | |||||
function (Action $action) use ($button) { | |||||
if (isset($button['add_class'])) { | |||||
$action->addCssClass($button['add_class']); | |||||
} | |||||
if (isset($button['class'])) { | |||||
$action->setCssClass($button['class']); | |||||
} | |||||
if (isset($button['icon'])) { | |||||
$action->setIcon('fa fa-' . $button['icon']); | |||||
// si l'action existe | |||||
if ($actions->getAsDto('actions')->getAction($crudActionName, $actionName)) { | |||||
$actions->update( | |||||
$crudActionName, | |||||
$actionName, | |||||
function (Action $action) use ($button) { | |||||
if (isset($button['add_class'])) { | |||||
$action->addCssClass($button['add_class']); | |||||
} | |||||
if (isset($button['class'])) { | |||||
$action->setCssClass($button['class']); | |||||
} | |||||
if (isset($button['icon'])) { | |||||
$action->setIcon('fa fa-' . $button['icon']); | |||||
} | |||||
if (isset($button['label'])) { | |||||
$action->setLabel($button['label']); | |||||
} | |||||
if (isset($button['dropdown']) && $button['dropdown']) { | |||||
$action->addCssClass('in-dropdown'); | |||||
} | |||||
if (isset($button['html_attributes']) && $button['html_attributes']) { | |||||
$action->setHtmlAttributes($button['html_attributes']); | |||||
} | |||||
return $action; | |||||
} | } | ||||
if (isset($button['label'])) { | |||||
$action->setLabel($button['label']); | |||||
} | |||||
if (isset($button['dropdown']) && $button['dropdown']) { | |||||
$action->addCssClass('in-dropdown'); | |||||
} | |||||
if (isset($button['html_attributes']) && $button['html_attributes']) { | |||||
$action->setHtmlAttributes($button['html_attributes']); | |||||
} | |||||
return $action; | |||||
} | |||||
); | |||||
); | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } | ||||
public function createIndexQueryBuilder( | public function createIndexQueryBuilder( | ||||
SearchDto $searchDto, | |||||
EntityDto $entityDto, | |||||
FieldCollection $fields, | |||||
FilterCollection $filters | |||||
SearchDto $searchDto, | |||||
EntityDto $entityDto, | |||||
FieldCollection $fields, | |||||
FilterCollection $filters | |||||
): QueryBuilder { | ): QueryBuilder { | ||||
$queryBuilder = parent::createIndexQueryBuilder( | $queryBuilder = parent::createIndexQueryBuilder( | ||||
$searchDto, | |||||
$entityDto, | |||||
$fields, | |||||
$filters | |||||
$searchDto, | |||||
$entityDto, | |||||
$fields, | |||||
$filters | |||||
); | ); | ||||
if ($this->isInstanceOf(TreeInterface::class)) { | if ($this->isInstanceOf(TreeInterface::class)) { | ||||
} | } | ||||
public function createSortQueryBuilder( | public function createSortQueryBuilder( | ||||
SearchDto $searchDto, | |||||
EntityDto $entityDto, | |||||
FieldCollection $fields, | |||||
FilterCollection $filters | |||||
SearchDto $searchDto, | |||||
EntityDto $entityDto, | |||||
FieldCollection $fields, | |||||
FilterCollection $filters | |||||
): QueryBuilder { | ): QueryBuilder { | ||||
$queryBuilder = $this->createIndexQueryBuilder($searchDto,$entityDto,$fields,$filters); | |||||
$queryBuilder = $this->createIndexQueryBuilder($searchDto, $entityDto, $fields, $filters); | |||||
return $queryBuilder; | return $queryBuilder; | ||||
} | } |
DateField::new('createdAt')->setFormat('short') | DateField::new('createdAt')->setFormat('short') | ||||
->hideOnForm(), | ->hideOnForm(), | ||||
TextField::new('visitorFirstName') | TextField::new('visitorFirstName') | ||||
->setTemplatePath('@LcSov/admin/ticket/index-username.html.twig') | |||||
->setTemplatePath('@LcSov/admin/ticket/index_username.html.twig') | |||||
->hideOnForm(), | ->hideOnForm(), | ||||
TextField::new('visitorEmail') | TextField::new('visitorEmail') | ||||
->setTemplatePath('@LcSov/admin/ticket/index-email.html.twig') | |||||
->setTemplatePath('@LcSov/admin/ticket/index_email.html.twig') | |||||
->hideOnForm(), | ->hideOnForm(), | ||||
AssociationField::new('user') | AssociationField::new('user') | ||||
->hideOnIndex(), | ->hideOnIndex(), | ||||
TextField::new('subject'), | TextField::new('subject'), | ||||
TextField::new('lastMessage') | TextField::new('lastMessage') | ||||
->setTemplatePath('@LcSov/admin/ticket/index-lastmessage.html.twig') | |||||
->setTemplatePath('@LcSov/admin/ticket/index_lastmessage.html.twig') | |||||
->hideOnForm(), | ->hideOnForm(), | ||||
ChoiceField::new('type') | ChoiceField::new('type') | ||||
->autocomplete() | ->autocomplete() | ||||
'entity.Ticket.fields.statusOptions.' . Ticket::TICKET_STATUS_CLOSED => Ticket::TICKET_STATUS_CLOSED, | 'entity.Ticket.fields.statusOptions.' . Ticket::TICKET_STATUS_CLOSED => Ticket::TICKET_STATUS_CLOSED, | ||||
] | ] | ||||
) | ) | ||||
->setTemplatePath('@LcSov/admin/ticket/index-status.html.twig') | |||||
->setTemplatePath('@LcSov/admin/ticket/index_status.html.twig') | |||||
->hideOnForm(), | ->hideOnForm(), | ||||
]; | ]; | ||||
} | } | ||||
// public function configureCrud(Crud $crud): Crud | // public function configureCrud(Crud $crud): Crud | ||||
// { | // { | ||||
// $crud | // $crud | ||||
// ->overrideTemplate('layout', '@LcSov/admin/layout.html.twig'); | |||||
//// ->overrideTemplate('layout', '@LcCaracole/adminlte/layout.html.twig'); | |||||
// ->overrideTemplate('crud/detail', '@LcSov/admin/ticket/detail.html.twig'); | |||||
// | // | ||||
// return parent::configureCrud($crud); | // return parent::configureCrud($crud); | ||||
// } | // } | ||||
public function configureActions(Actions $actions): Actions | public function configureActions(Actions $actions): Actions | ||||
{ | { | ||||
// $actions | |||||
// ->add(Crud::PAGE_INDEX, Action::DETAIL); | |||||
// $actions = parent::configureActions($actions); | |||||
// $actions | |||||
// ->remove(Crud::PAGE_INDEX, Action::EDIT); | |||||
// return $actions; | |||||
$actions | $actions | ||||
->add(Crud::PAGE_INDEX, Action::DETAIL); | ->add(Crud::PAGE_INDEX, Action::DETAIL); | ||||
// ->remove(Crud::PAGE_EDIT, Action::EDIT); | |||||
// ->remove(Crud::PAGE_INDEX, Action::EDIT); | |||||
return parent::configureActions($actions); | return parent::configureActions($actions); | ||||
} | } | ||||
} | } |
sort: Ordonner | sort: Ordonner | ||||
delete: Supprimer | delete: Supprimer | ||||
change: Changer | change: Changer | ||||
detail: Voir | |||||
index_children: Afficher les enfants | index_children: Afficher les enfants | ||||
index_parent: Retour au parent | index_parent: Retour au parent | ||||
back_index: Retour à la liste | back_index: Retour à la liste | ||||
label: Page | label: Page | ||||
label_plurial: Pages | label_plurial: Pages | ||||
Ticket: | Ticket: | ||||
status: | |||||
open: Ouvert | |||||
being-processed: En attente | |||||
closed: Fermé | |||||
fields: | fields: | ||||
visitorFirstName: Nom | visitorFirstName: Nom | ||||
visitorLastName: Prénom | visitorLastName: Prénom | ||||
visitorEmail: E-mail | visitorEmail: E-mail | ||||
subject: Sujet | subject: Sujet | ||||
type: Type | type: Type | ||||
lastMessage: Dernier message | |||||
typeOptions: | typeOptions: | ||||
general-question: Questions générales | general-question: Questions générales | ||||
technical-problem: Problème technique | technical-problem: Problème technique |
{% set status = entity.instance.status %} | |||||
{% if status == 'open' %} | |||||
<span class="badge badge-success">{{ entity.instance.status|trans }}</span> | |||||
{% elseif status == 'being-processed' %} | |||||
<span class="badge badge-warning">{{ entity.instance.status|trans }}</span> | |||||
{% elseif status == 'closed' %} | |||||
<span class="badge badge-danger">{{ entity.instance.status|trans }}</span> | |||||
{% endif %} |
{% import "@LcSov/adminlte/macro/badge.html.twig" as macro %} | |||||
{% set status = entity.instance.status %} | |||||
{% if status == 'open' %} | |||||
{{ macro.badge_success(('entity.Ticket.status.'~entity.instance.status)|trans({},'admin')) }} | |||||
{% elseif status == 'being-processed' %} | |||||
{{ macro.badge_warning(('entity.Ticket.status.'~entity.instance.status)|trans({},'admin')) }} | |||||
{% elseif status == 'closed' %} | |||||
{{ macro.badge_danger(('entity.Ticket.status.'~entity.instance.status)|trans({},'admin')) }} | |||||
{% endif %} |
{% macro badge_success(title) %} | |||||
{{ _self.badge('success', title) }} | |||||
{% endmacro %} | |||||
{% macro badge_warning(title) %} | |||||
{{ _self.badge('warning', title) }} | |||||
{% endmacro %} | |||||
{% macro badge_danger(title) %} | |||||
{{ _self.badge('danger', title) }} | |||||
{% endmacro %} | |||||
{% macro badge(status, title) %} | |||||
<span class="badge badge-{{ status }}">{{ title }}</span> | |||||
{% endmacro %} |