Adiciona group.type.departments e módulo group nas dependências
do campo, garantindo que o tipo de grupo exista antes da importação
do campo. Adiciona direction: ASC ao sort para consistência.
Substitui handler: views (referenciando view inexistente 'departments')
por handler: default:group com target_bundles, eliminando o erro
'Attempt to create a field without a field_name' na instalação.
Esse config/optional redefinía core.entity_view_display.user.user.default
de forma conflitante com instalações existentes. A configuração do display
passa a ser responsabilidade da recipe imecc-ldap-departments.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Cria o módulo modules/ldap_courses_sync/ seguindo o mesmo padrão do
ldap_research_groups_sync, com bundle `course`, campos field_course_*
e field_user_courses, sincronização de membros via atributo LDAP, e
aba "Courses Sync" no painel unificado.
Também registra `courses` no módulo pai (routing, UnifiedAccessRulesForm
e GlobalAccessRuleForm) para suporte a access rules unificadas.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ldap_departments_sync/ e ldap_research_groups_sync/ movidos para
modules/, padrão adotado por módulos contrib como Drupal Commerce.
Nenhum arquivo PHP ou YAML alterado — o Drupal descobre módulos
recursivamente pelo .info.yml independente do caminho.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>