comparison Lib/IMPL/Web/View/TTControl.pm @ 189:08015e2803f1

IMPL::Vew::Web - fixed memory leaks, more tests
author cin
date Wed, 04 Apr 2012 02:49:45 +0400
parents 029c9610528c
children 78a18a2b6266
comparison
equal deleted inserted replaced
188:029c9610528c 189:08015e2803f1
34 $this->template( $template ) or die new IMPL::ArgumentException("A template is required"); 34 $this->template( $template ) or die new IMPL::ArgumentException("A template is required");
35 $this->context( $context ) or die new IMPL::ArgumentException("A context is required"); 35 $this->context( $context ) or die new IMPL::ArgumentException("A context is required");
36 36
37 if ( my $ctor = $template->blocks->{CTOR} ) { 37 if ( my $ctor = $template->blocks->{CTOR} ) {
38 $context->process($ctor, { this => $this } ); 38 $context->process($ctor, { this => $this } );
39 $this->templateVars('this',undef); 39 $context->stash->set('this',undef);
40 } 40 }
41 41
42 $this->id($name . "-" . _GetNextId()) unless $this->id; 42 $this->id($name . "-" . _GetNextId()) unless $this->id;
43 43
44 } 44 }
48 nodeName => $_[0], 48 nodeName => $_[0],
49 %{ $_[3] || {} } 49 %{ $_[3] || {} }
50 } 50 }
51 ); 51 );
52 52
53 sub templateVars {
54 my $this = shift;
55 my $name = shift;
56
57 if (@_) {
58 return $this->context->stash->set($name, shift);
59 } else {
60 return $this->context->stash->get($name);
61 }
62 }
63
64 sub renderBlock { 53 sub renderBlock {
65 $_[0]->template->blocks->{RENDER}; 54 $_[0]->template->blocks->{RENDER};
66 } 55 }
67 56
68 sub Render { 57 sub Render {
69 my ($this,$args) = @_; 58 my ($this,$args) = @_;
70 59
71 $args = {} unless ref $args eq 'HASH'; 60 $args = {} unless ref $args eq 'HASH';
72 61
73 if(my $body = $this->renderBlock ) { 62 if(my $body = $this->renderBlock ) {
74 return $this->context->include( $body, { %$args, this => $this, template => $this->template } ); 63 return $this->context->include( $body, { %$args, this => $this, template => $this->template, document => $this->document } );
75 } else { 64 } else {
76 return ""; 65 return "";
77 } 66 }
78 } 67 }
79 68