Skip to content

Latest commit

 

History

History
82 lines (48 loc) · 7.56 KB

readme.ru.md

File metadata and controls

82 lines (48 loc) · 7.56 KB

Шаблон модуля расширения для MikoPBX

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

  1. Выполните групповую замену:
    • ModuleQueueCallBack на ваше название, например MyCompanyMyNewModule4PBX
    • module_queue_call_back на MyCompanyMod4PBX_tpl
    • module-queue-call-back на my-company-module-4-pbx
  2. Переименуйте файл контроллера в папке app/controllers с ModuleQueueCallBackController.php на MyCompanyMyNewModule4PBXController.php
  3. Переименуйте файл формы в папке app/forms с ModuleQueueCallBackForm.php на MyCompanyMyNewModule4PBXForm.php
  4. Отредактируйте список файлов с описанием моделей, для хранения настроек модуля в папке Models
  5. Переименуйте JS и CSS файлы в папке public/src в my-company-module-4-pbx-index.js и my-company-module-4-pbx.css
  6. Если для работы будущего модуля необходимо открывать дополнительные порты отредактируйте список портов в файле setup/FirewallRules.php, в противном случае удалите этот файл.
  7. Отредактируйте файл module.json, укажите номер версии, разработчика, минимальную версию PBX для установки модуля

Установочный файл PbxExtensionSetup.php

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

Классы модели

Обазательно с namespace вида Modules\<НазваниеКласса>\Models, сама модель должна расширять класс ModuleBaseClass В модели ModuleBaseClass должна присутвовать функция getRepresent() отвечающая за текстовое представление элементов в модуля. Например, при удалении сотрудника участвующего в настройках модуля, система выведет сообщение о том что в месте с названием =getRepresent() есть ссылка.

Класс контроллера

В контроллере, в конце каждого метода имеющего представление, необходимо указывать путь к View файлу конкретного модуля, чтобы система не пыталась искать его по общему пути, где хранится ядро системы. Напрмер так: $this->view->pick( "{$modulesDir}/<НазваниеКласса>/app/views/index" );

Перевод

В массиве фраз с преводом обязательно наличие двух параметров

  • Breadcrumb<НазваниеКласса> - здесь хранится название модуля для заголовка
  • SubHeader<НазваниеКласса> - краткое описание о том что делает этот модуль для подзаголовка

Полезные ссылки

Для разработки модуля рекомендуется изучить документацию к таким проектам как:

При доработке интерфейса рекомендуем придерживаться стилей разработки:

Вопросы

Подключайтесь к каналу для разрабочиков в telegram @mikopbx_dev