diff 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
line wrap: on
line diff
--- a/Lib/IMPL/Web/QueryHandler/PageFormat.pm	Mon Mar 15 17:45:13 2010 +0300
+++ b/Lib/IMPL/Web/QueryHandler/PageFormat.pm	Tue Mar 16 17:36:13 2010 +0300
@@ -5,16 +5,19 @@
 
 use IMPL::Class::Property;
 use IMPL::Web::TDocument;
+use File::Spec;
 use Error qw(:try);
 
 BEGIN {
-	public property charsetTemplates => prop_all;
+	public property templatesCharset => prop_all;
+	public property templatesBase => prop_all;
 }
 
 sub CTOR {
 	my ($this) = @_;
 	
-	$this->charsetTemplates('utf-8') unless $this->charsetTemplates;
+	$this->templatesCharset('utf-8') unless $this->templatesCharset;
+	$this->templatesBase('.') unless $this->templatesBase;
 }
 
 sub Process {
@@ -23,7 +26,9 @@
 	my $doc = new IMPL::Web::TDocument();
 	
 	try {
-		$doc->loadFile ( $ENV{PATH_TRANSLATED}, $this->charsetTemplates );
+		my @path = split /\//, $ENV{PATH_TRANSLATED};
+		
+		$doc->loadFile ( File::Spec->catfile($this->templatesBase,@path), $this->templatesCharset );
 		
 		$action->response->contentType('text/html');
 		my $hOut = $action->response->streamBody;
@@ -34,4 +39,72 @@
 	};
 }
 
-1;
\ No newline at end of file
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+C<IMPL::Web::QueryHandler::PageFormat> - Выдача результатов в виде HTML страницы, построенной из шаблона.
+
+=head1 SYNOPSIS
+
+В файле конфигурации приложения
+
+=begin code xml
+
+<handlersQuery type="IMPL::Object::List">
+	<item type="IMPL::Web::QueryHandler::PageFormat">
+		<charsetTemplates>utf-8</charsetTemplates>
+	</item>
+</handlersQuery>
+
+=end code xml
+
+Программно
+
+=begin code
+
+my $app = new IMPL::Web::Application();
+$app->handlersQuery->Add(
+	new IMPL::Web::QueryHandler::PageFormat( charsetTemplates=> 'utf-8' );
+);
+
+=end
+
+=head1 DESCRIPTION
+
+Обработчик запроса для веб приложения. Загружает шаблон, путь к котрому берется
+из C<ENV{PATH_INFO}> относительно пути из свойства C<templatesBase>.
+
+Наследуется от C<IMPL::Web::QueryHandler> для реализации функционала
+обработчика запроса и переопределяет метод C<Process>.
+
+C<Serializable>
+
+=head1 MEMBERS
+
+=over
+
+=item C<CTOR(%props)>
+
+Создает новый экземпляр и заполняет свойства.
+
+=item C<[get,set] templatesCharset>
+
+Кодировка шаблонов. По умолчанию utf-8.
+
+=item C<[get,set] templatesBase>
+
+Каталог относительно которого ищется шаблон.
+
+=item C<[override] Process($action,$nextHandler)>
+
+Метод, переопределяющий C<IMPL::Web::QueryHandler->Process> и которому передается управление
+для выполнения действий.
+
+=back
+
+=cut
\ No newline at end of file