Sync: code local unifié

Synchronisation du code source local (fait foi).

Signed-off-by: lions dev Team
This commit is contained in:
dahoud
2026-03-15 16:25:45 +00:00
parent 6b28cf751e
commit 0dc050f422
179 changed files with 3355 additions and 992 deletions

View File

@@ -7,7 +7,7 @@
template="/templates/main-template.xhtml">
<f:metadata>
<f:viewParam name="id" value="#{membreCotisationBean.membreId}"/>
<f:viewParam name="id" value="#{membreCotisationBean.membreId}" converter="uuidConverter"/>
<f:event type="preRenderView" listener="#{membreCotisationBean.init}"/>
</f:metadata>
@@ -86,7 +86,7 @@
<!-- Liste des cotisations -->
<div class="card">
<h5 class="mb-3">Historique des Cotisations</h5>
<h5 class="mb-3">Mes Cotisations</h5>
<!-- Filtres -->
<p:toolbar>

View File

@@ -143,7 +143,7 @@
<div class="col-12 md:col-4">
<div class="field">
<p:outputLabel for="organisationFilter" value="Organisation" />
<p:selectOneMenu id="organisationFilter" value="#{membreExportBean.organisationId}" styleClass="w-full">
<p:selectOneMenu id="organisationFilter" value="#{membreExportBean.organisationId}" converter="uuidConverter" styleClass="w-full">
<f:selectItem itemLabel="Toutes les organisations" itemValue="" />
<f:selectItems value="#{membreExportBean.organisationsDisponibles}"
var="org"

View File

@@ -130,7 +130,7 @@
<div class="col-12 md:col-6">
<div class="field">
<p:outputLabel for="organisationImport" value="Organisation par défaut" />
<p:selectOneMenu id="organisationImport" value="#{membreImportBean.organisationId}" styleClass="w-full">
<p:selectOneMenu id="organisationImport" value="#{membreImportBean.organisationId}" converter="uuidConverter" styleClass="w-full">
<f:selectItem itemLabel="Sélectionner une organisation..." itemValue="" />
<f:selectItems value="#{membreImportBean.organisationsDisponibles}"
var="org"

View File

@@ -6,6 +6,11 @@
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<!-- Sécurisation de la page basée sur les rôles -->
<ui:include src="/templates/components/security/page-access-control.xhtml">
<ui:param name="allowedRoles" value="SECRETAIRE,ADMIN" />
</ui:include>
<ui:param name="page" value="#{membreInscriptionBean}"/>
<ui:define name="title">Inscription Membre - UnionFlow</ui:define>
@@ -268,7 +273,7 @@
<ui:define name="content">
<div class="field">
<p:outputLabel for="organisationId" value="Organisation *" styleClass="font-bold text-primary" />
<p:selectOneMenu id="organisationId" value="#{membreInscriptionBean.organisationId}" required="true" requiredMessage="Vous devez sélectionner une organisation" styleClass="w-full">
<p:selectOneMenu id="organisationId" value="#{membreInscriptionBean.organisationId}" converter="uuidConverter" required="true" requiredMessage="Vous devez sélectionner une organisation" styleClass="w-full">
<f:selectItem itemLabel="--- Sélectionner une organisation ---" itemValue="" noSelectionOption="true" />
<f:selectItems value="#{membreInscriptionBean.organisationsDisponibles}"
var="org"

View File

@@ -19,16 +19,20 @@
<ui:param name="styleClass" value="mb-3" />
<ui:define name="actions">
<p:button value="Nouveau Membre" icon="pi pi-user-plus" outcome="membreInscriptionPage"
styleClass="ui-button-success mr-2" />
styleClass="ui-button-success mr-2"
rendered="#{menuBean.gestionMembresMenuVisible}" />
<p:commandButton value="Import / Export" icon="pi pi-file-excel"
onclick="PF('dlgImportExport').show();" type="button" styleClass="ui-button-info" />
onclick="PF('dlgImportExport').show();" type="button" styleClass="ui-button-info"
rendered="#{menuBean.gestionMembresMenuVisible}" />
</ui:define>
</ui:decorate>
<!-- ================================================================
STATISTIQUES (DRY/WOU: stat-card)
Visible uniquement pour SECRETAIRE, ADMIN (pas MEMBRE_ACTIF)
================================================================ -->
<h:panelGroup id="panelStatistiques" layout="block" styleClass="grid mb-3">
<h:panelGroup id="panelStatistiques" layout="block" styleClass="grid mb-3"
rendered="#{menuBean.gestionMembresMenuVisible}">
<div class="col-12 md:col-3">
<ui:decorate template="/templates/components/cards/stat-card.xhtml">
<ui:param name="value" value="#{membreListeBean.totalMembres}" />
@@ -125,10 +129,11 @@
<!-- ================================================================
ACTIONS GROUPÉES (visible si sélection)
Visible uniquement pour SECRETAIRE, ADMIN (actions administratives)
================================================================ -->
<h:panelGroup id="panelActionsGroupeesWrapper">
<h:panelGroup id="panelActionsGroupees" layout="block" styleClass="flex gap-2 mb-3"
rendered="#{not empty membreListeBean.selectedMembres}">
rendered="#{not empty membreListeBean.selectedMembres and menuBean.gestionMembresMenuVisible}">
<p:commandButton value="Rappel Cotisations" icon="pi pi-bell"
action="#{membreListeBean.rappelCotisationsGroupe}" update="messages"
styleClass="ui-button-warning ui-button-sm" />
@@ -157,8 +162,9 @@
<p:ajax event="rowUnselect" update=":formMembres:panelActionsGroupeesWrapper" />
<p:ajax event="toggleSelect" update=":formMembres:panelActionsGroupeesWrapper" />
<!-- Colonne sélection checkbox -->
<p:column selectionMode="multiple" headerText="" style="width: 3rem; text-align: center;" />
<!-- Colonne sélection checkbox - ADMIN SEULEMENT (pour actions groupées) -->
<p:column selectionMode="multiple" headerText="" style="width: 3rem; text-align: center;"
rendered="#{menuBean.gestionMembresMenuVisible}" />
<!-- Colonne: Membre (Nom + Email) -->
<ui:decorate template="/templates/components/columns/column-name-with-subtitle.xhtml">
@@ -225,9 +231,10 @@
<f:param name="id" value="#{membre.id}" />
</p:button>
<!-- Éditer -->
<!-- Éditer - ADMIN SEULEMENT -->
<p:button icon="pi pi-pencil" outcome="membreModifierPage" title="Modifier"
styleClass="ui-button-warning ui-button-sm ui-button-rounded mr-1">
styleClass="ui-button-warning ui-button-sm ui-button-rounded mr-1"
rendered="#{menuBean.gestionMembresMenuVisible}">
<f:param name="id" value="#{membre.id}" />
</p:button>
@@ -237,31 +244,34 @@
oncomplete="PF('dlgContact').show();" update=":dlgContact"
styleClass="ui-button-help ui-button-sm ui-button-rounded mr-1" />
<!-- Suspendre (visible si actif) -->
<!-- Suspendre - ADMIN SEULEMENT (visible si actif) -->
<p:commandButton icon="pi pi-ban" title="Suspendre"
action="#{membreListeBean.suspendreMembre(membre)}"
update="dtMembres messages panelStatistiques" rendered="#{membre.statut == 'ACTIF'}"
styleClass="ui-button-danger ui-button-sm ui-button-rounded mr-1">
<p:confirm header="Confirmation" message="Suspendre #{membre.nomComplet} ?"
icon="pi pi-exclamation-triangle" />
</p:commandButton>
actionListener="#{membreListeBean.preparerSuspendre(membre)}"
update=":formMembres:dlgConfirmSuspendre"
oncomplete="PF('dlgConfirmSuspendre').show();"
rendered="#{menuBean.gestionMembresMenuVisible and membre.statut == 'ACTIF'}"
styleClass="ui-button-danger ui-button-sm ui-button-rounded mr-1" />
<!-- Réactiver (visible si suspendu) -->
<!-- Réactiver - ADMIN SEULEMENT (visible si suspendu) -->
<p:commandButton icon="pi pi-replay" title="Réactiver"
action="#{membreListeBean.reactiverMembre(membre)}"
update="dtMembres messages panelStatistiques" rendered="#{membre.statut == 'SUSPENDU'}"
update="dtMembres messages panelStatistiques"
rendered="#{menuBean.gestionMembresMenuVisible and membre.statut == 'SUSPENDU'}"
styleClass="ui-button-success ui-button-sm ui-button-rounded" />
</ui:define>
</ui:decorate>
</p:dataTable>
<!-- Confirmation dialog global -->
<p:confirmDialog global="true" showEffect="fade" hideEffect="fade" responsive="true" width="450">
<p:commandButton value="Oui" type="button" styleClass="ui-button-danger ui-confirmdialog-yes"
icon="pi pi-check" />
<p:commandButton value="Non" type="button" styleClass="ui-button-secondary ui-confirmdialog-no"
icon="pi pi-times" />
</p:confirmDialog>
<p:dialog id="dlgConfirmSuspendre" widgetVar="dlgConfirmSuspendre" header="Confirmation" modal="true" width="400" showEffect="fade" hideEffect="fade">
<p class="mb-3">Suspendre ce membre ?</p>
<f:facet name="footer">
<p:commandButton value="Non" icon="pi pi-times" styleClass="ui-button-secondary" onclick="PF('dlgConfirmSuspendre').hide();" />
<p:commandButton value="Oui" icon="pi pi-check" styleClass="ui-button-danger" process="@this"
actionListener="#{membreListeBean.confirmerSuspendre}"
update=":formMembres:dtMembres :formMembres:messages :formMembres:panelStatistiques"
oncomplete="PF('dlgConfirmSuspendre').hide();" />
</f:facet>
</p:dialog>
</h:form>
<!-- ================================================================