This commit is contained in:
2025-09-18 11:40:18 +02:00
parent 92976d8496
commit bcdf788be3
4 changed files with 37 additions and 36 deletions

View File

@@ -119,7 +119,7 @@ class GroupController extends AbstractController
throw new NotFoundHttpException('La ressource demandée est introuvable.'); throw new NotFoundHttpException('La ressource demandée est introuvable.');
} }
$attribute = constant(GroupVoter::class.'::MOVE'.$status); $attribute = constant(GroupVoter::class.'::MOVETO'.$status);
$this->denyAccessUnlessGranted($attribute, $group); $this->denyAccessUnlessGranted($attribute, $group);
$group->setStatus(constant(Group::class.'::'.$status)); $group->setStatus(constant(Group::class.'::'.$status));

View File

@@ -57,6 +57,8 @@ class GroupVoter extends Voter
{ {
$hasUser = $user->hasRole('ROLE_ADMIN') || $user->hasRole('ROLE_MASTER') || $group->getUsers()->contains($user); $hasUser = $user->hasRole('ROLE_ADMIN') || $user->hasRole('ROLE_MASTER') || $group->getUsers()->contains($user);
$hasStatus = Group::ACTIVE === $group->getStatus(); $hasStatus = Group::ACTIVE === $group->getStatus();
dump($hasUser);
dump($hasStatus);
return $hasUser && $hasStatus; return $hasUser && $hasStatus;
} }

View File

@@ -15,8 +15,8 @@
<a href="{{ path(routecancel) }}" class="btn btn-secondary me-5">Retour</a> <a href="{{ path(routecancel) }}" class="btn btn-secondary me-5">Retour</a>
{% if is_granted('MOVETOINACTIF', group) and group.status=="Actif"%} {% if is_granted('MOVETOINACTIVE', group) and group.status=="Actif"%}
<a href="{{ path(routemove,{id:group.id, status:"INACTIF"}) }}" class="btn btn-primary me-1" onclick="return confirm('Statut = Inactif ?')"> <a href="{{ path(routemove,{id:group.id, status:"INACTIVE"}) }}" class="btn btn-primary me-1" onclick="return confirm('Statut = Inactif ?')">
<i class="fas fa-angle-double-right"></i> Statut = Inactif <i class="fas fa-angle-double-right"></i> Statut = Inactif
</a> </a>
{% endif %} {% endif %}
@@ -26,8 +26,8 @@
Supprimer Supprimer
</a> </a>
{% endif %} {% endif %}
{% if is_granted('MOVETOACTIF', group) and group.status=="Inactif" %} {% if is_granted('MOVETOACTIVE', group) and group.status=="Inactif" %}
<a href="{{ path(routemove,{id:group.id, status:"ACTIF"}) }}" class="btn btn-warning me-1 float-end" onclick="return confirm('Statut = Actif ?')"> <a href="{{ path(routemove,{id:group.id, status:"ACTIVE"}) }}" class="btn btn-warning me-1 float-end" onclick="return confirm('Statut = Actif ?')">
<i class="fas fa-angle-double-left"></i> Statut = Actif <i class="fas fa-angle-double-left"></i> Statut = Actif
</a> </a>
{% endif %} {% endif %}

View File

@@ -5,26 +5,28 @@
{%block body%} {%block body%}
<div class="row"> <div class="row">
<div class="col-md-8"> <div class="col-md-8">
<h2>Projets</h2> <div class="d-flex align-items-center">
<h2>Mes Projets</h2>
<a href="{{ path('app_user_project_submit') }}" class="btn btn-success rounded-circle ms-3" title="Ajouter un projet"><i class="fas fa-plus" style="-webkit-text-stroke: 1px;"></i></a>
</div>
<ul id="tabProjects" class="nav nav-tabs"> <ul id="tabProjects" class="nav nav-tabs">
<li class="me-5">
<a href="{{ path('app_user_project_submit') }}" class="btn btn-success">Ajouter</a>
</li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" aria-current="page" href="#" data-status="A Voter"">A Voter</a> <a class="nav-link text-success nav-tome" href="#">Mes Projets</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="#" data-status="A Voter"">A Voter</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="#" data-status="Brouillon">Brouillon</a> <a class="nav-link" href="#" data-status="Brouillon">Brouillon</a>
</li> </li>
<li class="nav-item">
<a class="nav-link" href="#" data-status="Voté">Voté</a>
</li>
<li class="nav-item ms-auto"> <li class="nav-item ms-auto">
<a class="nav-link" href="#" data-status="Archivé">Archivé</a> <a class="nav-link" href="#" data-status="Voté"><small>Voté</small></a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link text-success nav-tome" href="#">Mes Projets</a> <a class="nav-link" href="#" data-status="Archivé"><small>Archivé</small></a>
</li> </li>
</ul> </ul>
<div id="containerdraft" data-status="Brouillon" class='containerProjectStatus d-flex flex-wrap mt-3' style='justify-content: left'> <div id="containerdraft" data-status="Brouillon" class='containerProjectStatus d-flex flex-wrap mt-3' style='justify-content: left'>
@@ -43,7 +45,7 @@
<div style="display:none"> <div style="display:none">
{% for project in projects %} {% for project in projects %}
{% if is_granted('VIEW', project) %} {% if is_granted('VIEW', project) %}
<div class='card cardProject' data-status="{{project.status}}" data-tome="{{is_granted('TOME', project)}}" style='width:300px; margin-right:10px;'> <div class='card cardProject' data-status="{{project.status}}" data-tome="{{is_granted('TOME', project)}}" style='width:300px; margin-right:10px;;margin-bottom:10px;'>
<div class='card-header d-flex justify-content-between align-items-center'> <div class='card-header d-flex justify-content-between align-items-center'>
<h5>{{project.title}}</h5> <h5>{{project.title}}</h5>
@@ -95,20 +97,20 @@
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<h2>Groupes</h2> <div class="d-flex align-items-center">
<h2>Groupes</h2>
<a href="{{ path('app_user_group_submit') }}" class="btn btn-success rounded-circle ms-3" title="Ajouter un groupe"><i class="fas fa-plus" style="-webkit-text-stroke: 1px;"></i></a>
</div>
<ul id="tabGroups" class="nav nav-tabs"> <ul id="tabGroups" class="nav nav-tabs">
<li class="me-5">
<a href="{{ path('app_user_group_submit') }}" class="btn btn-success">Ajouter</a>
</li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active" aria-current="page" href="#" data-status="Actif"">Actif</a> <a class="nav-link active text-success nav-tome" href="#">Mes Groupes</a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" href="#" data-status="Brouillon">Inactif</a> <a class="nav-link" href="#" data-status="Actif"">Actif</a>
</li> </li>
<li class="nav-item ms-auto"> <li class="nav-item ms-auto">
<a class="nav-link text-success nav-tome" href="#">Mes Groupes</a> <a class="nav-link" href="#" data-status="Inactif"><small>Inactif</small></a>
</li> </li>
</ul> </ul>
<div id="containeractif" data-status="Actif" class='containerGroupStatus d-flex flex-wrap mt-3' style='justify-content: left'> <div id="containeractif" data-status="Actif" class='containerGroupStatus d-flex flex-wrap mt-3' style='justify-content: left'>
@@ -121,7 +123,7 @@
<div style="display:none"> <div style="display:none">
{% for group in groups %} {% for group in groups %}
{% if is_granted('VIEW', group) %} {% if is_granted('VIEW', group) %}
<div class='card cardGroup' data-status="{{group.status}}" data-tome="{{is_granted('TOME', group)}}" style='width:300px; margin-right:10px;'> <div class='card cardGroup' data-status="{{group.status}}" data-tome="{{is_granted('TOME', group)}}" style='width:250px; margin-right:10px;margin-bottom:10px;'>
<div class='card-header d-flex justify-content-between align-items-center'> <div class='card-header d-flex justify-content-between align-items-center'>
<h5>{{group.title}}</h5> <h5>{{group.title}}</h5>
@@ -156,7 +158,6 @@
<script> <script>
$(document).ready(function() { $(document).ready(function() {
// Cacher tous les containers sauf celui actif au chargement // Cacher tous les containers sauf celui actif au chargement
let initialStatus = $('#tabProjects .nav-link.active').data('status');
$('.containerProjectStatus').removeClass("d-flex"); $('.containerProjectStatus').removeClass("d-flex");
$('.containerProjectStatus').hide(); $('.containerProjectStatus').hide();
@@ -170,13 +171,11 @@
} }
}); });
$('.containerProjectStatus[data-status="' + initialStatus + '"]').addClass("d-flex");
$('#tabProjects .nav-link').on('click', function (e) { $('#tabProjects .nav-link').on('click', function (e) {
e.preventDefault(); e.preventDefault();
// Gère les onglets actifs // Gère les onglets actifs
$('.nav-link').removeClass('active'); $('#tabProjects .nav-link').removeClass('active');
$(this).addClass('active'); $(this).addClass('active');
if ($(this).hasClass('nav-tome')) { if ($(this).hasClass('nav-tome')) {
@@ -209,12 +208,13 @@
$('.containerProjectStatus[data-status="' + status + '"]').addClass("d-flex").show(); $('.containerProjectStatus[data-status="' + status + '"]').addClass("d-flex").show();
} }
}); });
$('#tabProjects .nav-link.active').click();
}); });
$(document).ready(function() { $(document).ready(function() {
// Cacher tous les containers sauf celui actif au chargement // Cacher tous les containers sauf celui actif au chargement
let initialStatus = $('#tabGroups .nav-link.active').data('status');
$('.containerGroupStatus').removeClass("d-flex"); $('.containerGroupStatus').removeClass("d-flex");
$('.containerGroupStatus').hide(); $('.containerGroupStatus').hide();
@@ -228,13 +228,11 @@
} }
}); });
$('.containerGroupStatus[data-status="' + initialStatus + '"]').addClass("d-flex");
$('#tabGroups .nav-link').on('click', function (e) { $('#tabGroups .nav-link').on('click', function (e) {
e.preventDefault(); e.preventDefault();
// Gère les onglets actifs // Gère les onglets actifs
$('.nav-link').removeClass('active'); $('#tabGroups .nav-link').removeClass('active');
$(this).addClass('active'); $(this).addClass('active');
if ($(this).hasClass('nav-tome')) { if ($(this).hasClass('nav-tome')) {
@@ -267,7 +265,8 @@
$('.containerGroupStatus[data-status="' + status + '"]').addClass("d-flex").show(); $('.containerGroupStatus[data-status="' + status + '"]').addClass("d-flex").show();
} }
}); });
$('#tabGroups .nav-link.active').click();
}); });
</script> </script>
{% endblock %} {% endblock %}