67 lines
2.3 KiB
Markdown
67 lines
2.3 KiB
Markdown
---
|
|
id: KB-PLUGIN-004
|
|
title: Chave do hook ADD_JAVASCRIPT deve ser o plugin key exato
|
|
domain: plugin-dev
|
|
tags:
|
|
- glpi
|
|
- glpi11
|
|
- hooks
|
|
- javascript
|
|
- setup.php
|
|
- plugin-key
|
|
status: active
|
|
severity: high
|
|
created_at: 2026-05-02
|
|
updated_at: 2026-05-02
|
|
applies_to:
|
|
- GLPI 11.x
|
|
- qualquer plugin que injete JS via PLUGIN_HOOKS
|
|
related_records:
|
|
- KB-PLUGIN-001
|
|
- KB-PLUGIN-002
|
|
---
|
|
|
|
# Contexto
|
|
Ao registrar arquivos JS em `setup.php` via `$PLUGIN_HOOKS[Hooks::ADD_JAVASCRIPT]`,
|
|
a chave do array deve ser exatamente o plugin key — o mesmo nome do diretório do plugin.
|
|
|
|
# Sintoma observável
|
|
- O arquivo JS do plugin nunca é incluído nas páginas do GLPI.
|
|
- Nenhum erro é exibido — a falha é silenciosa.
|
|
- Funcionalidades que dependem do JS simplesmente não funcionam.
|
|
|
|
# Causa raiz
|
|
`getPluginsJsScriptsFiles()` itera sobre `$PLUGIN_HOOKS['add_javascript']` e chama
|
|
`Plugin::isPluginActive($plugin)` usando a **chave** do array como nome do plugin.
|
|
Se a chave for diferente do plugin key real, `isPluginActive()` retorna `false`
|
|
e o arquivo JS é ignorado sem qualquer aviso.
|
|
|
|
```php
|
|
// ERRADO — chave diferente do plugin key
|
|
$PLUGIN_HOOKS[Hooks::ADD_JAVASCRIPT]['splititil_form'] = ['js/splititil-form.js'];
|
|
|
|
// CORRETO — chave = plugin key exato
|
|
$PLUGIN_HOOKS[Hooks::ADD_JAVASCRIPT]['splititil'] = ['js/splititil-form.js'];
|
|
```
|
|
|
|
# Para formulários públicos (anônimos)
|
|
Usar `ADD_JAVASCRIPT_ANONYMOUS_PAGE` além de `ADD_JAVASCRIPT` para que o JS
|
|
seja carregado em páginas de formulário acessadas sem login:
|
|
|
|
```php
|
|
$PLUGIN_HOOKS[Hooks::ADD_JAVASCRIPT]['splititil'] = ['js/splititil-form.js'];
|
|
$PLUGIN_HOOKS[Hooks::ADD_JAVASCRIPT_ANONYMOUS_PAGE]['splititil'] = ['js/splititil-form.js'];
|
|
```
|
|
|
|
# Validação padrão
|
|
1. Verificar no HTML renderizado se o `<script src="...splititil-form.js">` está presente.
|
|
2. Ou via `grep`: `curl -s http://localhost/glpi/ | grep "splititil-form"`.
|
|
|
|
# Regra para agentes
|
|
Ao registrar hooks de JS/CSS em `setup.php`, a chave do array **sempre** deve ser
|
|
o plugin key exato (= nome do diretório do plugin). Nunca usar sufixos, prefixos ou variações.
|
|
Para formulários públicos, registrar também em `ADD_JAVASCRIPT_ANONYMOUS_PAGE`.
|
|
|
|
# Classificação
|
|
- Tipo: Armadilha de configuração — falha silenciosa.
|
|
- Reutilização: obrigatória em qualquer plugin que injete assets no GLPI 11.
|