Отключение вкладок формы редактирования товара в зависимости от группы пользователя

Здравствуйте!

Modx Revo 2.8.8
Последний Minishop2

Задача: есть группа менеджеров, которым нужно дать доступ только к редактированию одного TV.

Через кастомизацию форм modx отключил все вкладки и их содержимое. Но MS2 упорно вставляет вкладки «Товар», «Галерея».
Отключение вкладок через системные настройки минишопа не подходит, так как вкладки надо убрать только у одной группы.

Пробовал повесить на событие msOnManagerCustomCssJs вот такой плагин:
<?php
$modx->controller->addHtml('
            <script type="text/javascript">

    Ext.onReady(function() {
            var checkForm = function() {
                var panel = Ext.getCmp("modx-resource-tabs");
                if (panel) {
                    var tab = panel.getComponent("minishop2-product-tab");
                    if (tab) {
                        panel.remove(tab, true);
                    }
                }
            };
            checkForm();
    });
    </script>
');
НО, для галереи это не подходит, там id всегда разный типа ext-comp-1056, а при попытке удалить вкладку «Товар» возникают ошибки в js и форма вообще не формируется до конца.

Ошибки:
Uncaught TypeError: this.indexOf is not a function
remove линк/manager/assets/ext3/adapter/ext/ext-base.js:21
ExtJS 2
each линк/manager/assets/ext3/adapter/ext/ext-base.js:21
ExtJS 2
each линк/manager/assets/ext3/adapter/ext/ext-base.js:21
ExtJS 19
checkForm линк/manager/index.php?a=resource/update&id=1551:103
линк/manager/index.php?a=resource/update&id=1551:107
ExtJS 10
ext-base.js:21:9329
Uncaught TypeError: this.el.dom is undefined
ExtJS 4
getField линк/manager/assets/modext/widgets/core/modx.panel.js:262
hideField линк/manager/assets/modext/widgets/core/modx.panel.js:272
hideField линк/manager/assets/modext/core/modx.js?v=09b00bbb:594
линк/manager/index.php?a=resource/update&id=1551:150
ExtJS 10
ext-all.js:21:547294
Uncaught TypeError: this.ui is null
loadComplete ExtJS
createDelegate линк/manager/assets/ext3/adapter/ext/ext-base.js:21
ExtJS 5
f линк/manager/assets/ext3/adapter/ext/ext-base.js:21
m линк/manager/assets/ext3/adapter/ext/ext-base.js:21
createCallback линк/manager/assets/ext3/adapter/ext/ext-base.js:21
setInterval handler*n линк/manager/assets/ext3/adapter/ext/ext-base.js:21
i линк/manager/assets/ext3/adapter/ext/ext-base.js:21
request линк/manager/assets/ext3/adapter/ext/ext-base.js:21
ExtJS 4
fn линк/manager/assets/modext/widgets/core/tree/modx.tree.js:175
ExtJS 83
S линк/manager/assets/ext3/adapter/ext/ext-base.js:21
S линк/manager/assets/ext3/adapter/ext/ext-base.js:21
S линк/manager/assets/ext3/adapter/ext/ext-base.js:21
S линк/manager/assets/ext3/adapter/ext/ext-base.js:21
FormPanel линк/manager/assets/modext/widgets/core/modx.panel.js:34
Resource линк/manager/assets/modext/widgets/resource/modx.panel.resource.js?v=4.3.0-pl:31
Product линк/assets/components/minishop2/js/mgr/product/product.common.js?v=4.3.0-pl:3
UpdateProduct линк/assets/components/minishop2/js/mgr/product/update.js?v=4.3.0-pl:98
create ExtJS
load линк/manager/assets/modext/core/modx.js?v=09b00bbb:86
_loadComponents линк/manager/assets/modext/core/modx.component.js:68
Component линк/manager/assets/modext/core/modx.component.js:10
UpdateResource линк/manager/assets/modext/sections/resource/update.js?v=4.3.0-pl:33
UpdateProduct линк/assets/components/minishop2/js/mgr/product/update.js?v=4.3.0-pl:9
create ExtJS
load линк/manager/assets/modext/core/modx.js?v=09b00bbb:86
линк/manager/index.php?a=resource/update&id=1551:89
ExtJS 10
ext-all.js:21:483349
Uncaught TypeError: d is null
ExtJS 4
createDelegate линк/manager/assets/ext3/adapter/ext/ext-base.js:21
ExtJS 85
S линк/manager/assets/ext3/adapter/ext/ext-base.js:21
S линк/manager/assets/ext3/adapter/ext/ext-base.js:21
S линк/manager/assets/ext3/adapter/ext/ext-base.js:21
S линк/manager/assets/ext3/adapter/ext/ext-base.js:21
FormPanel линк/manager/assets/modext/widgets/core/modx.panel.js:34
Resource линк/manager/assets/modext/widgets/resource/modx.panel.resource.js?v=4.3.0-pl:31
Product линк/assets/components/minishop2/js/mgr/product/product.common.js?v=4.3.0-pl:3
UpdateProduct линк/assets/components/minishop2/js/mgr/product/update.js?v=4.3.0-pl:98
create ExtJS
load линк/manager/assets/modext/core/modx.js?v=09b00bbb:86
_loadComponents линк/manager/assets/modext/core/modx.component.js:68
Component линк/manager/assets/modext/core/modx.component.js:10
UpdateResource линк/manager/assets/modext/sections/resource/update.js?v=4.3.0-pl:33
UpdateProduct линк/assets/components/minishop2/js/mgr/product/update.js?v=4.3.0-pl:9
create ExtJS
load линк/manager/assets/modext/core/modx.js?v=09b00bbb:86
линк/manager/index.php?a=resource/update&id=1551:89
ExtJS 10
Предполагаю, что минишоп пытается вставить содержимое вкладок, когда самой вкладки уже нет, хотя может и ошибаюсь.

Нужна помощь с решением задачи.
Скаут
30 июля 2025, 08:46
modx.pro
211
0

Комментарии: 2

Артур Шевченко
30 июля 2025, 09:25
0
У минишопа есть своя политика доступа пробовали отключать её для целевой группы пользователей?
    Скаут
    30 июля 2025, 09:37
    0
    да, я её скопировал, обрезав по максимуму, оставив только save/edit и list.
    Там нет возможности убрать вкладки или ограничить их содержимое на основе прав
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2