/[webpac2]/Webpacus/lib/Webpacus.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /Webpacus/lib/Webpacus.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 358 - (show annotations)
Sun Jan 8 13:58:19 2006 UTC (18 years, 3 months ago) by dpavlin
File size: 2983 byte(s)
 r384@llin:  dpavlin | 2006-01-08 14:56:52 +0100
 load different templates for different sites (denoted by prefix in URL and
 root/sites/[site_name] directory

1 package Webpacus;
2
3 use strict;
4 use warnings;
5
6 #
7 # Set flags and add plugins for the application
8 #
9 # -Debug: activates the debug mode for very useful log messages
10 # Static::Simple: will serve static files from the applications root directory
11 #
12 use Catalyst qw/-Debug
13 Prototype
14 Config::YAML
15 FillInForm
16 SubRequest
17 Static::Simple
18 StackTrace
19 /;
20 # FormValidator
21
22 our $VERSION = '0.31-dev';
23
24 #
25 # Configure the application
26 #
27 __PACKAGE__->config(
28 name => 'Webpacus',
29 config_file => 'config.yml',
30 );
31
32 #
33 # Start the application
34 #
35 __PACKAGE__->setup;
36
37 =head1 NAME
38
39 Webpacus - Catalyst based application
40
41 =head1 SYNOPSIS
42
43 script/webpacus_server.pl
44
45 =head1 DESCRIPTION
46
47 Catalyst based application.
48
49 =head1 METHODS
50
51 =over 4
52
53 =item default
54
55 =cut
56
57 sub default : Private {
58 my ( $self, $c ) = @_;
59 $c->stash->{template} = 'index.tt';
60
61 my $site_name = shift @{ $c->req->args };
62
63 if (my $sites_root = $c->config->{sites_root}) {
64 my $site_path = $c->path_to('root', $sites_root, $site_name);
65
66 if (-e $site_path) {
67 $c->stash->{site} = $site_name;
68 if (my $action = shift @{ $c->req->args }) {
69 $c->log->debug( "site: $site_name, action: $action" );
70 $c->internal_redirect( $action, $c->stash );
71 } else {
72 $c->log->debug( "site: $site_name" );
73 }
74 } else {
75 $c->log->debug( "can't find site $site_name in $site_path");
76 }
77 } else {
78 $c->log->warn("sites_root not defined in config");
79 }
80 }
81
82 =item end
83
84 =cut
85
86 sub end : Private {
87 my ( $self, $c ) = @_;
88
89 $c->stash->{webpacus_version} = $VERSION;
90
91 if ($c->response->body) {
92 $c->log->debug("at end body exists, we won't touch it!");
93 } else {
94 $c->fillform( $c->req->params );
95
96 if (my $site_name = $c->stash->{site}) {
97 my $template_path = $c->path_to('root', $c->config->{sites_root}, $site_name, $c->stash->{template});
98 if (-e $template_path) {
99 $c->stash->{template} = $c->config->{sites_root} . "/$site_name/" . $c->stash->{template};
100 } else {
101 $c->log->warn("can't find $template_path, fallback to default");
102 }
103 $c->log->debug("using template ", $c->stash->{template});
104 }
105
106 # Forward to View unless response body is already defined
107 $c->forward('View::TT');
108
109 $c->response->{body} =~ s#\Qnew Ajax.Autocompleter(\E#new WebPAC.Suggest(#gs;
110 $c->response->{body} =~ s#\Qnew Ajax.Updater(\E#new WebPAC.Updater(#gs;
111
112 # $c->log->debug( $c->response->body );
113 }
114
115 }
116
117 =item internal_redirect
118
119 $c->internal_redirect( $action, @args );
120
121 =cut
122
123 sub internal_redirect {
124 my ( $c, $action, @args ) = @_;
125
126 unless ( defined $action ) {
127 $action = $c->action->namespace;
128 } else {
129 $action = join '/', $c->action->namespace, $action unless $action =~ m!^/!;
130 }
131 $c->res->body( $c->subreq( $action, @args ) );
132 return;
133 }
134
135
136 =back
137
138 =head1 AUTHOR
139
140 Dobrica Pavlinusic, C<< <dpavlin@rot13.org> >>
141
142 =head1 LICENSE
143
144 This library is free software, you can redistribute it and/or modify
145 it under the same terms as Perl itself.
146
147 =cut
148
149 1;

  ViewVC Help
Powered by ViewVC 1.1.26