diff options
author | Felipe Artur <felipefac@gmail.com> | 2016-07-13 16:49:47 -0300 |
---|---|---|
committer | Felipe Artur <felipefac@gmail.com> | 2016-07-20 12:11:37 -0300 |
commit | 323d796a0e7b5f1ef5a170f9918897f6a2d4121e (patch) | |
tree | 73a2939ff4a647e00c251171f3c8094acba355e0 /app | |
parent | ede048b930b2ceb89013793d878524eb20248d1f (diff) | |
download | gitlab-ce-323d796a0e7b5f1ef5a170f9918897f6a2d4121e.tar.gz |
Refactor service settings viewissue_8110
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/admin/services_controller.rb | 2 | ||||
-rw-r--r-- | app/controllers/concerns/service_params.rb | 10 | ||||
-rw-r--r-- | app/controllers/projects/services_controller.rb | 15 | ||||
-rw-r--r-- | app/helpers/services_helper.rb | 14 | ||||
-rw-r--r-- | app/models/project_services/slack_service.rb | 8 | ||||
-rw-r--r-- | app/models/service.rb | 8 | ||||
-rw-r--r-- | app/views/admin/services/_form.html.haml | 5 | ||||
-rw-r--r-- | app/views/projects/services/_form.html.haml | 5 | ||||
-rw-r--r-- | app/views/projects/services/slack/_service_settings.html.haml | 34 | ||||
-rw-r--r-- | app/views/shared/_service_settings.html.haml | 81 |
10 files changed, 52 insertions, 130 deletions
diff --git a/app/controllers/admin/services_controller.rb b/app/controllers/admin/services_controller.rb index 9d6287f3b61..7c37f3155da 100644 --- a/app/controllers/admin/services_controller.rb +++ b/app/controllers/admin/services_controller.rb @@ -15,7 +15,7 @@ class Admin::ServicesController < Admin::ApplicationController end def update - if service.update_attributes(application_services_params[:service]) + if service.update_attributes(service_params[:service]) redirect_to admin_application_settings_services_path, notice: 'Application settings saved successfully' else diff --git a/app/controllers/concerns/service_params.rb b/app/controllers/concerns/service_params.rb index a1c5cd28a27..471d15af913 100644 --- a/app/controllers/concerns/service_params.rb +++ b/app/controllers/concerns/service_params.rb @@ -18,18 +18,18 @@ module ServiceParams # Parameters to ignore if no value is specified FILTER_BLANK_PARAMS = [:password] - def application_services_params + def service_params dynamic_params = [] dynamic_params.concat(@service.event_channel_names) - application_services_params = params.permit(:id, service: ALLOWED_PARAMS + dynamic_params) + service_params = params.permit(:id, service: ALLOWED_PARAMS + dynamic_params) - if application_services_params[:service].is_a?(Hash) + if service_params[:service].is_a?(Hash) FILTER_BLANK_PARAMS.each do |param| - application_services_params[:service].delete(param) if application_services_params[:service][param].blank? + service_params[:service].delete(param) if service_params[:service][param].blank? end end - application_services_params + service_params end end diff --git a/app/controllers/projects/services_controller.rb b/app/controllers/projects/services_controller.rb index b0b66a9f599..6a227d85f6f 100644 --- a/app/controllers/projects/services_controller.rb +++ b/app/controllers/projects/services_controller.rb @@ -18,7 +18,7 @@ class Projects::ServicesController < Projects::ApplicationController end def update - if @service.update_attributes(service_params) + if @service.update_attributes(service_params[:service]) redirect_to( edit_namespace_project_service_path(@project.namespace, @project, @service.to_param, notice: @@ -49,17 +49,4 @@ class Projects::ServicesController < Projects::ApplicationController def service @service ||= @project.services.find { |service| service.to_param == params[:id] } end - - def service_params - dynamic_params = [] - dynamic_params.concat(@service.event_channel_names) if @service.is_a?(SlackService) - - service_params = params.require(:service).permit(ALLOWED_PARAMS + dynamic_params) - - FILTER_BLANK_PARAMS.each do |param| - service_params.delete(param) if service_params[param].blank? - end - - service_params - end end diff --git a/app/helpers/services_helper.rb b/app/helpers/services_helper.rb index 5d0f6e67c0c..2dd0bf5d71e 100644 --- a/app/helpers/services_helper.rb +++ b/app/helpers/services_helper.rb @@ -2,19 +2,19 @@ module ServicesHelper def service_event_description(event) case event when "push" - "Webhook will be triggered by a push to the repository" + "Event will be triggered by a push to the repository" when "tag_push" - "Webhook will be triggered when a new tag is pushed to the repository" + "Event will be triggered when a new tag is pushed to the repository" when "note" - "Webhook will be triggered when someone adds a comment" + "Event will be triggered when someone adds a comment" when "issue" - "Webhook will be triggered when an issue is created/updated/merged" + "Event will be triggered when an issue is created/updated/merged" when "merge_request" - "Webhook will be triggered when a merge request is created/updated/merged" + "Event will be triggered when a merge request is created/updated/merged" when "build" - "Webhook will be triggered when a build status changes" + "Event will be triggered when a build status changes" when "wiki_page" - "Webhook will be triggered when a wiki page is created/updated" + "Event will be triggered when a wiki page is created/updated" end end diff --git a/app/models/project_services/slack_service.rb b/app/models/project_services/slack_service.rb index 647188cc2ab..abbc780dc1a 100644 --- a/app/models/project_services/slack_service.rb +++ b/app/models/project_services/slack_service.rb @@ -95,6 +95,14 @@ class SlackService < Service supported_events.map { |event| event_channel_name(event) } end + def event_field(event) + fields.find { |field| field[:name] == event_channel_name(event) } + end + + def global_fields + fields.reject { |field| field[:name].end_with?('channel') } + end + private def get_channel_field(event) diff --git a/app/models/service.rb b/app/models/service.rb index 5e80b5e65d7..5bdbde97500 100644 --- a/app/models/service.rb +++ b/app/models/service.rb @@ -84,6 +84,14 @@ class Service < ActiveRecord::Base [] end + def event_field(event) + nil + end + + def global_fields + fields + end + def supported_events %w(push tag_push issue merge_request wiki_page) end diff --git a/app/views/admin/services/_form.html.haml b/app/views/admin/services/_form.html.haml index c6f8fc61a04..cdbfc60f9a4 100644 --- a/app/views/admin/services/_form.html.haml +++ b/app/views/admin/services/_form.html.haml @@ -4,10 +4,7 @@ %p #{@service.description} template = form_for :service, url: admin_application_settings_service_path, method: :put, html: { class: 'form-horizontal fieldset-form' } do |form| - - if @service.is_a?(SlackService) - = render 'projects/services/slack/service_settings', form: form - - else - = render 'shared/service_settings', form: form + = render 'shared/service_settings', form: form .form-actions = form.submit 'Save', class: 'btn btn-save' diff --git a/app/views/projects/services/_form.html.haml b/app/views/projects/services/_form.html.haml index abad7954db5..752fbc21a11 100644 --- a/app/views/projects/services/_form.html.haml +++ b/app/views/projects/services/_form.html.haml @@ -7,10 +7,7 @@ %p= @service.description .col-lg-9 = form_for(@service, as: :service, url: namespace_project_service_path(@project.namespace, @project, @service.to_param), method: :put, html: { class: 'form-horizontal' }) do |form| - - if @service.is_a?(SlackService) - = render 'projects/services/slack/service_settings', form: form - - else - = render 'shared/service_settings', form: form + = render 'shared/service_settings', form: form = form.submit 'Save changes', class: 'btn btn-save' diff --git a/app/views/projects/services/slack/_service_settings.html.haml b/app/views/projects/services/slack/_service_settings.html.haml deleted file mode 100644 index 12f4c2e45b9..00000000000 --- a/app/views/projects/services/slack/_service_settings.html.haml +++ /dev/null @@ -1,34 +0,0 @@ -= form_errors(@service) - -- if @service.help.present? - .well - = preserve do - = markdown @service.help - -.form-group - = form.label :active, "Active", class: "control-label" - .col-sm-10 - = form.check_box :active - -.form-group - = form.label :url, "Trigger", class: 'control-label' - - .col-sm-10 - - @service.supported_events.each do |event| - %div - = form.check_box service_event_field_name(event), class: 'pull-left' - .prepend-left-20 - = form.label service_event_field_name(event), class: 'list-label' do - %strong - = event.humanize - - %p - - field = @service.fields.select{ |field| field[:name] == "#{event}_channel"}.first - = form.text_field field[:name], class: "form-control", placeholder: field[:placeholder] - - %p.light - = service_event_description(event) - -- @service.fields.each do |field| - - if %w(webhook username notify_only_broken_builds).include?(field[:name]) - = render 'shared/field', form: form, field: field diff --git a/app/views/shared/_service_settings.html.haml b/app/views/shared/_service_settings.html.haml index 4eaf7c2a025..5254d265918 100644 --- a/app/views/shared/_service_settings.html.haml +++ b/app/views/shared/_service_settings.html.haml @@ -10,69 +10,28 @@ .col-sm-10 = form.check_box :active -- if @service.supported_events.length > 1 - .form-group - = form.label :url, "Trigger", class: 'control-label' - .col-sm-10 - - if @service.supported_events.include?("push") - %div - = form.check_box :push_events, class: 'pull-left' - .prepend-left-20 - = form.label :push_events, class: 'list-label' do - %strong Push events - %p.light - This url will be triggered by a push to the repository - - if @service.supported_events.include?("tag_push") - %div - = form.check_box :tag_push_events, class: 'pull-left' - .prepend-left-20 - = form.label :tag_push_events, class: 'list-label' do - %strong Tag push events - %p.light - This url will be triggered when a new tag is pushed to the repository - - if @service.supported_events.include?("note") - %div - = form.check_box :note_events, class: 'pull-left' - .prepend-left-20 - = form.label :note_events, class: 'list-label' do - %strong Comments - %p.light - This url will be triggered when someone adds a comment - - if @service.supported_events.include?("issue") - %div - = form.check_box :issues_events, class: 'pull-left' - .prepend-left-20 - = form.label :issues_events, class: 'list-label' do - %strong Issues events - %p.light - This url will be triggered when an issue is created/updated/merged - - if @service.supported_events.include?("merge_request") - %div - = form.check_box :merge_requests_events, class: 'pull-left' - .prepend-left-20 - = form.label :merge_requests_events, class: 'list-label' do - %strong Merge Request events - %p.light - This url will be triggered when a merge request is created/updated/merged - - if @service.supported_events.include?("build") - %div - = form.check_box :build_events, class: 'pull-left' - .prepend-left-20 - = form.label :build_events, class: 'list-label' do - %strong Build events - %p.light - This url will be triggered when a build status changes - - if @service.supported_events.include?("wiki_page") - %div - = form.check_box :wiki_page_events, class: 'pull-left' - .prepend-left-20 - = form.label :wiki_page_events, class: 'list-label' do - %strong Wiki Page events - %p.light - This url will be triggered when a wiki page is created/updated +.form-group + = form.label :url, "Trigger", class: 'control-label' + + .col-sm-10 + - @service.supported_events.each do |event| + %div + = form.check_box service_event_field_name(event), class: 'pull-left' + .prepend-left-20 + = form.label service_event_field_name(event), class: 'list-label' do + %strong + = event.humanize + + - field = @service.event_field(event) + + - if field + %p + = form.text_field field[:name], class: "form-control", placeholder: field[:placeholder] + %p.light + = service_event_description(event) -- @service.fields.each do |field| +- @service.global_fields.each do |field| - type = field[:type] - if type == 'fieldset' |