Zápisník

// Můj první plugin pro DokuWiki

Před několika měsíci jsem kompletně updatoval svoji website. Vybral jsem si DokuWiki jako velmi flexibilni engine rozšiřitelný spoustou pluginů.

Též jsem použil Blog plugin a další k vytvoření svého občasníku. Ale chyběla mi jedna vlastnost. Tou bylo zobrazení data vytvoření a autora na stránce příspěvku podobně, jako to vkládá Include plugin v seznamu. Ano, DokuWiki standardně tiskne zápatí, ale pokud je použit Discussion plugin, vloží se až pod všechny komentáře hodně hodně dolů.

Takže jsem spáchal jednoduchý plugin, který informace vkládá těsně pod příspěvek, nad komentáře. Stačí se podívat například na stránce tohoto příspěvku dolů. Musel jsem ale hrábnout do proměnných event handleru (které by v jiném jazyce velmi pravděpodobně byly privátní), abych plugin udělal prvním listenerem události TPL_ACT_RENDER_AFTER, tj. ještě před Discussion pluginem. Důsledkem toho je vždy text před komentáři. Nutno přiznat, že tento trik mi naťuknul Vity. Plugin lze stáhnout na stránce DokuWiki goodies.

// Photobase, nová verze, další featury

Po nějaké době jsem se dokopal k dalším inovacím na mojí fotogalerii. Stalo se tak vlastně až na základě okolností a potřeby nahrát do galerie cca 50 fotografií. Původní způsob jsem ihned zavrhl, protože bych se zřejmě uklikal k smrti. Světlo světa tak spatřil primitivní upload souborů přes FTP. K tomu jsem již dříve pracoval na systému pro lokalizaci, takže nyní mohu psát PhotoBase v angličtině a zachovat i českou verzi. Nemluvě o možnosti jednoduchého překladu do téměř jakéhokoli jazyka.

Lokalizace

PhotoBase

Abych si lokalizaci co nejvíce usnadnil, použil jsem jednoduše asociativního pole. Jednotlivá hesla k překladu jsou klíči pole a přeložená hesla pak obsahem jednotlivých položek. Tvorba nové lokalizace pak spočívá v založení nového souboru v podadresáři /inc/lang podle již existujícího exempláře a následného přeložení hodnot v poli. Jedinou nevýhodou je nutnost zachování korektní PHP syntaxe.

V kódu pak volám pro vložení hesla příslušnou funkci, která zajistí překlad, případně nahlásí debugovací komponentě neexistenci překladu a použije původní text. Pro složitější konstrukce s proměnlivými položkami existuje funkce, která po překladu provede nahrazení výrazů %1, %2 apod. hodnotami uvedenými jako parametry funkce. Tento fígl je použit snad ve všech aplikacích, které znám.

FTP upload

FTP upload

FTP upload

Jak bylo již řečeno, důvodem pro uspíšení vytvoření této funkce byla hromada fotek, které ulpěly na paměťové kartě mého mobilu po dovolené na Vysočině. Upload přes FTP není úplně to, co bych si představoval, pro někoho může být postup příliš složitý nebo nepohodlný, ale je to asi nejjednodušší řešení, kterého jsem byl schopen dosáhnout.

Jak to zhruba funguje … Administrátor musí každému uživateli, který chce nahrávat fotky přes FTP, vytvořit adresář pro uploady nesoucí jeho přihlašovací jméno a příslušný účet, pomocí kterého může uživatel do adresáře fotky nahrát. Tento požadavek je asi ze všeho nejvíc „zdržující“ a navíc je nutno při vytváření účtu dát pozor na přístupová práva, aby nebyla ohrožena bezpečnost aplikace (přístup do jiného než adresáře pro upload). Uživatel potom adresář naplní fotkami, které chce přidat. Pomocí příslušného odkazu přejde k hromadnému vkládání. Skript načte všechny soubory a zkontroluje jejich mime-typy, případně upozorní na neobrázkové soubory, které je nutno před nahráním z adresáře odstranit. Uživatel vybere galerii, do které chce fotografie nahrát a potvrdí.

V tuto chvíli nastává další z problémů tohoto řešení. Skript by měl správně soubory přesunout do adresáře pro fotografie. Ale důsledkem toho, že má FTP uživatel většinou jiná práva než webserver, je fakt, že skript soubory z adresáře pro upload odstranit nemůže. Proto je pouze zkopíruje a na tuto „chybu“ upozorní a varuje před možným opětovným nahráním v případě ponechání oněch souborů.

V budoucnu bych chtěl tuto nepohodlnou funkci nahradit mnohem sofistikovanější. Jako nejhezčí řešení se jeví Java applet. Bohužel v tuto dobu jednoduše prostě netuším, jak to přesně funguje. Například Facebook má velmi povedený. Asi začnu o této alternativě zjišťovat víc. Další možností je uploadovat fotografie v jednom souboru, například jako ZIP nebo TAR. Jenže to naráží na omezení v podobě maximální velikosti dat odesílaných metodou POST, takže se to jeví jako slepá ulička.

Nicméně ...

nové funkce jsou na světě. A to ještě před půl rokem to vypadalo, že tento mini-projekt bude jako spousta jiných zapomenut pod záplavou ostatních věcí a povinností. Takže pro zájemce odkazuji na stránky projektu PhotoBase. Pokud byste se přeci jen rozhodli galerii vyzkoušet, přivítám Vaše odezvy a případné hlášení chyb. Enjoy!

// Nové výtvory

PhotoBase

PhotoBase

Konečně jsem se donutil k tomu, abych dopiloval a uvolnil první várku mých výtvorů z nedávné doby. Ty kódy existují už několik měsíců, jen jsem se pořád neměl k tomu je dokopat do nějaké rozumné formy a samozřejmě dopsat vhodný readme.txt soubor ;-)

Součástí „první“ várky je tedy jednoduchá webová galerie fotek, kterou jsem již dal do provozu i zde (odkaz). Je opravdu jednoduchá, takže zázraky typu Coppermine Photo Gallery nečekejte. Nicméně díky tomu zase běhá velmi svižně i na slabších strojích. A hlavně, hodlám na ní ještě něco tvořit.

Druhým výplodem, spíš výplůdkem je generátor koláčových grafů na základě statistik získaných pomocí systému BBClone. Vykresluje TOP10 statistiky návštěvnosti (browsery, operační systémy, navštívené stránky a hledaná klíčová slova). Obrázek ukazuje návštěvnost podle browserů na tomto webu.

Více o obou aplikacích v sekci Projekty.