$ SKIN

Материал из Eludia
Версия от 13:49, 24 апреля 2009; Do (обсуждение | вклад) (STDERR)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Было у одного человека две жены: красивая и некрасивая. Некрасивую он любил, а красивую — не любил. Не всё, что хорошо на глаз, хорошо на ощупь.

Неизвестный китайский автор, «Нравоучительная сказка».

Понятие презентационного модуля ($_SKIN) сейчас весьма распространено, и особенно глубоких разъяснений по этому поводу не требуется. $_SKIN — это модуль, реализующий определённый интерфейс и генерирующий HTTP-ответ (как правило, HTML), непосредственно передаваемый клиенту. Правда, в отличие от многих систем программирования, использующих аналогичное понятие, $_SKIN в Eludia может не только реализовать определённый дизайн кнопок и меню, но, к примеру, использоваться для отладочной распечатки "сырых" данных, быть частью механизма XML RPC и выполнять ещё множество разнообразных функций.

$_SKIN в Eludia работает так: каждая процедура Presentation API сначала уточняет значения своих аргументов (главным образом, подставляя умолчания), а затем передаёт обновлённый список параметров одноимённой процедуре из пакета текущего $_SKIN'а. Например, процедура draw_form сначала проверяет, не установлен ли режим read_only и если да, то подменяет определения полей ввода всех типов на static-поля с соответствующими значениями, а потом вызывает процедуру $_SKIN -> draw_form со своим же (но подправленным) списком аргументов.

Собственно выбор конкретного $_SKIN'а определяется несколькими факторами:

  • по умолчанию используется $_SKIN с именем Classic;
  • для текущей инсталляции эта установка может быть переопределена значением параметра $preconf -> {core_skin} в Eludia.pm и $GLOBALS [preconf] [core_skin] в Eludia.php;
  • для текущего запроса имя презентационного модуля может быть изменено специальными парметрами.

HTML-$_SKIN'ы

Classic

Classic.jpg

Наш первый и долгое время бывший единственным дизайн. В Eludia.php это до сих пор единственный стандартный $_SKIN. Интерфейс одноэкранный (при каждом запросе страница перегружается полностью). Заголовки имеют минимальную высоту, чтобы по возможности разгородить рабочее пространство. Стиль меню максимально приближен к Win2k. Вообще дизайн подобран из соображений минимизации зрительного напряжения оператора, вследствие чего на презентациях производит впечатление "скучного".

WinCE

Сильно видоизменённый Classic, предназначенный для отображения WEB-интерфейсов на экранах карманных устройств под управлением Windows Mobile. Многие $_SKIN'ы подходят практически ко всем Eludia-приложениям, однако под WinCE необходимо отлаживаться особо: всё-таки функциональность браузера там сильно ограничена. Тем не менее, API Eludia остаётся неизменным, а ограничения носят количественный характер (сколько влезает строк и столбцов на экран и т. п.)

GazOil

Клон Classic с изменённой цветовой гаммой и рабочим полем, заметно уменьшенным за счёт корпоративного креатива.

TurboMilk.jpg

TurboMilk

Глубоко переработанный Classic, существенно более похожий по дизайну на WEB-сайты и с дополнительными AJAX-механимами. На сегодня это наш базовый $_SKIN.

В отличие от Classic, здесь имеется постоянная часть (авторизационная шапка с меню), загружаемая единственный раз за сессию. Формы ввода и таблицы загружаются в нижний iframe. При каждом запросе на клиент передаётся не полный HTML главного меню, а только контрольная сумма (md5) от него: если она отличается от текущей (например, текущему пользователю изменили права доступа), следует специальный запрос на обновление меню.

IsUp.jpg

IsUp

Отпочковавшийся от TurboMilk, этот дизайн окончательно утерял сходство с Win-интерфейсами. Здесь полностью отсутствует понятие о меню, однако принципиальное значение имеют "главная страница" и путь (path) до текущего экрана. Это единственный (пока) наш $_SKIN, где имитируется не только браузерная кнопка Back, но и Forward, причём обе присутствуют на каждой странице.

Специальные $_SKIN'ы

Dumper

Этот $_SKIN распечатывает древовидную структуру данных, извлечённую для отображения на текущем экране. Активизируется приписыванием &__dump=1 к url страницы, но доступен только при установленной опции $preconf -> {core_show_dump} (обычно это делается на тестовых инсталляциях). Из-под Classic и TurboMilk вызывается по Ctrl-RightClick.

XL

Генерирует HTML специального вида и сопровождает его такими HTTP-заголовками, что на клиенте для просмотра страницы запускается MS Excel. Изначально предназначался для распечатки страниц с единственной таблицей, однако в текущей версии адекватно отображает и содержимое форм. Активизируется приписыванием &xls=1 к url страницы.

XMLDumper

Распечатывает описания элементов дизайна (полей ввода и т. п.) вместе с данными в формате XML. Применяется для интеграции с внешними приложениями.

STDERR

Реализует прогресс-индикатор, сообщения котрого не отсылаются клиенту, а печатаются в error.log. Используется offline-скриптами, которые задействуют процедуры, изначально спроектированные для интерактивного использования.