Adiciona extensão Twig com ícones SVG de plataformas acadêmicas

Cria AcademicIconsExtension com a função site_tools_academic_icon(name),
que retorna o SVG inline dos ícones Lattes (CNPq #005195), ORCID e
MathSciNet como Markup seguro, dispensando |raw nos templates.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-17 08:52:02 -03:00
parent 27134fce19
commit fc1f4537e1
3 changed files with 126 additions and 0 deletions

View File

@@ -7,6 +7,7 @@ Módulo Drupal com ferramentas utilitárias reutilizáveis para outros módulos
- **Menu de configuração "Local Modules"**: Fornece uma seção centralizada em `/admin/config/local-modules` para configurações de módulos desenvolvidos internamente.
- **Bloco Share Links**: Bloco de compartilhamento em redes sociais extensível via hooks.
- **Condição de visibilidade "Usuário da página é o usuário logado"**: Restringe a exibição de qualquer bloco à situação em que o usuário autenticado é o mesmo da rota `/user/{id}`.
- **Extensão Twig `site_tools_academic_icon`**: Função Twig para renderizar ícones SVG de plataformas acadêmicas (Lattes, ORCID, MathSciNet).
## Sub-módulos
@@ -117,6 +118,36 @@ O plugin `PageUserIsCurrentUser` adiciona uma condição de visibilidade reutili
Quando ativada, o bloco só é exibido se o usuário autenticado tiver o mesmo ID que o parâmetro `{id}` da rota `/user/{id}`. A opção **"Negar a condição"** inverte o comportamento (exibe para todos exceto o dono).
## Extensão Twig: ícones de plataformas acadêmicas
A função `site_tools_academic_icon(name)` retorna o SVG inline do ícone solicitado como marcação segura (sem necessidade de `|raw`).
### Ícones disponíveis
| Nome | Plataforma | Cor |
|------|------------|-----|
| `lattes` | Plataforma Lattes (CNPq) | `#005195` |
| `orcid` | ORCID | `#a6ce39` |
| `mathscinet` | MathSciNet (AMS) | `#0f4f96` |
### Uso em templates Twig
```twig
{{ site_tools_academic_icon('lattes') }}
{{ site_tools_academic_icon('orcid') }}
{{ site_tools_academic_icon('mathscinet') }}
```
O SVG já inclui `aria-hidden="true"` e `focusable="false"`. Para acessibilidade, envolva o ícone em um `<a>` com `aria-label`:
```twig
<a href="https://lattes.cnpq.br/{{ lattes_id }}"
target="_blank" rel="noopener noreferrer"
aria-label="{{ 'Currículo Lattes'|t }}">
{{ site_tools_academic_icon('lattes') }}
</a>
```
## Sub-módulo: site_tools_msc_2020
Widget de campo (`FieldWidget`) para seleção hierárquica de termos do vocabulário **MSC 2020** (Mathematics Subject Classification), com até 3 níveis em cascata via AJAX.