summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorFelipe Artur <felipefac@gmail.com>2016-07-13 16:49:47 -0300
committerFelipe Artur <felipefac@gmail.com>2016-07-20 12:11:37 -0300
commit323d796a0e7b5f1ef5a170f9918897f6a2d4121e (patch)
tree73a2939ff4a647e00c251171f3c8094acba355e0 /app
parentede048b930b2ceb89013793d878524eb20248d1f (diff)
downloadgitlab-ce-323d796a0e7b5f1ef5a170f9918897f6a2d4121e.tar.gz
Refactor service settings viewissue_8110
Diffstat (limited to 'app')
-rw-r--r--app/controllers/admin/services_controller.rb2
-rw-r--r--app/controllers/concerns/service_params.rb10
-rw-r--r--app/controllers/projects/services_controller.rb15
-rw-r--r--app/helpers/services_helper.rb14
-rw-r--r--app/models/project_services/slack_service.rb8
-rw-r--r--app/models/service.rb8
-rw-r--r--app/views/admin/services/_form.html.haml5
-rw-r--r--app/views/projects/services/_form.html.haml5
-rw-r--r--app/views/projects/services/slack/_service_settings.html.haml34
-rw-r--r--app/views/shared/_service_settings.html.haml81
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'
&nbsp;
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'