Коллеги, подскажите как решить такую задачу:
требуется скрывать некоторые поля и некоторые делать обязательными для заполнения в случае вхождения пользователя в определенную группу.
Версия 7.2
Нравится
Здравствуйте.
Вы можете делать запрос EntitySchemaQuery на предмет вхождения пользователя в группу, обращаясь к таблице SysUserInRole.
И "биндить" видимость или обязательность поля на результат функции Вашего запроса.
Кроме того, видимость поля можно регулировать базовым функционалом администрирования объекта по колонкам.
Здравствуйте.
Пример такой функции уже есть в конфигурации, схема 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); }
"Безродный Андрей" написал:Здравствуйте.
Пример такой функции уже есть в конфигурации, схема 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