// 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!

Zanechte komentář …



M A H H R
  • E-mailová adresa nebude zveřejněna.
  • Formátování:
    //kurzíva//  __podtrženě__
    **tučně**  ''pevná šířka''
  • Odkazy:
    [[http://example.com]]
    [[http://example.com|Text odkazu]]
  • Citace:
    > Toto je citace. Nezapomeňte na mezeru před textem: "> "
  • Kód:
    <code>Toto je nespecifikovaný zdrojový kód</code>
    <code [lang]>Toto je kód v [lang]</code>
    <code php><?php echo 'example'; ?></code>
    Dostupné: html, css, javascript, bash, cpp, …
  • Seznamy:
    Odsaďte text dvěma mezerami a použijte * pro
    každou nečíslovanou položku a - pro číslovanou.