diff Lib/IMPL/Web/View/TTDocument.pm @ 195:7a920771fd8e

IMPL::Web::View changed document layout handling, docs, examples
author cin
date Wed, 11 Apr 2012 17:50:33 +0400
parents 4d0e1962161c
children 292226770180
line wrap: on
line diff
--- a/Lib/IMPL/Web/View/TTDocument.pm	Tue Apr 10 20:08:29 2012 +0400
+++ b/Lib/IMPL/Web/View/TTDocument.pm	Wed Apr 11 17:50:33 2012 +0400
@@ -117,7 +117,7 @@
     
     if ($this->layout) {
         $output = $this->context->include(
-            $this->loader->template($this->layout),
+            $this->loader->layout($this->layout),
             {
                 content => sub { $output ||= $this->RenderContent($args); },
                 this => $this,
@@ -182,9 +182,9 @@
 использован как шаблон для форматирования объектной модели, вывод самого шаблона будет проигнорирован. Если
 обертка не задана, то результатом будет вывод самого скрипта шаблона.
 
-Использование объектной модели документа позволяет решить задачи по созданию элементов управления
-контейнеров, у которых может быть сложное содежимое. Примером таких элементов могут быть формы,
-внутри форм элементы управления могут группироваться.
+Использование объектной модели документа позволяет решить задачи по созданию контейнеров,
+у которых может быть сложное содежимое. Примером таких элементов могут быть формы,
+внутри форм элементы управления также могут группироваться.
 
 =head2 Элементы управления (компоненты)
 
@@ -198,33 +198,33 @@
 форматиорвания содержимого, фабрика связывает шаблон и класс элемента управления, для чего при загрузке
 шаблона используется свойство C<type> из метаданных. Фабрика загружается в документ при том только один
 раз, повторные загрузки фабрики возвращают уже загруженную. Для загрузки фабрики используется метод
-C<require()>. 
-
+C<require()> с указанием элемента управления. 
 
 =head2 Порядок обработки документа
 
+Построение представления данных состоит из двух этапов
+
 =over
 
-=item 1 Создается документ при помощи метода C<TTLoader::document()>
+=item 1 Создание объектной модели документа. На данном этапе создаются все элементы управления. 
 
-=item 1 При создании документа (в конструкторе), происходит выполнение блока C<CTOR>
-
-=item 1 При вызове метода C<TTDocument::Render()> устанавливаются переменные C<this>, C<document>
-и шаблон обрабатывается при помощи метода C<process()> контекста документа.
+=item 1 Преобразование объектной модели в конечнное представление. На данном этапе происходит
+форматирование документа.
 
 =back
 
+
 =head2 Загрузка элемента управления
 
 =over
 
 =item 1 C<TInput = require('my/org/input')>
 
-=item 1 Загружает шаблон C<my/org/input.tt>
+=item 1 Загружается шаблон C<my/org/input.tt>
 
-=item 1 Создает фабрику элементов управления с собственным контекстом, унаследованным от контекст документа.
+=item 1 Создается фабрика элементов управления с собственным контекстом, унаследованным от контекст документа.
 
-=item 1 Выполняет шаблон в пространстве имен фабрики
+=item 1 При первом создании элемента управления фабрика инициализируется выполнением блока C<INIT>.
 
 =back
 
@@ -234,13 +234,11 @@
 
 =item 1 C<< TInput.new('login') >>
 
-=item 1 Если это первый элемент управления, то выполняетя статический конструктор в контексте фабрики
-
 =item 1 Создается новый дочерний контекст к контексту фабрики
 
 =item 1 Создается экземпляр элемента управления
 
-=item 1 Выполняется блок конструктора в контексте элемента управления, параметр C<this> имеет значение
+=item 1 Выполняется блок конструктора C<CTOR> в контексте элемента управления, параметр C<this> имеет значение
 нового экземпляра элемента управления  
 
 =back
@@ -249,10 +247,103 @@
 
 =over
 
-=item C<CTOR($template, %options)>
+=item C<CTOR($template, $contextOpts, $loader[, $vars])>
+
+Создает экземпляр документа с указанным шаблоном и параметрами.
+
+=over
+
+=item C<$template>
+
+C<Template::Document> шаблон документа.
+
+=item C<$contextOpts>
 
-Создает экземпляр документа с указанным шаблоном и параметрами, параметры 
+C<HASH> Параметры контекста C<Template::Context> для документа. Эти параметры будут сохранены
+в свойстве C<opts>, а также на их основе будет создан контекст текщего документа. Как правило
+эти параметы задаются загрузчиком документа C<IMPL::Web::View::TTLoader>, таким образом, что
+C<Template::Stash> создаваемого контекста наследует переменные из контекста загрузчика.
+
+=item C<$loader>
+
+C<IMPL::Web::View::TTLoader> загрузчик, который будет использоваться для загрузки элементов управления,
+а также для получения обертки, заданной в свойстве документа C<layout>.
+
+=item C<$vars>
+
+C<HASH> Необязательный параметр. переменные которые будут переданы в блок конструктора C<INIT>.
+Как правило они используются для передачи данных для построения документа 
+
+=back 
 
 =back
 
+=over
+
+=item C<templateVars($name[,$newValue])>
+
+Получает или задает переменную для шаблона документа. Имя переменнной может быть составным,
+например C<'my.var.name'>, см. C<Template::Stash::set()>.
+
+=item C<require($controlName)>
+
+Загружает фабрику элемента управления, если она уже была загружена, возвращает на нее ссылку.
+При загрузки фабрики для нее создается собственный контекст на основе параметров из свойства
+C<opts> и ее пространство имен наследуется от пространства имен документа из свойства C<stash>.
+
+=item C<Render($vars)>
+
+Выполняет блок C<renderBlock> документа для получения конечного представления, C<$vars>
+содержит переменные для блока.
+
+=item C<RenderContent($vars)>
+
+Выполняет шаблон документа для получения представления содержимого, в отличии от
+метода C<Render> не использует обертку указанную в свойстве C<layout>, если обертка
+не указана, то эти методы идентичны.
+
+=item C<[get,set]layout>
+
+Обертка, которая будет использована для построения представления документа. В обертке
+будет доступна специальная переменная C<content>, при обращении к которой будет B<выполнен>
+метод C<RenderContent()> и возвращен результат его работы. Для получения шаблона обертки
+используется загрузчик из свойства C<loader>.
+
+=item C<[get]opts>
+
+Параметры контекста, используются для создания контекстов фабрик элементов управления.
+
+=item C<[get]loader>
+
+Загрузчик, используется для загрузки шаблонов фабрик элементов управления и обертки.
+
+=item C<[get]controls>
+
+C<HASH> Коллекция загруженных фабрик элементов управления, ключем является
+квалифицированное имя элемента управления.
+
+=item C<[get]stash>
+
+C<Template::Stash> Пространство имен документа, оно используется как родительское
+для пространств имен загружаемых фабрик элементов управления. 
+
+=back
+
+=head1 TEMPLATES
+
+=begin text
+
+[%META layout='default'%]
+[% BLOCK CTOR;
+    section('top','TOP');
+    section('bottom','BOTTOM');
+    section('client','CLIENT');
+END %]
+[% BLOCK TOP;
+    TMenu = require('my/org/Menu');
+    append(TMenu.new());
+END %]
+
+=end
+
 =cut
\ No newline at end of file