Files

93 lines
5.0 KiB
HTML

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<!--
Composant réutilisable: Formulaire Rôle (WOU/DRY Pattern)
Auteur: Lions User Manager
Version: 1.0.0
Description: Formulaire complet pour créer/modifier un rôle
Paramètres:
- role: RoleDTO (requis) - Le rôle à éditer (peut être null pour création)
- formId: String (défaut: "roleForm") - ID du formulaire
- mode: String (défaut: "create") - Mode: "create" ou "edit"
- showRealmSelector: Boolean (défaut: true) - Afficher le sélecteur de realm
- showClientSelector: Boolean (défaut: false) - Afficher le sélecteur de client
- showCompositeOptions: Boolean (défaut: true) - Afficher les options composite
- readonly: Boolean (défaut: false) - Mode lecture seule
- submitAction: String (optionnel) - Action à exécuter à la soumission
- submitOutcome: String (optionnel) - Page de redirection après soumission
- update: String (optionnel) - Composants à mettre à jour après soumission
Exemples d'utilisation:
1. Formulaire de création rôle Realm:
<ui:include src="/templates/components/role-management/role-form.xhtml">
<ui:param name="role" value="#{roleBean.newRole}" />
<ui:param name="mode" value="create" />
<ui:param name="showClientSelector" value="false" />
<ui:param name="submitAction" value="#{roleBean.createRole}" />
</ui:include>
2. Formulaire de création rôle Client:
<ui:include src="/templates/components/role-management/role-form.xhtml">
<ui:param name="role" value="#{roleBean.newRole}" />
<ui:param name="mode" value="create" />
<ui:param name="showClientSelector" value="true" />
<ui:param name="submitAction" value="#{roleBean.createClientRole}" />
</ui:include>
-->
<c:set var="formId" value="#{empty formId ? 'roleForm' : formId}" />
<c:set var="mode" value="#{empty mode ? 'create' : mode}" />
<c:set var="showRealmSelector" value="#{empty showRealmSelector ? true : showRealmSelector}" />
<c:set var="showClientSelector" value="#{empty showClientSelector ? false : showClientSelector}" />
<c:set var="showCompositeOptions" value="#{empty showCompositeOptions ? true : showCompositeOptions}" />
<c:set var="readonly" value="#{empty readonly ? false : readonly}" />
<c:set var="useParentForm" value="#{empty useParentForm ? false : useParentForm}" />
<c:choose>
<c:when test="#{useParentForm}">
<!-- Utiliser le formulaire parent (pas de h:form ici) -->
<ui:include src="/templates/components/role-management/role-form-content.xhtml">
<ui:param name="role" value="#{role}" />
<ui:param name="mode" value="#{mode}" />
<ui:param name="showRealmSelector" value="#{showRealmSelector}" />
<ui:param name="showClientSelector" value="#{showClientSelector}" />
<ui:param name="showCompositeOptions" value="#{showCompositeOptions}" />
<ui:param name="readonly" value="#{readonly}" />
<ui:param name="hasSubmitAction" value="#{hasSubmitAction}" />
<ui:param name="submitAction" value="#{submitAction}" />
<ui:param name="submitOutcome" value="#{submitOutcome}" />
<ui:param name="update" value="#{update}" />
<ui:param name="cancelOutcome" value="#{cancelOutcome}" />
</ui:include>
</c:when>
<c:otherwise>
<!-- Créer son propre formulaire -->
<h:form id="#{formId}">
<ui:include src="/templates/components/role-management/role-form-content.xhtml">
<ui:param name="role" value="#{role}" />
<ui:param name="mode" value="#{mode}" />
<ui:param name="showRealmSelector" value="#{showRealmSelector}" />
<ui:param name="showClientSelector" value="#{showClientSelector}" />
<ui:param name="showCompositeOptions" value="#{showCompositeOptions}" />
<ui:param name="readonly" value="#{readonly}" />
<ui:param name="hasSubmitAction" value="#{hasSubmitAction}" />
<ui:param name="submitAction" value="#{submitAction}" />
<ui:param name="submitOutcome" value="#{submitOutcome}" />
<ui:param name="update" value="#{update}" />
<ui:param name="cancelOutcome" value="#{cancelOutcome}" />
</ui:include>
</h:form>
</c:otherwise>
</c:choose>
</ui:composition>