Mercurial > pub > Impl
comparison Lib/IMPL/Web/View/TTDocument.pm @ 192:a9faf883cdce
IMPL::Web::View refactoring
author | cin |
---|---|
date | Fri, 06 Apr 2012 16:22:38 +0400 |
parents | 78a18a2b6266 |
children | 8e8401c0aea4 |
comparison
equal
deleted
inserted
replaced
191:78a18a2b6266 | 192:a9faf883cdce |
---|---|
70 return $this->stash->get($name); | 70 return $this->stash->get($name); |
71 } | 71 } |
72 } | 72 } |
73 | 73 |
74 sub require { | 74 sub require { |
75 my ($this, $control) = @_; | 75 my ($this, $control, $nodeProps) = @_; |
76 | |
77 $nodeProps ||= {}; | |
78 $nodeProps->{document} = $this; | |
76 | 79 |
77 if (my $factory = $this->controls->{$control}) { | 80 if (my $factory = $this->controls->{$control}) { |
78 return $factory; | 81 return $factory; |
79 } else { | 82 } else { |
80 | 83 |
88 | 91 |
89 $factory = new IMPL::Web::View::TTFactory( | 92 $factory = new IMPL::Web::View::TTFactory( |
90 typeof IMPL::Web::View::TTControl, | 93 typeof IMPL::Web::View::TTControl, |
91 $template, | 94 $template, |
92 $ctx, | 95 $ctx, |
93 $opts | 96 $opts, |
97 { document => $this } | |
94 ); | 98 ); |
95 | 99 |
96 my @parts = split(/\/+/,$control); | 100 my @parts = split(/\/+/,$control); |
97 | 101 |
98 $this->controls->{$control} = $factory; | 102 $this->controls->{$control} = $factory; |
172 =item * Меню и т.п. | 176 =item * Меню и т.п. |
173 | 177 |
174 =back | 178 =back |
175 | 179 |
176 Скприт шаблона формирует структуру документа, затем сформированная структура форматируется в готовый документ. | 180 Скприт шаблона формирует структуру документа, затем сформированная структура форматируется в готовый документ. |
177 Процесс преобразования объектной модели в готовый документ может быть выполнена как вручную, так и при помощи | 181 Процесс форматирования объектной модели в готовый документ может быть выполнена как вручную, так и при помощи |
178 вспомогательного шаблона - обертки. Если у шаблона документа указан C<layout> в метаданных, то он будет | 182 вспомогательного шаблона - обертки. Если у шаблона документа указан C<layout> в метаданных, то он будет |
179 использован как шаблон для форматирования объектной модели, вывод самого шаблона будет проигнорирован. Если | 183 использован как шаблон для форматирования объектной модели, вывод самого шаблона будет проигнорирован. Если |
180 обертка не задана, то результатом будет вывод самого скрипта шаблона. | 184 обертка не задана, то результатом будет вывод самого скрипта шаблона. |
181 | 185 |
186 Использование объектной модели документа позволяет решить задачи по созданию элементов управления | |
187 контейнеров, у которых может быть сложное содежимое. Примером таких элементов могут быть формы, | |
188 внутри форм элементы управления могут группироваться. | |
189 | |
182 | 190 |
183 =head2 Порядок обработки документа | 191 =head2 Порядок обработки документа |
184 | 192 |
185 =over | 193 =over |
186 | 194 |