diff Lib/IMPL/Web/AutoLocator.pm @ 229:47f77e6409f7

heavily reworked the resource model of the web application: *some ResourcesContraact functionality moved to Resource +Added CustomResource *Corrected action handlers
author sergey
date Sat, 29 Sep 2012 02:34:47 +0400
parents 292226770180
children 5c82eec23bb6
line wrap: on
line diff
--- a/Lib/IMPL/Web/AutoLocator.pm	Thu Sep 13 17:55:01 2012 +0400
+++ b/Lib/IMPL/Web/AutoLocator.pm	Sat Sep 29 02:34:47 2012 +0400
@@ -1,7 +1,7 @@
 package IMPL::Web::AutoLocator;
 use strict;
 
-use IMPL::lang qw(:declare :constants :hash);
+use IMPL::lang qw(:constants :hash);
 use URI;
 use URI::Escape;
 use IMPL::declare {
@@ -13,17 +13,16 @@
         'IMPL::Object' => undef,
         'IMPL::Object::Autofill' => '@_',
         'IMPL::Object::Serializable' => '@_'
+	],
+	props => [
+	   base => PROP_GET | PROP_OWNERSET,
+	   view => PROP_ALL,
+	   query => PROP_ALL,
+	   hash => PROP_ALL
 	]
 };
 
-BEGIN {
-	public property base => PROP_GET | PROP_OWNERSET;
-	public property view => PROP_ALL;
-	public property query => PROP_ALL;
-	public property hash => PROP_ALL;
-}
-
-sub Fetch {
+sub Child {
 	my $this = shift;
 	my $child = shift or die ArgumentException->new("a child resource identifier is required");
 	die ArgumentException->new("a child resource can't be a reference") if ref $child;
@@ -72,7 +71,7 @@
 	return if $method eq 'DESTROY';
 	
 	my $this = shift;
-	return $this->Fetch($method,@_);
+	return $this->Child($method,@_);
 }
 
 
@@ -83,14 +82,14 @@
 
 =head1 NAME
 
-=head1 SYNOPSIS
+C<IMPL::Web::AutoLocator> - Обертка вокруг адреса ресурса.
 
-C<IMPL::Web::AutoLocator> - Обертка вокруг адреса ресурса.
+=head1 SYNOPSIS
 
 =begin code
 
 use IMPL::require {
-	Locator => 'IMPL::Web::Locator'
+	Locator => 'IMPL::Web::AutoLocator'
 };
 
 my $bugTracker = Locator->new(base => "http://myhost.org/bugzilla")->SetView("cgi");
@@ -101,27 +100,80 @@
 
 my $page = $wiki->Main->HowTo;
 
+my $images = Locator->new(base => "http://static.myhost.org/images", view => "png");
+
+my $editIco = $images->icons->small->edit;
+
 =end code
 
 =head1 DESCRIPTION
 
-Для удобстав навигации по ресурсам, полностью отражает классическую структуру иерархически
-организованных ресурсов. позволяет гибко работать с параметрами запроса и хешем. Для постоты
-чтения реализует метод C<AUTOLOAD> для доступа к дочерним ресурсам.
+Для удобстав навигации по ресурсам, полностью отражает классическую структуру
+иерархически организованных ресурсов. позволяет гибко работать с параметрами
+запроса и хешем. Для постоты чтения реализует метод C<AUTOLOAD> для доступа
+к дочерним ресурсам.
 
 =head1 MEMBERS
 
-=head2 C<CTOR(base => $url,view => $extension, query => $hashQuery, hash => $fragment)>
+=head2 C<CTOR(%args)>
+
+Создает новый объект расположение. Позволяет задать путь, расширение, параметры
+запроса и фрагмент ресурса.
+
+=over
+
+=item * C<base>
+
+Строка с базовым адресом для дочерних ресурсов.
+
+=item * C<view>
 
-Создает новый объект расположение. Позволяет задать путь, расширение, параметры запроса и фрагмент ресурса.
+Задает суфикс, обозначающий представление ресурса, аналогично расширению у
+файлов. Данный суффикс может использоваться контроллером для выбора
+представления ресурса.
+
+=item * C<query>
+
+Ссылка на хеш с параметрами запроса
+
+=item * C<hash>
+
+Часть C<uri> обозначающая фрагмент документа (все, что идет после символа C<#>).
+
+=back
 
-=head2 C<Fetch($child[,$query])>
+=head2 C<Child($child[,$query])>
+
+Получает расположение дочернего ресурса. При этом cоздается новый объект адреса ресурса.
+
+=head2 C<SetView($view)>
+
+Позволяет указать представление (расширение) у текущего адреса ресурса. Изменяет
+представление и возвращает измененный адрес ресурса.
+
+=head2 C<[get]base>
+
+Базовый адрес, относительно которого будут получены дочерние ресурсы.
 
-Получает расположение дочернего ресурса. При этом моздается новый объект адреса ресурса.
+=head2 C<[get,set]view>
+
+Представление для ресурсов, аналогично расширению у файлов.
+
+=head2 C<[get,set]query>
+
+Ссылка на хеш с параметрами для C<GET> запроса.
+
+=head2 C<[get,set]hash>
+
+Часть адреса ресурса, отвечающая за фрагмент. 
+
+=head2 C<[get]url>
+
+Объект C<URI> для текущего адреса.
 
 =head2 C<AUTLOAD>
 
-Перенаправляет вызовы методов в метод C<Fetch> передавая первым параметром имя метода.
+Перенаправляет вызовы методов в метод C<Child> передавая первым параметром имя метода.
 
 =cut