Страница 1 из 1

Древовидный список пользователей

Добавлено: 07 июл 2023, 00:04
Rav4ik
Доброго времени суток!

Возможно кто что подскажет :ugeek: Возникла необходимость сделать дерево пользователей в новом проекте.

Условие 1. Нужно, чтобы в дереве пользователь видел своего "создателя" и дерево под собой: кого он зарегал и кто-кого зарегал ниже.
Условие 2. Также пользователь не видит параллельных соседей, которых регает его "создатель". Что-то наподобие: директор, завуч, куратор, учитель, ученик. Или более понятно - млм структура.
Условие 3. Разрешить создание пользователя только под себя, т.е. грубо говоря, не добавлять подчиненным подчиненных.

Для теста создал 2 группы доступа: ур1 и ур2. Группе с ур1 запрещен доступ к сущности Пользователи. Группе с ур2 разрешено просматривать только назначенные и открыт доступ к созданию пользователей.

Создал пользователей: первый из админки, второй под себя одного и так несколько, чтобы прописалось у каждого пользователя создателя ([created_by]). Настроил древовидный список, добавил поле Вычисление с вложенными записями с количеством своих подчиненных.

Далее вопросы по скринам, которые я приложил:

Скрин 1. В админке вся получившаяся структура как надо выглядит. Единственное когда все друг друга зарегали, никакого дерева не получилось. Админ всех раскидал по веткам и все норм.

Скрин 2. Если войти под irina, то все отлично кроме того, что она видит пользователя ruslan, которого создал admin. Т.е. условие 1 работает, усл. 2 нет. Как сделать чтоб работало усл 2.? И я правильно понимаю, так получилось потому, что admin создал ее и ruslan, т.е. у них общий автор = просматривать только назначенные или это не так? Хотя дал юзеру ruslan ур2 и зашел под ним. В дереве пусто, а в таблице он только себя видит, т.е. норм.

Скрин 3. sasha в табличном списке отлично видит и себя и своего зареганного и его зареганного, но в древовидном списке не видит никого. Вопрос почему?

Как можно реализовать условие 3? В голову пока приходит только визуально скрыть кнопки + ниже по ступеням, но возможно есть вариант без костылей.

И последний вопрос: с помощью какого инструмента сделать автоматическое построение дерева? Т.е. нажал кнопку "Добавить пользователя", а он в дереве сразу сел под тебя. Например, на том же 3м скрине sasha зарегал gosha и тот упал в корень.

Заранее благодарен за ответы :)

Re: Древовидный список пользователей

Добавлено: 07 июл 2023, 00:13
Rav4ik
Вопрос по скрину 2 похоже снимается. Чет я затупил, щас пересмотрел и догнал. Пользователя ruslan создал admin, но привязан то он к дереву irina, поэтому она его и видит. Т.е. получается элементы дерева не смотрят кто их создал [created_by], а смотрят на [parent_id] походу.

Re: Древовидный список пользователей

Добавлено: 07 июл 2023, 00:30
Rav4ik
Подправил вручную дерево, чтоб иерархия авторов совпадала с иерархией дерева. Теперь у irina все норм, а sasha так по прежнему видит пустое дерево, но всех своих видит в таблице.

Re: Древовидный список пользователей

Добавлено: 07 июл 2023, 01:30
Rav4ik
Ночью походу решаются самые непростые задачки) Большую часть вопросов закрыл в итоге сам. Возможно кому пригодится в будущем, поэтому делюсь.

Итак, удалось закрыть 2 вопроса одним решением.
1. Новые зареганные пользователи садятся под автора.
2. Даже если "нащальника" захочет "заму" ("подзаму"/"рабу" и т.д.) добавить "подчиненного", нажимая + не возле себя, то хочешь не хочешь новый юзер автоматом сядет под ним.
3 (бонусом). Если это внедрять не сразу или если вручную поломать иерархию, то все восстановится автоматом если обновить запись (пользователя) или если на время включить галочку "Выполнять динамически".

И все это решают эти строки в новом поле PHP код:

Код: Выделить всё

if([parent_id] != [created_by]) {
	db_query ('update app_entity_1 set parent_id='.[created_by].' where id='.[id]);
}
Код можно дополнить, исключив привязку к админу с id=1

В итоге остается один не закрытый вопрос: как sashe увидеть свое дерево :lol:
Если точнее, как не корневым, т.е. дочерним пользователям видеть свою ветку :?:

Re: Древовидный список пользователей

Добавлено: 07 июл 2023, 08:50
support
Можно вывести на страницу записи

Re: Древовидный список пользователей

Добавлено: 08 июл 2023, 20:08
Rav4ik
support писал(а): 07 июл 2023, 08:50 Можно вывести на страницу записи
Да, действительно, на странице записи ветка пользователя отображается как надо. Получается так же не корневую ветку нельзя показать в списке пользователей? Будет ли это исправлено в ближайшем обновлении? Иначе как-то придется скрывать список пользователей для всех (пункт пеню, ссылка в крошках), т.е. видеть не дальше страницы записи.

И кстати возник новый вопрос, можно ли в системе отключить/скрыть пункты меню для основных сущностей (без правки php/js)? Вижу что много кто об этом спрашивал, но без ответов.

Re: Древовидный список пользователей

Добавлено: 08 июл 2023, 21:35
nruslan2
Rav4ik писал(а): 08 июл 2023, 20:08 И кстати возник новый вопрос, можно ли в системе отключить/скрыть пункты меню для основных сущностей (без правки php/js)? Вижу что много кто об этом спрашивал, но без ответов.
можно, используйте пункт пользовательский css.