mirror of
https://gitlab.unicamp.br/infimecc_drupal11_modules/site_users.git
synced 2026-05-03 10:50:41 -03:00
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>
265 lines
8.2 KiB
Markdown
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.
|