diff --git a/app/assets/javascripts/boards/components/modal/footer.js.es6 b/app/assets/javascripts/boards/components/modal/footer.js.es6 index 51a9444ee61..1be58b017ef 100644 --- a/app/assets/javascripts/boards/components/modal/footer.js.es6 +++ b/app/assets/javascripts/boards/components/modal/footer.js.es6 @@ -4,6 +4,9 @@ const ModalStore = gl.issueBoards.ModalStore; gl.issueBoards.ModalFooter = Vue.extend({ + props: [ + 'bulkUpdatePath', + ], data() { return ModalStore.store; }, @@ -23,10 +26,15 @@ }, addIssues() { const list = this.selectedList; - const issueIds = this.selectedIssues.map(issue => issue.id); + const issueIds = this.selectedIssues.map(issue => issue._id); // Post the data to the backend - gl.boardService.addMultipleIssues(list, issueIds); + this.$http.post(this.bulkUpdatePath, { + update: { + issuable_ids: issueIds.join(','), + add_label_ids: [list.label.id], + }, + }); // Add the issues on the frontend this.selectedIssues.forEach((issue) => { diff --git a/app/assets/javascripts/boards/components/modal/index.js.es6 b/app/assets/javascripts/boards/components/modal/index.js.es6 index 52f652ccfe1..9cab701bb5d 100644 --- a/app/assets/javascripts/boards/components/modal/index.js.es6 +++ b/app/assets/javascripts/boards/components/modal/index.js.es6 @@ -9,7 +9,7 @@ gl.issueBoards.IssuesModal = Vue.extend({ props: [ - 'blankStateImage', 'newIssuePath', + 'blankStateImage', 'newIssuePath', 'bulkUpdatePath', ], data() { return ModalStore.store; @@ -86,7 +86,7 @@ - + `, diff --git a/app/assets/javascripts/boards/models/issue.js.es6 b/app/assets/javascripts/boards/models/issue.js.es6 index 8d93ac637f9..5b435a76467 100644 --- a/app/assets/javascripts/boards/models/issue.js.es6 +++ b/app/assets/javascripts/boards/models/issue.js.es6 @@ -6,6 +6,7 @@ class ListIssue { constructor (obj) { + this._id = obj.id; this.id = obj.iid; this.title = obj.title; this.confidential = obj.confidential; diff --git a/app/assets/javascripts/boards/services/board_service.js.es6 b/app/assets/javascripts/boards/services/board_service.js.es6 index c8db107d890..20df8f2b373 100644 --- a/app/assets/javascripts/boards/services/board_service.js.es6 +++ b/app/assets/javascripts/boards/services/board_service.js.es6 @@ -14,10 +14,6 @@ class BoardService { method: 'POST', url: `${root}/${boardId}/lists/generate.json` }, - multiple: { - method: 'POST', - url: `${root}/${boardId}/lists{/id}/multiple` - }, }); this.issue = Vue.resource(`${root}/${boardId}/issues{/id}`, {}); this.issues = Vue.resource(`${root}/${boardId}/lists{/id}/issues`, {}); @@ -79,12 +75,6 @@ class BoardService { getBacklog(data) { return this.boards.backlog(data); } - - addMultipleIssues(list, issue_ids) { - return this.lists.multiple(list.id, { - issue_ids, - }); - } } window.BoardService = BoardService; diff --git a/app/controllers/projects/boards/lists_controller.rb b/app/controllers/projects/boards/lists_controller.rb index ed65cae82dc..67e3c9add81 100644 --- a/app/controllers/projects/boards/lists_controller.rb +++ b/app/controllers/projects/boards/lists_controller.rb @@ -50,10 +50,6 @@ module Projects end end - def multiple - head :ok - end - private def authorize_admin_list! diff --git a/app/controllers/projects/boards_controller.rb b/app/controllers/projects/boards_controller.rb index 9e699fb9b3b..ba9d0eaa265 100644 --- a/app/controllers/projects/boards_controller.rb +++ b/app/controllers/projects/boards_controller.rb @@ -37,7 +37,7 @@ class Projects::BoardsController < Projects::ApplicationController render json: @issues.as_json( labels: true, - only: [:iid, :title, :confidential, :due_date], + only: [:id, :iid, :title, :confidential, :due_date], include: { assignee: { only: [:id, :name, :username], methods: [:avatar_url] }, milestone: { only: [:id, :title] } diff --git a/app/views/projects/boards/_show.html.haml b/app/views/projects/boards/_show.html.haml index a64f66b5b64..068e69bada6 100644 --- a/app/views/projects/boards/_show.html.haml +++ b/app/views/projects/boards/_show.html.haml @@ -27,4 +27,5 @@ ":key" => "_uid" } = render "projects/boards/components/sidebar" %board-add-issues-modal{ "blank-state-image" => render('shared/empty_states/icons/issues.svg'), - "new-issue-path" => new_namespace_project_issue_path(@project.namespace, @project) } + "new-issue-path" => new_namespace_project_issue_path(@project.namespace, @project), + "bulk-update-path" => bulk_update_namespace_project_issues_path(@project.namespace, @project) } diff --git a/config/routes/project.rb b/config/routes/project.rb index afd895a5a1e..46d6530333d 100644 --- a/config/routes/project.rb +++ b/config/routes/project.rb @@ -274,7 +274,6 @@ constraints(ProjectUrlConstrainer.new) do resources :lists, only: [:index, :create, :update, :destroy] do collection do post :generate - post :multiple end resources :issues, only: [:index, :create]