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

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

Версия 7.2

Нравится

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

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

Вы можете делать запрос 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

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