mirror of
https://gitlab.unicamp.br/infimecc_drupal11_modules/site_users.git
synced 2026-05-03 17:00:40 -03:00
Estende tema do microsite para todas as rotas /user/{id}/...
O negociador de tema passa a verificar o alias do caminho atual em vez
de checar nomes de rota específicos, cobrindo páginas de qualquer módulo
acessadas via alias /user/{id}/.... Adiciona site_users_get_microsite_user()
como helper reutilizável para obter o usuário do microsite a partir da rota
ou do alias, e atualiza MicrositeHeaderBlock e site_tools_share_links para
usá-lo.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -530,11 +530,35 @@ function site_users_user_format_name_alter(&$name, $account) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retorna o usuário dono do microsite para a requisição atual.
|
||||
*
|
||||
* Tenta o parâmetro 'user' da rota (rotas próprias do microsite) e, se não
|
||||
* encontrar, extrai o ID do alias do caminho atual (ex: /user/229/projetos).
|
||||
*/
|
||||
function site_users_get_microsite_user(): ?UserInterface {
|
||||
$user = \Drupal::routeMatch()->getParameter('user');
|
||||
if ($user instanceof UserInterface) {
|
||||
return $user;
|
||||
}
|
||||
if (is_numeric($user)) {
|
||||
return \Drupal::entityTypeManager()->getStorage('user')->load($user);
|
||||
}
|
||||
|
||||
$alias = \Drupal::service('path_alias.manager')
|
||||
->getAliasByPath(\Drupal::service('path.current')->getPath());
|
||||
if (preg_match('#^/user/(\d+)(/|$)#', $alias, $matches)) {
|
||||
return \Drupal::entityTypeManager()->getStorage('user')->load($matches[1]);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_site_tools_share_links().
|
||||
*/
|
||||
function site_users_site_tools_share_links(): array {
|
||||
$user = \Drupal::routeMatch()->getParameter('user');
|
||||
$user = site_users_get_microsite_user();
|
||||
|
||||
if (!($user instanceof UserInterface)) {
|
||||
return [];
|
||||
|
||||
Reference in New Issue
Block a user