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