Adminer 4.6.1
Školení, která pořádám
Vydal jsem novou verzi Admineru.
Asi nejviditelnější změna je zakotvení akcí pod výpisem na spodku stránky. Řeší to dva problémy: po zaškrtnutí řádku bylo potřeba dojet až dolů pod tabulku, abych s ním mohl provést požadovanou operaci. A stránkování (které jsem nyní přesunul zpět k akcím) plavalo vespod stránky i u krátkých tabulek (nebo na velkých monitorech). Využívám poměrně novou CSS vlastnost position: sticky
. Chtěl jsem ji rovnou použít i pro záhlaví tabulky. V Chrome to funguje skvěle, ale ve Firefoxu z buněk tabulky zmizí okraje (a záhlaví na stránce stejně nezůstane), proto jsem to zatím neudělal. Pokud si všimnete rozbití nějakého vzhledu, tak prosím pošlete pull request.
Zapnutí CSP znemožnilo použití inline event handlerů, místo kterých jsem do kódu vložil značky <script>
odkazující se často na poslední vypsaný element pomocí querySelectorAll. To může být pomalé, obzvlášť pokud je elementů hodně a funkce se volá třeba pro každý řádek tabulky. Odstranil jsem proto volání této funkce z výpisu databází, tabulek a řádek, což vykreslení stránek značně urychlilo. Místo toho se handler instaluje jen jeden a jeho cíl se určuje pomocí event.target
, což je dnes běžnější postup. V Admineru ho nepoužívám proto, že často dopředu nevím, co na stránce bude a taky to narušuje lokální psaní kódu, jehož jsem příznivce.
Další změny
- Pokud vyprší session během vyplňování formuláře, tak Adminer data opětovně odešle poté, co se uživatel znovu přihlásí. To dělá odjakživa, teď přibyla informace o tom, že to udělá, aby uživatel věděl, že o vyplněný formulář nepřijde, nebo si to naopak mohl rozmyslet.
- U systémových tabulek (např. těch v
information_schema
) se nyní zobrazuje odkaz na jejich dokumentaci.
- V MySQL se nedalo hledat ve sloupcích s kódováním nekompatibilním s UTF-8. Fungovalo to pouze při hledání ve všech sloupcích, nyní to funguje i při hledání v samotném sloupci.
- Adminer 4.5.0 opravil podporu geometrie v MySQL 8, bohužel jen u výpisu dat. Nyní se data správně převedou i po editaci.
- MariaDB nyní odkazuje do své dokumentace, ne do dokumentace MySQL. U odkazů přidaných zvýrazňováním syntaxe to možná není stoprocentní (
dev\.mysql\.com/doc/mysql/en/(.+)\.html
se prostě nahradí za mariadb.com/kb/en/library/$1/
).
- V SQLite se nedal smazat primární klíč, pokud na něm byl příznak auto increment.
- V PostgreSQL jsem přidal podporu pro práci s binárními soubory u sloupců typu
bytea
. Funguje download i upload.
- V PostgreSQL nově podporuji hledání v netextových sloupcích, které se nyní nejprve převedou na text. Týká se to hledání v tabulce bez omezení sloupce a hledání ve všech tabulkách v databázi.
- Při hledání textu ve všech sloupcích se přeskakují číselné sloupce. Pokud nakonec nezbudou žádné sloupce, ve kterých by se dalo hledat, tak Adminer vykoná dotaz
WHERE 0
, který v PostgreSQL nefungoval, proto jsem ho změnil na WHERE 1 = 0
.
- S typem
interval
se v PostgreSQL pracovalo jako s číslem, protože obsahuje podřetězec int
. Podobnou chyba jsem mimochodem opravil i v Admineru 3.7.0 s typem point
.
- Do PostgreSQL jsem přidal podporu exportu TRUNCATE+INSERT.
- K MySQL se dá nyní připojit pomocí SSL. Stačí použít plugin login-ssl.
- Název serveru zobrazovaný v drobečkové navigaci a v seznamu trvalých přihlášení lze nyní ovlivnit pomocí metody
serverName
, což nově dělá plugin login-servers.
Diskuse
Jirka Hrazdil:
Ahoj, narazil jsem s novým "sticky" panelem na problém - tím, že je panel na celou šířku obrazovky, překrývá tabulku s daty - a to takovým nešťastným způsobem, že bez pohledu na boční scrollbar nepoznám, jestli stránka ještě pokračuje dolů nebo ne (už jsem dvakrát nabyl dojmu, že mi v databázi chybí nějaká data a přitom byla níže na stránce, jenom překrytá panelem). Soukromě jsem si to vyřešil nastavením maximální šířky panelu, takže pokud jsou data širší než panel a pokračují dolů, jsou vidět. Děje se to jenom při určité výšce viewportu, bohužel pro mě to přesně odpovídá na výšku maximalizovanému Chromu na Windows 10 se zobrazeným Bookmark barem (vertikální rozlišení 1200px). Screenshot problému:
https://imgur.com/cUCSoYc
Taky jsem na to narazil. Chtěl jsem to vyřešit zobrazením poloprůhledného gradientu na vršku panelu (od zcela průhledného po bílý), ale bohužel jsem nepřišel na to, jak to udělat. Možná nějaký expert na CSS by věděl?
Vyřešil jsem to vložením jednoho divu navíc, nastavením pozadí jen tomuto divu a tímto stylem na vnějším divu:
border-top: 20px solid rgba(255, 255, 255, .7);
border-image: linear-gradient(rgba(255, 255, 255, 0), #fff) 100% 0;
Jirka Hrazdil:
Díky moc, takhle to už funguje parádně.
Vašek:
Ahoj, bylo by možné v příští verzi zavést automaticky OR místo AND když se hledá vícekrát v jednom sloupci?
Protože když teď např.nastavím hledání v poli STATUS a dám = 1 a =2 tak to udělá AND a tedy to nic nenajde...
Snad jsem to napsal srozumitelně...
Použij operátor IN. Hledání ve stejném sloupci může dávat smysl i s AND, např. u operátorů < a >. Moc magie, kdy se použije AND a kdy OR, tam dávat nechci, protože to není intuitivní.
Vašek:
Díky, toho IN jsem si nějak nevšiml... omlouvám se :-)
Lukáš Beran:
Ahoj. Potřeboval bych nastavit adminer tak, aby umožnil připojení k databázovému serveru přes SSL. Stáhl jsem tedy potřebný plugin včetně toho hlavního pluginu, nahrál do struktury jak je popsané v návodu a chtěl se připojit, ale dostanu chybu 500. Když jsem se podíval do logu, viděl jsem:
PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function AdminerLoginSsl::__construct(), 0 passed in D:\home\site\wwwroot\adminer\index.php on line 13 and exactly 1 expected in D:\home\site\wwwroot\adminer\plugins\login-ssl.php:16 Stack trace: #0 D:\home\site\wwwroot\adminer\index.php(13): AdminerLoginSsl->__construct() #1 D:\home\site\wwwroot\adminer\adminer.php(1558): adminer_object() #2 D:\home\site\wwwroot\adminer\index.php(26): include('D:\\home\\site\\ww...') #3 {main} thrown in D:\home\site\wwwroot\adminer\plugins\login-ssl.php on line 16
Je tedy potřeba tomu pluginu předat nějaký argument, ale jaký? V tom hlavním souboru mám jen new AdminerLoginSsl
Díky.
Lukáš Beran:
Tak už jsem to vyřešil. Stačilo stáhnout certifikát té autority a odkázat se na něj new AdminerLoginSsl("bin/root.pem")
Diskuse je zrušena z důvodu spamu.