Роли групп. Как использовать?

InstantCMS 2.X

Есть ли описание нового функционала?

#1 12 августа 2017 в 11:58
В версии 2.8.0 появились роли групп. Можно даже добавлять в настройках групп новые роли.
А вот что делать с этим дальше — неизвестно.
Посмотрел файлы \system\controllers\groups\hooks\content_before_list.php и \system\controllers\groups\hooks\content_before_childs.php, где эти роли упоминаются, но так и не понял, как это использовать.
И мне этот функционал реально нужен! Пока добавляю в список контент из закрытых групп в хуке content_list_filter, но работает это криво. То тут то там пользователи видят то, что им не положено или наоборот, не видят то, что им положено.
Хотелось бы узнать, как разработчики видели использование ролей в группах, когда создавали это?
#2 13 августа 2017 в 06:53
Простой пример. Имеем сайт школы, в котором "Группы"="Классы". Создаём роли: "Учителя", "Ученики", "Родители", "Друзья класса". Учителя могут создавать записи в типе контента "Домашние задания", все остальные, кроме "Друзей класса", могут создавать записи в типе контента "Обсуждения". Теперь представьте ситуацию, когда класс, готовится допустим к школьному "КВН"-ну, создают запись в типе контента "Обсуждения" и в доступе, ставят разрешить просмотр только "Учителям" и "Ученикам" и приспокойно обсуждают там предстоящее выступление. Казалось бы, что всё выше описанное, можно сделать с помощью групп(не сообществ, а тех где выдаем права в админке), но тогда, любой "Ученик", сможет видеть обсуждения в любом классе, а с помощью ролей, ученик 1"А" класса, сможет видеть обсуждения своего класса, но не сможет видеть обсуждения 1"Б" класса.
#3 13 августа 2017 в 07:53

а с помощью ролей, ученик 1"А" класса, сможет видеть обсуждения своего класса, но не сможет видеть обсуждения 1"Б" класса.

lakomet
Итого, на сегодняшний день роли позволяют разграничить права на создание контента (в настройках которого указано "Создание в группах" или "Создание только в группах ") внутри группы.
Никаких ограничений на чтение по ролям я не обнаружил.
Так же, роли не учитываются для комментариев и записей на стене.
#4 13 августа 2017 в 08:16

Никаких ограничений на чтение по ролям я не обнаружил.

Pocus
Создайте запись и в самом низу, в разделе "приватность", выпадающий список, кому можно просматривать запись.

Так же, роли не учитываются для комментариев и записей на стене.

Pocus
Такая задача не ставилась, если Вам это нужно, пишите разработчикам, возможно и добавят.
#5 13 августа 2017 в 08:25
lakomet, о, точно! Спасибо.
#6 13 августа 2017 в 18:07
lakomet,
Спасибо, понял, нашел где настраивать, разобрался.
Для меня эта фича совершенно бесполезна.
Какой смысл распределять какие-то права, если и в списке блогов и в виджете контента члены группы видят то же, что и гости?
То есть ничего из своих закрытых групп не видят.
  1. // Скрываем записи из скрытых родителей (приватных групп и т.п.)
  2. $model->filterHiddenParents();
И всё.
И пользователь должен обойти все свои группы, чтобы увидеть что там нового, а чтобы комментарии в закрытых группах увидеть — вообще надо во все зайти и все посты открыть и просмотреть.
Неудивительно, что пользователи отказываются что-то размещать в закрытых группах даже под страхом бана…
#7 13 августа 2017 в 18:53

Неудивительно, что пользователи отказываются что-то размещать в закрытых группах

Ris
Тут смысл не в закрытых группах, а наоборот, группы открытые, но некоторые записи, можно скрыть(т.е. показывать ограниченном кругу участников). При этом те, кому запрещён просмотр, видят только некликабельный заголовок, а те кому разрешён просмотр, видят кликабельную ссылку на запись.
#8 13 августа 2017 в 20:39
lakomet,
Понятно. Это наверняка нужная вещь.
Но у меня классическая соцсеть по интересам. Шутки-прибаутки, побасенки.
После майданов весь сайт покрылся толстым слоем хохлосрача.
Модераторы день и ночь удаляли политику и я подумал, что можно неформатный контент вынести в закрытые группы и кто не хочет видеть ругани матерной, тот не увидит. С некоторыми усилиями перенес сайт на вторую ветку.
И уперся в// Скрываем записи из скрытых родителей (приватных групп и т.п.) и тд и тп.
Все мои усилия насмарку.
#9 14 июня 2021 в 13:38
Доброго дня!
Кто сможет подсказать, как сделать так, чтобы при добавлении группы создавались пару предустановленных ролей?
#10 14 июня 2021 в 21:20
в \system\controllers\groups\actions\add.php
после
  1.  
  2.  
  3. <?php
  4.  
  5. class actionGroupsAdd extends cmsAction {
  6.  
  7. public function run(){
  8.  
  9. if (!cmsUser::isAllowed('groups', 'add')) { cmsCore::error404(); }
  10.  
  11. $form = $this->getGroupForm();
  12.  
  13. $fields = $this->getGroupsFields();
  14.  
  15. $is_submitted = $this->request->has('submit');
  16.  
  17. $group = $form->parse($this->request, $is_submitted);
  18.  
  19. $group['ctype_name'] = $this->name;
  20.  
  21. // Заполняем поля значениями по умолчанию, взятыми из профиля пользователя
  22. // (для тех полей, в которых это включено)
  23. foreach($fields as $field){
  24. if (!empty($field['options']['profile_value'])){
  25. $group[$field['name']] = $this->cms_user->{$field['options']['profile_value']};
  26. }
  27. }
  28.  
  29. $is_premoderation = cmsUser::isAllowed('groups', 'add', 'premod') && !$this->cms_user->is_admin;
  30.  
  31. if ($is_submitted){
  32.  
  33. $errors = $form->validate($this, $group);
  34.  
  35. if (!$errors){
  36.  
  37. $group['owner_id'] = $this->cms_user->id;
  38.  
  39.  
добавил
  1. $group['roles'] = array('Роль1', 'Роль2');
Вроде работает, но не знаю насколько это правильно… Кто знает, подскажите
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.