Вход:  Пароль:  
FreeSource: AltLinux/Sisyphus/Alterator/rails ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия AltLinux/Sisyphus/Alterator/rails за 2006-10-26 15:51:36..

Alterator on rails

(alterator fbi)


Меня часто спрашивали, а возможно ли работать с alterator, не занимаясь написанием интерфейсов на Scheme.
Отвечаю. Да, теперь это возможно. Пока работает только для html, но вполне возможно что появится реализация для чистого Qt.


Распределение обязанностей участников проекта становится следующим:


Давайте совместно пройдём все эти шаги и поймём как всё делается:

1. Администратор


Пусть у нас есть бакенд управления пользователями, который предоставляет следующую модель:
/users – пользователи системы
/users/<name> – конкректный пользователь системы


Свойства каждого объекта пользователя:


Возможно протестировать свой модуль при помощи интерфейса командной строки:



При использовании пакета alterator-fbi, возможна прямая работа (и отладка) бакенда через html-интерфейс.
Чтобы механизм, заключённый в alterator-fbi смог понять как надо отображать тот или иной бакенд
(кто есть объект, а кто список объектов), ему надо немного помочь.


Для каждого бакенда с именем <бакенд>, который мы желаем видеть в html интерфейсе, создаём парный бакенд с именем «template-<бакенд>". Он и будет отвечать на все вопросы по отображению своего напарника.


Для users, бакенд template-users, будет выглядеть примерно следующим образом:


Как видите, это самый обыкновенный бакенд, который отвечает на вопросы template и info.
Вопрос template, самый главный. В примере с users мы говорим, что:


Вопрос info, дополнительный. Он может вообще отсутствовать, всё зависит от того что мы попросили в разделе “template”.
В данном случае мы просто перечисляем поля объекта, с которыми хотели бы работать через html-интерфейс.


Для каждого поля сообщается имя поля в команде woo (например home для получения значения домашнего каталога пользователя), а также информация о типе поля. Возможные типы:


Вот в общем-то и всё что требуется от администратора. После того как запускается alterator с раскладкой fbi.layout (alterator -c fbi.layout),
можно направляться по адресу "http://hostname/fcgi-bin/alterator-template.scm/users" и работать с бакендом.


Обратите внимание, что окончание пути совпадает именем объекта внутри woo, например объекту '/users/test' соответствует адрес
http://hostname/fcgi-bin/alterator-template.scm/users/test.


Сразу же вы получаете возможность и редактировать и создавать и удалять объекты. То есть пользуясь готовыми интерфейсными шаблонами администратор может, при желании, отлаживать работу бакенда прямо в том виде как он будет потом работать на сервере.

Дизайнер


Интерфейсные шаблоны по умолчанию совсем не плохо, но людям свойственно стремиться к прекрасному, особенно когда они собираются потом это прекрасное кому-то продать ;)


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

Конструктор


Конструктору единственному надо знать устройство инструмента с которым он работает. Но знания эти не многочисленные и приятные.


Пусть администратор написал нам бакенд для редактирования общих настроек сети (имя машины, сервера DNS) – net-general, отладил его.
Возможно даже посмотрел как он работает внутри интересующего нас решения с помощью готового шаблона “object”.


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


А html-код устроен таким образом, что нам надо просто «добавить» свои поля к div отмеченным соответствующим классом.


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


Итак, все компоненты готовы, начинаем собирать наше творение воедино. Сначала в «подсказывающем» бакенде template-net-general, скажем что мы хотим использовать интерфейсный шаблон не “object”, а некий “net-general”



А затем и создадим сам шаблон:


Что же тут происходит?


Регистрируются два обработчика. Один на get запросы, второй на post.
В каждом из случаев производятся запросы к соответствующем бакенду и результат выводится в виде «подстановок» в готовой html страничке, созданной дизайнером.
Использование html-шаблона вовсе не обязательно, но предпочтительно.


Созданный шаблон назовём так как нам нравится (например net-general.scm) и поместим в каталог /usr/share/alterator/templates.


Запускаем браузер, идём по адресу http://hostname/fcgi-bin/alterator-template.scm/net-general и наблюдаем результат:


Вот и всё, интерфейс готов к употреблению.


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


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