Navod jak z rychleho prototypu udelat neco co se da i znovu pouzit
- chemix
- Nette Core | 1308
Na jednom projektu jsem narazil na potřebu zobrazovat posty z Facebooku na klientově stránce. Inu začal jsem psát prototyp jak bych danou věc řešil. Prototyp jsem „spíchnul“ za hodinku, ale bylo to uděláno tak trošku na hulváta. Tak jsem si řekl že to postupně přepíšu tak jak by to třeba napsal nějaký zkušený programátor s Nette frameworkem. Na http://srazy.info/nettefwpivo jsem danou věc přednesl a Nette guruové mi přislíbili odbornější konzultace, tak doufám že se nám podaří vytvořit návod jak by se takové věci nad Nette měli psát.
celý projekt je pak k naleznutí na Githubu https://github.com/…ebook-Reader
Pokud máte nápad jak danou ukázku vylepšit nebo článek upravit pište, pošlete pull request, nebo mi napište email.
Navod je zde : http://blog.honzacerny.com/…-reader.html
prosim o napady jak danou vec vyresit lepe, nazor na styl psani. Pripadne jak lepe to propojit s kodem ktery se snazim psat co odstavec to commit.
- MartinitCZ
- Člen | 580
- Filip Procházka
- Moderator | 4668
Zaprvé, FacebookRequest
je třída z sdk v4, které je ještě
sračkovitější než to minulé sdk.
Kdyby/Facebook odpovídá starému sdk. Tedy postaru voláš api pomocí
$result = $fb->api('/nettefw/feed');
Metoda iterate
je navíc a result obalí paginatorem, který
automaticky stránkuje a stačí nad ním iterovat třeba foreachem.
- petr.pavel
- Člen | 535
Mě tam chybí vysvětlení, proč's opustil Cache a ukládáš do NDB. Nijak netřídíš, dál nezpracováváš, takže Cache pořád vypadá jako nejlepší volba.
Jinak díky za tutoriál, těch není nikdy dost. Ještě přeložit do angličtiny.
- chemix
- Nette Core | 1308
@petr.pavel je tam zmineno ze chceme zobrazovat jen posty schvalene pro zobrazeni na strankach. Cache jsem tam mel jen u vyvoje abych nemusel stale cekat na odpoved z facebooku, ten den byla cca na 10sec :( Navic doufam ze je tam patrne ze jeji pouziti je nadminu snadne a proto by se toho nemel nidko bat.
Co se anglictiny tyce tak jakmile se udela final cs tak nebrani nic v tom prekladu. Premyslim ale zdali en clanek i takto dlouze nebo jen finalni verzi s Kdyby/Facebook a se vsim jako ze uz vime.
- Filip Procházka
- Moderator | 4668
Nevidím smysl v matení čtenáře tím originálním fb sdkčkem, když ho pak nakonec nepoužíváš.
- chemix
- Nette Core | 1308
@FilipProcházka clanek jsem psal jako iteracni postup jak z dirty prototypu udelat nejakou pouzitelnou verzi co muzu pouzit i nekde dal.
U anglicke mutace budu resit jen tu finalni verzi. Jak to udelat.
BTW: ted jsem dopsal texty k tem tvejm commitum tak se na to kdyztak mrkni a dej vedet kdyby neco nesedelo http://blog.honzacerny.com/…-reader.html
- chemix
- Nette Core | 1308
jako clanek to je draft, takze pokud se tento typ clanku nezda tak to muze byt prepsano do finalniho „jak to delat idealne“ clanku. Me osobne (zkresleno) se ale tento typ clanku libi uvital bych nejake komentare hlavne novacku zdali je pro ne lepsi cist uz jak to delat rovnou poradne nebo spise pribehove jak se k tomu poradne dostalo …
- Jan Suchánek
- Člen | 404
@chemix Pěkný, popisný vývoj, krok za krokem a možností použitím něčeho ještě kvalitnějšího, rozhodně pokračuj!
- chemix
- Nette Core | 1308
přidávám podporu pro enablovani a disablovani postu. Jen jelikož jsem v nette nědělal se signálama?, snipetama? (možná by se na to hodili lépe) tak je to dělané klasicky přes odkazy
https://github.com/…396969a63031
nějaký tip jak toto řešit?
jdu si precist https://doc.nette.org/…ication/ajax
- David Matějka
- Moderator | 6445
@chemix
if (data.message == 'Post disabled') {
trosku wtf :)
- pouzij nette.ajax.js, ajaxifikace je pak hracka
- pouzij signaly, akorat misto
actionDisablePost
pojmenujes tu metoduhandleDisablePost
a link nebudes vytvaretAdmin:disablePost $post->id
, aledisablePost! $post->id
(ten vykricnik znaci, ze se jedna o signal) a btw, pri odkazovani na akci ve stejnem presenteru staci uvest nazev akce, nemusis jiz uvadet presenter - na payload se vyprdni, pouzij snippety – jednim snippetem obal flash
message, druhym snippetem obal tu tabulku. pak jen zavolej
$this->redrawControl('flashes');$this->redrawControl('table');
(nebo jakkoliv se budou jmenovat) Takze tu flashMessage posli jak do ajax tak do ne-ajax.
- chemix
- Nette Core | 1308
@matej21 message byla narychlo prototyp, uznavam :) refactoruji to.
- mrknu na to
- me bylo jasne ze to pujde lepe jen nevim jak elegantne, dik za stouchnuti zkusim poslat co nedrive update
- tam se ale posila cela tabulka, jak to udelat at se posila jen radek? a flashMessage?
- David Matějka
- Moderator | 6445
@chemix vetsinou na to kaslu a posilam vsechno :) ale muzes zkusit dynamicke snippety
flash message obal snippetem
<div n:snippet="flashes" n:foreach="$flashes as $flash" class="flash {$flash->type}">{$flash->message}</div>
- chemix
- Nette Core | 1308
@matej21
payload verze snad uz lepsi: https://github.com/…683fb4afe0a0
dalsi verze tedy se signaly a nette.ajax.js se snipets
- chemix
- Nette Core | 1308
Přepsal jsem používání action na handle:
https://github.com/…b083ef51d264
přepsal JS část z custom js na nette.ajax.js a použil snippets:
https://github.com/…759545d935c7
Mám pár dotazů.
- když mám js vyplý tak aby odkaz na handle po udělání akce redirectnul na stránku kde F5 nebude znova volat akci pod handlem (nyní zůstává v url id=…&do=…)
- zmíněný
<div n:snippet="flashes" n:foreach="$flashes as $flash" class="flash {$flash->type}">{$flash->message}</div>
nefunguje, hází chybu, musel jsem použít {snippet
cc: @matej21
- David Matějka
- Moderator | 6445
@chemix:
- ano, po zpracovani signalu (tedy i formularu) ne-ajaxem presmeruj, vetsinou
staci
$this->redirect('this')
- ajo vlastne, moje chyba. Takhle to mas ted spravne.
- chemix
- Nette Core | 1308
1). Pridal jsem redirect pokud se nejedna o ajax
https://github.com/…ee0ece7fabf2
plus jsem pridal dynamicke snippety
https://github.com/…892abbeb63e6
snad jsem to pochopil spravne :-)
Jako dalsi krok bych asi chtel refaktorovat ten handle jelikoz je tam na 2 mistech totozny kod a tim bych asi tento clanek uzavrel.
Mate nekdo nejaky napad na zlepseni? Vidite tam nekdo nejake zavazne problemy?
Q: Dokazete jednou vetou rici proc je zde lepsi handle namisto action?
cc: @matej21
- Patrik Votoček
- Člen | 2221
Handle je na změnu stavu aktuálního view. Tj na smazání, zaktivnění položky etc. (Většinou totiž po provedení chceš znova vykreslit tu samou stránku).
- Filip Procházka
- Moderator | 4668
Handle je „subsignál“ aktuální akce, je to jako když odešleš formulář. Když máš akci, tak většinou by měla něco zobrazovat, nebo připravovat data pro formulář. Zpracování formuláře taky nedáváme do akce, ale napíšeme na to metodu, kterou dáš formuláři jako callback. Tak přesně to je signál, zpracování nějaké operace (třeba smazání řádků, nebo označení řádku jako hidden) pro aktuální akci (což je třeba výpis jednotlivých řádků).
Btw, koukni na nextras/secured-links
- chemix
- Nette Core | 1308
Tak za me je kod https://github.com/…ebook-Reader asi finalni poprosim tedy pivni radce z NettePivo @PatrikVotoček @nAS pripadne treba znova @FilipProcházka nebo @HonzaMarek o mrknuti na kod zdali je to takhle „ok“ a ja se jdu pustit do dopsani clanku
- chemix
- Nette Core | 1308
Dopsal jsem clanek http://blog.honzacerny.com/…-reader.html je to dost dlouhe cteni, proto chapu ze se do toho asi kazdemu nechce :) ale snad se nekdo najde a treba mi tam neco opravi, doplni … ja si od nej dam ted na chvili odstup a pak prijde finalizace z bety do public