Mercurial > pub > Impl
comparison Lib/IMPL/Web/View/TTView.pm @ 359:833e663796c4
TTView: added view variable to pass rendering context between controls
TTView: display function renamed to display_for
WebResource: resources now marked with roles for searching a desired resource by a role in the resource chain
author | sergey |
---|---|
date | Mon, 25 Nov 2013 02:19:31 +0400 |
parents | 9330835535b9 |
children | d5c8b955bf8d |
comparison
equal
deleted
inserted
replaced
358:248f95c1762a | 359:833e663796c4 |
---|---|
1 package IMPL::Web::View::TTView; | 1 package IMPL::Web::View::TTView; |
2 use strict; | 2 use strict; |
3 | 3 |
4 use IMPL::lang qw(hashMerge); | 4 use JSON; |
5 use IMPL::lang qw(hashMerge is); | |
5 use IMPL::Const qw(:prop); | 6 use IMPL::Const qw(:prop); |
6 use IMPL::declare { | 7 use IMPL::declare { |
7 require => { | 8 require => { |
8 Context => 'IMPL::Web::View::TTContext' | 9 Context => 'IMPL::Web::View::TTContext', |
10 Loader => 'IMPL::Code::Loader' | |
9 }, | 11 }, |
10 base => [ | 12 base => [ |
11 'IMPL::Object' => undef, | 13 'IMPL::Object' => undef, |
12 'IMPL::Object::Autofill' => '@_', | 14 'IMPL::Object::Autofill' => '@_', |
13 'IMPL::Object::Serializable' => undef | 15 'IMPL::Object::Serializable' => undef |
42 return $ctx->invoke_environment( | 44 return $ctx->invoke_environment( |
43 sub { | 45 sub { |
44 return shift->render( | 46 return shift->render( |
45 $layout, | 47 $layout, |
46 hashMerge( | 48 hashMerge( |
47 $args, | |
48 { | 49 { |
49 content => sub { | 50 content => sub { |
50 $ctx->invoke_environment( | 51 $ctx->invoke_environment( |
51 sub { | 52 sub { |
52 return shift->display_model($model,$template,$args); | 53 return shift->display_model($model,$template); |
53 }, | 54 }, |
54 { | 55 { |
55 base => $this->viewBase | 56 base => $this->viewBase |
56 } | 57 } |
57 ) | 58 ) |
65 } | 66 } |
66 ); | 67 ); |
67 } else { | 68 } else { |
68 return $ctx->invoke_environment( | 69 return $ctx->invoke_environment( |
69 sub { | 70 sub { |
70 return shift->display_model($model,$template,$args); | 71 return shift->display_model($model,$template); |
71 }, | 72 }, |
72 { | 73 { |
73 base => $this->viewBase | 74 base => $this->viewBase |
74 } | 75 } |
75 ); | 76 ); |
76 } | 77 } |
77 },hashMerge( | 78 },hashMerge( |
78 { | 79 $this->globals, |
79 includes => scalar($this->includes), | 80 hashMerge( |
80 tt_ext => $this->tt_ext, | 81 $args, |
81 document => {}, | 82 { |
82 debug => sub { | 83 includes => scalar($this->includes), |
83 warn @_; | 84 tt_ext => $this->tt_ext, |
85 debug => sub { | |
86 warn @_; | |
87 }, | |
88 is => sub { | |
89 return is(shift,shift); | |
90 }, | |
91 import => sub { | |
92 return Loader->safe->Require(shift); | |
93 }, | |
94 toJSON => sub { | |
95 return JSON->new()->utf8->pretty->encode(shift); | |
96 } | |
84 } | 97 } |
85 }, | 98 ) |
86 $this->globals | |
87 ) | 99 ) |
88 ); | 100 ); |
89 } | 101 } |
90 | 102 |
91 1; | 103 1; |