Выложил в исходниках первую версию модуля. Ниже распишу что это такое для тех, кто решится у себя поставить
Итак, немного повторюсь. Суть модуля в создании так называемых "сцен", на которые можно навешивать элементы интерфейса. Элементы могут быть либо информационными либо интерактивными, т.е. на них можно нажимать и инициировать какие-то действия.
Первоначально в модуле нужно задать размеры области показа сцен:
(сами сцены могут быть других размеров, но не больше)
Добавляем сцену, указывая путь к фоновой картинке:
(названия элементов сцены сразу на ней показываются, если они были добавлены на сцену -- сделано для удобства ориентирования)
После того как у нас есть сцена, мы можем на неё добавлять элементы:
При добавлении элемента надо указать как он будет называться, его координаты (TOP, LEFT -- отступ сверху и слево), и тип (image/html).
Немного о типах. Тип Image обозначает, что элемент будет картинкой, а HTML значит, что он будет блоком HTML-кода (или просто текста). В последнем случае нужно будет задать ещё ширину и высоту блока (для картинки используется ширина/высота картинки).
После добавления элемента появляется возможность добавить его "состояния". На самом деле, на экране как раз будут показываться различные состояния элмента в заданных координатах.
Вот пример настройки состояния "On" для картинки:
Основные опции настройки состояния:
Название -- ни на что не влияет и нигде не отображается, просто для удобства
Image -- картинка состояния. Если элемент типа HTML, то здесь может быть текст или код. Кстати, в текст можно вставлять служебные обозначения к примеру %Object.Property%, которые при выводе будут заменены на значение свойства объекта. Можно сделать вывод времени или температуры.
Run script on click -- если выбран сценарий, то он будет запущен при клике на элемент
Display condition -- (самое интересно) это условие отображения состояния. Может быть
n/a -- т.е. всегда активно. Полезно для кнопок или отображения какой-то меняющейся информации (температура и прочее). Условие может быть
simple -- простое и, наверное, наиболее часто используемое. При выборе такого типа условия нужно будет задать объект/свойство и критерий сравнения. Если условие будет верно, то состояние будет активно и отображаться, если нет, то нет.
Пример simple условия:
При температуре котла больше 40 градусов на сцене будет отображен элемент в данном состоянии. Это может быть, например, большая красная лампочка. Даже мигающая, если в качестве картинки использовать gif-анимацию.
Последним типом условия является advanced, при котором можно ввести собственный php-код со сколь угодно сложными условиями. Главное, чтобы этот код устанавливал значение переменной $display в 0 или 1.
Пример advanced условия:
В приведённом выше примере реализовано случайное включение/выключение состояния.
Если выбран тип условия simple или advanced, то появляется ещё одна опция:
switch scene when activated . Если эта галочка выбрана, то в случае активации состояния, будет автоматически активирована соответствующая сцена. Это может быть очень удобно, когда сцен несколько (этажи здания) и происходит важное событие на сцене, которая в данный момент не выбрана, тогда система сама переключится из текущей сцены в ту, где произошло событие.
Вот как выглядит интерфейс сцен со стороны пользователя:
Сцена 1 (два элемента -- лампочка и сообщение)
Сцена 2 (один элемент -- большая красная кнопка)
Элементы дизайна сцен (картинки) находятся в папке /cms/scenes/backgrounds и /cms/scenes/elements -- туда можно копировать свои и они будут доступны для выбора. Со временем хотелось бы набрать какую-то базу часто-используемых элементов (выключатели, лампочки, кнопки и т.п.).
Модуль этот использовать можно очень широко, например как альтернативу меню управления и совсем не обязательно, чтобы фоновой картинкой был план комнат -- можно использовать в качестве фона картинку деревянного стола и на нём разложить иконки запуска различных действий. В общем, всё только в рамках вашей фантазии!
Вот собственно и всё