gtsAPI
gtsapi
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
| 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, а что показать, описывается в &config.<br /> - Своя страница в админке. Контроллер gtsAPI разбирает параметр меню &config<br /> и вызывает указанные в нём сниппеты:<br /> &config={"PVTabs":{"tabs":{"DocType":{"title":"Типы","table":"DocType"}}}}<br /> &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? &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 -> log_table, action -> 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 |
— |
|
No matching releases. |
|||