mirror of
https://gitlab.unicamp.br/infimecc_drupal11_modules/site_users.git
synced 2026-05-03 21:10:41 -03:00
Adiciona campo field_user_homepage e ícone de página pessoal no bloco
- 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 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
20
config/optional/field.storage.user.field_user_homepage.yml
Normal file
20
config/optional/field.storage.user.field_user_homepage.yml
Normal file
@@ -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
|
||||
@@ -0,0 +1,2 @@
|
||||
label: 'Página pessoal'
|
||||
description: 'Endereço web da página pessoal do usuário.'
|
||||
@@ -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,
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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 @@
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
||||
{% if lattes_id or orcid_id or mathscinet_id %}
|
||||
{% if homepage or lattes_id or orcid_id or mathscinet_id %}
|
||||
<div class="msite-header-block__academic-links">
|
||||
|
||||
{% if homepage %}
|
||||
<a href="{{ homepage }}"
|
||||
class="msite-header-block__academic-link msite-header-block__academic-link--homepage"
|
||||
target="_blank" rel="noopener noreferrer"
|
||||
aria-label="{{ 'Página pessoal'|t }}">
|
||||
{{ site_tools_academic_icon('home') }}
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% if lattes_id %}
|
||||
<a href="https://lattes.cnpq.br/{{ lattes_id }}"
|
||||
class="msite-header-block__academic-link msite-header-block__academic-link--lattes"
|
||||
|
||||
@@ -548,6 +548,72 @@ function site_users_update_10008() {
|
||||
return t('MathSciNet ID field created successfully.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria o campo field_user_homepage para página pessoal do usuário.
|
||||
*/
|
||||
function site_users_update_10009() {
|
||||
if (!FieldStorageConfig::loadByName('user', 'field_user_homepage')) {
|
||||
FieldStorageConfig::create([
|
||||
'field_name' => 'field_user_homepage',
|
||||
'entity_type' => 'user',
|
||||
'type' => 'link',
|
||||
'settings' => [
|
||||
'title' => 0,
|
||||
'link_type' => 16,
|
||||
],
|
||||
'cardinality' => 1,
|
||||
'translatable' => TRUE,
|
||||
])->save();
|
||||
}
|
||||
|
||||
if (!FieldConfig::loadByName('user', 'user', 'field_user_homepage')) {
|
||||
FieldConfig::create([
|
||||
'field_name' => 'field_user_homepage',
|
||||
'entity_type' => 'user',
|
||||
'bundle' => 'user',
|
||||
'label' => 'Personal homepage',
|
||||
'description' => 'URL of the user personal homepage.',
|
||||
'required' => FALSE,
|
||||
'settings' => [
|
||||
'title' => 0,
|
||||
'link_type' => 16,
|
||||
],
|
||||
])->save();
|
||||
}
|
||||
|
||||
$form_display = EntityFormDisplay::load('user.user.default');
|
||||
if ($form_display && !$form_display->getComponent('field_user_homepage')) {
|
||||
$form_display->setComponent('field_user_homepage', [
|
||||
'type' => 'link_default',
|
||||
'weight' => 12,
|
||||
'settings' => [
|
||||
'placeholder_url' => 'https://',
|
||||
'placeholder_title' => '',
|
||||
],
|
||||
'region' => 'content',
|
||||
])->save();
|
||||
}
|
||||
|
||||
$view_display = EntityViewDisplay::load('user.user.default');
|
||||
if ($view_display && !$view_display->getComponent('field_user_homepage')) {
|
||||
$view_display->setComponent('field_user_homepage', [
|
||||
'type' => 'link',
|
||||
'weight' => 12,
|
||||
'label' => 'above',
|
||||
'settings' => [
|
||||
'trim_length' => 80,
|
||||
'url_only' => FALSE,
|
||||
'url_plain' => FALSE,
|
||||
'rel' => 'noopener noreferrer',
|
||||
'target' => '_blank',
|
||||
],
|
||||
'region' => 'content',
|
||||
])->save();
|
||||
}
|
||||
|
||||
return t('Campo field_user_homepage criado com sucesso.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Corrige mapeamentos LDAP com campos de string nulos na config ativa.
|
||||
*/
|
||||
|
||||
@@ -268,6 +268,10 @@ body.microsite {
|
||||
transition: opacity 0.15s, transform 0.15s;
|
||||
}
|
||||
|
||||
.msite-header-block__academic-link--homepage svg {
|
||||
fill: rgba(255, 255, 255, 0.85);
|
||||
}
|
||||
|
||||
.msite-header-block__academic-link:hover svg {
|
||||
opacity: 0.85;
|
||||
transform: scale(1.1);
|
||||
|
||||
Reference in New Issue
Block a user