Mercurial > pub > Impl
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