mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-14 14:24:24 +00:00
feature: update an existing participation
The update allow to modify the status and role of a participation. ref #8
This commit is contained in:
parent
627b9fb08f
commit
993882e925
@ -148,4 +148,94 @@ class ParticipationController extends Controller
|
|||||||
return $form;
|
return $form;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* show an edit form for the participation with the given id.
|
||||||
|
*
|
||||||
|
* @param int $participation_id
|
||||||
|
* @return \Symfony\Component\HttpFoundation\Response
|
||||||
|
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException if the participation is not found
|
||||||
|
* @throws \Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException if the user is not allowed to edit the participation
|
||||||
|
*/
|
||||||
|
public function editAction($participation_id)
|
||||||
|
{
|
||||||
|
/* @var $participation Participation */
|
||||||
|
$participation = $this->getDoctrine()->getManager()
|
||||||
|
->getRepository('ChillEventBundle:Participation')
|
||||||
|
->find($participation_id);
|
||||||
|
|
||||||
|
if ($participation === NULL) {
|
||||||
|
throw $this->createNotFoundException('The participation is not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->denyAccessUnlessGranted(ParticipationVoter::UPDATE, $participation,
|
||||||
|
'You are not allowed to edit this participation');
|
||||||
|
|
||||||
|
$form = $this->createEditForm($participation);
|
||||||
|
|
||||||
|
return $this->render('ChillEventBundle:Participation:edit.html.twig', array(
|
||||||
|
'form' => $form->createView(),
|
||||||
|
'participation' => $participation
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateAction($participation_id, Request $request)
|
||||||
|
{
|
||||||
|
/* @var $participation Participation */
|
||||||
|
$participation = $this->getDoctrine()->getManager()
|
||||||
|
->getRepository('ChillEventBundle:Participation')
|
||||||
|
->find($participation_id);
|
||||||
|
|
||||||
|
if ($participation === NULL) {
|
||||||
|
throw $this->createNotFoundException('The participation is not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->denyAccessUnlessGranted(ParticipationVoter::UPDATE, $participation,
|
||||||
|
'You are not allowed to edit this participation');
|
||||||
|
|
||||||
|
$form = $this->createEditForm($participation);
|
||||||
|
|
||||||
|
$form->handleRequest($request);
|
||||||
|
|
||||||
|
if ($form->isSubmitted() && $form->isValid()) {
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
|
||||||
|
$em->flush();
|
||||||
|
|
||||||
|
$this->addFlash('success', $this->get('translator')->trans(
|
||||||
|
'The participation was updated'
|
||||||
|
));
|
||||||
|
|
||||||
|
return $this->redirectToRoute('event_show', array(
|
||||||
|
'event_id' => $participation->getEvent()->getId()
|
||||||
|
));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->render('ChillEventBundle:Participation:edit.html.twig', array(
|
||||||
|
'form' => $form->createView(),
|
||||||
|
'participation' => $participation
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param Participation $participation
|
||||||
|
* @return \Symfony\Component\Form\FormInterface
|
||||||
|
*/
|
||||||
|
public function createEditForm(Participation $participation)
|
||||||
|
{
|
||||||
|
$form = $this->createForm(ParticipationType::class, $participation, array(
|
||||||
|
'event_type' => $participation->getEvent()->getType(),
|
||||||
|
'action' => $this->generateUrl('chill_event_participation_update', array(
|
||||||
|
'participation_id' => $participation->getId()
|
||||||
|
))
|
||||||
|
));
|
||||||
|
|
||||||
|
$form->add('submit', SubmitType::class, array(
|
||||||
|
'label' => 'Edit'
|
||||||
|
));
|
||||||
|
|
||||||
|
return $form;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,3 +5,12 @@ chill_event_participation_new:
|
|||||||
chill_event_participation_create:
|
chill_event_participation_create:
|
||||||
path: /create
|
path: /create
|
||||||
defaults: { _controller: ChillEventBundle:Participation:create }
|
defaults: { _controller: ChillEventBundle:Participation:create }
|
||||||
|
|
||||||
|
chill_event_participation_edit:
|
||||||
|
path: /{participation_id}/edit
|
||||||
|
defaults: { _controller: ChillEventBundle:Participation:edit }
|
||||||
|
|
||||||
|
chill_event_participation_update:
|
||||||
|
path: /{participation_id}/update
|
||||||
|
defaults: { _controller: ChillEventBundle:Participation:update }
|
||||||
|
methods: [POST]
|
||||||
|
@ -19,6 +19,7 @@ Associated person: Personne associée
|
|||||||
Associated event: Événement associé
|
Associated event: Événement associé
|
||||||
Back to the event: Retour à l'événement
|
Back to the event: Retour à l'événement
|
||||||
The participation was created: La participation a été créée
|
The participation was created: La participation a été créée
|
||||||
|
The participation was updated: La participation a été mise à jour
|
||||||
|
|
||||||
#search
|
#search
|
||||||
Event search: Recherche d'événements
|
Event search: Recherche d'événements
|
||||||
|
@ -57,14 +57,17 @@
|
|||||||
<td>{{ person_macro.render(participation.person) }}</td>
|
<td>{{ person_macro.render(participation.person) }}</td>
|
||||||
<td>{{ participation.role.label|localize_translatable_string }}</td>
|
<td>{{ participation.role.label|localize_translatable_string }}</td>
|
||||||
<td>{{ participation.status.label|localize_translatable_string }}</td>
|
<td>{{ participation.status.label|localize_translatable_string }}</td>
|
||||||
<td>{{ participation.lastUpdate|localizeddate("long", "none") }}</td>
|
<td>{{ participation.lastUpdate|time_diff }} <i class="fa fa-calendar-o" title="{{ participation.lastUpdate|localizeddate("long", "medium")|escape('html_attr') }}"></i></td>
|
||||||
<td>
|
<td>
|
||||||
<ul class="record_actions">
|
<ul class="record_actions">
|
||||||
|
{% if is_granted('CHILL_EVENT_PARTICIPATION_UPDATE', participation) %}
|
||||||
<li>
|
<li>
|
||||||
<a href="#" class="sc-button btn-edit">
|
<a href="{{ path('chill_event_participation_edit', { 'participation_id' : participation.id } ) }}"
|
||||||
|
class="sc-button btn-edit">
|
||||||
{{ 'Edit'|trans }}
|
{{ 'Edit'|trans }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
41
Resources/views/Participation/edit.html.twig
Normal file
41
Resources/views/Participation/edit.html.twig
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{% extends 'ChillEventBundle::layout.html.twig' %}
|
||||||
|
|
||||||
|
{% import 'ChillPersonBundle:Person:macro.html.twig' as person_macro %}
|
||||||
|
|
||||||
|
{% block event_content -%}
|
||||||
|
<h1>{{ 'Participation Edit'|trans }}</h1>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>{{ 'Associated person'|trans }}</th>
|
||||||
|
<td>{{ person_macro.render(participation.person) }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>{{ 'Associated event'|trans }} </th>
|
||||||
|
<td>{{ participation.event.label }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>{{ 'Date'|trans }} </th>
|
||||||
|
<td>{{ participation.event.date|localizeddate('long', 'none') }}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
{{ form_start(form) }}
|
||||||
|
{{ form_row(form.role) }}
|
||||||
|
{{ form_row(form.status) }}
|
||||||
|
|
||||||
|
<ul class="record_actions">
|
||||||
|
<li>
|
||||||
|
<a href="{{ path('event_show', { 'event_id' : participation.event.id } ) }}" class="sc-button btn-cancel">
|
||||||
|
{{ 'Back to the event'|trans }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{{ form_widget(form.submit, { 'attr' : { 'class' : 'sc-button btn-create' } } ) }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
{{ form_end(form) }}
|
||||||
|
{% endblock %}
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
{% import 'ChillPersonBundle:Person:macro.html.twig' as person_macro %}
|
{% import 'ChillPersonBundle:Person:macro.html.twig' as person_macro %}
|
||||||
|
|
||||||
|
{% block title 'Participation creation'|trans %}
|
||||||
|
|
||||||
{% block event_content -%}
|
{% block event_content -%}
|
||||||
<h1>{{ 'Participation creation'|trans }}</h1>
|
<h1>{{ 'Participation creation'|trans }}</h1>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user