(alterator fbi)
Меня часто спрашивали, а возможно ли работать с alterator, не занимаясь написанием интерфейсов на Scheme.
Отвечаю. Да, теперь это возможно. Пока работает только для html, но вполне возможно что появится реализация для чистого Qt.
Распределение обязанностей участников проекта становится следующим:
Давайте совместно пройдём все эти шаги и поймём как всё делается:
Пусть у нас есть бакенд управления пользователями, который предоставляет следующую модель:
/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 отмеченным соответствующим классом.
Сразу оговорюсь, что возможно производить любые модификации созданного шаблона, вплоть до создания собственных тегов со специальными параметрами.