Mercurial > pub > Impl
diff Lib/IMPL/Web/View/TTControl.pm @ 234:2530d1bb9638
sync
author | sergey |
---|---|
date | Thu, 11 Oct 2012 20:11:45 +0400 |
parents | 5c82eec23bb6 |
children | 2904da230022 |
line wrap: on
line diff
--- a/Lib/IMPL/Web/View/TTControl.pm Thu Oct 11 04:53:08 2012 +0400 +++ b/Lib/IMPL/Web/View/TTControl.pm Thu Oct 11 20:11:45 2012 +0400 @@ -1,15 +1,28 @@ package IMPL::Web::View::TTControl; use strict; -use IMPL::DOM::Property qw(_dom); -use IMPL::lang qw(:declare ); - -use Template::Context(); use Scalar::Util qw(weaken); -use parent qw( - IMPL::DOM::Node -); +use IMPL::Const qw(:prop); +use IMPL::declare { + require => { + TTContext => 'Template::Context', + Exception => 'IMPL::Exception', + ArgumentException => '-IMPL::InvalidArgumentException' + }, + base => [ + 'IMPL::DOM::Node' => sub { + nodeName => $_[0], + %{ $_[3] || {} } + } + ], + props => [ + id => PROP_RO, + context => PROP_RO, + template => PROP_RO + ] +}; + { my $nextId = 1; @@ -18,15 +31,6 @@ } } - -BEGIN { - public _dom property id => PROP_ALL; - - public property context => PROP_GET | PROP_OWNERSET; - public property template => PROP_ALL; -} - - sub CTOR { my ($this,$name,$template,$context,$refProps) = @_; @@ -37,20 +41,12 @@ $this->id($name . "-" . _GetNextId()) unless $this->id; - weaken($this); # prevent cyclic references produces by the code below + weaken($this); # prevent cyclic references produced by the code below $context->stash->set('append', sub { $this->appendChild(@_); undef; } ); $context->stash->set('select', sub { $this->selectNodes(@_); } ); - } -our %CTOR = ( - 'IMPL::DOM::Node' => sub { - nodeName => $_[0], - %{ $_[3] || {} } - } -); - sub InitInstance { my ($this,$args) = @_; @@ -61,7 +57,7 @@ } } -sub renderBlock { +sub GetRenderBlock { $_[0]->template->blocks->{RENDER} || $_[0]->template; } @@ -70,7 +66,7 @@ $args = {} unless ref $args eq 'HASH'; - if(my $body = $this->renderBlock ) { + if(my $body = $this->GetRenderBlock ) { return $this->context->include( $body, { %$args, this => $this, template => $this->template, document => $this->document } ); } else { return "";