mirror of
https://gitlab.unicamp.br/infimecc_drupal11_modules/site_users.git
synced 2026-05-04 00:10:41 -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:
@@ -81,6 +81,10 @@ class MicrositeHeaderBlock extends BlockBase implements ContainerFactoryPluginIn
|
||||
|
||||
/**
|
||||
* Retorna o usuário da rota atual.
|
||||
*
|
||||
* Primeiro tenta o parâmetro 'user' da rota (rotas próprias do microsite).
|
||||
* Caso não exista (ex: rota entity.node.canonical acessada via alias
|
||||
* /user/{id}/...), extrai o ID do alias do caminho atual.
|
||||
*/
|
||||
protected function getUser(): ?UserInterface {
|
||||
$user = $this->routeMatch->getParameter('user');
|
||||
@@ -90,6 +94,11 @@ class MicrositeHeaderBlock extends BlockBase implements ContainerFactoryPluginIn
|
||||
if (is_numeric($user)) {
|
||||
return $this->entityTypeManager->getStorage('user')->load($user);
|
||||
}
|
||||
|
||||
if (function_exists('site_users_get_microsite_user')) {
|
||||
return site_users_get_microsite_user();
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,9 +16,14 @@ class MicrositeThemeNegotiator implements ThemeNegotiatorInterface {
|
||||
public function applies(RouteMatchInterface $route_match): bool {
|
||||
$route_name = $route_match->getRouteName();
|
||||
$excluded = ['site_users_microsite.settings'];
|
||||
return ($route_name === 'entity.user.canonical'
|
||||
|| str_starts_with($route_name, 'site_users_microsite.'))
|
||||
&& !in_array($route_name, $excluded);
|
||||
|
||||
if (in_array($route_name, $excluded)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
$current_path = \Drupal::service('path.current')->getPath();
|
||||
$alias = \Drupal::service('path_alias.manager')->getAliasByPath($current_path);
|
||||
return (bool) preg_match('#^/user/\d+(/|$)#', $alias);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user