Состав пакета дополнения

Создание модуля Комментариев нет

Описание

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

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

Пример

Разберём состав архива на примере установочного пакета для модуля xiaomihome.

Файл дополнения: https://github.com/sergejey/majordomo-xiaomihome/archive/master.tar.gz -- при установке пакета из Маркета, система скачивает данный файл и распаковывает его. При распаковке архива мы имеем папку ./majordomo-xiaomihome-master/ (имя общей папки внутри архива не имеет значение), внутри которой уже находится копируемая структура файлов. В данном случае имеются под-папки ./modules/xiaomihome/, ./scripts/ и ./templates/xiaomihome, которые при установке будут добавлены в нашу систему.

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

Состав пакета

Папка ./import/

Данная папка служит для автоматического импорта данных при установке пакета. Данные для импорта должны располагаться в под-папках ./import/scripts, ./import/scenes, ./import/classes -- т.е. каждая подпапка может включать внутри себя файлы, которые будут автоматически импортированы в соответствующий раздел системы. Обратите внимание, что процедура импорта будет проиходить при каждой установке/обновлении пакета, поэтому импортируемые данные будут заменять имеющиеся (за исключением "сцен" -- при повторном импорте уже импортированная ранее сцена не будет заменена).

Файл ./install.php

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

Ни один из элементов пакета дополнения не является обязательным.

Если пакет дополнения включает в себя функциональный модуль, то ниже представлены дополнительные рекомендации по наличию специальных файлов для модуля:

./modules/<name>/<name>.class.php -- основной класс модуля
./modules/<name>/app -- файл признак того, что модуль является пользовательским приложением
./modules/<name>/<name>_widgets.js.php -- файл виджетов для dashboard-а
./templates/<name>/ -- шаблоны модуля
./scripts/cycle_<name>.php -- отдельный цикл (процесс) модуля
./img/modules/<name>.png -- иконка модуля для меню
./languages/<name>_default.php -- словарь терминов модуля для локализации (по-умолчанию -- английский)
./languages/<name>_<lang>.php -- словарь терминов для языка <lang>

Специальные дополнения

Плееры

Перечень поддерживаемых системой плееров можно расширить разместив файлы вида *.addon.php в папке /modules/app_player/addons

Простые Устройства

Дополнительные Простые Устройства могут быть добавлены рамещение файлов в папке /modules/devices/addons . В данной папке создатся файлы вида:

mydevice_structure.php -- описание структуры устройства
mydevice_commands.php -- обработчик команд устройства (голосовых или текстовых)
mydevice_links.php -- структура возможных связей устройства с другими устройстами
mydevice_links_actions.php -- реализация описанных связей

Кроме этого, новые устройства скорее всего потребуют новых шаблонов представления (папка /templates/classes/views) и кода методов (папка /modules/devices).

Стили элементов

В папке /cms/scenes/styles/папка/ находятся файлы изображений и стилей, которые могут быть использованы при выборе стиля элемента сцены или Простого Устойства.

Поделитесь в соц сетях

Теги: