Mercurial > pub > Impl
comparison Lib/IMPL/Web/View/TTDocument.pm @ 311:d3b5a67ad2e8
sync
author | cin |
---|---|
date | Mon, 22 Apr 2013 03:42:53 +0400 |
parents | 0a9d51cf6dfd |
children | ec4ec1f056fe |
comparison
equal
deleted
inserted
replaced
310:0a9d51cf6dfd | 311:d3b5a67ad2e8 |
---|---|
22 return $template, $ctx, $vars; # context | 22 return $template, $ctx, $vars; # context |
23 } | 23 } |
24 ], | 24 ], |
25 props => [ | 25 props => [ |
26 layout => PROP_RW, | 26 layout => PROP_RW, |
27 layoutBase => PROP_RW, | |
28 registry => PROP_RW, | |
27 baseLocation => PROP_RW | 29 baseLocation => PROP_RW |
28 ] | 30 ] |
29 }; | 31 }; |
30 | 32 |
31 sub CTOR { | 33 sub CTOR { |
32 my ($this,$template,$ctx,$vars) = @_; | 34 my ($this,$template,$ctx) = @_; |
33 | 35 |
34 $this->layout( $template->layout ) unless $this->layout; | 36 $this->layout( $template->layout ) unless $this->layout; |
35 $this->title( $template->title ) unless $this->title; | 37 $this->title( $template->title ) unless $this->title; |
36 | 38 my $doc = $this; |
37 $this->context->stash->update($vars) | 39 weaken($doc); |
38 if ref $vars eq 'HASH'; | 40 $this->registry->context->stash->update({ |
41 document => sub { $doc } | |
42 }); | |
39 } | 43 } |
40 | 44 |
41 sub Render { | 45 sub Render { |
42 my ($this,$args) = @_; | 46 my ($this,$args) = @_; |
43 | 47 |
44 $args ||= {}; | 48 $args ||= {}; |
45 $args->{document} = $this; | 49 $args->{document} = $this; |
46 | 50 |
47 $this->context->stash->update({ | 51 #$this->context->stash->update({ |
48 document => sub { $this } | 52 # document => sub { $this } |
49 }); | 53 #}); |
50 | 54 |
51 my $text = eval { | 55 my $text = eval { |
52 | 56 |
53 if ($this->layout) { | 57 if ($this->layout) { |
54 my $layout = $this->registry->Require(join('/',$this->layoutBase, $this->layout))->new(); | 58 my $layout = $this->registry->Require(join('/',$this->layoutBase, $this->layout))->new(); |
64 } | 68 } |
65 }; | 69 }; |
66 | 70 |
67 my $e = $@; | 71 my $e = $@; |
68 | 72 |
69 undef $this; | 73 # undef $this; |
70 | 74 |
71 if ($e) { | 75 if ($e) { |
72 die $e; | 76 die $e; |
73 } else { | 77 } else { |
74 return $text; | 78 return $text; |