From 3257c89ff7a2965335f2970d28a312e652c4046f Mon Sep 17 00:00:00 2001 From: "Quintino A. G. Souza" Date: Tue, 17 Mar 2026 10:53:13 -0300 Subject: [PATCH] =?UTF-8?q?Adiciona=20campo=20field=5Fuser=5Fhomepage=20e?= =?UTF-8?q?=20=C3=ADcone=20de=20p=C3=A1gina=20pessoal=20no=20bloco?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Novo campo link field_user_homepage (página pessoal do usuário) - Update hook 10009 para instalações existentes - MicrositeHeaderBlock: variável #homepage via getFieldUri() - Template: link com ícone 'home' como primeiro item nos links acadêmicos - CSS: fill para ícone de casinha no fundo escuro do header Co-Authored-By: Claude Sonnet 4.6 --- ...ld.field.user.user.field_user_homepage.yml | 22 +++++++ ...field.storage.user.field_user_homepage.yml | 20 ++++++ ...ld.field.user.user.field_user_homepage.yml | 2 + .../site_users_microsite.module | 1 + .../src/Plugin/Block/MicrositeHeaderBlock.php | 11 ++++ .../microsite-header-block.html.twig | 12 +++- site_users.install | 66 +++++++++++++++++++ .../css/microsite.css | 4 ++ 8 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 config/optional/field.field.user.user.field_user_homepage.yml create mode 100644 config/optional/field.storage.user.field_user_homepage.yml create mode 100644 config/translations/pt-br/field.field.user.user.field_user_homepage.yml diff --git a/config/optional/field.field.user.user.field_user_homepage.yml b/config/optional/field.field.user.user.field_user_homepage.yml new file mode 100644 index 0000000..d26772f --- /dev/null +++ b/config/optional/field.field.user.user.field_user_homepage.yml @@ -0,0 +1,22 @@ +langcode: en +status: true +dependencies: + config: + - field.storage.user.field_user_homepage + module: + - link + - user +id: user.user.field_user_homepage +field_name: field_user_homepage +entity_type: user +bundle: user +label: 'Personal homepage' +description: 'URL of the user personal homepage.' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + title: 0 + link_type: 16 +field_type: link diff --git a/config/optional/field.storage.user.field_user_homepage.yml b/config/optional/field.storage.user.field_user_homepage.yml new file mode 100644 index 0000000..3893c7a --- /dev/null +++ b/config/optional/field.storage.user.field_user_homepage.yml @@ -0,0 +1,20 @@ +langcode: en +status: true +dependencies: + module: + - link + - user +id: user.field_user_homepage +field_name: field_user_homepage +entity_type: user +type: link +settings: + title: 0 + link_type: 16 +module: link +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/translations/pt-br/field.field.user.user.field_user_homepage.yml b/config/translations/pt-br/field.field.user.user.field_user_homepage.yml new file mode 100644 index 0000000..a52f0ea --- /dev/null +++ b/config/translations/pt-br/field.field.user.user.field_user_homepage.yml @@ -0,0 +1,2 @@ +label: 'Página pessoal' +description: 'Endereço web da página pessoal do usuário.' diff --git a/modules/site_users_microsite/site_users_microsite.module b/modules/site_users_microsite/site_users_microsite.module index 058b17f..55a54ab 100644 --- a/modules/site_users_microsite/site_users_microsite.module +++ b/modules/site_users_microsite/site_users_microsite.module @@ -20,6 +20,7 @@ function site_users_microsite_theme(): array { 'bio' => NULL, 'phone' => NULL, 'email' => NULL, + 'homepage' => 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 070dcd3..c1afd6e 100644 --- a/modules/site_users_microsite/src/Plugin/Block/MicrositeHeaderBlock.php +++ b/modules/site_users_microsite/src/Plugin/Block/MicrositeHeaderBlock.php @@ -68,6 +68,7 @@ class MicrositeHeaderBlock extends BlockBase implements ContainerFactoryPluginIn '#bio' => $this->getProcessedValue($user, 'field_user_bio'), '#phone' => $this->getFieldValue($user, 'field_user_phone'), '#email' => $user->getEmail(), + '#homepage' => $this->getFieldUri($user, 'field_user_homepage'), '#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'), @@ -125,6 +126,16 @@ class MicrositeHeaderBlock extends BlockBase implements ContainerFactoryPluginIn return $media ? $media->label() : ''; } + /** + * Retorna a URI de um campo link do usuário. + */ + protected function getFieldUri(UserInterface $user, string $field_name): ?string { + if ($user->hasField($field_name) && !$user->get($field_name)->isEmpty()) { + return $user->get($field_name)->uri; + } + return NULL; + } + /** * Retorna o valor de texto de um campo do usuário. */ 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 6f2c463..cc7e595 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,7 @@ * - bio: Biografia (string|null). * - phone: Telefone (string|null). * - email: E-mail (string|null). + * - homepage: URL da página pessoal (string|null). * - lattes_id: ID do Currículo Lattes (string|null). * - orcid_id: ORCID iD (string|null). * - mathscinet_id: MathSciNet Author ID (string|null). @@ -57,9 +58,18 @@ {% endif %} - {% if lattes_id or orcid_id or mathscinet_id %} + {% if homepage or lattes_id or orcid_id or mathscinet_id %}