Fotos LDAP:
- Ignora sync quando conta ainda não tem UID (evitava URI compartilhada)
- Filtra fotos abaixo do tamanho mínimo configurável (padrão 10 KB)
- Adiciona campo ldap_min_photo_size nas configurações e schema
- Update 10010: remove fotos placeholder já existentes
- Update 10011: remove mídias com URI ldap_photo_.{ext} sem UID
Bloco de cabeçalho do microsite:
- Exibe departamento abaixo do nome, sem label, com link para a entidade
- Exibe telefone de trabalho (work_phone) no lugar de phone (restrito)
Página de perfil:
- Título fixo "Perfil de @name" via callback profileTitle()
- Exclui rota profile da substituição de título pelo nó homepage
Subpáginas com URL amigável:
- Adiciona MicrositeSubpagePathProcessor (inbound + outbound)
- Inbound: /user/{username}/{subpage} → /user/{uid}/{subpage}
- Outbound: /user/{uid}/{subpage} → /user/{username}/{subpage}
- Busca alias em todos os idiomas para contornar limitação do AliasManager
Tema do microsite em rotas externas:
- MicrositeThemeNegotiator cobre rotas com parâmetro user sob /user/{user}/
- Cobre nós do structural_pages cujo alias começa com /user/{uid}/
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Item pai 'Adicionar' no menu account com subitens derivados dinamicamente
a partir de site_users.settings:add_content_links. O pai fica oculto quando
o usuário não tem acesso a nenhum dos routes configurados.
- Rota site_users.add_content com _custom_access via AddContentAccessCheck
- hook_menu_links_discovered_alter() gera os subitens com IDs estáveis
- Formulário de settings com tabela editável (label, rota, parâmetro, peso)
- CSS do microsite atualizado com dropdown ao hover/focus-within
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Cria view mode e display 'restricted' (template mostra só username + mensagem)
- Adiciona campo field_user_selected_view_mode (string, default: restricted)
- update_10006: provisiona view mode, display e campo; inicializa role_view_modes
- Seletor de visibilidade no form de edição do perfil (owner e admin)
- hook_entity_view_mode_alter lê o campo e valida existência do display
- Formulário de admin: checkboxes de view modes por role (exceto anonymous e authenticated)
- Schema YAML completo para site_users.settings incluindo role_view_modes
- Tradução pt-BR de todas as novas strings
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implementa hook_ldap_user_edit_user_alter() para capturar a foto do
atributo LDAP configurado e adicioná-la como primeira entrada em
field_user_photos, sem queries adicionais ao servidor.
Inclui LdapPhotoSyncService com detecção de tipo via exif_imagetype,
deduplicação por MD5 e reutilização de media entity existente.
Adiciona checkbox para ativar/desativar o sync no formulário de settings,
com visibilidade condicional do campo de atributo via #states.
Corrige acesso a mídias publicadas para usuários autenticados via
hook_media_access(), resolvendo "Acesso restrito" no widget e na
visualização do perfil.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Campos que retornam forbidden() em fieldAccess() são gravados como
false no submitForm(), evitando que um valor true residual persista
quando um campo passa a ser protegido por outro módulo. Inclui também
o nome do campo no label no formato [módulo:field_name].
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
hook_entity_field_access() passa a cobrir todos os FieldConfigInterface
do usuário, sem lista hardcoded. Campos de referência a mídia usam
lógica de fotos; demais usam lógica de perfil.
SiteUsersSettingsForm descobre campos dinamicamente via
entity_field.manager, listando todos os campos configuráveis do usuário
independente do módulo que os define.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adiciona seção na tela de configurações do módulo que permite ao
administrador controlar quais campos do perfil cada usuário pode
editar no próprio perfil, independentemente das permissões de papel.
- site_users.settings.yml: novo grupo user_editable_fields (todos
habilitados por padrão)
- SiteUsersSettingsForm: fieldset com checkboxes por campo
- site_users.module: site_users_check_profile_field_access() e
site_users_check_photo_field_access() recebem field_name e
consultam a config ao verificar 'edit own'; resultado inclui
cache tag config:site_users.settings
- translations/site_users.pt-br.po: novas strings traduzidas
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Altera langcode de pt-br para en em todos os field.field YAMLs
- Traduz labels e descriptions dos campos para inglês
- Converte strings de info.yml, permissions.yml, links.menu.yml e
routing.yml para inglês
- Converte todas as strings t() e @Translation em PHP para inglês
- Adiciona traduções de config em config/translations/pt-br/ para os
7 campos de usuário
- Adiciona arquivo translations/site_users.pt-br.po com todas as
strings de interface traduzidas para pt-br
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Módulo Drupal para gerenciamento de campos e fotos de perfil de usuários:
- Campos customizados: nome, telefone, categoria, departamento, biografia
- Suporte a múltiplas fotos com seleção de foto padrão
- Controle de permissões granular para visualização e edição
- Bloco de informações do usuário para exibição em páginas
- Configurações administrativas para limite de fotos e integração LDAP
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>