1 package ChainedActionsApp::Controller::Root;
3 use namespace::clean -except => [ 'meta' ];
5 BEGIN { extends 'Catalyst::Controller' }
8 # Sets the actions in this controller to be registered with no prefix
9 # so they function identically to actions created in MyApp.pm
11 __PACKAGE__->config(namespace => '');
13 sub setup : Chained('/') PathPart('') CaptureArgs(0) {
14 my ( $self, $c ) = @_;
15 # Common things here are to check for ACL and setup global contexts
18 sub home : Chained('setup') PathPart('') Args(0) {
20 $c->response->body( "Application Home Page" );
23 sub home_base : Chained('setup') PathPart('') CaptureArgs(2) {
24 my($self,$c,$proj_id,$title) = @_;
25 $c->stash({project_id=>$proj_id, project_title=>$title});
28 sub hpages : Chained('home_base') PathPart('') Args(0) {
30 $c->response->body( "List project " . $c->stash->{project_title} . " pages");
33 sub hpage : Chained('home_base') PathPart('') Args(2) {
34 my($self,$c,$page_id, $pagetitle) = @_;
35 $c->response->body( "This is $pagetitle page of " . $c->stash->{project_title} . " project" );
38 sub no_account : Chained('setup') PathPart('account') Args(0) {
40 $c->response->body( "New account o login" );
43 sub account_base : Chained('setup') PathPart('account') CaptureArgs(1) {
44 my($self,$c,$acc_id) = @_;
45 $c->stash({account_id=>$acc_id});
48 sub account : Chained('account_base') PathPart('') Args(0) {
49 my($self,$c,$acc) = @_;
50 $c->response->body( "This is account " . $c->stash->{account_id} );
53 sub profile_base : Chained('setup') PathPart('account/profile') CaptureArgs(1) {
54 my($self,$c,$acc_id) = @_;
55 $c->stash({account_id=>$acc_id});
58 sub profile : Chained('profile_base') PathPart('') Args(1) {
59 my($self,$c,$acc) = @_;
60 $c->response->body( "This is profile of " . $acc );
65 This is a different test, this function is void, just to let following in the chain
66 to declare downloads as PathPart.
70 sub downloads : Chained('setup') PathPart('') CaptureArgs(0) {
74 sub downloads_index : Chained('downloads') PathPart('downloads') Args(0) {
76 $c->response->body( "This is download index");
79 sub default : Chained('setup') PathPart('') Args() {
80 my ( $self, $c ) = @_;
81 $c->response->body( 'Page not found' );
82 $c->response->status(404);
87 __PACKAGE__->meta->make_immutable;