Navod jak z rychleho prototypu udelat neco co se da i znovu pouzit

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
chemix
Nette Core | 1308
+
+2
-

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.

Filip Procházka
Moderator | 4668
+
0
-

Udělal jsem ti poslední bod :)

https://github.com/…eader/pull/1

chemix
Nette Core | 1308
+
0
-

diky moc, i za ty dalsi 3 pekne commity, hned to tam dam a dopisu do clanku

chemix
Nette Core | 1308
+
0
-

@filip kde bych mel hleda info k te metode iterate? konkretne ze mam pouzit

$posts = $this->facebook->iterate('/nettefw/feed');

namisto

$posts = new FacebookRequest($session, 'GET', '/nettefw/feed')->execute()->getGraphObject()->asArray();
MartinitCZ
Člen | 580
+
0
-

Já bych řekl, že jediné info je php code, případně Kdyby api.

Editoval martinit (17. 6. 2014 16:17)

Filip Procházka
Moderator | 4668
+
+2
-

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.

chemix
Nette Core | 1308
+
0
-

přidal jsem k jednotlivým blokům i odkaz na konkretní commit ve kterém jsou vidět všechny změny co se udály.

chemix
Nette Core | 1308
+
0
-

pridal jsem lepsi barevne zvyraznovani kodu a vetsi pismena, snad je to ted citelnejsi … doufam

petr.pavel
Člen | 535
+
+1
-

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
+
0
-

@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
+
+2
-

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
+
+2
-

@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
+
+1
-

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
+
0
-

@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
+
0
-

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

chemix
Nette Core | 1308
+
0
-

Pridal jsem zajaxovani pomoci isAjax(), payload a troska jQuery

https://github.com/…49d860d871db

David Matějka
Moderator | 6445
+
0
-

@chemix

if (data.message == 'Post disabled') {

trosku wtf :)

  1. pouzij nette.ajax.js, ajaxifikace je pak hracka
  2. pouzij signaly, akorat misto actionDisablePost pojmenujes tu metodu handleDisablePost a link nebudes vytvaret Admin:disablePost $post->id, ale disablePost! $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
  3. 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
+
0
-

@matej21 message byla narychlo prototyp, uznavam :) refactoruji to.

  1. mrknu na to
  2. me bylo jasne ze to pujde lepe jen nevim jak elegantne, dik za stouchnuti zkusim poslat co nedrive update
  3. tam se ale posila cela tabulka, jak to udelat at se posila jen radek? a flashMessage?
David Matějka
Moderator | 6445
+
0
-

@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
+
0
-

@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
+
0
-

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ů.

  1. 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=…)
  2. 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
+
0
-

@chemix:

  1. ano, po zpracovani signalu (tedy i formularu) ne-ajaxem presmeruj, vetsinou staci $this->redirect('this')
  2. ajo vlastne, moje chyba. Takhle to mas ted spravne.
chemix
Nette Core | 1308
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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