summaryrefslogtreecommitdiff
path: root/app/controllers/concerns/groups_tree.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/concerns/groups_tree.rb')
-rw-r--r--app/controllers/concerns/groups_tree.rb22
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