# Структура папок проекта

- **/_install** - в папке содержатся скрипты для установки / обновления системы
- **/_whatsnew** - папка содержит лог обновлений с сортировкой по версиям
- **/assets** - все необходимые ресурсы
    - /css - файлы стилей
      - /themes - файлы стилей для тем
    - /font - шрифты, в т.ч. для иконок
    - /images - изображения
    - /js - скрипты и плагины (собственные и сторонних разработчиков)
- **/cash** - хранилище
    - /templates - шаблоны счетов, актов, документов
    - /avatars - аватары сотрудников
    - /dompdf  - шрифты для генерации PDF
    - /logo - хранилище логотипов
    - salesman_error.log - лог ошибок
    - ymail_error.log - лог ошибок работы модуля Почтовик
    - предустановки:
        - smtp.json - базовые настройки SMTP известных почтовых сервисов
        - imap.json - базовые настройки IMAP известных почтовых сервисов
        - базовые наборы колонок для разделов Клиенты, Контакты, Сделки, Проекты
            - columns_default_client.json
            - columns_default_deal.json
            - columns_default_person.json
            - projects_columns_default.json
            - work_columns_default.json
            - sklad_columns_default.json
        - map.modules.json - карта модулей (устаревшее)
        - map.vigets.json - карта виджетов (устаревшее)
        - map.settings.json - карта разделов меню
        - requisites.json - базовые названия реквизитов
        - themes.json - встроенные темы
        - tzone.json - временные зоны
        - valuta.ru.json - описание валюты для суммы прописью (русский язык)
        - valuta.ukr.json - описание валюты для суммы прописью (украинский язык)
        - valuta.eng.json - описание валюты для суммы прописью (английский язык)
    - кэш базовых настроек пользователей (автоматическое создание)
        - clients_columns_{iduser}.txt - колонки раздела Клиенты
        - dogs_columns_{iduser}.txt - колонки раздела Сделки
        - persons_columns_{iduser}.txt - колонки раздела Контакты
        - settings.user.{iduser}.json - настройки пользователя
        - settings.ymail.{iduser}.json - настройки почтового ящика (Почтовик)
        - signature.ymail.{iduser}.json - настройки подписей (Почтовик)
    - кэш настроек системы (автоматическое создание)
        - settings.all.json - основные настройки системы
        - otherSettings.json - прочие настройки
    - логи скриптов
- **/content** - основные скрипты системы, в т.ч.
    - /helpers - различные вспомогательные скрипты
    - /interface - файлы интерфейса
    - /vigets - виджеты Рабочего стола
    - /pbx - интеграции с различными ВАТС
- **/cron** - крон-скрипты
- **/developer** - для разработчиков
    - /docs - документация для разработчиков по функциям и классам системы
    - /v1 - RestAPI ( устаревшее )
    - /v2 - RestAPI ( устаревшее )
    - /v3 - RestAPI ( актуальное )
    - /adminer - Adminer, управление базой данных
    - /example - файлы примеров для импорта данных ( для различных разделов )
    - /fromlp - скрипт получения заявок с сервисов типа Flexbe
    - /hooks - хранилище скриптов для системы [Хуков и Фильтров](https://isaler.ru/api2/hooks), не включенных в плагины или модули
- **/files** - папка для загрузки и хранения файлов
    - /backup - хранилище резервных копий
    - /ymail - файлы, загружаемые почтовиком
    - прочие папки, создаваемые модулями
- **/inc** - основные системные скрипты, в т.ч.
    - /languages - языковые файлы ( в работе )
    - /class - различные классы системы
    - func.php - различные функции, autoload собственных классов, hook
    - func.helpers.php - различные вспомогательные функции
    - auth.php - скрипт контроля авторизации для скриптов, работающих через Ajax
    - auth_main.php - скрипт контроля авторизации для основного интерфейса
    - settings.php - скрипт загрузки настроек системы
    - dbconnector.php - подключение к БД
    - menu.php - формирование меню приложения
    - panel.php - различные подключения перед тегом </body>
- **/modules** - модули
- **/plugins** - плагины
- **/reports** - отчеты
- **/vendor** - скрипты и классы сторонних разработчиков

## Структура Модуля

Модули размещаются в папке **modules**. Для встраивания в систему рекомендуется наличие следующих базовых скриптов:

- install.php - скрипт установки модуля, содержащий запросы на добавление необходимых таблиц
- settings.{{module}} - скрипт настроек, который будет доступен из Панели управления
- interface.php - Основной интерфейс
- interface.card.php - Интерфейс карточки (если есть)
- cardblock.php - Интерфейс для вывода в карточке сделки
- hook_{{module}}.php - Хуки модуля
- menu.php - скрипт, описывающий пункты основного меню
- другие вспомогательные файлы не регламентируются

## Структура Плагина

Плагины размещаются в папке **plugins**. Для встраивания в интерфейс рекомендуется наличие следующих файлов:

- **plugin.json** - файл с описанием плагина в формате json, в котором следует описать следующие параметры:
    - package - название пакета ( латиница )
    - version - версия плагина
    - author - автор
    - authorurl - ссылка на сайт автора
    - link - ссылка на документацию по плагину
    - request - минимально требуемая версия
    - name - наименование плагина
    - description - описание плагина
    - screenshot - ссылка на изображение скриншота
    - menu - добавлять ли пункт в меню системы ( true/false ) - требуется только в случае, если у плагина есть отдельный интерфейс
    - icon - иконка для пункта меню ( см. [/assets/font/fontello/demo.html](/assets/font/fontello/demo.html) )
    - iconSVGinBase64 - иконка плагина в формате Base64
- **uninstall.php** - файл удаления плагина
- **{pluginname}.php** - файл с названием плагина в нижнем регистре символов, содержащий основную логику плагина с применением [Хуков и Фильтров](https://isaler.ru/api2/hooks)
    - установку ( с добавлением необходимых таблиц )
    - подключение к интерфейсу

Подробнее в [Документации](https://isaler.ru/api2/plugins)

> ## Проблемы со шрифтами при генерации PDF
>
> Кэш шрифтов прописывается в файлах:
> - /cash/dompdf/installed-fonts.json
> - /vendor/dompdfFontsCastom/installed-fonts.json
>
> При переносе CRM с одного сервера на другой рекомендуется удалить эти файлы