Files
site_users/README.md
Quintino A. G. Souza d169052065 Adiciona sub-módulo site_users_microsite e tema site_users_microsite_theme
Sub-módulo com ThemeNegotiator, controller de listagem de conteúdo por usuário,
formulário de configuração de tipos de conteúdo por papel e serviços registrados.

Tema com regiões header, highlighted, tabs, messages, content, sidebar, social
e footer; template page.html.twig com header padrão gerado a partir dos dados
do usuário (foto, nome, roles) quando a região header estiver vazia.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 07:35:45 -03:00

265 lines
8.2 KiB
Markdown

# 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.