Технические вопросы
7.x

Отображение и обязательность полей

Коллеги, подскажите как решить такую задачу:
требуется скрывать некоторые поля и некоторые делать обязательными для заполнения в случае вхождения пользователя в определенную группу.

Версия 7.2

Нравится

5 комментариев

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

Вы можете делать запрос EntitySchemaQuery на предмет вхождения пользователя в группу, обращаясь к таблице SysUserInRole.

И "биндить" видимость или обязательность поля на результат функции Вашего запроса.

Кроме того, видимость поля можно регулировать базовым функционалом администрирования объекта по колонкам.

А можете привести пример кода такой функции (на предмет вхождения пользователя в группу)?

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

Пример такой функции уже есть в конфигурации, схема GridSettings пакета NUI:

[javascript]
function getUserSaveRights(callback, renderTo, scope) {
var currentUser = Terrasoft.SysValue.CURRENT_USER.value;
var sysAdmins = ConfigurationConstants.SysAdminUnit.Id.SysAdministrators;
var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "SysUserInRole"
});
esq.addColumn("SysRole");
esq.addColumn("SysUser");
esq.filters.add("SysUser", Terrasoft.createColumnFilterWithParameter(
Terrasoft.ComparisonType.EQUAL, "SysUser", currentUser));
esq.filters.add("SysRole", Terrasoft.createColumnFilterWithParameter(
Terrasoft.ComparisonType.EQUAL, "SysRole", sysAdmins));
esq.getEntityCollection(function(response) {
if (response && response.success) {
var result = response.collection;
var isSysAdmin = (result.collection.length !== 0);
callback.call(scope, renderTo, isSysAdmin);
}
}, this);
}
[/javascript]

"Безродный Андрей" написал:

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

Пример такой функции уже есть в конфигурации, схема GridSettings пакета NUI:

function getUserSaveRights(callback, renderTo, scope) {

                var currentUser = Terrasoft.SysValue.CURRENT_USER.value;

                var sysAdmins = ConfigurationConstants.SysAdminUnit.Id.SysAdministrators;

                var esq = Ext.create("Terrasoft.EntitySchemaQuery", {

                        rootSchemaName: "SysUserInRole"

                });

                esq.addColumn("SysRole");

                esq.addColumn("SysUser");

                esq.filters.add("SysUser", Terrasoft.createColumnFilterWithParameter(

                        Terrasoft.ComparisonType.EQUAL, "SysUser", currentUser));

                esq.filters.add("SysRole", Terrasoft.createColumnFilterWithParameter(

                        Terrasoft.ComparisonType.EQUAL, "SysRole", sysAdmins));

                esq.getEntityCollection(function(response) {

                        if (response && response.success) {

                                var result = response.collection;

                                var isSysAdmin = (result.collection.length !== 0);

                                callback.call(scope, renderTo, isSysAdmin);

                        }

                }, this);

        }

Добый день!

А каки образом из этого примера можно вывести значение (true/false) из isSysAdmin в "bindTo" нужного мне поля?

Здравствуйте
Можно в вашей схеме создать метод, возвращающий булево значение и реализующий логику предыдущего примера. Грубо говоря метод должен возвращать значение isSysAdmin.
Затем свяжите поле с этим методом при помощи bindTo

Показать все комментарии