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.');
}
$attribute = constant(GroupVoter::class.'::MOVE'.$status);
$attribute = constant(GroupVoter::class.'::MOVETO'.$status);
$this->denyAccessUnlessGranted($attribute, $group);
$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);
$hasStatus = Group::ACTIVE === $group->getStatus();
dump($hasUser);
dump($hasStatus);
return $hasUser && $hasStatus;
}

View File

@@ -15,8 +15,8 @@
<a href="{{ path(routecancel) }}" class="btn btn-secondary me-5">Retour</a>
{% if is_granted('MOVETOINACTIF', 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 ?')">
{% if is_granted('MOVETOINACTIVE', group) and group.status=="Actif"%}
<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
</a>
{% endif %}
@@ -26,8 +26,8 @@
Supprimer
</a>
{% endif %}
{% if is_granted('MOVETOACTIF', 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 ?')">
{% if is_granted('MOVETOACTIVE', group) and group.status=="Inactif" %}
<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
</a>
{% endif %}

View File

@@ -5,26 +5,28 @@
{%block body%}
<div class="row">
<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">
<li class="me-5">
<a href="{{ path('app_user_project_submit') }}" class="btn btn-success">Ajouter</a>
<li class="nav-item">
<a class="nav-link text-success nav-tome" href="#">Mes Projets</a>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#" data-status="A Voter"">A Voter</a>
<a class="nav-link active" href="#" data-status="A Voter"">A Voter</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#" data-status="Brouillon">Brouillon</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#" data-status="Voté">Voté</a>
</li>
<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 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>
</ul>
<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">
{% for project in projects %}
{% 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'>
<h5>{{project.title}}</h5>
@@ -95,19 +97,19 @@
</div>
<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">
<li class="me-5">
<a href="{{ path('app_user_group_submit') }}" class="btn btn-success">Ajouter</a>
<li class="nav-item">
<a class="nav-link active text-success nav-tome" href="#">Mes Groupes</a>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#" data-status="Actif"">Actif</a>
</li>
<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 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>
</ul>
@@ -121,7 +123,7 @@
<div style="display:none">
{% for group in groups %}
{% 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'>
<h5>{{group.title}}</h5>
@@ -156,7 +158,6 @@
<script>
$(document).ready(function() {
// Cacher tous les containers sauf celui actif au chargement
let initialStatus = $('#tabProjects .nav-link.active').data('status');
$('.containerProjectStatus').removeClass("d-flex");
$('.containerProjectStatus').hide();
@@ -170,13 +171,11 @@
}
});
$('.containerProjectStatus[data-status="' + initialStatus + '"]').addClass("d-flex");
$('#tabProjects .nav-link').on('click', function (e) {
e.preventDefault();
// Gère les onglets actifs
$('.nav-link').removeClass('active');
$('#tabProjects .nav-link').removeClass('active');
$(this).addClass('active');
if ($(this).hasClass('nav-tome')) {
@@ -209,12 +208,13 @@
$('.containerProjectStatus[data-status="' + status + '"]').addClass("d-flex").show();
}
});
$('#tabProjects .nav-link.active').click();
});
$(document).ready(function() {
// Cacher tous les containers sauf celui actif au chargement
let initialStatus = $('#tabGroups .nav-link.active').data('status');
$('.containerGroupStatus').removeClass("d-flex");
$('.containerGroupStatus').hide();
@@ -228,13 +228,11 @@
}
});
$('.containerGroupStatus[data-status="' + initialStatus + '"]').addClass("d-flex");
$('#tabGroups .nav-link').on('click', function (e) {
e.preventDefault();
// Gère les onglets actifs
$('.nav-link').removeClass('active');
$('#tabGroups .nav-link').removeClass('active');
$(this).addClass('active');
if ($(this).hasClass('nav-tome')) {
@@ -267,7 +265,8 @@
$('.containerGroupStatus[data-status="' + status + '"]').addClass("d-flex").show();
}
});
$('#tabGroups .nav-link.active').click();
});
</script>
{% endblock %}