mirror of
https://gitlab.unicamp.br/infimecc_drupal11_modules/site_users.git
synced 2026-05-03 13:50:40 -03:00
feat: Adiciona field type social_link para redes sociais do usuário
Implementa o field type 'social_link' com seletor de rede e URL de
perfil, composto por:
- SocialLinkItem: field type com colunas 'network' (varchar 64) e
'url' (varchar 2048), cardinalidade ilimitada
- SocialLinkWidget: widget com select de rede e input de URL
- SocialLinkFormatter: formatter que renderiza links com classe CSS
por rede (social-link--{network}), target _blank e rel noopener
- config/optional: field.storage e field.field para user
- config/translations/pt-br: tradução do label e description
- hook_install e update_10002: configura form/view displays
- UserInfoBlock: expõe social_links via getSocialLinks()
- Template: adiciona seção de redes sociais e remove referências
obsoletas a category e dept_code
- translations/site_users.pt-br.po: strings do novo field type
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -67,6 +67,16 @@ function site_users_install() {
|
||||
]);
|
||||
}
|
||||
|
||||
// Campo Redes Sociais.
|
||||
if (!$form_display->getComponent('field_user_social_links')) {
|
||||
$form_display->setComponent('field_user_social_links', [
|
||||
'type' => 'social_link_widget',
|
||||
'weight' => 16,
|
||||
'settings' => [],
|
||||
'region' => 'content',
|
||||
]);
|
||||
}
|
||||
|
||||
// Campo Foto Padrão - oculto no form (será gerenciado via hook_form_alter).
|
||||
$form_display->removeComponent('field_user_default_photo');
|
||||
|
||||
@@ -127,6 +137,17 @@ function site_users_install() {
|
||||
]);
|
||||
}
|
||||
|
||||
// Campo Redes Sociais.
|
||||
if (!$view_display->getComponent('field_user_social_links')) {
|
||||
$view_display->setComponent('field_user_social_links', [
|
||||
'type' => 'social_link_formatter',
|
||||
'weight' => 16,
|
||||
'label' => 'above',
|
||||
'settings' => [],
|
||||
'region' => 'content',
|
||||
]);
|
||||
}
|
||||
|
||||
// Campo Foto Padrão.
|
||||
if (!$view_display->getComponent('field_user_default_photo')) {
|
||||
$view_display->setComponent('field_user_default_photo', [
|
||||
@@ -212,3 +233,57 @@ function site_users_update_10001() {
|
||||
|
||||
return t('Default photo field created successfully.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the field_user_social_links field for social network profile links.
|
||||
*/
|
||||
function site_users_update_10002() {
|
||||
// Create field storage if it does not exist.
|
||||
if (!FieldStorageConfig::loadByName('user', 'field_user_social_links')) {
|
||||
FieldStorageConfig::create([
|
||||
'field_name' => 'field_user_social_links',
|
||||
'entity_type' => 'user',
|
||||
'type' => 'social_link',
|
||||
'module' => 'site_users',
|
||||
'cardinality' => -1,
|
||||
'translatable' => FALSE,
|
||||
])->save();
|
||||
}
|
||||
|
||||
// Create field instance if it does not exist.
|
||||
if (!FieldConfig::loadByName('user', 'user', 'field_user_social_links')) {
|
||||
FieldConfig::create([
|
||||
'field_name' => 'field_user_social_links',
|
||||
'entity_type' => 'user',
|
||||
'bundle' => 'user',
|
||||
'label' => 'Social Links',
|
||||
'description' => 'Social network profile links.',
|
||||
'required' => FALSE,
|
||||
])->save();
|
||||
}
|
||||
|
||||
// Add to form display.
|
||||
$form_display = EntityFormDisplay::load('user.user.default');
|
||||
if ($form_display && !$form_display->getComponent('field_user_social_links')) {
|
||||
$form_display->setComponent('field_user_social_links', [
|
||||
'type' => 'social_link_widget',
|
||||
'weight' => 16,
|
||||
'settings' => [],
|
||||
'region' => 'content',
|
||||
])->save();
|
||||
}
|
||||
|
||||
// Add to view display.
|
||||
$view_display = EntityViewDisplay::load('user.user.default');
|
||||
if ($view_display && !$view_display->getComponent('field_user_social_links')) {
|
||||
$view_display->setComponent('field_user_social_links', [
|
||||
'type' => 'social_link_formatter',
|
||||
'weight' => 16,
|
||||
'label' => 'above',
|
||||
'settings' => [],
|
||||
'region' => 'content',
|
||||
])->save();
|
||||
}
|
||||
|
||||
return t('Social links field created successfully.');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user