Вход:  Пароль:  
FreeSource: Мусорка/AltLinux?/Sisyphus?/Alterator?/templates ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия Мусорка/AltLinux/Sisyphus/Alterator/templates за 2006-11-02 10:33:53..

Шаблоны интерфейсов в FBI.

Основные принципы


Основная работа по созданию интерфейсов в FBI состоит в связывании бакендов с формами (основной вариант HTML-формы, но ничто не мешает работать с другими интерфейсами). Формы описываются при помощи так называемых шаблонов. Существует два основных приёма работы:
1. Связывание шаблона с URL. При обращении браузера по данному URL происходит запуск связанного с ним шаблона и генерация требуемых форм.
2. Регистрация шаблона по имени. При обращении браузера по данному URL происходит запрос бакенда-спутника (с префиксом template) с именем равным первой компоненте пути. Например при обращении по URL a/b/c запрашивается бакенд template-a. У бакенда выясняется (через вызов операции template) имя шаблона и параметры к нему после чего собственно и производится запуск требуемого шаблона и передаются ему требуемые параметры.


Замечание: путь / приравнивается к /index.
Замечание: при наличии двух вариантов одновременно система отдаёт предпочтение первому.


Второй способ удобен в случае когда администратор выполняет некоторую типовую задачу, совершенно не хочет задумываться о создании какого-либо интерфейсного шаблона, но отлаживать желает уже в некотором интерфейсе. Существуют два заранее подготовленных шаблона: object (для работы со свойствами объекта), list (для работы с группой объектов). В этом варианте работы возможно не создавать отдельного бакенда, а разместить обработку операции template и связанных с ней в основном бакенде и сделать на него символическую ссылку с именем template-<бакенд>.


Первый способ предпочителен на этапе создания законченного продукта с удобным дизайном пользовательского интерфейса. В этом случае вполне возможно что основной дизайн страниц выполняется отдельным человеком.


Возможно сочетание обоих способов работы, когда в особых случаях создаются специализированные формы, а в случае повторения интерфейсов делаются заранее готовые шаблоны.


Замечание: В связи с последним предложением – заказывайте шаблоны, если они будут чётко формализованные – сделаем и добавим в пакет.

Создание и регистрация шаблонов


Файл шаблона размещается в каталоге /usr/share/alterator/templates/. Описание шаблона представляет собой маленькую программу на языке програмирования Scheme (нет никаких проблем в будущих версиях сделать возможной разработку шаблонов на произвольных языках программирования)


Каждый шаблон представляет собой функцию, в результате исполнения которой получается строка – она и отдаётся в качестве ответа Web-браузеру.


Регистрация шаблона по адресу:


Каждая процедура <url-template-proc> принимает следующие параметры:


Регистрация шаблона по имени:


Каждая продедура <name-template-proc> принимает те же параметры что и <url-template-proc> и ещё один дополнительный:

Генерируем HTML


Как было сказано, результат каждой процедуры обработчика – генерация строк. В случае работы с HTML – соответственно надо сгенерировать содержимое Web-страницы.


Замечание: Все дальнейшие процедуры работают с XHTML, соответственно крайне рекомендуется проверять страницу с помощью xmllint прежде чем работать с ней дальше, fbi пока даёт не слишком вразумительный ответ в случае неправильного XML.


HTML – можно генерировать вручную, а можно воспользоваться накопленным опытом предыдущих поколений. Рассмотрим все эти варианты.
1. Использование функции format.

Полный аналог функции C printf – осуществляет форматированный вывод в строку. Синтаксис формата отличается от принятого в C, вместо % используется знак, возможны следующие варианты:

2. Использование функций html: и @:

Поскольку каждый раз рисовать открыающие и закрывающие теги очень не удобно, можно воспользоваться функцией html:. В качестве первого параметра передаётся имя тега, а далее передаются параметры и содержимое создаваемого контейнера. Параметры создаются с помощью фунеции @. Первый параметр этой функции – имя (символ), второй – значение (строка).

3. Использование семейства функций html:* :

Создавать html уже стало легче, но в лучших традициях Scheme для самых распространённых элементов существуют заранее подготовленные функции:

Замечание: На этом количестве функций можно не останавливаться. Если будут какие пожелания – заказывайте.

4. Использование html-шаблонов.


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]