I second that. I'm another Catalyst newbie who would like to submit doc patches for review, but I don't know the process....
On May 19, 2010, at 4:24 PM, Jeff Albert wrote: > As an unabashed Catalyst n00b, I spent a couple of hours earlier this week > bashing through this same design conundrum on my own application, and > although I did ultimately come up with the solution that Ash describes under > my own steam, the Catalyst::DispatchType::Chained documentation didn't do > much to help me with the process at all - nor did the Catalyst tutorial. > > I've never contributed, so I don't know the process, but it would be nice to > see this information in the documentation. If somebody who knows what's > necessary mails me off-list with the information on how to get started, I > would be willing hack up Ash's reply into a fairly minimal doc patch in > whichever location is appropriate. > > Cheers, > Jeff > > -----Original Message----- > From: Ash Berlin [mailto:[email protected]] > Sent: Wednesday, May 19, 2010 3:39 PM > To: The elegant MVC web framework > Subject: Re: [Catalyst] A point of confusion/frustration on chained actions > > On 19 May 2010, at 23:16, Stephen Howard wrote: >> I am trying to sort out some interdependent chains and I'm having trouble >> figuring out why the urls I'm trying to build aren't working out. >> >> I have a site where the primary objects of interest are flash-based >> tutorials. Each tutorial can have comments, and each comment can have >> replies. I'm using jQuery to manipulate comments in a REST fashion, and I'm >> aiming for a url map like this: >> >> /tutorials # GET a list of tutorials, or POST a new >> tutorial >> /tutorials/* # GET/POST/DELETE a specific tutorial >> /tutorials/*/comments # GET the comments for a tutorial, or >> POST a new comment >> /tutorials/*/comments/* # GET/POST/DELETE a specific comment >> /tutorials/*/comments/*/replies # GET the replies for a comment, or POST >> a new reply >> /tutorials/*/comments/*/replies/* # GET/POST/DELETE a specific reply >> >> But the best I've been able to come up with is this: >> >> /tutorials >> ^tutorials/(\d+)$ >> /tutorial/*/comments >> /tutorial/*/comment/*/replies >> /tutorial/*/comment/*/reply/* >> >> missing: /tutorial/*/comment (what would I call it? /tutorial/*/cmt ?) >> >> Essentially I'm hitting an issue with is due to the (seeming?) impossibility >> of matching a chained set of actions at multiple url depths. Is it possible >> to build the url structure I'm looking for above using chained actions? >> >> thanks, >> Stephen > > You can get it exactly as you want: > > (manually re-ordered the below to match your desired list) > [debug] Loaded Chained actions: > .-------------------------------------+--------------------------------------. > | Path Spec | Private | > +-------------------------------------+--------------------------------------+ > | /tutorials | /tutorials (0) | > | | => /all_tutorials | > | /tutorials/* | /tutorials (0) | > | | -> /a_tutorial (1) | > | | => /show_tutorial | > | /tutorials/*/comments | /tutorials (0) | > | | -> /a_tutorial (1) | > | | -> /comments (0) | > | | => /show_tutorial_comments | > | /tutorials/*/comments/* | /tutorials (0) | > | | -> /a_tutorial (1) | > | | -> /comments (0) | > | | -> /a_comment (1) | > | | => /show_comment | > | /tutorials/*/comments/*/replies | /tutorials (0) | > | | -> /a_tutorial (1) | > | | -> /comments (0) | > | | -> /a_comment (1) | > | | -> /replies (0) | > | | => /show_replies | > | /tutorials/*/comments/*/replies/* | /tutorials (0) | > | | -> /a_tutorial (1) | > | | -> /comments (0) | > | | -> /a_comment (1) | > | | -> /replies (0) | > | | -> /a_reply (1) | > | | => /show_reply | > '-------------------------------------+--------------------------------------' > > > > sub tutorials : Chained('/') PathPart CaptureArgs(0) { > # stash tutorials rs > } > sub all_tutorials : Chained('tutorials') PathPart('') Args(0) { > # empty, or set stash for view > } > > sub a_tutorial : Chained('tutorials') PathPart('') CaptureArgs(1) { > # stash tutorial > } > sub show_tutorial : Chained('a_tutorial') Args(0) PathPart('') { > # setup view > } > > sub comments : Chained('a_tutorial') CaptureArgs(0) PathPart { > # stash comments rs from stash->{tutorial} > } > > # You get the idea hopefully.... > sub show_tutorial_comments : Chained('comments') Args(0) PathPart('') {} > sub a_comment : Chained('comments') CaptureArgs(1) PathPart('') {} > > sub show_comment : Chained('a_comment') Args(0) PathPart('') { } > > sub replies : Chained('a_comment') PathPart CaptureArgs(0) {} > sub show_replies : Chained('replies') Args(0) PathPart('') {} > sub a_reply : Chained('replies') CaptureArgs(1) PathPart('') {} > sub show_reply : Chained('a_reply') Args(0) PathPart('') {} > > > -ash > _______________________________________________ > List: [email protected] > Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst > Searchable archive: http://www.mail-archive.com/[email protected]/ > Dev site: http://dev.catalyst.perl.org/ > > _______________________________________________ > List: [email protected] > Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst > Searchable archive: http://www.mail-archive.com/[email protected]/ > Dev site: http://dev.catalyst.perl.org/ _______________________________________________ List: [email protected] Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/[email protected]/ Dev site: http://dev.catalyst.perl.org/
