From 9ec7f951bfcbf104373e6ff365235cc2770b5117 Mon Sep 17 00:00:00 2001 From: "Quintino A. G. Souza" Date: Tue, 17 Mar 2026 08:52:28 -0300 Subject: [PATCH] =?UTF-8?q?Adiciona=20links=20acad=C3=AAmicos=20ao=20Micro?= =?UTF-8?q?siteHeaderBlock=20e=20formatadores=20de=20campo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Formatadores FieldFormatter para Lattes, ORCID e MathSciNet: geram link para o perfil na plataforma a partir do ID armazenado no campo - MicrositeHeaderBlock: inclui lattes_id, orcid_id e mathscinet_id - Template: exibe ícones SVG via site_tools_academic_icon() (extensão Twig do módulo site_tools) com links acessíveis para cada plataforma - CSS: estilos para .msite-header-block__academic-links com animação de hover nos ícones Co-Authored-By: Claude Sonnet 4.6 --- .../site_users_microsite.module | 9 ++-- .../src/Plugin/Block/MicrositeHeaderBlock.php | 3 ++ .../microsite-header-block.html.twig | 36 ++++++++++++++ .../FieldFormatter/LattesLinkFormatter.php | 48 +++++++++++++++++++ .../MathSciNetLinkFormatter.php | 48 +++++++++++++++++++ .../FieldFormatter/OrcidLinkFormatter.php | 48 +++++++++++++++++++ .../css/microsite.css | 20 ++++++++ 7 files changed, 209 insertions(+), 3 deletions(-) create mode 100644 src/Plugin/Field/FieldFormatter/LattesLinkFormatter.php create mode 100644 src/Plugin/Field/FieldFormatter/MathSciNetLinkFormatter.php create mode 100644 src/Plugin/Field/FieldFormatter/OrcidLinkFormatter.php diff --git a/modules/site_users_microsite/site_users_microsite.module b/modules/site_users_microsite/site_users_microsite.module index 3da6950..058b17f 100644 --- a/modules/site_users_microsite/site_users_microsite.module +++ b/modules/site_users_microsite/site_users_microsite.module @@ -17,9 +17,12 @@ function site_users_microsite_theme(): array { 'photo_url' => NULL, 'photo_alt' => '', 'name' => NULL, - 'bio' => NULL, - 'phone' => NULL, - 'email' => NULL, + 'bio' => NULL, + 'phone' => NULL, + 'email' => NULL, + 'lattes_id' => NULL, + 'orcid_id' => NULL, + 'mathscinet_id' => NULL, ], ], ]; diff --git a/modules/site_users_microsite/src/Plugin/Block/MicrositeHeaderBlock.php b/modules/site_users_microsite/src/Plugin/Block/MicrositeHeaderBlock.php index 946f94e..070dcd3 100644 --- a/modules/site_users_microsite/src/Plugin/Block/MicrositeHeaderBlock.php +++ b/modules/site_users_microsite/src/Plugin/Block/MicrositeHeaderBlock.php @@ -68,6 +68,9 @@ class MicrositeHeaderBlock extends BlockBase implements ContainerFactoryPluginIn '#bio' => $this->getProcessedValue($user, 'field_user_bio'), '#phone' => $this->getFieldValue($user, 'field_user_phone'), '#email' => $user->getEmail(), + '#lattes_id' => $this->getFieldValue($user, 'field_user_id_lattes'), + '#orcid_id' => $this->getFieldValue($user, 'field_user_orcid'), + '#mathscinet_id' => $this->getFieldValue($user, 'field_user_mathscinetid'), '#cache' => [ 'tags' => $user->getCacheTags(), 'contexts' => ['route'], diff --git a/modules/site_users_microsite/templates/microsite-header-block.html.twig b/modules/site_users_microsite/templates/microsite-header-block.html.twig index 4a1a8d8..6f2c463 100644 --- a/modules/site_users_microsite/templates/microsite-header-block.html.twig +++ b/modules/site_users_microsite/templates/microsite-header-block.html.twig @@ -11,6 +11,9 @@ * - bio: Biografia (string|null). * - phone: Telefone (string|null). * - email: E-mail (string|null). + * - lattes_id: ID do Currículo Lattes (string|null). + * - orcid_id: ORCID iD (string|null). + * - mathscinet_id: MathSciNet Author ID (string|null). */ #}
@@ -54,6 +57,39 @@ {% endif %} + {% if lattes_id or orcid_id or mathscinet_id %} + + {% endif %} +
diff --git a/src/Plugin/Field/FieldFormatter/LattesLinkFormatter.php b/src/Plugin/Field/FieldFormatter/LattesLinkFormatter.php new file mode 100644 index 0000000..262f9aa --- /dev/null +++ b/src/Plugin/Field/FieldFormatter/LattesLinkFormatter.php @@ -0,0 +1,48 @@ +getName() === 'field_user_id_lattes'; + } + + public function viewElements(FieldItemListInterface $items, $langcode): array { + $elements = []; + foreach ($items as $delta => $item) { + $id = (string) $item->value; + $elements[$delta] = [ + '#type' => 'link', + '#title' => $id, + '#url' => Url::fromUri('https://lattes.cnpq.br/' . $id), + '#attributes' => ['target' => '_blank', 'rel' => 'noopener noreferrer'], + ]; + } + return $elements; + } + +} diff --git a/src/Plugin/Field/FieldFormatter/MathSciNetLinkFormatter.php b/src/Plugin/Field/FieldFormatter/MathSciNetLinkFormatter.php new file mode 100644 index 0000000..116d214 --- /dev/null +++ b/src/Plugin/Field/FieldFormatter/MathSciNetLinkFormatter.php @@ -0,0 +1,48 @@ +getName() === 'field_user_mathscinetid'; + } + + public function viewElements(FieldItemListInterface $items, $langcode): array { + $elements = []; + foreach ($items as $delta => $item) { + $id = (string) $item->value; + $elements[$delta] = [ + '#type' => 'link', + '#title' => $id, + '#url' => Url::fromUri('https://mathscinet.ams.org/mathscinet/author?AuthorID=' . $id), + '#attributes' => ['target' => '_blank', 'rel' => 'noopener noreferrer'], + ]; + } + return $elements; + } + +} diff --git a/src/Plugin/Field/FieldFormatter/OrcidLinkFormatter.php b/src/Plugin/Field/FieldFormatter/OrcidLinkFormatter.php new file mode 100644 index 0000000..161b674 --- /dev/null +++ b/src/Plugin/Field/FieldFormatter/OrcidLinkFormatter.php @@ -0,0 +1,48 @@ +getName() === 'field_user_orcid'; + } + + public function viewElements(FieldItemListInterface $items, $langcode): array { + $elements = []; + foreach ($items as $delta => $item) { + $id = $item->value; + $elements[$delta] = [ + '#type' => 'link', + '#title' => $id, + '#url' => Url::fromUri('https://orcid.org/' . $id), + '#attributes' => ['target' => '_blank', 'rel' => 'noopener noreferrer'], + ]; + } + return $elements; + } + +} diff --git a/themes/site_users_microsite_theme/css/microsite.css b/themes/site_users_microsite_theme/css/microsite.css index 6fd2863..1117273 100644 --- a/themes/site_users_microsite_theme/css/microsite.css +++ b/themes/site_users_microsite_theme/css/microsite.css @@ -253,6 +253,26 @@ body.microsite { text-decoration: underline; } +/* --- Links acadêmicos (Lattes, ORCID, MathSciNet) ------------------------- */ + +.msite-header-block__academic-links { + display: flex; + gap: 0.6rem; + margin-top: 0.75rem; +} + +.msite-header-block__academic-link svg { + display: block; + width: 32px; + height: 32px; + transition: opacity 0.15s, transform 0.15s; +} + +.msite-header-block__academic-link:hover svg { + opacity: 0.85; + transform: scale(1.1); +} + /* Top Bar ------------------------------------------------------------------ */ /* * Barra estreita no topo da página, antes do header.