@maxisoft/instantcms-mcp 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +308 -0
- package/dist/__tests__/artifact-tool.test.js +196 -0
- package/dist/__tests__/db-tool.test.js +152 -0
- package/dist/__tests__/define-tool.test.js +106 -0
- package/dist/__tests__/find-tool.test.js +185 -0
- package/dist/__tests__/get-component-api.test.js +144 -0
- package/dist/__tests__/hardening.test.js +73 -0
- package/dist/__tests__/hooks-tool.test.js +173 -0
- package/dist/__tests__/mcp-integration-extra.test.js +166 -0
- package/dist/__tests__/mcp-integration.test.js +53 -0
- package/dist/__tests__/pagination.test.js +114 -0
- package/dist/__tests__/performance-baseline.test.js +56 -0
- package/dist/__tests__/project-patch.test.js +144 -0
- package/dist/__tests__/project-source.test.js +44 -0
- package/dist/__tests__/project-workflows-extra.test.js +165 -0
- package/dist/__tests__/project-workflows.test.js +51 -0
- package/dist/__tests__/scaffold-addon-roundtrip.test.js +287 -0
- package/dist/__tests__/serialization.test.js +170 -0
- package/dist/__tests__/source-knowledge-parsers.test.js +42 -0
- package/dist/__tests__/template-development.test.js +78 -0
- package/dist/__tests__/template-productivity.test.js +87 -0
- package/dist/__tests__/tools.test.js +2143 -0
- package/dist/data/components.js +2818 -0
- package/dist/data/controllers-map.js +7571 -0
- package/dist/data/core-api.js +9356 -0
- package/dist/data/database-schema.js +4555 -0
- package/dist/data/events-map.js +1339 -0
- package/dist/data/fields-map.js +3692 -0
- package/dist/data/hooks.js +2257 -0
- package/dist/data/js-api.js +123 -0
- package/dist/data/libs-api.js +264 -0
- package/dist/data/routes-map.js +203 -0
- package/dist/data/schemas-validation.js +255 -0
- package/dist/data/schemas.js +1404 -0
- package/dist/data/traits-map.js +1004 -0
- package/dist/data/version-profiles.js +41 -0
- package/dist/data/widgets-map.js +131 -0
- package/dist/data/wysiwyg-map.js +486 -0
- package/dist/generated/components-source.js +14748 -0
- package/dist/generated/hooks-source.js +3399 -0
- package/dist/generated/knowledge-meta.js +101 -0
- package/dist/index.js +13 -0
- package/dist/registry/database-tools.js +112 -0
- package/dist/registry/extension-tools.js +473 -0
- package/dist/registry/generator-tools.js +506 -0
- package/dist/registry/knowledge-tools.js +441 -0
- package/dist/registry/language-tools.js +99 -0
- package/dist/registry/meta-tools.js +152 -0
- package/dist/registry/project-tools.js +48 -0
- package/dist/registry/resources.js +98 -0
- package/dist/registry/source-tools.js +211 -0
- package/dist/registry/template-development-tools.js +79 -0
- package/dist/server.js +32 -0
- package/dist/tools/addon-tool.js +1437 -0
- package/dist/tools/admin-partial-tool.js +498 -0
- package/dist/tools/api-tool.js +294 -0
- package/dist/tools/artifact-tool.js +95 -0
- package/dist/tools/cache-tool.js +360 -0
- package/dist/tools/component-tool.js +415 -0
- package/dist/tools/controllers-tool.js +125 -0
- package/dist/tools/cron-tool.js +197 -0
- package/dist/tools/crud-tool.js +659 -0
- package/dist/tools/db-tool.js +198 -0
- package/dist/tools/email-tool.js +222 -0
- package/dist/tools/external-api-tool.js +596 -0
- package/dist/tools/filter-tool.js +341 -0
- package/dist/tools/form-tool.js +275 -0
- package/dist/tools/grid-tool.js +189 -0
- package/dist/tools/hooks-tool.js +104 -0
- package/dist/tools/import-export-tool.js +548 -0
- package/dist/tools/lang-tool.js +251 -0
- package/dist/tools/layout-override-tool.js +125 -0
- package/dist/tools/layout-tool.js +548 -0
- package/dist/tools/maria-tool.js +127 -0
- package/dist/tools/mariadb.js +201 -0
- package/dist/tools/migration-tool.js +329 -0
- package/dist/tools/oauth-tool.js +520 -0
- package/dist/tools/parser/components-parser.js +76 -0
- package/dist/tools/parser/controllers-parser.js +313 -0
- package/dist/tools/parser/core-parser.js +294 -0
- package/dist/tools/parser/coverage-generator.js +424 -0
- package/dist/tools/parser/events-parser.js +127 -0
- package/dist/tools/parser/fields-parser.js +382 -0
- package/dist/tools/parser/hooks-parser.js +106 -0
- package/dist/tools/parser/sql-parser.js +197 -0
- package/dist/tools/parser/traits-parser.js +161 -0
- package/dist/tools/parser/widgets-parser.js +150 -0
- package/dist/tools/permission-tool.js +348 -0
- package/dist/tools/project-patch-tool.js +73 -0
- package/dist/tools/project-source-tool.js +188 -0
- package/dist/tools/project-workflow-tool.js +186 -0
- package/dist/tools/requirement-tool.js +212 -0
- package/dist/tools/scaffold-tool.js +815 -0
- package/dist/tools/seo-tool.js +412 -0
- package/dist/tools/source-tool.js +155 -0
- package/dist/tools/template-development-tool.js +271 -0
- package/dist/tools/template-overrides-tool.js +294 -0
- package/dist/tools/template-productivity-tool.js +319 -0
- package/dist/tools/template-tool.js +665 -0
- package/dist/tools/test-tool.js +183 -0
- package/dist/tools/webhook-tool.js +427 -0
- package/dist/tools/widget-tool.js +331 -0
- package/dist/tools/wysiwyg-tool.js +137 -0
- package/dist/types/scaffold.js +68 -0
- package/dist/utils/define-tool.js +37 -0
- package/dist/utils/find-tool.js +97 -0
- package/dist/utils/mcp-result.js +18 -0
- package/dist/utils/pagination.js +27 -0
- package/dist/utils/serialization.js +27 -0
- package/package.json +94 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// JavaScript API для InstantCMS
|
|
3
|
+
// Источник: templates/default/js/core.js
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
/*
|
|
6
|
+
====================================
|
|
7
|
+
ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ JAVASCRIPT API
|
|
8
|
+
====================================
|
|
9
|
+
|
|
10
|
+
// 1. События (icms.events)
|
|
11
|
+
------------------------------
|
|
12
|
+
// Подписка на событие
|
|
13
|
+
icms.events.on('my_custom_event', function(params) {
|
|
14
|
+
console.log('Событие произошло:', params);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
// Вызов события
|
|
18
|
+
icms.events.run('my_custom_event', { key: 'value' });
|
|
19
|
+
|
|
20
|
+
// Предопределённые события:
|
|
21
|
+
// - icms_content_filter_changed - изменён фильтр контента
|
|
22
|
+
// - icms_forms_updatechildlist - обновлён список children
|
|
23
|
+
// - icms_forms_submitajax - форма отправлена через AJAX
|
|
24
|
+
// - icms_tab_cliked - кликнута вкладка
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
// 2. AJAX отправка формы
|
|
28
|
+
------------------------------
|
|
29
|
+
var form = document.querySelector('form');
|
|
30
|
+
icms.forms.submitAjax(form, { extra_param: 'value' });
|
|
31
|
+
|
|
32
|
+
// Сервер должен вернуть JSON:
|
|
33
|
+
// { success: true } - успех
|
|
34
|
+
// { errors: { field_name: 'Ошибка' } } - ошибки валидации
|
|
35
|
+
// {
|
|
36
|
+
// success: true,
|
|
37
|
+
// redirect_uri: '/new/page',
|
|
38
|
+
// callback: 'myFunction.callback'
|
|
39
|
+
// }
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
// 3. CSRF токен
|
|
43
|
+
------------------------------
|
|
44
|
+
var token = icms.forms.getCsrfToken();
|
|
45
|
+
// Используется в AJAX запросах
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
// 4. Фильтры
|
|
49
|
+
------------------------------
|
|
50
|
+
icms.forms.initFilterForm('#filter_form');
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
// 5. WYSIWYG интеграция
|
|
54
|
+
------------------------------
|
|
55
|
+
icms.forms.addWysiwygsInsertPool('content', function(field_name, text) {
|
|
56
|
+
// Вставить текст в редактор field_name
|
|
57
|
+
addTextToPosition('#' + field_name, text);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
// 6. Зависимости видимости полей
|
|
62
|
+
------------------------------
|
|
63
|
+
// Показывать advanced_field только когда main_field = 'show'
|
|
64
|
+
icms.forms.addVisibleDepend('my_form', 'advanced_field', {
|
|
65
|
+
'show': { 'main_field': ['1'] }
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
// 7. Счётчик символов
|
|
70
|
+
------------------------------
|
|
71
|
+
// Поле с id 'content' с макс 500 и мин 10 символов
|
|
72
|
+
icms.forms.initSymbolCount('content', 500, 10);
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
// 8. Несохранённые изменения
|
|
76
|
+
------------------------------
|
|
77
|
+
// Предупреждение при уходе со страницы с несохранённой формой
|
|
78
|
+
icms.forms.initUnsaveNotice();
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
// 9. Пагинация "Показать ещё"
|
|
82
|
+
------------------------------
|
|
83
|
+
icms.pagebar('#load_more', 1, true, false);
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
// 10. Динамические списки
|
|
87
|
+
------------------------------
|
|
88
|
+
// Обновление child list при изменении parent
|
|
89
|
+
icms.forms.updateChildList('city_id', '/ajax/cities', parent_value);
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
// 11. Collapse/Expand
|
|
93
|
+
------------------------------
|
|
94
|
+
icms.forms.initCollapsedFieldset();
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
// 12. Глобальные функции
|
|
98
|
+
------------------------------
|
|
99
|
+
// Переключение фильтра
|
|
100
|
+
toggleFilter();
|
|
101
|
+
|
|
102
|
+
// Назад
|
|
103
|
+
goBack();
|
|
104
|
+
|
|
105
|
+
// Количество слов
|
|
106
|
+
spellcount(5, 'товар', 'товара', 'товаров'); // "5 товаров"
|
|
107
|
+
|
|
108
|
+
// Установить курсор
|
|
109
|
+
setCaretPosition('#my_field', 10);
|
|
110
|
+
getCaretPosition('#my_field'); // 10
|
|
111
|
+
|
|
112
|
+
// Вставить текст
|
|
113
|
+
addTextToPosition('#my_field', 'Hello');
|
|
114
|
+
|
|
115
|
+
// Табы
|
|
116
|
+
initTabs('.tabs-container');
|
|
117
|
+
initMultyTabs('.multi-tabs');
|
|
118
|
+
|
|
119
|
+
// Загрузить JS
|
|
120
|
+
insertJavascript('/path/to/script.js', function() {
|
|
121
|
+
console.log('Script loaded');
|
|
122
|
+
});
|
|
123
|
+
*/
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Library API для InstantCMS
|
|
3
|
+
// Источник: source/system/libs/
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.libsData = void 0;
|
|
6
|
+
exports.libsData = {
|
|
7
|
+
helpers: {
|
|
8
|
+
template: {
|
|
9
|
+
name: 'template.helper',
|
|
10
|
+
file: 'source/system/libs/template.helper.php',
|
|
11
|
+
description: 'HTML-шаблонизация: ссылки, изображения, формы, дата, кнопки, пагинация',
|
|
12
|
+
functions: [
|
|
13
|
+
{ name: 'html_svg_icon', description: 'Выводит инлайновую SVG иконку', params: ['file', 'name', 'size?', 'print?'], return: 'string' },
|
|
14
|
+
{ name: 'html_link', description: 'Возвращает тег <a>', params: ['title', 'href', 'attributes?'], return: 'void' },
|
|
15
|
+
{ name: 'html_pagebar', description: 'Возвращает панель со страницами', params: ['page', 'perpage', 'total', 'base_uri?', 'query?', 'page_param_name?'], return: 'string' },
|
|
16
|
+
{ name: 'html_input', description: 'Возвращает тег <input>', params: ['type?', 'name?', 'value?', 'attributes?'], return: 'string' },
|
|
17
|
+
{ name: 'html_file_input', description: 'Возвращает тег <input type="file">', params: ['name', 'attributes?'], return: 'string' },
|
|
18
|
+
{ name: 'html_textarea', description: 'Возвращает тег <textarea>', params: ['name?', 'value?', 'attributes?'], return: 'string' },
|
|
19
|
+
{ name: 'html_checkbox', description: 'Возвращает тег <input type="checkbox">', params: ['name', 'checked?', 'value?', 'attributes?'], return: 'string' },
|
|
20
|
+
{ name: 'html_radio', description: 'Возвращает тег <input type="radio">', params: ['name', 'checked?', 'value?', 'attributes?'], return: 'string' },
|
|
21
|
+
{ name: 'html_date', description: 'Печатает отформатированную дату', params: ['date?', 'is_time?'], return: 'string' },
|
|
22
|
+
{ name: 'html_time', description: 'Печатает время от даты', params: ['date?'], return: 'string' },
|
|
23
|
+
{ name: 'html_date_time', description: 'Печатает отформатированную дату и время', params: ['date?'], return: 'string' },
|
|
24
|
+
{ name: 'html_datepicker', description: 'Возвращает поле выбора даты', params: ['name?', 'value?', 'attributes?', 'datepicker?'], return: 'string' },
|
|
25
|
+
{ name: 'html_submit', description: 'Возвращает кнопку "Отправить"', params: ['caption?', 'name?', 'attributes?'], return: 'string' },
|
|
26
|
+
{ name: 'html_button', description: 'Возвращает HTML-код кнопки', params: ['caption', 'name', 'onclick?', 'attributes?'], return: 'string' },
|
|
27
|
+
{ name: 'html_avatar_image', description: 'Возвращает тег <img> аватара пользователя', params: ['avatars', 'size_preset?', 'alt?', 'is_html_empty_avatar?'], return: 'string' },
|
|
28
|
+
{ name: 'html_avatar_image_empty', description: 'Возвращает пустой аватар с буквой', params: ['title', 'class?'], return: 'string' },
|
|
29
|
+
{ name: 'get_image_block_param_by_title', description: 'Возвращает CSS стиль по переданной строке', params: ['title'], return: 'array' },
|
|
30
|
+
{ name: 'html_image', description: 'Возвращает тег <img>', params: ['image', 'size_preset?', 'alt?', 'attributes?'], return: 'string' },
|
|
31
|
+
{ name: 'html_gif_image', description: 'Возвращает HTML блок GIF изображения', params: ['image', 'size_preset?', 'alt?', 'attributes?'], return: 'string' },
|
|
32
|
+
{ name: 'html_select', description: 'Генерирует список опций <select>', params: ['name', 'items', 'selected?', 'attributes?'], return: 'string' },
|
|
33
|
+
{ name: 'html_select_multiple', description: 'Генерирует список опций с множественным выбором', params: ['name', 'items', 'selected?', 'attributes?', 'is_tree?'], return: 'string' },
|
|
34
|
+
{ name: 'html_category_list', description: 'Генерирует дерево категорий в виде комбо-бокса', params: ['tree', 'selected_id?'], return: 'string' },
|
|
35
|
+
{ name: 'html_switch', description: 'Генерирует две радио-кнопки ВКЛ и ВЫКЛ', params: ['name', 'active'], return: 'string' },
|
|
36
|
+
{ name: 'html_back_button', description: 'DEPRECATED. Кнопка "Назад"', params: [], return: 'string' },
|
|
37
|
+
{ name: 'html_bool_span', description: 'Возвращает span с цветом для булевых значений', params: ['value', 'condition', 'classes?'], return: 'string' },
|
|
38
|
+
{ name: 'html_array_to_list', description: 'Строит рекурсивно список UL из массива', params: ['array'], return: 'string' },
|
|
39
|
+
{ name: 'html_search_bar', description: 'Возвращает строку поисковых букв/тегов', params: ['list', 'href', 'link_class?', 'glue?'], return: 'string' },
|
|
40
|
+
{ name: 'html_tags_bar', description: 'Возвращает строку тегов', params: ['tags', 'prefix?', 'class?', 'glue?'], return: 'string' },
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
html: {
|
|
44
|
+
name: 'html.helper',
|
|
45
|
+
file: 'source/system/libs/html.helper.php',
|
|
46
|
+
description: 'HTML утилиты: экранирование, ссылки, изображения, типографика, форматирование',
|
|
47
|
+
functions: [
|
|
48
|
+
{ name: 'html', description: 'Экранирует значение для безопасного вывода в HTML', params: ['string', 'print?'], return: 'string|null' },
|
|
49
|
+
{ name: 'html_clean', description: 'Очищает строку от тегов и обрезает до нужной длины', params: ['string', 'max_length?'], return: 'string' },
|
|
50
|
+
{ name: 'html_strip', description: 'Обрезает строку до заданного количества символов', params: ['string', 'max_length'], return: 'string' },
|
|
51
|
+
{ name: 'rel_to_href', description: 'Формирует ссылку по относительной', params: ['rel_link', 'is_abs?'], return: 'string' },
|
|
52
|
+
{ name: 'href_to_profile', description: 'Возвращает ссылку на профиль пользователя', params: ['user', 'params?', 'is_abs?'], return: 'string' },
|
|
53
|
+
{ name: 'href_to', description: 'Возвращает ссылку на действие контроллера от корня', params: ['controller', 'action?', 'params?', 'query?'], return: 'string' },
|
|
54
|
+
{ name: 'href_to_abs', description: 'Возвращает ссылку с хостом сайта', params: ['controller', 'action?', 'params?', 'query?'], return: 'string' },
|
|
55
|
+
{ name: 'href_to_rel', description: 'Возвращает ссылку без добавления корня URL', params: ['controller', 'action?', 'params?', 'query?'], return: 'string' },
|
|
56
|
+
{ name: 'href_to_current', description: 'Возвращает ссылку на текущую страницу', params: ['add_host?'], return: 'string' },
|
|
57
|
+
{ name: 'href_to_home', description: 'Возвращает ссылку на главную страницу', params: ['add_host?'], return: 'string' },
|
|
58
|
+
{ name: 'html_attr_str', description: 'Возвращает отформатированную строку атрибутов', params: ['attributes', 'unset_class_key?'], return: 'string' },
|
|
59
|
+
{ name: 'html_tag_short', description: 'Печатает короткий HTML тег', params: ['tag_name', 'attributes', 'class?'], return: 'string' },
|
|
60
|
+
{ name: 'default_images', description: 'Возвращает путь к изображению по умолчанию', params: ['type', 'preset'], return: 'array' },
|
|
61
|
+
{ name: 'html_avatar_image_src', description: 'Возвращает ссылку на аватар пользователя', params: ['avatars', 'size_preset?', 'is_relative?'], return: 'string' },
|
|
62
|
+
{ name: 'html_image_src', description: 'Возвращает путь к файлу изображения', params: ['image', 'size_preset?', 'is_add_host?', 'is_relative?'], return: 'string|false' },
|
|
63
|
+
{ name: 'html_wysiwyg', description: 'Возвращает код WYSIWYG редактора', params: ['field_name', 'content?', 'wysiwyg?', 'config?'], return: 'string' },
|
|
64
|
+
{ name: 'html_editor', description: 'Редактор markitup (совместимость)', params: ['field_name', 'content?', 'options?'], return: 'string' },
|
|
65
|
+
{ name: 'html_select_range', description: 'Генерирует список опций с диапазоном чисел', params: ['name', 'start', 'end', 'step', 'add_lead_zero?', 'selected?', 'attributes?'], return: 'string' },
|
|
66
|
+
{ name: 'html_signed_num', description: 'Возвращает число со знаком плюс/минус', params: ['number'], return: 'string' },
|
|
67
|
+
{ name: 'html_signed_class', description: 'Возвращает CSS класс для положительных/отрицательных чисел', params: ['number'], return: 'string' },
|
|
68
|
+
{ name: 'html_csrf_token', description: 'Возвращает скрытое поле с CSRF-токеном', params: [], return: 'string' },
|
|
69
|
+
{ name: 'html_spellcount', description: 'Возвращает число с числительным в нужном склонении', params: ['num', 'one', 'two?', 'many?', 'zero_text?'], return: 'string' },
|
|
70
|
+
{ name: 'html_spellcount_only', description: 'Возвращает числительное в нужном склонении', params: ['num', 'one', 'two?', 'many?'], return: 'string' },
|
|
71
|
+
{ name: 'html_file_size', description: 'Возвращает отформатированный размер файла', params: ['bytes', 'round?'], return: 'string' },
|
|
72
|
+
{ name: 'html_views_format', description: 'Форматирует число просмотров с суффиксами K, M', params: ['num'], return: 'string' },
|
|
73
|
+
{ name: 'html_minutes_format', description: 'Форматирует минуты в часы и минуты', params: ['minutes'], return: 'string' },
|
|
74
|
+
{ name: 'html_each', description: 'Склеивает массив строк в одну', params: ['array'], return: 'string' },
|
|
75
|
+
{ name: 'html_minify', description: 'Вырезает из HTML пробелы, табуляции и переносы', params: ['html'], return: 'string' },
|
|
76
|
+
{ name: 'nf', description: 'Форматирует число с группировкой классов', params: ['number', 'decimals?', 'thousands_sep?', 'trim_zero?'], return: 'string' },
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
files: {
|
|
80
|
+
name: 'files.helper',
|
|
81
|
+
file: 'source/system/libs/files.helper.php',
|
|
82
|
+
description: 'Файловые операции: копирование, удаление, директории, загрузка, изображения',
|
|
83
|
+
functions: [
|
|
84
|
+
{ name: 'files_get_dirs_list', description: 'Возвращает список директорий внутри указанной', params: ['dir', 'asc_sort?'], return: 'array' },
|
|
85
|
+
{ name: 'files_copy_directory', description: 'Копирует директорию', params: ['directory_from', 'directory_to'], return: 'bool' },
|
|
86
|
+
{ name: 'files_remove_directory', description: 'Рекурсивно удаляет директорию', params: ['directory', 'is_clear?'], return: 'bool' },
|
|
87
|
+
{ name: 'files_clear_directory', description: 'Очищает директорию', params: ['directory'], return: 'bool' },
|
|
88
|
+
{ name: 'files_delete_file', description: 'Удаляет файл и родительские директории', params: ['file_path', 'delete_parent_dir?'], return: 'boolean' },
|
|
89
|
+
{ name: 'files_tree_to_array', description: 'Возвращает дерево каталогов в виде массива', params: ['path'], return: 'array' },
|
|
90
|
+
{ name: 'files_normalize_path', description: 'Нормализует путь к файлу', params: ['path'], return: 'string' },
|
|
91
|
+
{ name: 'files_convert_bytes', description: 'Переводит строку "8M" в байты', params: ['value'], return: 'int' },
|
|
92
|
+
{ name: 'files_format_bytes', description: 'Переводит байты в Гб, Мб, Кб', params: ['bytes'], return: 'string' },
|
|
93
|
+
{ name: 'files_user_file_hash', description: 'Возвращает 32-х символьный хэш, привязанный к IP', params: ['file_path?'], return: 'string' },
|
|
94
|
+
{ name: 'files_sanitize_name', description: 'Очищает имя файла от специальных символов', params: ['filename', 'convert_slug?'], return: 'string' },
|
|
95
|
+
{ name: 'files_get_upload_dir', description: 'Возвращает/создаёт путь к директории хранения', params: ['user_id?'], return: 'string' },
|
|
96
|
+
{ name: 'file_get_contents_from_url', description: 'Получает данные по URL', params: ['url', 'timeout?', 'json_decode?', 'params?'], return: 'string|null' },
|
|
97
|
+
{ name: 'file_save_from_url', description: 'Сохраняет удалённый файл', params: ['url', 'destination'], return: 'boolean' },
|
|
98
|
+
{ name: 'img_add_watermark', description: 'DEPRECATED. Накладывает ваттермарк', params: ['src_file', 'wm_file', 'wm_origin', 'wm_margin', 'quality?'], return: 'boolean' },
|
|
99
|
+
{ name: 'img_resize', description: 'DEPRECATED. Изменяет размер изображения', params: ['src', 'dest', 'maxwidth', 'maxheight?', 'is_square?', 'quality?'], return: 'boolean' },
|
|
100
|
+
{ name: 'img_get_params', description: 'Возвращает параметры изображения', params: ['path'], return: 'array|false' },
|
|
101
|
+
{ name: 'eval_fraction', description: 'Вычисляет дробные значения EXIF', params: ['fraction'], return: 'float' },
|
|
102
|
+
{ name: 'console_exec_command', description: 'Выполняет команду в shell', params: ['command', 'postfix?'], return: 'array|null' },
|
|
103
|
+
]
|
|
104
|
+
},
|
|
105
|
+
strings: {
|
|
106
|
+
name: 'strings.helper',
|
|
107
|
+
file: 'source/system/libs/strings.helper.php',
|
|
108
|
+
description: 'Строковые операции: форматирование, маски, даты, URL, SEO',
|
|
109
|
+
functions: [
|
|
110
|
+
{ name: 'string_to_camel', description: 'Разбивает строку по разделителю и собирает в CamelCase', params: ['delimiter', 'string'], return: 'string' },
|
|
111
|
+
{ name: 'string_strip_br', description: 'Вырезает теги <br> из строки', params: ['string'], return: 'string' },
|
|
112
|
+
{ name: 'string_lang', description: 'Возвращает значение языковой константы', params: ['constant', 'default?'], return: 'string' },
|
|
113
|
+
{ name: 'string_mask_to_regular', description: 'Преобразует маску URL в регулярное выражение', params: ['mask'], return: 'string' },
|
|
114
|
+
{ name: 'string_parse_list', description: 'Разбивает текст на строки ID|VALUE', params: ['string_list'], return: 'array' },
|
|
115
|
+
{ name: 'string_explode_list', description: 'Разбивает текст на строки, создавая ассоциативный массив', params: ['string_list', 'index_as_value?'], return: 'array' },
|
|
116
|
+
{ name: 'array_keys_to_string_type', description: 'Приводит ключи массива к строковому типу', params: ['array'], return: 'array' },
|
|
117
|
+
{ name: 'string_in_mask_list', description: 'Проверяет вхождение строки в список масок', params: ['string', 'mask_list'], return: 'boolean' },
|
|
118
|
+
{ name: 'string_matches_mask_list', description: 'Проверяет совпадение маски', params: ['masks', 'string'], return: 'boolean' },
|
|
119
|
+
{ name: 'string_random', description: 'Генерирует случайную последовательность символов', params: ['length?', 'seed?'], return: 'string' },
|
|
120
|
+
{ name: 'string_date_age', description: 'Выводит разницу между датой и текущим временем', params: ['date', 'options', 'is_add_back?'], return: 'string' },
|
|
121
|
+
{ name: 'string_date_age_max', description: 'Выводит максимальную разницу между датами', params: ['date', 'is_add_back?'], return: 'string' },
|
|
122
|
+
{ name: 'real_date_diff', description: 'Возвращает разницу между датами в виде массива', params: ['date1', 'date2?'], return: 'array' },
|
|
123
|
+
{ name: 'string_date_format', description: 'Форматирует дату "сегодня", "вчера", "1 января"', params: ['date', 'is_time?'], return: 'string' },
|
|
124
|
+
{ name: 'string_replace_svg_icons', description: 'Заменяет {file%icon} на SVG иконку', params: ['string'], return: 'string' },
|
|
125
|
+
{ name: 'string_replace_user_properties', description: 'Заменяет {user.property} на свойство cmsUser', params: ['string', 'user?'], return: 'string' },
|
|
126
|
+
{ name: 'string_replace_keys_values', description: 'Заменяет {key} на значения из массива', params: ['string', 'data'], return: 'string' },
|
|
127
|
+
{ name: 'string_replace_keys_values_extended', description: 'Расширенная замена {key} с функциями и условиями', params: ['string', 'data', 'keep_not_found_key?'], return: 'string' },
|
|
128
|
+
{ name: 'string_make_links', description: 'Делает гиперссылки внутри строки активными', params: ['string'], return: 'string' },
|
|
129
|
+
{ name: 'string_get_meta_keywords', description: 'Возвращает ключевые слова из текста', params: ['text', 'min_length?', 'limit?'], return: 'string' },
|
|
130
|
+
{ name: 'string_get_meta_description', description: 'Подготавливает текст для meta description', params: ['text', 'limit?'], return: 'string' },
|
|
131
|
+
{ name: 'string_get_stopwords', description: 'Возвращает массив стоп-слов', params: ['lang?'], return: 'array' },
|
|
132
|
+
{ name: 'string_short', description: 'Обрезает текст до указанной длины', params: ['string', 'length?', 'postfix?', 'type?', 'clean_tags?'], return: 'string' },
|
|
133
|
+
{ name: 'string_compress', description: 'Удаляет CSS/JS комментарии и лишние пробелы', params: ['string'], return: 'string' },
|
|
134
|
+
{ name: 'string_ucfirst', description: 'Первый символ строки в верхний регистр (mb)', params: ['string'], return: 'string' },
|
|
135
|
+
{ name: 'array_collection_to_list', description: 'Извлекает значения поля коллекции', params: ['collection', 'key', 'value?'], return: 'array' },
|
|
136
|
+
{ name: 'array_filter_recursive', description: 'Рекурсивный array_filter', params: ['input'], return: 'array' },
|
|
137
|
+
{ name: 'array_value_recursive', description: 'Получает значение ячейки массива по пути', params: ['needle', 'haystack', 'delimiter?'], return: 'mixed' },
|
|
138
|
+
{ name: 'set_array_value_recursive', description: 'Устанавливает значение ключа массива по пути', params: ['path', 'array', 'value', 'delimiter?'], return: 'array' },
|
|
139
|
+
{ name: 'array_order_by', description: 'Сортирует двумерный массив по полю', params: ['array', 'fields', 'direction?'], return: 'boolean' },
|
|
140
|
+
{ name: 'multi_array_unique', description: 'Уникальные элементы многомерного массива', params: ['array'], return: 'array' },
|
|
141
|
+
{ name: 'get_localized_value', description: 'Возвращает значение поля с учётом языка', params: ['field_name', 'data', 'lang?'], return: 'mixed' },
|
|
142
|
+
{ name: 'nf_amount', description: 'Форматирует число с плавающей точкой', params: ['value', 'decimals?', 'thousands_sep?'], return: 'string' },
|
|
143
|
+
{ name: 'bc_format', description: 'Приводит число с плавающей точкой к нормальному виду', params: ['value'], return: 'string' },
|
|
144
|
+
{ name: 'string_iptobin', description: 'IPv4/IPv6 адрес в упакованный формат', params: ['ip'], return: 'string|null' },
|
|
145
|
+
{ name: 'string_bintoip', description: 'Упакованный адрес в читаемый формат', params: ['str'], return: 'string|null' },
|
|
146
|
+
{ name: 'string_ip_to_location', description: 'Определяет локацию по IP адресу', params: ['ip', 'return_array?'], return: 'string|array' },
|
|
147
|
+
{ name: 'string_html_get_images_path', description: 'Получает относительные пути из HTML', params: ['text'], return: 'array' },
|
|
148
|
+
{ name: 'string_replace_first', description: 'Заменяет первое вхождение (аналог str_replace)', params: ['search', 'replace', 'subject'], return: 'string' },
|
|
149
|
+
{ name: 'string_urlencode', description: 'Кодирует символы для URL', params: ['str'], return: 'string' },
|
|
150
|
+
{ name: 'is_empty_value', description: 'Проверяет, что значение пустое', params: ['value'], return: 'boolean' },
|
|
151
|
+
{ name: 'dump', description: 'Выводит переменную рекурсивно (для отладки)', params: ['var', 'halt?'], return: 'void' },
|
|
152
|
+
{ name: 'dump_if_admin', description: 'Выводит переменную если авторизация под админом', params: ['var', 'halt?'], return: 'void' },
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
classes: {
|
|
157
|
+
jevix: {
|
|
158
|
+
name: 'Jevix',
|
|
159
|
+
file: 'source/system/libs/jevix.class.php',
|
|
160
|
+
className: 'Jevix',
|
|
161
|
+
description: 'Средство автоматического применения правил набора текстов, XSS-фильтрация и HTML/XML парсер',
|
|
162
|
+
version: '1.13',
|
|
163
|
+
purpose: 'Унификация разметки HTML/XML документов, контроль допустимых тегов и атрибутов, предотвращение XSS-атак',
|
|
164
|
+
methods: [
|
|
165
|
+
'parse()', 'tagsRules', 'cfgAllowTags()', 'cfgAllowTag()', 'cfgDenyTags()',
|
|
166
|
+
'cfgAllowTagsParams()', 'cfgSetTagParamsAutoAdd()', 'cfgSetTagParamDefault()',
|
|
167
|
+
'cfgAllowTagsNested()', 'cfgSetTagIsEmpty()', 'cfgSetTagChild()', 'cfgSetAutoBrMode()',
|
|
168
|
+
'cfgSetXHTMLMode()', 'cfgSetAutoLinkMode()', 'cfgSetAutoReplace()', 'cfgSetTagNoTypography()',
|
|
169
|
+
'cfgSetTagPreformatted()', 'cfgSetLinkProtocol()', 'cfgSetTagNoAutoBr()',
|
|
170
|
+
'cfgSetTagCallback()', 'cfgSetTagCallbackFull()', 'cfgSetParamCombination()',
|
|
171
|
+
'parse()', 'getErrors()'
|
|
172
|
+
]
|
|
173
|
+
},
|
|
174
|
+
googleAuthenticator: {
|
|
175
|
+
name: 'Google Authenticator',
|
|
176
|
+
file: 'source/system/libs/google_authenticator.class.php',
|
|
177
|
+
className: 'googleAuthenticator',
|
|
178
|
+
description: 'PHP класс для Google Authenticator 2-factor authentication (2FA)',
|
|
179
|
+
version: '1.0',
|
|
180
|
+
purpose: 'Двухфакторная аутентификация через мобильное приложение Google Authenticator',
|
|
181
|
+
methods: [
|
|
182
|
+
'createSecret()', 'getCode()', 'getQRCodeGoogleUrl()', 'verifyCode()', 'setCodeLength()'
|
|
183
|
+
]
|
|
184
|
+
},
|
|
185
|
+
mobileDetect: {
|
|
186
|
+
name: 'Mobile Detect',
|
|
187
|
+
file: 'source/system/libs/mobile_detect.class.php',
|
|
188
|
+
className: 'Mobile_Detect',
|
|
189
|
+
description: 'Легковесный PHP класс для определения мобильных устройств и планшетов',
|
|
190
|
+
version: '3.74.4',
|
|
191
|
+
purpose: 'Детекция мобильных устройств по User-Agent и HTTP заголовкам',
|
|
192
|
+
methods: [
|
|
193
|
+
'isMobile()', 'isTablet()', 'isPhone()', 'isDevice()', 'is()',
|
|
194
|
+
'isEngine()', 'isBot()', 'getScriptVersion()', 'getUserAgent()',
|
|
195
|
+
'setUserAgent()', 'setHttpHeaders()', 'getHttpHeaders()', 'getMatches()'
|
|
196
|
+
]
|
|
197
|
+
},
|
|
198
|
+
lastRSS: {
|
|
199
|
+
name: 'lastRSS',
|
|
200
|
+
file: 'source/system/libs/lastrss.class.php',
|
|
201
|
+
className: 'lastRSS',
|
|
202
|
+
description: 'Простой и мощный PHP класс для парсинга RSS файлов',
|
|
203
|
+
version: '0.9.2',
|
|
204
|
+
purpose: 'Парсинг RSS/Atom лент с поддержкой кэширования',
|
|
205
|
+
methods: [
|
|
206
|
+
'get()', 'parse()', 'cacheResult()', 'getCached()', 'set_cache_dir()',
|
|
207
|
+
'set_cache_time()', 'set_items_limit()', 'set_strip_html()', 'set_date_format()'
|
|
208
|
+
]
|
|
209
|
+
},
|
|
210
|
+
idnaConvert: {
|
|
211
|
+
name: 'IDNA Convert',
|
|
212
|
+
file: 'source/system/libs/idna_convert.class.php',
|
|
213
|
+
className: 'idna_convert',
|
|
214
|
+
description: 'Кодирование/декодирование Internationalized Domain Names (IDN)',
|
|
215
|
+
version: '0.10.0',
|
|
216
|
+
purpose: 'Конвертация международных доменных имен между Unicode и ASCII форматом (Punycode)',
|
|
217
|
+
methods: [
|
|
218
|
+
'encode()', 'decode()', 'get_version()', 'set_parameter()', 'encode_domain()', 'decode_domain()'
|
|
219
|
+
]
|
|
220
|
+
},
|
|
221
|
+
spyc: {
|
|
222
|
+
name: 'SPYC',
|
|
223
|
+
file: 'source/system/libs/spyc.class.php',
|
|
224
|
+
className: 'spyc',
|
|
225
|
+
description: 'YAML парсер для PHP',
|
|
226
|
+
version: '0.6.3',
|
|
227
|
+
purpose: 'Парсинг и генерация YAML',
|
|
228
|
+
functions: [
|
|
229
|
+
'yaml_load_file()', 'yaml_load()', 'yaml_emit()', 'yaml_emit_file()'
|
|
230
|
+
]
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
thirdParty: {
|
|
234
|
+
scssphp: {
|
|
235
|
+
name: 'scssphp',
|
|
236
|
+
path: 'source/system/libs/scssphp/',
|
|
237
|
+
description: 'Компилятор SCSS/SASS для PHP',
|
|
238
|
+
version: '1.x',
|
|
239
|
+
purpose: 'Компиляция SCSS стилей в CSS на лету',
|
|
240
|
+
classes: [
|
|
241
|
+
'scss_compiler', 'Block', 'Compiler', 'Parser', 'Formatter', 'Cache', 'Logger'
|
|
242
|
+
]
|
|
243
|
+
},
|
|
244
|
+
geshi: {
|
|
245
|
+
name: 'GeSHi',
|
|
246
|
+
path: 'source/system/libs/geshi/',
|
|
247
|
+
description: 'Подсветка синтаксиса кода для множества языков',
|
|
248
|
+
purpose: 'Подсветка синтаксиса исходного кода в HTML',
|
|
249
|
+
languages: [
|
|
250
|
+
'php', 'css', 'html', 'javascript', 'mysql', 'sql'
|
|
251
|
+
]
|
|
252
|
+
},
|
|
253
|
+
phpmailer: {
|
|
254
|
+
name: 'PHPMailer',
|
|
255
|
+
path: 'source/system/libs/phpmailer/',
|
|
256
|
+
description: 'Отправка email через SMTP, POP3',
|
|
257
|
+
purpose: 'Отправка email писем с вложениями, HTML и авторизацией',
|
|
258
|
+
classes: [
|
|
259
|
+
'PHPMailer', 'SMTP', 'POP3'
|
|
260
|
+
]
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
exports.default = exports.libsData;
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// AUTO-GENERATED from source/system/controllers
|
|
3
|
+
// Do not edit manually
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.routesMap = void 0;
|
|
6
|
+
exports.getRoutesByController = getRoutesByController;
|
|
7
|
+
exports.getAllRoutes = getAllRoutes;
|
|
8
|
+
exports.routesMap = {
|
|
9
|
+
"controllers": [
|
|
10
|
+
{
|
|
11
|
+
"name": "content",
|
|
12
|
+
"functionName": "routes_content",
|
|
13
|
+
"filePath": "/source/system/controllers/content/routes.php",
|
|
14
|
+
"routes": [
|
|
15
|
+
{
|
|
16
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/from_friends$/i",
|
|
17
|
+
"action": "items_from_friends",
|
|
18
|
+
"params": { "1": "ctype_name" }
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/bind_form\\/([a-z0-9\\-_]+)\\/([0-9]+)$/i",
|
|
22
|
+
"action": "item_bind_form",
|
|
23
|
+
"params": { "1": "ctype_name", "2": "child_ctype_name", "3": "id" }
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/bind_form\\/([a-z0-9\\-_]+)\\/([0-9]+)\\/(childs|parents|unbind)$/i",
|
|
27
|
+
"action": "item_bind_form",
|
|
28
|
+
"params": { "1": "ctype_name", "2": "child_ctype_name", "3": "id", "4": "mode" }
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/bind\\/([a-z0-9\\-_]+)$/i",
|
|
32
|
+
"action": "item_bind",
|
|
33
|
+
"params": { "1": "ctype_name", "2": "child_ctype_name" }
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/unbind\\/([a-z0-9\\-_]+)$/i",
|
|
37
|
+
"action": "item_unbind",
|
|
38
|
+
"params": { "1": "ctype_name", "2": "child_ctype_name" }
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/bind_list\\/([a-z0-9\\-_]+)\\/([0-9]+)$/i",
|
|
42
|
+
"action": "item_bind_list",
|
|
43
|
+
"params": { "1": "ctype_name", "2": "child_ctype_name", "3": "id" }
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/bind_list\\/([a-z0-9\\-_]+)$/i",
|
|
47
|
+
"action": "item_bind_list",
|
|
48
|
+
"params": { "1": "ctype_name", "2": "child_ctype_name" }
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/add\\/([0-9]+)$/i",
|
|
52
|
+
"action": "item_add",
|
|
53
|
+
"params": { "1": "ctype_name", "2": "to_id" }
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/add$/i",
|
|
57
|
+
"action": "item_add",
|
|
58
|
+
"params": { "1": "ctype_name" }
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/edit\\/([0-9]+)$/i",
|
|
62
|
+
"action": "item_edit",
|
|
63
|
+
"params": { "1": "ctype_name", "2": "id" }
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/owner\\/([0-9]+)$/i",
|
|
67
|
+
"action": "item_owner",
|
|
68
|
+
"params": { "1": "ctype_name", "2": "id" }
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/approve\\/([0-9]+)$/i",
|
|
72
|
+
"action": "item_approve",
|
|
73
|
+
"params": { "1": "ctype_name", "2": "id" }
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/return_for_revision\\/([0-9]+)$/i",
|
|
77
|
+
"action": "item_return_for_revision",
|
|
78
|
+
"params": { "1": "ctype_name", "2": "id" }
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/return\\/([0-9]+)$/i",
|
|
82
|
+
"action": "item_return",
|
|
83
|
+
"params": { "1": "ctype_name", "2": "id" }
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/props\\/([0-9]+)$/i",
|
|
87
|
+
"action": "item_props_fields",
|
|
88
|
+
"params": { "1": "ctype_name", "2": "category_id" }
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/delete\\/([0-9]+)$/i",
|
|
92
|
+
"action": "item_delete",
|
|
93
|
+
"params": { "1": "ctype_name", "2": "id" }
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/trash_put\\/([0-9]+)$/i",
|
|
97
|
+
"action": "item_trash_put",
|
|
98
|
+
"params": { "1": "ctype_name", "2": "id" }
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/trash_remove\\/([0-9]+)$/i",
|
|
102
|
+
"action": "item_trash_remove",
|
|
103
|
+
"params": { "1": "ctype_name", "2": "id" }
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/addcat\\/([0-9]+)$/i",
|
|
107
|
+
"action": "category_add",
|
|
108
|
+
"params": { "1": "ctype_name", "2": "to_id" }
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/addcat$/i",
|
|
112
|
+
"action": "category_add",
|
|
113
|
+
"params": { "1": "ctype_name", "to_id": "0" }
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/editcat\\/([0-9]+)$/i",
|
|
117
|
+
"action": "category_edit",
|
|
118
|
+
"params": { "1": "ctype_name", "2": "id" }
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/delcat\\/([0-9]+)$/i",
|
|
122
|
+
"action": "category_delete",
|
|
123
|
+
"params": { "1": "ctype_name", "2": "id" }
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/editfolder\\/([0-9]+)$/i",
|
|
127
|
+
"action": "folder_edit",
|
|
128
|
+
"params": { "1": "ctype_name", "2": "id" }
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/delfolder\\/([0-9]+)$/i",
|
|
132
|
+
"action": "folder_delete",
|
|
133
|
+
"params": { "1": "ctype_name", "2": "id" }
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/([a-z0-9\\-\\/]+).html$/i",
|
|
137
|
+
"action": "item_view",
|
|
138
|
+
"params": { "1": "ctype_name", "2": "slug" }
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"pattern": "/^([a-z0-9\\-\\/]+).html$/i",
|
|
142
|
+
"action": "item_view",
|
|
143
|
+
"params": { "ctype_name": "cmsConfig::get('ctype_default')", "1": "slug" }
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"pattern": "/^([a-z0-9\\-_]+)\\/([a-z0-9\\-\\/]+)\\/view\\-([a-z0-9\\-_]+)\\/?([a-z0-9_]*)$/i",
|
|
147
|
+
"action": "item_view",
|
|
148
|
+
"params": { "1": "ctype_name", "2": "slug", "3": "child_ctype_name", "4": "dataset" }
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"pattern": "/^([a-z0-9\\-\\/]+)\\/view\\-([a-z0-9\\-_]+)\\/?([a-z0-9_]*)$/i",
|
|
152
|
+
"action": "item_view",
|
|
153
|
+
"params": { "ctype_name": "cmsConfig::get('ctype_default')", "1": "slug", "2": "child_ctype_name", "3": "dataset" }
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"pattern": "/^([a-z0-9_]+)\\-([a-z0-9_]+)\\/([a-z0-9\\-\\/]+)$/i",
|
|
157
|
+
"action": "category_view",
|
|
158
|
+
"params": { "1": "ctype_name", "2": "dataset", "3": "slug" }
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"pattern": "/^([a-z0-9_]+)\\/([a-z0-9\\-\\/]+)$/i",
|
|
162
|
+
"action": "category_view",
|
|
163
|
+
"params": { "1": "ctype_name", "2": "slug" }
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"pattern": "/^([a-z0-9_]+)\\-([a-z0-9_]+)$/i",
|
|
167
|
+
"action": "category_view",
|
|
168
|
+
"params": { "1": "ctype_name", "2": "dataset", "slug": "index" }
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"pattern": "/^([a-z0-9_]+)$/i",
|
|
172
|
+
"action": "category_view",
|
|
173
|
+
"params": { "1": "ctype_name", "slug": "index" }
|
|
174
|
+
}
|
|
175
|
+
]
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"name": "photos",
|
|
179
|
+
"functionName": "routes_photos",
|
|
180
|
+
"filePath": "/source/system/controllers/photos/routes.php",
|
|
181
|
+
"routes": [
|
|
182
|
+
{
|
|
183
|
+
"pattern": "/^photos\\/([a-z0-9\\-\\/]+).html$/i",
|
|
184
|
+
"action": "view",
|
|
185
|
+
"params": { "1": "slug" }
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"pattern": "/^photos\\/camera\\-(.+)$/i",
|
|
189
|
+
"action": "camera",
|
|
190
|
+
"params": { "1": "name" }
|
|
191
|
+
}
|
|
192
|
+
]
|
|
193
|
+
}
|
|
194
|
+
],
|
|
195
|
+
"routeCount": 33,
|
|
196
|
+
"generatedAt": "2026-03-21T16:30:00.000Z"
|
|
197
|
+
};
|
|
198
|
+
function getRoutesByController(name) {
|
|
199
|
+
return exports.routesMap.controllers.find(c => c.name === name);
|
|
200
|
+
}
|
|
201
|
+
function getAllRoutes() {
|
|
202
|
+
return exports.routesMap.controllers.flatMap(c => c.routes);
|
|
203
|
+
}
|