Entity Group Field
Proporciona un campo computado para ver y gestionar asociaciones de grupos directamente en formularios y visualizaciones de entidades.
entitygroupfield
Overview
Entity Group Field es un módulo que proporciona un campo computado que puede configurarse en cualquier tipo de entidad asociada con el módulo Group. Esto permite a los usuarios con permisos suficientes ver las asociaciones de grupos directamente mientras visualizan entidades, y gestionar las asociaciones de grupos mientras editan entidades.
El módulo detecta automáticamente qué entidades pueden pertenecer a grupos basándose en los plugins de tipo de relación de Group instalados (como gnode para nodos). Proporciona dos opciones de widget para gestionar asociaciones (desplegable de selección y autocompletado) y cuatro opciones de formateador para mostrar información de grupos. El módulo respeta el sistema de permisos de Group, mostrando solo los grupos a los que el usuario actual tiene permiso para añadir contenido.
Los casos de uso comunes incluyen gestionar a qué grupos pertenece un nodo desde el formulario de edición del nodo, o gestionar las membresías de grupos de usuarios directamente desde el formulario de perfil de usuario.
Features
- Campo computado que descubre y muestra automáticamente las relaciones de grupos para cualquier tipo de entidad con plugins de relación de Group habilitados
- Widget de selección que proporciona un desplegable organizado por tipo de grupo con optgroups, mostrando solo los grupos donde el usuario tiene permiso para añadir contenido
- Widget de autocompletado para sitios con gran cantidad de grupos, proporcionando funcionalidad de búsqueda predictiva con filtrado de permisos
- Formateador de etiqueta de grupo padre que muestra nombres de grupos con enlace opcional a la página del grupo
- Formateador de entidad renderizada de grupo padre que permite mostrar grupos usando cualquier modo de vista configurado
- Formateador de ID de grupo padre que muestra el identificador numérico del grupo
- Interfaz con AJAX para añadir y eliminar asociaciones de grupos sin recargar la página
- Interfaz de dropbutton con operaciones de Editar, Eliminar, Contraer y Restaurar para gestionar relaciones de grupos existentes
- Soporte tanto para Group 2.x (group_content) como Group 3.x (group_relationship) como tipos de entidad
- Validación consciente de permisos que asegura que los usuarios solo puedan añadir contenido a grupos a los que tienen acceso apropiado
- Configuraciones de widget personalizables incluyendo valores múltiples, validación de campo requerido, etiquetas personalizadas y texto de ayuda
- Limpieza automática de la configuración del campo al desinstalar el módulo
Use Cases
Gestionar asignaciones de grupos de nodos desde el formulario de edición del nodo
Habilite el campo 'Groups' en la visualización del formulario del nodo (ej., /admin/structure/types/manage/article/form-display) usando el widget de selección o autocompletado. Los editores de contenido pueden entonces añadir nodos a grupos mientras crean o editan contenido, sin navegar a las páginas de administración de grupos.
Gestionar membresías de grupos de usuarios desde perfiles de usuario
Habilite el campo 'Group memberships' en la visualización del formulario de usuario (/admin/config/people/accounts/form-display). Los administradores pueden entonces gestionar a qué grupos pertenece un usuario directamente desde el formulario de edición de usuario, agilizando los flujos de trabajo de gestión de usuarios.
Mostrar afiliaciones de grupos en páginas de contenido
Habilite el campo 'Groups' en las visualizaciones de contenido usando el formateador 'Etiqueta de grupo padre' con enlace habilitado. Los visitantes pueden ver a qué grupos pertenece el contenido y hacer clic para acceder a las páginas de grupos, mejorando el descubrimiento y navegación del contenido.
Mostrar información de grupos con estilos personalizados
Use el formateador 'Entidad de grupo padre renderizada' con un modo de vista personalizado para mostrar información rica de grupos (como logos o descripciones de grupos) junto al contenido, proporcionando más contexto sobre la afiliación organizacional del contenido.
Tips
- El campo computado usa diferentes etiquetas predeterminadas: 'Group memberships' para entidades de usuario y 'Groups' para todas las demás entidades. Use el módulo Base Field Override UI para personalizar estas etiquetas.
- El widget de selección organiza grupos por tipo de grupo usando optgroups HTML, facilitando encontrar grupos específicos en sitios con múltiples tipos de grupos.
- Cuando un usuario carece de permiso para añadir contenido a cualquier grupo, el widget mostrará 'Not yet added to groups' sin botón de añadir - este es el comportamiento esperado basado en los permisos de Group.
- El widget de autocompletado realiza validación de permisos durante el envío del formulario, previniendo que los usuarios añadan contenido a grupos a los que no tienen acceso incluso si ingresan manualmente un ID de grupo.
- Ambos widgets soportan reordenamiento de asociaciones de grupos mediante arrastrar y soltar cuando la configuración 'multiple' está habilitada.
- Las asociaciones de grupos se guardan durante el guardado de la entidad, no inmediatamente al añadir vía el widget - los cambios no guardados muestran un mensaje de advertencia cuando están contraídos.
Technical Details
Hooks 4
hook_entity_base_field_info
Añade el campo base computado 'entitygroupfield' a todos los tipos de entidades que tienen plugins de relación de Group habilitados. El campo se nombra automáticamente 'Group memberships' para entidades de usuario y 'Groups' para todos los demás tipos de entidades.
hook_theme
Define el hook de tema 'entitygroupfield_dropbutton_wrapper' usado para renderizar botones de operación en el widget.
hook_field_formatter_info_alter
Añade 'entitygroupfield' a los tipos de campo soportados por el formateador core 'entity_reference_entity_view', habilitando la opción de formateador 'Rendered entity'.
hook_uninstall
Realiza limpieza eliminando el componente entitygroupfield de todas las configuraciones de visualización de formularios y vistas de entidades cuando el módulo es desinstalado.