drop namespace::autoclean
[catagits/Catalyst-Runtime.git] / t / lib / ChainedActionsApp / Controller / Root.pm
1 package ChainedActionsApp::Controller::Root;
2 use Moose;
3 use namespace::clean -except => [ 'meta' ];
4
5 BEGIN { extends 'Catalyst::Controller' }
6
7 #
8 # Sets the actions in this controller to be registered with no prefix
9 # so they function identically to actions created in MyApp.pm
10 #
11 __PACKAGE__->config(namespace => '');
12
13 sub setup : Chained('/') PathPart('') CaptureArgs(0) {
14     my ( $self, $c ) = @_;
15     # Common things here are to check for ACL and setup global contexts
16 }
17
18 sub home : Chained('setup') PathPart('') Args(0) {
19     my($self,$c) = @_;
20     $c->response->body( "Application Home Page" );
21 }
22
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});
26 }
27
28 sub hpages : Chained('home_base') PathPart('') Args(0) {
29     my($self,$c) = @_;
30     $c->response->body( "List project " . $c->stash->{project_title} . " pages");
31 }
32
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" );
36 }
37
38 sub no_account : Chained('setup') PathPart('account') Args(0) {
39     my($self,$c) = @_;
40     $c->response->body( "New account o login" );
41 }
42
43 sub account_base : Chained('setup') PathPart('account') CaptureArgs(1) {
44     my($self,$c,$acc_id) = @_;
45     $c->stash({account_id=>$acc_id});
46 }
47
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} );
51 }
52
53 sub profile_base : Chained('setup') PathPart('account/profile') CaptureArgs(1) {
54     my($self,$c,$acc_id) = @_;
55     $c->stash({account_id=>$acc_id});
56 }
57
58 sub profile : Chained('profile_base') PathPart('') Args(1) {
59     my($self,$c,$acc) = @_;
60     $c->response->body( "This is profile of " . $acc );
61 }
62
63 =head2 downloads
64
65     This is a different test, this function is void, just to let following in the chain
66     to declare downloads as PathPart.
67
68 =cut
69
70 sub downloads : Chained('setup') PathPart('') CaptureArgs(0) {
71     my($self,$c) = @_;
72 }
73
74 sub downloads_index : Chained('downloads') PathPart('downloads') Args(0) {
75     my($self,$c) = @_;
76     $c->response->body( "This is download index");
77 }
78
79 sub default : Chained('setup') PathPart('') Args() {
80     my ( $self, $c ) = @_;
81     $c->response->body( 'Page not found' );
82     $c->response->status(404);
83 }
84
85 sub end : Action {}
86
87 __PACKAGE__->meta->make_immutable;
88
89 1;