# HG changeset patch # User wizard # Date 1269966696 -14400 # Node ID 915df8fcd16f3d3b3066a6d1e65e575ed4a42c88 # Parent 84aa8c395fce0e13350e5c6040a61b20b2f816eb docs small fixes diff -r 84aa8c395fce -r 915df8fcd16f Lib/IMPL/DOM/Node.pm --- a/Lib/IMPL/DOM/Node.pm Mon Mar 29 17:40:06 2010 +0400 +++ b/Lib/IMPL/DOM/Node.pm Tue Mar 30 20:31:36 2010 +0400 @@ -229,7 +229,9 @@ } else { delete $this->{$parentNode}; - $newOwner = 0; + + #keep document + $newOwner = $this->{$document}; } if (($this->{$document}||0) != $newOwner) { @@ -273,3 +275,52 @@ } 1; + +__END__ + +=pod + +=head1 NAME + +C Элемент DOM модели + +=head1 DESCRIPTION + +Базовый узел DOM модели. От него можно наследовать другие элементы DOM модели. + +=head1 MEMBERS + +=head2 PROPERTIES + +=over + +=item C<[get] nodeName> + +Имя узла. Задается при создании. + +=item C<[get] document> + +Документ к которому принадлежит узел. Задается при поздании узла. + +=item C<[get] isComplex> + +Определяет является ли узел сложным (тоесть есть ли дети). + +C - есть, C - нет. + +=item C<[get,set] nodeValue> + +Значение узла, обычно простой скаляр, но ничто не мешает туда +устанавливать любое значение. + +=item C<[get,list] childNodes> + +Список детей, является списокм C. + +=item C<[get] parentNode> + +Ссылка на родительский элемент, если таковой имеется. + +=head2 METHODS + +=cut \ No newline at end of file diff -r 84aa8c395fce -r 915df8fcd16f Lib/IMPL/Web/QueryHandler/SecureCookie.pm --- a/Lib/IMPL/Web/QueryHandler/SecureCookie.pm Mon Mar 29 17:40:06 2010 +0400 +++ b/Lib/IMPL/Web/QueryHandler/SecureCookie.pm Tue Mar 30 20:31:36 2010 +0400 @@ -13,25 +13,33 @@ sub CTOR { my ($this) = @_; - + $this->salt('DeadBeef') unless $this->salt; } sub Process { my ($this,$action,$nextHandler) = @_; + return undef unless $nextHandler; + my $method = $action->query->cookie('method') || 'simple'; if ($method eq 'simple') { my $sid = $action->query->cookie('sid'); - my $cookie = $action->query->cookie('cookie'); + my $cookie = $action->query->cookie('sdata'); + my $sign = $action->query->cookie('sign'); - if ($action->query->cookie('sign') eq md5_hex( - $this->salt, - $sid, - $cookie, - $this->salt - ) ) { + if ( + $sid and + $cookie and + $sign and + $sign eq md5_hex( + $this->salt, + $sid, + $cookie, + $this->salt + ) + ) { my $context = $action->application->security->Session( id => $sid @@ -50,5 +58,35 @@ } } +1; -1; \ No newline at end of file +__END__ + +=pod + +=head1 NAME + +C + +=head1 DESCRIPTION + +C + +Возобновляет сессию пользователя на основе информации переданной через Cookie. + +Использует механизм подписи информации для проверки верности входных данных перед +началом каких-либо действий. + +Данный обработчик возвращает результат выполнения следдующего обработчика. + +=head1 MEMBERS + +=over + +=item C<[get,set] salt> + +Скаляр, использующийся для подписи данных. + +=back + +=cut \ No newline at end of file diff -r 84aa8c395fce -r 915df8fcd16f Lib/IMPL/Web/TDocument.pm --- a/Lib/IMPL/Web/TDocument.pm Mon Mar 29 17:40:06 2010 +0400 +++ b/Lib/IMPL/Web/TDocument.pm Tue Mar 30 20:31:36 2010 +0400 @@ -2,7 +2,7 @@ use strict; use warnings; -use base qw(IMPL::DOM::Node IMPL::Object::Disposable); +use base qw(IMPL::DOM::Document IMPL::Object::Disposable); use Template::Context; use Template::Provider; use IMPL::Class::Property; @@ -15,7 +15,7 @@ } our %CTOR = ( - 'IMPL::DOM::Node' => sub { nodeName => 'document' } + 'IMPL::DOM::Document' => sub { nodeName => 'document' } ); sub Provider { @@ -100,6 +100,8 @@ =head1 SYNOPSIS +=begin code + // create new document my $doc = new IMPL::Web::TDocument; @@ -109,6 +111,8 @@ // render file print $doc->Render(); +=end code + =head1 DESCRIPTION Документ, основанный на шаблоне Template::Toolkit. Позволяет загрузить шаблон,