comparison Lib/IMPL/Web/View/TTContext.pm @ 355:8dfb9df07d02

added support for the custom resolvers for the TTView
author sergey
date Thu, 17 Oct 2013 01:04:37 +0400
parents 9330835535b9
children 97131d500f16
comparison
equal deleted inserted replaced
354:9330835535b9 355:8dfb9df07d02
32 prefix 32 prefix
33 cache 33 cache
34 includes 34 includes
35 modules 35 modules
36 aliases 36 aliases
37 resolver
38 )) { 37 )) {
39 my $t = $prop; 38 my $t = $prop;
40 39
41 *{__PACKAGE__ . '::' . $prop} = sub { 40 *{__PACKAGE__ . '::' . $prop} = sub {
42 my $this = shift; 41 my $this = shift;
147 model => $model, 146 model => $model,
148 prefix => "" 147 prefix => ""
149 }; 148 };
150 } 149 }
151 150
151 $template ||= $info->{template};
152 $template = $template ? $this->find_template($template) : $this->find_template_for($info->{model}); 152 $template = $template ? $this->find_template($template) : $this->find_template_for($info->{model});
153 153
154 return $this->render( 154 return $this->render(
155 $template, 155 $template,
156 hashApply( 156 hashApply(
288 die ArgException->new(prefix => "the prefix must be specified") 288 die ArgException->new(prefix => "the prefix must be specified")
289 unless defined $prefix; 289 unless defined $prefix;
290 290
291 #TODO handle DOM models 291 #TODO handle DOM models
292 292
293 if (my $resolver = $this->resolver) { 293 if (my $res = $this->stash->get(['resolver', [$this,$prefix,$args]] ) ) {
294 return $this->$resolver($prefix,$args); 294 return $res;
295 } 295 }
296 296
297 my @comp = map { $_, 0 } grep length($_), split(/\.|\[(\d+)\]/, $prefix); 297 my @comp = map { $_, 0 } grep length($_), split(/\.|\[(\d+)\]/, $prefix);
298 298
299 return { 299 return {