# Site Users Módulo Drupal para customização de perfis de usuário, incluindo campos adicionais e gerenciamento de fotos. ## Funcionalidades - **Campos de perfil customizados:** - Nome completo - Telefone - Categoria - Código do departamento - Biografia - **Gerenciamento de fotos:** - Suporte a múltiplas fotos por usuário - Seleção de foto padrão - Limite configurável de quantidade de fotos - Integração com Media Library - **Controle de permissões granular:** - Visualizar/editar campos do próprio perfil - Visualizar/editar campos de qualquer usuário - Gerenciar fotos próprias ou de outros usuários - **Bloco de informações:** - Exibe dados do usuário em páginas de perfil - Template customizável via Twig ## Requisitos - Drupal 10 ou 11 - Módulos core: User, Telephone, Text, Media, Media Library ## Instalação 1. Copie o módulo para `modules/custom/site_users` 2. Ative o módulo via Drush ou interface administrativa: ```bash drush en site_users ``` ## Configuração Acesse as configurações em: **Administração > Configuração > Módulos Locais > Site Users** `/admin/config/local-modules/site-users` ### Opções disponíveis | Configuração | Descrição | Padrão | |--------------|-----------|--------| | Quantidade de fotos | Número máximo de fotos por usuário | 5 | | Atributo LDAP | Nome do atributo LDAP para foto (se aplicável) | jpegPhoto | ## Permissões | Permissão | Descrição | |-----------|-----------| | `administer site_users settings` | Administrar configurações do módulo | | `view own user profile fields` | Visualizar campos do próprio perfil | | `view any user profile fields` | Visualizar campos de qualquer usuário | | `edit own user profile fields` | Editar campos do próprio perfil | | `edit any user profile fields` | Editar campos de qualquer usuário | | `manage own user photos` | Gerenciar próprias fotos | | `manage user photos` | Gerenciar fotos de qualquer usuário | ## Uso do Bloco O módulo fornece o bloco **"Informações do Usuário"** que pode ser posicionado em regiões do tema para exibir informações do perfil nas páginas `/user/{id}`. Para adicionar o bloco: 1. Acesse **Estrutura > Layout de blocos** 2. Adicione o bloco "Informações do Usuário" na região desejada 3. Configure a visibilidade para páginas de usuário ## Customização de Templates Os templates podem ser sobrescritos no tema: - `site-user-info-block.html.twig` - Bloco de informações do usuário - `user--full.html.twig` - Página completa do usuário ### Variáveis disponíveis no bloco ```twig {{ user_info.uid }} {# ID do usuário #} {{ user_info.username }} {# Nome de exibição #} {{ user_info.name }} {# Nome completo #} {{ user_info.phone }} {# Telefone #} {{ user_info.category }} {# Categoria #} {{ user_info.dept_code }} {# Código do departamento #} {{ user_info.bio }} {# Biografia #} {{ user_info.photo_url }} {# URL da foto padrão #} {{ user_info.photo_alt }} {# Texto alternativo da foto #} {{ user }} {# Entidade completa do usuário #} ``` ## API ### Obter foto padrão de um usuário ```php $photo = site_users_get_default_photo($user); if ($photo instanceof \Drupal\media\MediaInterface) { // Usar a foto } ``` ## Sub-módulo: Site Users Microsite O sub-módulo `site_users_microsite` provê micro-sites pessoais para cada usuário, acessíveis em `/user/{id}`, com tema próprio e sem a navegação principal do site. ### Funcionalidades - Tema alternativo aplicado automaticamente em todas as rotas `/user/{id}` e `/user/{id}/content` - Página `/user/{id}/content` listando o conteúdo publicado pelo usuário - Configuração de quais tipos de conteúdo cada papel pode publicar no micro-site - Aba "Content" adicionada às páginas de perfil de usuário ### Instalação O sub-módulo está neste repositório mas é ativado independentemente: ```bash drush en site_users_microsite ``` O tema `site_users_microsite_theme` também precisa ser implantado e ativado (ver seção [Deploy do tema](#deploy-do-tema) abaixo). ### Configuração Acesse as configurações em: **Administração > Configuração > Módulos Locais > Site Users > User Microsite** `/admin/config/local-modules/site-users/microsite` Configure quais tipos de conteúdo cada papel pode publicar no micro-site. ### Layout de blocos No tema `site_users_microsite_theme`, configure os blocos em **Estrutura > Layout de blocos**: | Bloco | Região sugerida | |---|---| | Informações do Usuário (ou bloco customizado) | Microsite Header | | Primary tabs | Tabs | | Status messages | Messages | | Main page content | Content | ### Permissões | Permissão | Descrição | |---|---| | `administer site_users_microsite settings` | Configurar tipos de conteúdo por papel | ### Variáveis disponíveis no tema O módulo injeta as seguintes variáveis em `page.html.twig` quando em rotas do micro-site: ```twig {{ microsite_user }} {# entidade UserInterface do dono do micro-site #} {{ microsite_user_name }} {# nome de exibição (string) #} {{ microsite_user_roles }} {# array de roles (exceto 'authenticated') #} {{ microsite_user_photo }} {# render array da foto padrão (view mode 'thumbnail') #} ``` --- ## Deploy do tema O tema `site_users_microsite_theme` está versionado neste repositório em `themes/site_users_microsite_theme/`, mas o Drupal só descobre temas em `themes/custom/`. É necessário implantá-lo manualmente no servidor. ### Opção 1 — Symlink (recomendado em desenvolvimento) ```bash ln -s /caminho/para/site_users/themes/site_users_microsite_theme \ /caminho/para/drupal/themes/custom/site_users_microsite_theme ``` ### Opção 2 — Cópia (recomendado em produção) ```bash cp -r themes/site_users_microsite_theme \ /caminho/para/drupal/themes/custom/site_users_microsite_theme ``` Após implantar, ative o tema: ```bash drush theme:enable site_users_microsite_theme ``` O tema não precisa ser definido como tema padrão do site — o módulo `site_users_microsite` o aplica automaticamente via ThemeNegotiator apenas nas rotas de micro-site. ### Personalização do tema - `base theme` em `site_users_microsite_theme.info.yml` está definido como `stable9` (tema base mínimo do core, sem estilos próprios). Altere para o tema principal do site se quiser herdar fontes e variáveis CSS. - O template `templates/layout/page.html.twig` define o layout completo da página. - O CSS base está em `css/microsite.css`. --- ## Estrutura do Módulo ``` site_users/ ├── config/ │ ├── install/ │ │ └── site_users.settings.yml │ └── optional/ │ └── field.*.yml ├── css/ │ └── site-user-info-block.css ├── src/ │ ├── Form/ │ │ └── SiteUsersSettingsForm.php │ └── Plugin/Block/ │ └── UserInfoBlock.php ├── templates/ │ ├── site-user-info-block.html.twig │ └── user--full.html.twig ├── site_users_microsite/ ← sub-módulo │ ├── config/install/ │ │ └── site_users_microsite.settings.yml │ ├── src/ │ │ ├── Controller/MicrositeContentController.php │ │ ├── Form/MicrositeSettingsForm.php │ │ └── Theme/MicrositeThemeNegotiator.php │ ├── site_users_microsite.info.yml │ ├── site_users_microsite.links.menu.yml │ ├── site_users_microsite.links.task.yml │ ├── site_users_microsite.module │ ├── site_users_microsite.permissions.yml │ ├── site_users_microsite.routing.yml │ └── site_users_microsite.services.yml ├── themes/ │ └── site_users_microsite_theme/ ← tema (deploy em themes/custom/) │ ├── css/microsite.css │ ├── templates/layout/page.html.twig │ ├── site_users_microsite_theme.info.yml │ └── site_users_microsite_theme.libraries.yml ├── site_users.info.yml ├── site_users.install ├── site_users.libraries.yml ├── site_users.links.menu.yml ├── site_users.module ├── site_users.permissions.yml └── site_users.routing.yml ``` ## Licença Este módulo é software livre distribuído sob a licença GPL-2.0-or-later.