Mé plány ohledně archivu a stránkování textů

Tak jsem si dnes klikal na jednom webu a došlo mi, že mi docela chybí funkce, která dříve v RS2 byla – možnost kombinovat výpis v archivu dle tématu přes určité měsíce. Tedy vybrat si téma XY a tím omezit výpis měsíců s publikovanými články pouze na ty, ve kterých byl napsán článek s oním tématem. Zarazila mě totiž nelogičnost, že články mohu procházet přes měsíce (vždy se vypíší všechny, nestránkují se), zatímco témata se vypíší pouze za sebou a se stránkováním. Najednou se mi to takto nelíbilo.

Takže… přemýšlím. A udělal bych to takto. Úvodní stránka s určeným počtem textů a pod nimi místo nynějšího stránkování pouze odkaz na archiv. Ten by zůstal relativně beze změn, výpis podle měsíců, témat a autorů. Ale kdybych si zvolil téma XY, pak by se omezila nabídka měsíců pouze na ty s texty zvoleného tématu a rovnou se vypsal nejbližší takový měsíc. To samé s autorem.

Mým cílem je sjednotit archiv. Tedy dělat filtrování textů dle data, tématu a autora stejným způsobem, či spíše dosahovat stejné podoby výsledku. A přidat funkcionalitu, kdy by se nad/pod vypsanými texty objevily přecházecí odkazy na minulý/následující měsíc respektující současný filtr. Tedy mít zvolené téma XY a měsíc únor 2008, potom by následující měsíc nebyl automaticky březen 2008, ale (například) duben 2008, protože až v něm byl napsán další text s tématem XY. Atd.

Je mi jasné, že se taková úprava nemusí moc líbit, je-li někdo zvyklý vypsat si všechny texty tématu XY a jen mezi nimi přecházet pomocí stránkování. Ale druhá věc je otázka, kolik lidí to opravdu dělá a jestli není mnou navržený způsob pro obyčejného návštěvníka transparentnější.

Zachování obou způsobů nepřichází v úvahu, kombinování SQL dotazů je už teď docela šílené.

Tak co, jak se na to tváříte vy?

Redakční systém RS2 ve verzi RC 5.2

Bez jakéhokoli upozornění je tu nová verze týkající se povětšinou oprav chyb a nelogičnosti některých funkcí. Také už utekly téměř tři měsíce od posledního vydaného balíčku a kdo si myslí, že si pamatuji, co jsem za tu dobu dodělal či upravil… no, mýlí se.

Vyladil jsem Texylu. Osobně píši Texy syntaxi ručně, takže si ani nevšimnu, pokud Texyla nefunguje správně. Ale budiž, poladil jsem ji, nastavil správnou syntaxi a prohnal vše přes javascriptový packer, který udělal z 50 kB souboru krásného 19 kB střízlíka. To je určitě krok správným směrem.

V administraci přibyly u textů, článků a dokumentů počty přečtení/stažení.

Je možné jako <UL> seznamy vypisovat i odkazy v archivu (viz. Nastavení šablon).

V Nastavení Sitemaps lze nyní povolit pingování Googlu po napsání nového článku či textu → to upozorní Google, aby se přišel podívat, co se na webu objevilo nového a ve výsledku se nový text dostane do jeho indexu třeba během několika minut (zjednodušuji). Musí být povolené allow_url_fopen nastavení PHP, případně CURL knihovna.

Při publikování přes mejl je opravena práce s obrázky (správné zmenšování) a ještě pokud se ve jménu obrázku objeví řetězec „rotl“ nebo „rotr“, bude automaticky otočen o 90% doleva nebo doprava. Což se objevilo jako volba i v editaci obyčejných obrázků.

A opravy spousty chyb reportovaných ve fóru. Rád bych to tu všechno vypsal, ale bohužel, nikam jsem si to nepoznamenával. Hlavně je opravena chyba, kdy se nezobrazoval text komentářů, které byly reakcí na někoho, kdo měl ve jméně diakritiku.

Můžete stahovat tentokrát přes oficiální odkaz nahoře v menu. Upgrade není potřeba, instalace je tradiční. Není co řešit, stačí přehrát soubory (ne login.php).

Jak vyřešit používání obrázků z fotoalba

V diskuzním fóru se řeší jedna věc: z verze RC5 (vydána v létě 2007) zmizela možnost vkládat do textu obrázky z fotoalba. Osobně mi moc nechybí, ale mnohým ano. Abych vysvětlil, proč tato funkce v administraci již není: vkládání obrázku, jak vidno, prošlo v RC5 velkou změnou → načítání seznamu obrázků přes AJAX, vkládání na pozici kurzoru, vše dynamicky přes JavaScript. Jenže… vytvářet tyto průvodce bylo pracné a nechtěl-li jsem vydání nové verze redakčního systému neustále odkládat, musel jsem prostě jednou s úpravami skončit a verzi vydat.

Druhou věcí je i skutečnost, že zatímco obrázky (složka /images/) slouží k čemukoli, pak složka /fotoalbum/ je pouze pro potřeby fotoalba bez možnosti nějakých editačních zásahů. Pro jistotu. Není to nějaké opomenutí, záměrně jsem neumožnil editaci obsahu složek fotogalerií přes administraci.

A tak nyní přemýšlím, jak tento problém řešit. Nejsnazší a možná nejvhodnější se mi zdá toto řešení: Přesunout složku /fotoalbum/ do složky /images/ (stala by se podadresářem), a napsat aktualizační script, který by na to připravil původní fotogalerie a pod. K fotografiím by pak šlo přistupovat tak jako nyní k obyčejným obrázkům, používat je v textu atd atd.

Zkušeným uživatelům by to asi vyhovovalo, ale úplně vidím ty méně zkušené, jak šťouráním v nějakých složkách zruší celé fotogalerie. Nevím. Poraďte, co si o této funkcionalitě myslíte.

Přestavba tohoto webu začíná

Nevím, proč jsem byl z minulého vzhledu (prvního tří-sloupcového) tehdy (při jeho vytvoření) tak nadšený. A považoval jej za úžasný. Časem se mi naprosto znechutil, až to vyústilo v dlouhé hledání vhodné šablony a její ještě delší portování. To už je ovšem u konce a než odjedu z koleje domů (čti na bezdrát se ztrátovostí paketů 15–20%), využiji zdejší 20megabit k uploadu souborů na web.

Nový vzhled je z dílny NodeThirtyThree Design, je jednoduchý, nebojí se prázdného místa, a hlavně je teprve na začátku (např. jsem si všiml, že zmizel odkaz na archiv). Od jeho nasazení očekávám, že pokročím s webem trošku dál, vytvořím konečně demo redakčního systému, spáchám něco s wiki,… no uvidím.

Snad se bude nový vzhled líbit, pokud ne, je mi to ukradené, mně se líbí a to je to podstatné.

V RS2 jsem zatím spáchal spousty drobných změn a oprav, jenže ty nejsou moc vidět a pouštět se do těch větších, jejichž návrhy padají ve fóru, se mi moc nechce (nemám tolik času). A stejně tak se mi ale nechce vydávat verzi 5.2, když obsahuje jen pár vylepšení. Ale třeba to, že JS soubor Texyly má místo 51kB jen 19kB… to potěší každého :) No, jdu se sbalit.

Nový vzhled pro redakční systém RS2 - WinterPlain

Vzhled WinterPlain Po několikerých pracovních neúspěších, kdy mi vlastní neschopnost kazila jeden den za druhým plýtváním mým časem, jsem odložil PHP a JavaScript, našel si jednu hezkou jednoduchou šablonu a naportoval ji pro redakční systém RS2. Během jednoho odpoledne, jako takové odreagování. Jejím autorem je Arcsin.

Je to jednoduchý vzhled v pastelových barvách, neurazí, neoslní, jen rozšíří rodinku vzhledů. Ve fotogalerii vyžaduje zapnutý LightBox a v menu zapnuté generování UL seznamů (viz nastavení šablon). Taky mě napadá, že bych mohl dokončit ten minulý dizajn, Beautiful day, který zůstal někde na půli cesty a spousta věcí v něm není ošetřených. Nakonec, ani tady jsem neošetřil ankety. Ale kdo je používá…

Stahovat jej můžete (samostatně) zde.

Novoroční dárek - nová verze RS2 RC 5.1

Babrat se s novým balíkem jakékoli aplikace ráno na Štědrý den, to by se asi nechtělo nikomu. Takže na šokující událost nedošlo a o Vánocích nová verze redakčního systému nevyšla :) Až nyní se země zatřásla a RS2 RC 5.1 je tu!

Ti vnímavější si z čísla 5.1 odvodí, že nejde o nikterak radikální novinky – drtivá většina změn jsou opravy nalezených chyb či podivností. Spoustu z nich jsem popsal již minule. To bude možná pro někoho zklamání, ale bohužel je to tak – v Praze je draze a za něco žít musím, přednost má tedy komerční práce. Vašich darů si ovšem velmi vážím a děkuji za ně :)

Jak upgradovat? Důležitá skutečnost – oficiálně celý tento web nabízí ke stažení původní verzi RC 5, minimálně do té doby, než si budu jist, že je i nová verze (relativně) stabilní. Takže archiv s novou verzí nestáhnete jinak než přes tento odkaz.

Jde samozřejmě o upgrade z verze RC 5. Smažte tedy rovnou složku /instalace/ a přejmenujte /_upgrade/ na /upgrade/. Po načtení hlavní stránky webu dostanete na výběr ze dvou upgradů, zvolte tedy ten z RC 5 na RC 5.1. Po úspěšném upgradu smažte i tuto složku a web by měl být funkční. Měl… :)

Změny jsou ve spoustě souborů, v texyle, nová verze texy, ve složce /admin/libs/… takže přehrajte celou složku /admin/, je to nutné. A všechny soubory v hlavní složce (až na login.php!).

Ve vzhledech žádné změny nejsou. Problémy hlaste do komentářů. Podotýkám, že v nastaveni.php je nastaveno hlášení všech PHP chyb i na front-endu, takže se jich případně nelekejte. Případně najděte v daném souboru funkci errror_reporting(15); (2×) a číslo 15 změňte na 0.

Opravování reportovaných/zjištěných chybek

Nyní v noci mezi dvěma dny naplněnými učením matiky (já tu zkoušku udělám!) je ideální chvíle pro zamyšlení se nad tím, co se se systémem za poslední měsíce stalo. Tak jako tak, moc toho není. Nebyl/není/nebude čas.

K práci mě před měsícem nastartovala jedna událost – jeden web běžící na tomto redakčním systému bylo třeba rozšířit o sekci, do níž by měly přístup další autorky, ženy se základními schopnostmi práce s počítačem. Texy! je děsí ještě dnes, na tom se toho nedalo moc změnit, ale bylo potřeba zjednodušit práci s obrázky.

Vkládání obrázku do textu

Nyní systém při hromadném zmenšování obrázků ve složce umožňuje jejich ukládání pod novým názvem. Možná situace: jsem BFU a nahraji si na web 10 fotek o rozlišení 1600×1200. Všechny hromadně zmenším, což server potěší asi tak jako člověka průstřel hlavy, ale budiž. Nyní mám 10 fotek o velikosti 800×600 a chtěl bych si z nich vytvořit galerii náhledů v textu (nebavíme se o fotoalbu!). Zadám nové zmenšení na 120×90, ale zatrhnu „Zachovat originály“ a zmenšeniny se uloží pod novým jménem (obrazek01-nahled.jpg). Mám složku s dvaceti obrázky.

Jak je dostat do textu? Po jednom? Boha jeho! Inu, nezbylo mi, než napsat průvodce, ve kterém si vybereme zdrojovou složku obrázků a zvolíme, zda ji chceme do textu vypsat jako větší obrázky pod sebou (originály), nebo jako galerii náhledů (odkazů na originály). První případ je jasný, druhý využívá skutečnosti, že náhledy obsahují slovo -nahled, takže je do textu vloží jako obrázkové odkazy, jejichž cílem je stejný obrázek, ovšem bez slova -nahled. Obrázky se zpárují a vloží v Texy! syntaxi do textu (zarovnané vlevo). Jednodušší už to být nemůže.

Další změny

  • nová schopnější verze texyly
  • předělán průvodce vkládáním odkazu na soubor a odkazy na texty/články/fotoalba
  • v opeře a IE7 se náhled textu (nová stránka) otevřel 2×
  • tato chyba
  • tato chyba
  • tato chyba
  • tato chyba
  • tento návrh
  • a spousta dalších, které jsem si ani nepoznamenal

Jedna důležitá oprava: od upgradu na novou verzi Texy! bůh ví kdy došlo k tomuto chování: byl-li napsán komentář autorem, jehož jméno obsahovalo diakritiku, a v dalším komentáři na něj bylo pomocí odkazu reaguj reagováno, tak se tento nový komentář uložil prázdný. Problém je v Texy! a uvidíme, zdali se to opraví. Případně jsem si to u sebe jednou obezličkou obešel a zde je to již funkční.

Většina změn je tedy v administraci.

A otázka do pranice: kdy bude další upgrade? To nevím.

Máte-li návrhy, chybky a jiné připomínky, do komentářů.

Hledá se ideální lightbox-like script

V létě jsem do systému přidal Lightbox script sloužící k efektnímu otevírání velkých obrázků. Jenže to bylo pár desítek kB navíc a pokud člověk scrollnul prohlížeč, nevypadalo to hezky.

Při jednom upgradu jsem tedy Lightbox vyměnil za menší a lepší Slimbox, menší velikost souborů, lepší chování při scrollování, ideální. Jenže. Jde o script postavený na MooTools javascriptovém frameworku a jeden z vedlejších efektů je konec funkčnosti tradičních onMouseOver a pod. událostí. To nasere. Kvůli jednomu onmouseoveru bych musel načítat další kB jiné knihovny frameworku a to se mi echt nechce. Takže ačkoli je Slimbox fajn, tak hledám něco lepšího, postaveného na obyčejném javascriptu, co neovlivní zbytek webu.

Podíval jsem se i na Greybox a ačkoli má efekt trochu odlišný, také nevypadá zle.

Znáte ještě nějaké jiné? Který je váš favorit?

Bezpečné a pseudo-trvalé přihlášení v administraci

V poslední verzi RS2 jsem se pokusil vyřešit trvalé přihlášení v administraci bez bezpečnostně pochybného ukládání přihlašovacích informací a re-přihlašování v případě vypršelého přihlášení. Princip byl krásně jednoduchý: neviditelný iframe, do kterého se každých pět minut načítal malinký soubor, jehož jedinou činností bylo dát serveru vědět, že uživatel má stále otevřenou administraci a jeho nečinnost je pouze zdánlivá – například píše dlouho nějaký text, nepřechází tedy mezi stránkami a nedochází k obnovování informace o přihlášení.

Po několika metodách a – přiznávám – několika bezpečnostních hazardech jsem si říkal, že to je konečně ten způsob, jak to vyřešit.

Nebyl.

Nejsem žádný velký odborník, a nechápu tedy, proč to nefunguje, respektive proč to nefunguje u mně na hostingu Savana.cz – což by ostatně nebyla první podobná věc, která by mě v konfiguraci serveru nepříjemně překvapila (viz session race-condition) a je mi jasné, že je to spíš chabými znalostmi na mé straně než špatným hostingem – ale bylo nutno to nějak vyřešit. Po hodinovém psaní textu dostat místo jeho uložení přihlašovací formulář, to je asi jako studená sprcha v lednu. Inu, dumal jsem…

Nyní se člověk přihlásí do administrace a v ten okamžik dojde k vytvoření unikátního hashe složeného z času, ip adresy a identifikace prohlížeče. Tento hash se uloží do databáze a zároveň do cookie, která má platnost pouze do zavření prohlížeče (pak už určitě není potřeba). A člověk píše, a píše, a píše… a zatímco server již zrušil jeho přihlášení, neb se mu zdálo, že se hodinu nic neděje, cookie je stále na pozoru, protože prohlížeč nebyl zavřen. A autor uloží text. Administrace zjistí, že neexistuje session proměnná s přihlášením a že tedy autor přihlášen není, ale pro sichr ještě zkontroluje, zda náhodou neexistuje i cookie s oním hashem. Ano, existuje. Super. A je takový hash uložen v databázi? Ano, je. Super. Vytáhneme z db údaje jako při přihlášení (jméno, práva,…), nacpeme je do session a pokračujeme dál, jako by se nic nestalo. Tedy ukládáním textu.

Tak. Toť můj nynější postup. Těm, kteří o php vědí více než rozdíl mezi include a require, jej předkládám k posouzení, zda jsem něco důležitého neopomněl. Z první vody se mi to zdá docela dobré.

Problém s AJAXem a session race condition

Po měsíci (či více) ticha přichází velmi výživné téma, minimálně dle nadpisu :) Jde o problém, který si pomalu rozebereme, protože pochybuji, že více než 6,3% čtenářů tohoto článku má představu o tom, co v IT světě znamená race condition. Autor na tom byl ještě před dvěma týdny obdobně.

Jak se tento problém projevuje? Dlouhou odezvou administrace, ale hosting od hostingu je to jiné. Na localu mi vše funguje, ale na Savaně ne. Jak si ověřit, že je to i váš problém? Otevřete si administraci, psaní nového textu. Až budete mít načtený formulář, otevřete si v novém okně přehled obrázků v Médiích a nechte si rozbalit nějakou složku. Nestane-li se tak hned, ale 30 sekund budete koukat na Loading ikonu, pak jste na tom jako já :) Tak se to projevuje, a ačkoli vše funguje, je to pěkná otrava. Souvisí to se střetem tradiční struktury požadavků na server v PHP a asynchronním voláním v AJAXu. Nebo tak nějak.

Co je to to „race condition“? Tohle.

Proč o tom píšu? Zajímá mě, zda se to týká více lidí. U sebe jsem se dobral k řešení a v budoucnu dojde k vydání opravy, ale otázkou je, jak moc na to mám spěchat :)

Starší články: 1-10 11-20 21-30 31-40 41-50 51-60 61-70 71-80 81-90 91-100 101-110 111-120 121-130 131-134

Kdo je autor RS2

juneau Mé jméno je juneau, je mi 23 let a stojím za redakčním systémem pro blog, který pohání tento web a pár desítek dalších. Nemám světoborné ambice a dělám to čistě pro radost, berte na to prosím ohled. O životě a všem možném si píšu blog na mé reality-show.

Lorem Ipsum