From 16ba5eb4d89f903d89fbad33086013a2f69717dd Mon Sep 17 00:00:00 2001 From: Jacob Schatz <jacobschatz@Jacobs-MBP.fios-router.home> Date: Fri, 11 Mar 2016 00:28:10 -0500 Subject: [PATCH] Updates sidebar milestone to use new dropdowns --- app/assets/javascripts/api.js.coffee | 21 +++++++++++++++++++ app/assets/javascripts/gl_dropdown.js.coffee | 3 ++- .../javascripts/milestone_select.js.coffee | 21 +++++++++++-------- app/controllers/projects/issues_controller.rb | 1 + .../projects/merge_requests/_show.html.haml | 2 +- app/views/shared/issuable/_filter.html.haml | 4 +++- app/views/shared/issuable/_sidebar.html.haml | 6 +++--- config/environments/development.rb | 2 +- 8 files changed, 44 insertions(+), 16 deletions(-) diff --git a/app/assets/javascripts/api.js.coffee b/app/assets/javascripts/api.js.coffee index f3ed9a66715..b259c6556ae 100644 --- a/app/assets/javascripts/api.js.coffee +++ b/app/assets/javascripts/api.js.coffee @@ -5,6 +5,27 @@ group_projects_path: "/api/:version/groups/:id/projects.json" projects_path: "/api/:version/projects.json" labels_path: "/api/:version/projects/:id/labels" + issues_paths: + update : "/api/:version/projects/:id/issues/:issue_id" + merge_request_path: "/api/:version/issues/:id.json" + + issues: + update: (project_id, issue_id, data, callback) -> + url = Api.buildUrl(Api.issues_paths.update) + url = url + .replace(":id", project_id) + .replace(":issue_id", issue_id) + if not data? + data = {} + data.private_token = gon.api_token + $.ajax( + url: url + type: "PUT" + data: data + dataType: "json" + ).done (issue) -> + if callback? + callback(issue) group: (group_id, callback) -> url = Api.buildUrl(Api.group_path) diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee index 4b78bcde774..6cd39f5f0b9 100644 --- a/app/assets/javascripts/gl_dropdown.js.coffee +++ b/app/assets/javascripts/gl_dropdown.js.coffee @@ -143,10 +143,11 @@ class GitLabDropdown selector = ".dropdown-page-one .dropdown-content a" @dropdown.on "click", selector, (e) -> + e.preventDefault() self.rowClicked $(@) if self.options.clicked - self.options.clicked() + self.options.clicked.call(@,e) toggleLoading: -> $('.dropdown-menu', @dropdown).toggleClass LOADING_CLASS diff --git a/app/assets/javascripts/milestone_select.js.coffee b/app/assets/javascripts/milestone_select.js.coffee index e17a1adb648..18647e25c55 100644 --- a/app/assets/javascripts/milestone_select.js.coffee +++ b/app/assets/javascripts/milestone_select.js.coffee @@ -1,5 +1,6 @@ class @MilestoneSelect - constructor: -> + constructor: (@opts) -> + opts = @opts $('.js-milestone-select').each (i, dropdown) -> $dropdown = $(dropdown) projectId = $dropdown.data('project-id') @@ -9,6 +10,7 @@ class @MilestoneSelect showAny = $dropdown.data('show-any') useId = $dropdown.data('use-id') defaultLabel = $dropdown.data('default-label') + issuableId = $dropdown.data('issuable-id') $dropdown.glDropdown( data: (term, callback) -> @@ -53,13 +55,14 @@ class @MilestoneSelect milestone.id isSelected: (milestone) -> milestone.title is selectedMilestone - clicked: -> - page = $('body').data 'page' - isIssueIndex = page is 'projects:issues:index' - isMRIndex = page is page is 'projects:merge_requests:index' - if $dropdown.hasClass('js-filter-submit') and (isIssueIndex or isMRIndex) - Issues.filterResults $dropdown.closest('form') - else if $dropdown.hasClass 'js-filter-submit' - $dropdown.closest('form').submit() + clicked: (e) -> + if $(dropdown).hasClass "js-filter-submit" && opts.submitForm + $(dropdown).parents('form').submit() + else + milestoneVal = $(@) + .closest('.selectbox') + .find('input[type="hidden"]') + .val() + Api.issues.update(projectId, issuableId, milestone_id: milestoneVal, (data) => console.log 'data', data) ) diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb index 877b39c9b1b..b3b098c5153 100644 --- a/app/controllers/projects/issues_controller.rb +++ b/app/controllers/projects/issues_controller.rb @@ -58,6 +58,7 @@ class Projects::IssuesController < Projects::ApplicationController end def edit + puts params respond_with(@issue) end diff --git a/app/views/projects/merge_requests/_show.html.haml b/app/views/projects/merge_requests/_show.html.haml index ee5b9fd95a8..1dd8f721f7e 100644 --- a/app/views/projects/merge_requests/_show.html.haml +++ b/app/views/projects/merge_requests/_show.html.haml @@ -10,7 +10,7 @@ .merge-request{'data-url' => merge_request_path(@merge_request)} = render "projects/merge_requests/show/mr_title" - .merge-request-details.issuable-details + .merge-request-details.issuable-details{data: {id: @merge_request.project.id}} = render "projects/merge_requests/show/mr_box" .append-bottom-default.mr-source-target.prepend-top-default - if @merge_request.open? diff --git a/app/views/shared/issuable/_filter.html.haml b/app/views/shared/issuable/_filter.html.haml index f91ff0e3694..6eb5e5f867e 100644 --- a/app/views/shared/issuable/_filter.html.haml +++ b/app/views/shared/issuable/_filter.html.haml @@ -55,7 +55,9 @@ :javascript new UsersSelect(); new LabelsSelect(); - new MilestoneSelect(); + new MilestoneSelect({ + submitForm: true + }); new IssueStatusSelect(); $('form.filter-form').on('submit', function (event) { event.preventDefault(); diff --git a/app/views/shared/issuable/_sidebar.html.haml b/app/views/shared/issuable/_sidebar.html.haml index 0e20e86356d..4147eb613aa 100644 --- a/app/views/shared/issuable/_sidebar.html.haml +++ b/app/views/shared/issuable/_sidebar.html.haml @@ -62,10 +62,9 @@ = issuable.milestone.title - else .light None + .selectbox.hide-collapsed - = f.select(:milestone_id, milestone_options(issuable), { include_blank: true }, { class: 'select2 select2-compact js-select2 js-milestone', data: { placeholder: 'Select milestone' }}) - = hidden_field_tag :issuable_context - = f.submit class: 'btn hide' + = dropdown_tag("Milestone", options: { title: "Assign milestone", toggle_class: 'js-milestone-select', filter: true, dropdown_class: "dropdown-menu-selectable", placeholder: "Search milestones", data: { show_no: true, field_name: "milestone_id", project_id: @project.id, issuable_id: issuable.id, milestones: namespace_project_milestones_path(@project.namespace, @project, :js), use_id: true }}) - if issuable.project.labels.any? .block.labels @@ -117,4 +116,5 @@ :javascript new Subscription('.subscription'); + new MilestoneSelect(); new IssuableContext(); diff --git a/config/environments/development.rb b/config/environments/development.rb index 689694a3480..78fc91bc3cc 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -36,7 +36,7 @@ Rails.application.configure do # For having correct urls in mails config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } # Open sent mails in browser - config.action_mailer.delivery_method = :letter_opener + config.action_mailer.delivery_method = :test # Don't make a mess when bootstrapping a development environment config.action_mailer.perform_deliveries = (ENV['BOOTSTRAP'] != '1') -- 2.30.9