comparison Lib/IMPL/Web/View/TTDocument.pm @ 267:bbc0da7ef90e

*IMPL::Web::View refactoring
author cin
date Thu, 17 Jan 2013 02:39:44 +0400
parents 0f59b2de72af
children 546957c50a36
comparison
equal deleted inserted replaced
266:89179bb8c388 267:bbc0da7ef90e
73 return $this->stash->get($name); 73 return $this->stash->get($name);
74 } 74 }
75 } 75 }
76 76
77 sub RequireControl { 77 sub RequireControl {
78 my ($this, $control, $nodeProps) = @_; 78 my ($this, $control) = @_;
79
80 $nodeProps ||= {};
81 $nodeProps->{document} = $this;
82 79
83 if (my $factory = $this->controls->{$control}) { 80 if (my $factory = $this->controls->{$control}) {
84 return $factory; 81 return $factory;
85 } else { 82 } else {
86 83
87 my $path = $control; 84 my $path = $control;
85
88 if ( my $template = $this->loader->template($path) ) { 86 if ( my $template = $this->loader->template($path) ) {
89 my $opts = { %{$this->opts} }; 87 my $opts = { %{$this->opts} };
90 88
91 # factory will create a clone of the stash 89 # factory will create a clone of the stash
92 # $opts->{STASH} = $this->stash->clone(); 90 # $opts->{STASH} = $this->stash->clone();
95 93
96 $factory = new IMPL::Web::View::TTFactory( 94 $factory = new IMPL::Web::View::TTFactory(
97 $template->class || TTControl, 95 $template->class || TTControl,
98 $template, 96 $template,
99 $ctx, 97 $ctx,
100 $opts 98 $opts,
99 join( '/', splice( @{[split(/\//,$path)]}, 0, -1 ) )
101 ); 100 );
102 101
103 if ($template->class) { 102 if ($template->class) {
104 Loader->safe->Require($template->class); 103 Loader->safe->Require($template->class);
105 } 104 }