gtsAPI

gtsapi

  • By touol
  • Latest release October 12, 2026 (21 days ago)

About

Универсальное API для MODX

At a glance

MODX 3 compatibility unknown. Based on our testing and community reports where available.

  • Developer touol
  • Latest release October 12, 2026 (21 days ago)
  • First seen in SiteDash November 5, 2024 (1 year ago)
  • License GPLv2
  • Databases MySQL

Releases 13 indexed releases

Changelog
modstore.pro

1.2.0-beta

October 12, 2026

21 days ago

1.2.0-beta<br />
==============<br />
ГЛАВНОЕ: таблицу можно открыть для ИИ-агента, и правки от него откатываются.<br /><br />
- Доступ ИИ к таблицам. У таблицы появился флаг ai (видит ли её ИИ) и поле<br />
description - словесное описание таблицы и полей, которое читает модель.<br />
Разрешение выдаётся отдельно каждому действию: actions: { read: {'ai':1},<br />
update: {'ai':1} }. Не объявлено - отказ. Права пользователя при этом<br />
остаются потолком: ИИ не может больше, чем человек, от чьего имени работает.<br />
- Вызовы вида «пакет/метод» в режиме ИИ отбиваются жёстко: метод должен быть<br />
объявлен в actions таблицы. Для людей режим прежний, мягкий - только запись<br />
в журнал (появилась в 1.1.7 и осталась).<br />
- update от ИИ требует включённого версионирования строки<br />
(properties.save_version_row). Иначе правку нечем откатить, и такой update<br />
просто не разрешается.<br />
- В режиме ИИ отключён мердж тела запроса (php://input) поверх параметров.<br />
Иначе через тело сообщения можно было протащить, например, api_action.<br />
- batch_id в журнале (gtsAPILog): связывает строки одной пачки правок, чтобы<br />
откатывать их целиком.<br /><br />
- ВНИМАНИЕ, меняет поведение: update теперь различает «поле не прислали» и<br />
«прислали null». Раньше поля собирались через isset(), поэтому null молча<br />
пропускался - и восстановление версии не возвращало опустевшие значения,<br />
сообщая при этом об успехе. Теперь null означает «очисти поле», но пишется<br />
ТОЛЬКО в колонку, которая его допускает: для NOT NULL поведение прежнее,<br />
и клиент, присылающий строку целиком с нулями, ничего не ломает.<br />
- restore_version честно сообщает, какие поля восстановить не удалось<br />
(not_restored), вместо общего «успех».<br /><br />
- Безопасность: закрыты SQL-инъекции в автокомплите и в фильтрах.<br />
- Безопасность файлов: закрыто неаутентифицированное чтение; список и дерево<br />
работают по одной модели доступа. Доступ проверяется дважды - к источнику<br />
и файловое право, - потому что в web-контексте MODX не применяет ACL<br />
медиа-источника сам. Для этого заведена своя политика gtsAPIFileAccess:<br />
встроенные политики MODX не трогаем.<br />
- files: при distributeByDate файлы из подпапок год/месяц видны в корне.<br /><br />
- Темы оформления: сниппет gtsTheme и чанк gtsTopbar, пять тем, плюс aura<br />
и aura-soft. Экспорт в Excel и печать - нейтральные, без цветов темы.<br />
Тема по умолчанию работает без вызова gtsTheme в шаблоне; без атрибута<br />
схемы берётся светлая; кнопка «Сбросить» активна и когда выбор разошёлся<br />
с системной настройкой.<br />
- Триггеры: на один класс можно повесить несколько обработчиков. Опции<br />
автокомплита задаются по таблицам.<br />
- Переопределения полей работают в связке с таблицей (table_by) и<br />
select_from_param.<br />
- JSON-таблицы: мультисортировка; сортировка по умолчанию берётся из конфига.<br />
- Дерево: порядок узлов задаётся настройкой nodeSort; фильтр parents_ids<br />
уважает класс поля.<br />
- Excel: экспорт больше 26 колонок (дальше AA, AB и так далее); в ячейки<br />
уходит текст, а не HTML; для вставки из Excel появились общие действия<br />
paste и paste_bulk.<br />
- MODX 3: генератор моделей и выход из аккаунта.<br />
- Vue в importmap - прод-сборка (компилятор шаблонов в ней есть, динамические<br />
шаблоны продолжают работать). Из пакета убрана осиротевшая vue.global.prod.js.<br /><br />
- PVTables идёт внутри пакета, ставить отдельно не нужно. Что в нём нового:<br />
формы - блоки и колонки, адаптивная раскладка, автосохранение; UniTree2<br />
и UniTreePanel2 - дерево без полной перезагрузки; связанный автокомплит<br />
table_by, в том числе в инлайн-редакторе ячейки; мультисортировка по<br />
Ctrl+клику; фильтры - наследование при создании записи, «Содержит» по<br />
умолчанию в текстовых колонках, снятие фильтра по умолчанию, верхний<br />
фильтр select и фильтры подтаблиц; boolean - число 0 считается ложью<br />
(на PHP 8.1+ это ломало галочки); один тостер на страницу; высота таблицы<br />
по панели; перетаскивание строк не мешает выделению ячеек; виджет чата ИИ<br />
(GtsAIChat и GtsAIDock) - на нём работает пакет gtsAI.<br />
1.1.5-beta<br />
==============<br />
- Починена чистая установка: справочные данные (списки выбора для админки)<br />
писались раньше, чем создавались таблицы, и установка сыпала<br />
«Table 'modx_gtsapi_selects' doesn't exist». Резолверы выполняются<br />
в алфавитном порядке, а файл назывался data.php и шёл первым - переименован<br />
так, чтобы идти после tables.php. На сайтах, где 1.1.4 уже установлена,<br />
списки выбора создадутся при обновлении.<br />
1.1.4-beta<br />
==============<br />
- Установщик пакетов (/api/package) умеет ставить пункты меню менеджера:<br />
в PVExtra появился _build/configs/menus.js, формат тот же, что у сниппетов.<br />
Своего контроллера пакету заводить не нужно - пункт вешается на страницу<br />
gtsAPI, а что показать, описывается в &amp;config.<br />
- Своя страница в админке. Контроллер gtsAPI разбирает параметр меню &amp;config<br />
и вызывает указанные в нём сниппеты:<br />
&amp;config={"PVTabs":{"tabs":{"DocType":{"title":"Типы","table":"DocType"}}}}<br />
&amp;config={"mixVue":{"app":"pvsklad","config":{"module":"BarcodeDocs"}}}<br />
Ключ — имя сниппета, значение — его параметры; вместо JSON можно указать имя<br />
системной настройки, в которой он лежит. Так любой компонент выводится<br />
в меню MODX без собственного контроллера.<br />
- Таблицы самого gtsAPI описаны синтаксисом gtsAPI (_build/elements/<br />
gtsapipackages.php) и ставятся резолвером, как у любого другого пакета.<br />
Раньше админка gtsAPI была ~1000 строк JSON на синтаксисе getTables внутри<br />
системной настройки. Все её действия перенесены: генерация полей и правил,<br />
экспорт-импорт таблицы, правила и селекта, копирование, подтаблицы связей.<br />
Пункт меню на старую админку убран, сам конфиг gtsapi_admin остаётся<br />
в настройках как страховка.<br />
- Библиотека PHPExcel больше не берётся из чужого пакета: gtsAPI ищет её<br />
по настройке phpexcel_path, затем в пакете PHPExcel и только потом<br />
в старой копии внутри getTables (для сайтов, где пакет ещё не поставлен).<br />
Пакет PHPExcel добавлен в зависимости.<br />
- Сниппет mixVue понимает config строкой JSON. Массив приходит только из Fenom,<br />
а обычный вызов [[!mixVue? &amp;config=`{"module":"TLAll"}`]] отдаёт строку —<br />
раньше она молча игнорировалась и приложение стартовало без конфигурации.<br />
Неразобранный JSON теперь пишется в лог с текстом ошибки.<br />
- Триггеры справочника допполей продублированы в формате gtsAPI<br />
(triggerAddFieldsAPI). Ключ gtsfunction срабатывает ТОЛЬКО в админке<br />
getTables, поэтому в новой админке правка поля или группы не приводила<br />
колонки таблиц в соответствие. Старый триггер помечен @deprecated -<br />
на удаление вместе с интерфейсом на getTables.<br />
- Генерация правил (gen_rules) спрашивает пакет своей формой, а не чанком<br />
модалки getTables.<br />
- Разбор id действия вынесен в rowId(): gtsAPI шлёт поля строки как есть,<br />
а ключ trs_data - формат getTables, помечен на удаление.<br />
- Экспорт-импорт таблицы, правила и селекта отдаёт форму для PVTables,<br />
а не готовый HTML модалки getTables: в интерфейсе на PVTables старое окно<br />
открывалось пустым и ничего не сохраняло. Требуется PVTables 0.2.1.<br />
- Импорт (save_table / save_rule / save_select) больше не прогоняется через<br />
санитайзер MODX: он выкусывал из JSON теги вида [[…]], которые законно<br />
встречаются в свойствах таблиц, и конфигурация сохранялась битой.<br />
Действия доступны только администратору.<br />
- getTables убран из зависимостей: админка переехала на свой контроллер<br />
и PVTables, а библиотека Excel вынесена в пакет PHPExcel. Там, где getTables<br />
уже стоит, ничего не ломается - интерфейсы уживаются.<br />
- Убраны PHP warning на PHP 8 в контроллерах таблиц: обращения к hide,<br />
sortField, multiSortMeta, showLog и к никогда не заполняемому ключу действий<br />
сделаны безопасными. Поведение прежнее, в логе перестало быть шумно.<br /><br />
1.1.0-beta<br />
==============<br />
Первый релиз после 1.0.15-beta (модстор, 16.09.2025): 304 коммита за 11 месяцев.<br /><br />
Установка пакетов<br />
-----------------<br />
- Резолвер зависимостей: недостающие пакеты доустанавливаются ПЕРЕД установкой<br />
самого пакета - поиск у провайдера или прямая ссылка на transport.zip.<br />
Список задаётся в _build/configs/dependencies.js.<br />
- Динамические доп. поля применяются прямо при установке, без ручного прогона.<br />
Снос колонок вынесен в отдельную команду админки "Снести колонки удалённых полей".<br />
- Поле, добавленное в схему, создаётся с ПЕРВОЙ установки (раньше нужна была вторая).<br />
- ALTER выполняется только при реальном расхождении колонки с описанием: установка<br />
gtsShop - с 573 перестроек таблиц до одной, сборка пакета 21.6 с против 7.8 с.<br />
- Ключевые колонки (id, первичный ключ) и динамические доп. поля не удаляются<br />
ни при каких условиях; чужая таблица класса-наследника не изменяется.<br />
- Конфиги страниц (resources.js) и данных (data.js) умеют раскладку по сайтам:<br />
ставится только то, что относится к текущей инсталляции.<br />
- Резолверы прав и групп пользователей: пакет привозит шаблон политик MODX,<br />
своих групп не создаёт.<br /><br />
Журнал и версии записей<br />
-----------------------<br />
- gtsAPILog: лог действий на стороне сервера с настраиваемым сроком хранения<br />
и ежесуточной чисткой, вкладка в админке.<br />
- TableVersionTrait: версии записи и откат к предыдущему значению<br />
(действия versions/restore_version, флаг save_version_row).<br />
- Логирование UniTree и диспатч триггеров целевого класса на create/update/delete.<br /><br />
Таблицы и интерфейс (бандл PVTables 0.2.0)<br />
------------------------------------------<br />
- Таблица переехала на TanStack, форк PrimeVue DataTable удалён: виртуальный скролл,<br />
автоподгонка и ручной ресайз колонок, выбор видимых колонок, закреплённая колонка<br />
действий, sticky-заголовки.<br />
- Редактирование: inline и попап, выделение диапазона ячеек как в Excel<br />
с суммированием, автодополнение в текстовых ячейках, undo/redo для CRUD.<br />
- Фильтры: серверные и клиентский чеклист с разделением в интерфейсе, пустые даты,<br />
datetime со своими режимами, фильтры из URL с namespace таблицы.<br />
- Файлы: тип ячейки file с превью и выбором, съёмка с камеры, браузер файлов,<br />
распределение загрузок по год/месяц, многостраничный снимок документа в PDF.<br />
- Мобильный режим: карточки вместо таблицы, роли полей, флаги mobile_only/desktop_only.<br />
- Точечное обновление строк (rows_delta) с подписями автокомплитов и сохранением<br />
раскрытых дочерних строк.<br /><br />
Экспорт и печать<br />
----------------<br />
- Excel: TZ-safe даты, html в текст, настраиваемые ширины колонок и скрытие<br />
колонки через col_widths, форматирование decimal, datetime, пустых ячеек.<br />
- Печать: PVPrintAction в строке, компактный режим, классы col- для стилей.<br /><br />
Исправления<br />
-----------<br />
- Безопасность: правки по аудиту API, удалены небезопасные скрипты<br />
copy_package.php и rename_it.php.<br />
- gtsAPILog: поля переименованы из зарезервированных слов MySQL<br />
(table_name -&gt; log_table, action -&gt; log_action).<br />
- Пустая дата с фронта сохраняется как NULL, а не режется.<br />
- Триггеры before-read получают правило и поля по ссылке и могут менять запрос.<br />
- Битый UTF-8 в теле запроса больше не ломает JSON-кодирование.<br />
- Множество мелких фиксов CRUD, фильтров, деревьев и автокомплитов.<br />
1.0.14-beta<br />
==============<br />
Браузер файлов MODX.<br />
Галерея файлов gtsAPIFile.<br />
Дерево файлов.<br /><br />
1.0.12-beta<br />
==============<br />
Исправление ошибок.<br /><br />
1.0.11-beta<br />
==============<br />
Добавлен модуль UniTree<br /><br />
1.0.10-beta<br />
==============<br />
Редактирование связанных таблиц через одну таблицу на фронте.
modstore.pro

1.1.7-beta

August 14, 2026

2 months ago

—
modstore.pro

1.1.6-beta

August 14, 2026

2 months ago

—
modstore.pro

1.1.5-beta

August 14, 2026

2 months ago

—
modstore.pro

1.1.4-beta

August 14, 2026

2 months ago

—
modstore.pro

1.1.3-beta

August 14, 2026

2 months ago

—
modstore.pro

1.1.0-beta

August 14, 2026

2 months ago

—
modstore.pro

1.0.15-beta

September 16, 2025

1 year ago

—
modstore.pro

1.0.14-beta

September 16, 2025

1 year ago

—
modstore.pro

1.0.12-beta

June 16, 2025

1 year ago

—
modstore.pro

1.0.11-beta

May 19, 2025

1 year ago

—
modstore.pro

1.0.10-beta

November 24, 2024

1 year ago

—
modstore.pro

1.0.9-beta

November 5, 2024

1 year ago

—