Mercurial > pub > Impl
comparison Lib/IMPL/Web/QueryHandler/PageFormat.pm @ 65:2840c4c85db8
Application configuration improvements
Documentation
author | wizard |
---|---|
date | Tue, 16 Mar 2010 17:36:13 +0300 |
parents | 259cd3df6e53 |
children | 9d24db321029 |
comparison
equal
deleted
inserted
replaced
64:259cd3df6e53 | 65:2840c4c85db8 |
---|---|
3 | 3 |
4 __PACKAGE__->PassThroughArgs; | 4 __PACKAGE__->PassThroughArgs; |
5 | 5 |
6 use IMPL::Class::Property; | 6 use IMPL::Class::Property; |
7 use IMPL::Web::TDocument; | 7 use IMPL::Web::TDocument; |
8 use File::Spec; | |
8 use Error qw(:try); | 9 use Error qw(:try); |
9 | 10 |
10 BEGIN { | 11 BEGIN { |
11 public property charsetTemplates => prop_all; | 12 public property templatesCharset => prop_all; |
13 public property templatesBase => prop_all; | |
12 } | 14 } |
13 | 15 |
14 sub CTOR { | 16 sub CTOR { |
15 my ($this) = @_; | 17 my ($this) = @_; |
16 | 18 |
17 $this->charsetTemplates('utf-8') unless $this->charsetTemplates; | 19 $this->templatesCharset('utf-8') unless $this->templatesCharset; |
20 $this->templatesBase('.') unless $this->templatesBase; | |
18 } | 21 } |
19 | 22 |
20 sub Process { | 23 sub Process { |
21 my ($this,$action,$nextHandler) = @_; | 24 my ($this,$action,$nextHandler) = @_; |
22 | 25 |
23 my $doc = new IMPL::Web::TDocument(); | 26 my $doc = new IMPL::Web::TDocument(); |
24 | 27 |
25 try { | 28 try { |
26 $doc->loadFile ( $ENV{PATH_TRANSLATED}, $this->charsetTemplates ); | 29 my @path = split /\//, $ENV{PATH_TRANSLATED}; |
30 | |
31 $doc->loadFile ( File::Spec->catfile($this->templatesBase,@path), $this->templatesCharset ); | |
27 | 32 |
28 $action->response->contentType('text/html'); | 33 $action->response->contentType('text/html'); |
29 my $hOut = $action->response->streamBody; | 34 my $hOut = $action->response->streamBody; |
30 | 35 |
31 print $hOut $doc->Render(); | 36 print $hOut $doc->Render(); |
33 $doc->Dispose; | 38 $doc->Dispose; |
34 }; | 39 }; |
35 } | 40 } |
36 | 41 |
37 1; | 42 1; |
43 | |
44 __END__ | |
45 | |
46 =pod | |
47 | |
48 =head1 NAME | |
49 | |
50 C<IMPL::Web::QueryHandler::PageFormat> - Выдача результатов в виде HTML страницы, построенной из шаблона. | |
51 | |
52 =head1 SYNOPSIS | |
53 | |
54 В файле конфигурации приложения | |
55 | |
56 =begin code xml | |
57 | |
58 <handlersQuery type="IMPL::Object::List"> | |
59 <item type="IMPL::Web::QueryHandler::PageFormat"> | |
60 <charsetTemplates>utf-8</charsetTemplates> | |
61 </item> | |
62 </handlersQuery> | |
63 | |
64 =end code xml | |
65 | |
66 Программно | |
67 | |
68 =begin code | |
69 | |
70 my $app = new IMPL::Web::Application(); | |
71 $app->handlersQuery->Add( | |
72 new IMPL::Web::QueryHandler::PageFormat( charsetTemplates=> 'utf-8' ); | |
73 ); | |
74 | |
75 =end | |
76 | |
77 =head1 DESCRIPTION | |
78 | |
79 Обработчик запроса для веб приложения. Загружает шаблон, путь к котрому берется | |
80 из C<ENV{PATH_INFO}> относительно пути из свойства C<templatesBase>. | |
81 | |
82 Наследуется от C<IMPL::Web::QueryHandler> для реализации функционала | |
83 обработчика запроса и переопределяет метод C<Process>. | |
84 | |
85 C<Serializable> | |
86 | |
87 =head1 MEMBERS | |
88 | |
89 =over | |
90 | |
91 =item C<CTOR(%props)> | |
92 | |
93 Создает новый экземпляр и заполняет свойства. | |
94 | |
95 =item C<[get,set] templatesCharset> | |
96 | |
97 Кодировка шаблонов. По умолчанию utf-8. | |
98 | |
99 =item C<[get,set] templatesBase> | |
100 | |
101 Каталог относительно которого ищется шаблон. | |
102 | |
103 =item C<[override] Process($action,$nextHandler)> | |
104 | |
105 Метод, переопределяющий C<IMPL::Web::QueryHandler->Process> и которому передается управление | |
106 для выполнения действий. | |
107 | |
108 =back | |
109 | |
110 =cut |