Commit graph

5 commits

Author SHA1 Message Date
Claude
020558f14f Novo recurso: controle da logo do login (custom/original/ocultar) + caixa de CSS grande
- Dropdown 'Logo' na seção Login Page: custom (imagem enviada ou logo do
  tema — comportamento legado, default), original (força logo GLPI) e
  hide (oculta via CSS injetado no display_login).
- Campos de CSS custom agora são textarea de 14 linhas sempre visível
  (monospace, 100%); o Monaco só assume se window.GLPI.Monaco existir
  (melhoria progressiva — antes o fallback dependia de JS e o campo
  podia ficar escondido/curto).
- Traduções pt_BR novas + pt_BR.mo recompilado (msgfmt indisponível;
  compilado com script Python puro).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 18:25:28 -03:00
Claude
39f3f3f2a2 Modernização GLPI 11: namespace GlpiPlugin\Butterfly, Monaco, assets em public/
- Classes migradas de inc/*.class.php (PluginButterfly*) para src/ com
  namespace GlpiPlugin\Butterfly (PSR-4 registrado pelo core; KB-033).
  Referências de core qualificadas (\Config, \Html, \Session, ...).
- Editor de CSS custom agora usa o Monaco do core (GLPI.Monaco.createEditor
  + sync via formdata, mesmo padrão de custom_ui do core) com fallback
  para textarea se a lib não carregar.
- pics/ movido para public/pics: no GLPI 11 só recursos em public/ são
  servidos estaticamente em /plugins/<key>/... (RequestRouterTrait).
  URLs do select2 de temas agora usam root_doc + encodeURIComponent.
- MIN_GLPI_VERSION 11.0.0; removido bloco morto de GLPI <9.5 e
  css/login.base.css órfão.
- config_page com glpi_tab urlencoded para a classe namespaced.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 18:04:13 -03:00
Claude
0248febe8b Higiene e segurança: sanitização de theme, permissões, BMP e temas duplicados
- $_GET['theme'] sanitizado no display_login com a mesma regex do
  picture.send.php; getThemeInfo() ganhou defesa em profundidade
  (rejeita qualquer valor que não seja nome simples de diretório).
- mkdir 0755 (era 0777) no storage de imagens.
- IMAGETYPE_BMP usava imagecreatefromwbmp (WBMP != BMP); agora
  imagecreatefrombmp.
- public/themes/ removido: era cópia divergente e corrompida (CSS
  mutilado por find/replace) da fonte real themes/ — o código só lê
  themes/ da raiz e serve via picture.send.php.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 17:55:00 -03:00
Claude
18879bff6d Conformidade KB: sem inc/includes.php, logo.png, limpeza e JSON_HEX_TAG
- front/*.php não incluem mais ../../../inc/includes.php: no GLPI 11 o
  LegacyFileLoadController boota o core antes do script, e o include
  quebra quando o plugin roda do marketplace dir (KB-PLUGIN-028/010).
- logo.png (512x512) criado a partir de plugin.png: o LogoController só
  reconhece o nome fixo logo.png (KB-INFRA-002).
- Removidos front/test_simple.php e front/login.css.php (deprecated),
  incluindo a firewall strategy correspondente no setup.php (KB-018).
- json_encode com JSON_HEX_TAG|JSON_HEX_AMP em todo dado dinâmico
  embutido em <script> (KB-PLUGIN-003).
- .gitignore padrão KB-018; .DS_Store removidos.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 16:25:56 -03:00
Claude
26127bf736 Baseline: plugin butterfly v2.1.0 como recebido (pré-fixes GLPI 11)
Estado original vindo do servidor de origem via tar.gz, antes da
rodada de conformidade com a knowledge-base e fixes de GLPI 11.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 15:34:10 -03:00