fix: dziala aktualizacja systemu i Wyczysc cache na /admin/update/main_view/ (v0.353)

Zdalny changelog z shoppro.project-dc.pl/updates/changelog.php zwracal
niezbalansowany HTML (niezamkniety <script>/<style>/<textarea>/<!--),
ktory "polykal" reszte dokumentu - inline-script z handlerami
#confirm/#confirmUpdateAll i footer-script z main-layout.php
(#clear-cache-btn) nigdy nie parsowaly sie jako JS. Klienci nie mogli
aktualizowac shopPRO.

Fix w admin/templates/update/main-view.php:
1. Blok <script> z handlerami przeniesiony PRZED sekcje Changelog -
   handlery podpinaja sie niezaleznie od zdalnego HTML.
2. Sanityzacja zdalnego changeloga: preg_replace usuwa komentarze HTML,
   strip_tags z whitelista (<p><br><b><strong><i><em><u><ul><ol><li>
   <h1>-<h6><span><div><a><pre><code><hr>) wycina tagi strukturalne i
   wykonywalne (<script>, <style>, <iframe>, <textarea>).

Skutek uboczny: footer-script z main-layout.php (Wyczysc cache + globalne
wyszukiwanie + sprawdzanie aktualizacji) dziala teraz na podstronie update.

Po wgraniu na instancje: hard-reload (Ctrl+F5) + restart PHP-FPM /
wyczyszczenie OPcache.

Suita PHPUnit: 846 testow / 2348 assertions OK.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-13 23:10:08 +02:00
parent 8a89305f29
commit 073069c303
8 changed files with 409 additions and 19 deletions

View File

@@ -2,6 +2,17 @@
> Chronologiczny log zmian technicznych — co i dlaczego.
## v0.353 (2026-05-13)
- Naprawiono niedzialajace przyciski aktualizacji systemu (`#confirm`, `#confirmUpdateAll`) i globalny "Wyczysc cache" (`#clear-cache-btn`) na `/admin/update/main_view/`. Klienci nie mogli aktualizowac shopPRO na instancjach.
- Root cause: `admin/templates/update/main-view.php` pobieral zdalny changelog przez `file_get_contents` z `shoppro.project-dc.pl/updates/changelog.php`. Odpowiedz zawierala niezbalansowany HTML (niezamkniety `<script>`, `<!--`, `<style>` lub `<textarea>`), ktory "polykal" reszte dokumentu — inline-script z handlerami przyciskow i footer-script z `main-layout.php` (Wyczysc cache) nigdy sie nie parsowal jako JS. Brak bledu w konsoli — to nie byl blad JS, to byl HTML, ktory nigdy nie zostal wykonany jako skrypt.
- Fix 1: blok `<script>` z handlerami przeniesiony PRZED sekcje Changelog (wczesniej kolejnosc: wersje -> log -> changelog -> script; teraz: wersje -> log -> script -> changelog). Handlery podpinaja sie niezaleznie od tego, co zwroci zdalny serwer.
- Fix 2: sanityzacja zdalnego changeloga przed wyrenderowaniem: `preg_replace('/<!--.*?-->/s', '', $html)` + `strip_tags($html, '<p><br><b><strong><i><em><u><ul><ol><li><h1>-<h6><span><div><a><pre><code><hr>')`. Tagi strukturalne i "polykajace" (`<script>`, `<style>`, `<textarea>`, `<iframe>`, `<body>`, `</html>`) sa usuwane.
- Skutek uboczny: footer-script z `main-layout.php` (przycisk Wyczysc cache + globalne wyszukiwanie produktow/zamowien + sprawdzanie aktualizacji w menu) dziala teraz na podstronie update.
- Zysk bezpieczenstwa: zdalny serwis nie moze juz wstrzyknac JS w panel admina.
- Wymagane akcje na produkcji po wgraniu update package: hard-reload przegladarki (Ctrl+F5) + restart PHP-FPM / wyczyszczenie OPcache (inaczej stary skompilowany szablon dalej bedzie serwowany).
- Suita PHPUnit bez zmian: 846 testow / 2348 assertions.
## v0.352 (2026-05-13)
- Naprawiono mojibake w labelkach formularza edycji kategorii w panelu admina (`/admin/shop_category/category_edit/id=X`). Plik `admin/templates/shop-category/category-edit.php` byl kiedys zapisany z UTF-8 zinterpretowanym jako Windows-1252 i ponownie zakodowanym do UTF-8 (classic double-encoding). 9 wystapien naprawione: `TreĹć`→Treść, `JÄ™zyk domyĹlny`→Język domyślny (x2), `rozwiniÄ™cie`→rozwinięcie, `Sortowanie produktĂłw`→Sortowanie produktów, `WyĹwietlić podkategorie`→Wyświetlić podkategorie, `TytuĹ kategorii (h1)`→Tytuł kategorii (h1), `Blokuj indeksacjÄ™`→Blokuj indeksację.