summaryrefslogtreecommitdiff
path: root/app/controllers/groups/children_controller.rb
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@vanlanduyt.co>2017-10-11 18:27:53 +0200
committerBob Van Landuyt <bob@vanlanduyt.co>2017-10-12 11:36:55 +0200
commit2c25a7ae3453e72ad6cab504255e327c17df0a95 (patch)
tree73b9299225b80b728f5aaa58d8964bd00643dfdd /app/controllers/groups/children_controller.rb
parentd8e504a8f790f032f5d7757c6d61093faa7a2542 (diff)
downloadgitlab-ce-2c25a7ae3453e72ad6cab504255e327c17df0a95.tar.gz
Nest the group_children_path inside the canonical group path
Diffstat (limited to 'app/controllers/groups/children_controller.rb')
-rw-r--r--app/controllers/groups/children_controller.rb39
1 files changed, 39 insertions, 0 deletions
diff --git a/app/controllers/groups/children_controller.rb b/app/controllers/groups/children_controller.rb
new file mode 100644
index 00000000000..b474f5d15ee
--- /dev/null
+++ b/app/controllers/groups/children_controller.rb
@@ -0,0 +1,39 @@
+module Groups
+ class ChildrenController < Groups::ApplicationController
+ before_action :group
+
+ def index
+ parent = if params[:parent_id].present?
+ GroupFinder.new(current_user).execute(id: params[:parent_id])
+ else
+ @group
+ end
+
+ if parent.nil?
+ render_404
+ return
+ end
+
+ setup_children(parent)
+
+ respond_to do |format|
+ format.json do
+ serializer = GroupChildSerializer
+ .new(current_user: current_user)
+ .with_pagination(request, response)
+ serializer.expand_hierarchy(parent) if params[:filter].present?
+ render json: serializer.represent(@children)
+ end
+ end
+ end
+
+ protected
+
+ def setup_children(parent)
+ @children = GroupDescendantsFinder.new(current_user: current_user,
+ parent_group: parent,
+ params: params).execute
+ @children = @children.page(params[:page])
+ end
+ end
+end