diff options
Diffstat (limited to 'app/controllers/concerns/groups_tree.rb')
-rw-r--r-- | app/controllers/concerns/groups_tree.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/app/controllers/concerns/groups_tree.rb b/app/controllers/concerns/groups_tree.rb new file mode 100644 index 00000000000..0420f773b26 --- /dev/null +++ b/app/controllers/concerns/groups_tree.rb @@ -0,0 +1,22 @@ +module GroupsTree + def find_groups(parent, all_available: true) + groups = + if parent && Group.supports_nested_groups? + if can?(current_user, :read_group, parent) + GroupsFinder.new(current_user, + parent: parent, + all_available: all_available, + all_children_for_parent: params[:filter_groups].present?).execute + else + Group.none + end + else + GroupsFinder.new(current_user, all_available: all_available).execute + end + + groups = groups.search(params[:filter_groups]) if params[:filter_groups].present? + groups = groups.includes(:route) + groups = groups.sort(@sort = params[:sort]) + groups.page(params[:page]) + end +end |