Read this in other languages: English, Русский.
Модуль расширения подключается из дополнительной папки после установки MikoPBX. Модуль может иметь свой интерфейс, свои файлы стилей, JS скрипты, контроллер, модели, собственную базу данных.
В папке app хранятся подключаемые контроллеры, представления в веб форме, обработчики форм в соответствии с Phalcon App Structure
В папке bin хранятся дополнительные бинарники, необходимые для работы модуля
В папке coreapi хранятся подключаемые автоматически расширения coreapi, которые добавляют новые REST методы, необходимые для работы модуля
В папке db будет создаваться и храниться база данных module.db в формате sqlite3, создается автоматически согдасно описанной ORM модели
В папке Lib классы и методы расширения, которые взаимодействуют с ядром PBX
В папке messages хранятся подключаемые файлы перевода ru.php, en.php и т.д.
В папке Models хранятся подключаемые ORM модели для хранения настроек и допоплнительных данных модуля согласно Phalcon models annotations
В папке public хранятся статические публичные файлы, картинки, JS скрипты, CSS стили.
В папке setup хранятся файлы необходимые для установки и удаления модуля, а также настройки Firewall если модулю требуется открыть дополнительные порты.
Вы можете воспользоваться этим скриптом для подготовки шаблона или выполнить все изменения вручную по следующим пунктам:
Шаблон использует функцию gitHub - Template, поэтому первым делом создайте свой репозиторий. 1. Склонируйте новой репозиторий в IDE, например в PhpStorm
- Выполните групповую замену:
ModuleQueueCallBack
на ваше название, напримерMyCompanyMyNewModule4PBX
module_queue_call_back
наMyCompanyMod4PBX_tpl
module-queue-call-back
наmy-company-module-4-pbx
- Переименуйте файл контроллера в папке
app/controllers
сModuleQueueCallBackController.php
наMyCompanyMyNewModule4PBXController.php
- Переименуйте файл формы в папке
app/forms
сModuleQueueCallBackForm.php
наMyCompanyMyNewModule4PBXForm.php
- Отредактируйте список файлов с описанием моделей, для хранения настроек модуля в папке
Models
- Переименуйте JS и CSS файлы в папке
public/src
вmy-company-module-4-pbx-index.js
иmy-company-module-4-pbx.css
- Если для работы будущего модуля необходимо открывать дополнительные порты отредактируйте список портов в файле
setup/FirewallRules.php
, в противном случае удалите этот файл. - Отредактируйте файл
module.json
, укажите номер версии, разработчика, минимальную версию PBX для установки модуля
Обязательно содержит следующие функцию __construct() в которой описваетсы идентификатор класса модуля, информация о разработчике и версиях PBX и текущего расширения. Остальные функции наследуютмя из родительского класса PbxExtensionBase вы можете их переопределять при необходимости.
Обазательно с namespace вида Modules\<НазваниеКласса>\Models
, сама модель должна расширять класс ModuleBaseClass В модели ModuleBaseClass должна присутвовать функция getRepresent() отвечающая за текстовое представление элементов в модуля. Например, при удалении сотрудника участвующего в настройках модуля, система выведет сообщение о том что в месте с названием =getRepresent() есть ссылка.
В контроллере, в конце каждого метода имеющего представление, необходимо указывать путь к View файлу конкретного модуля, чтобы система не пыталась искать его по общему пути, где хранится ядро системы. Напрмер так: $this->view->pick( "{$modulesDir}/<НазваниеКласса>/app/views/index" );
В массиве фраз с преводом обязательно наличие двух параметров
- Breadcrumb<НазваниеКласса> - здесь хранится название модуля для заголовка
- SubHeader<НазваниеКласса> - краткое описание о том что делает этот модуль для подзаголовка
Для разработки модуля рекомендуется изучить документацию к таким проектам как:
При доработке интерфейса рекомендуем придерживаться стилей разработки:
Подключайтесь к каналу для разрабочиков в telegram @mikopbx_dev