Move repetition to the parent.

This commit is contained in:
Marin Jankovski 2015-01-26 16:24:11 -08:00
parent 9b5b334a79
commit 00a0d5aeea
4 changed files with 58 additions and 94 deletions

View file

@ -15,4 +15,48 @@ class IssueTrackerService < Service
def new_issue_url def new_issue_url
# implement inside child # implement inside child
end end
def fields
[
{ type: 'text', name: 'description', placeholder: description },
{ type: 'text', name: 'project_url', placeholder: 'Project url' },
{ type: 'text', name: 'issues_url', placeholder: 'Issue url'},
{ type: 'text', name: 'new_issue_url', placeholder: 'New Issue url'}
]
end
def initialize_properties
if properties.nil?
if enabled_in_gitlab_config
self.properties = {
title: issues_tracker['title'],
project_url: set_project_url,
issues_url: issues_tracker['issues_url'],
new_issue_url: issues_tracker['new_issue_url']
}
end
end
end
private
def enabled_in_gitlab_config
Gitlab.config.issues_tracker &&
Gitlab.config.issues_tracker.values.any? &&
issues_tracker
end
def issues_tracker
Gitlab.config.issues_tracker[to_param]
end
def set_project_url
id = self.project.issues_tracker_id
if id
issues_tracker['project_url'].gsub(":issues_tracker_id", id)
else
issues_tracker['project_url']
end
end
end end

View file

@ -21,49 +21,4 @@ class JiraService < IssueTrackerService
def to_param def to_param
'jira' 'jira'
end end
def fields
[
{ type: 'text', name: 'title', placeholder: title },
{ type: 'text', name: 'description', placeholder: description },
{ type: 'text', name: 'project_url', placeholder: 'Project url' },
{ type: 'text', name: 'issues_url', placeholder: 'Issue url'},
{ type: 'text', name: 'new_issue_url', placeholder: 'New Issue url'}
]
end
def initialize_properties
if properties.nil?
if enabled_in_gitlab_config
self.properties = {
title: issues_tracker['title'],
project_url: set_project_url,
issues_url: issues_tracker['issues_url'],
new_issue_url: issues_tracker['new_issue_url']
}
end
end
end
private
def enabled_in_gitlab_config
Gitlab.config.issues_tracker &&
Gitlab.config.issues_tracker.values.any? &&
issues_tracker
end
def issues_tracker
Gitlab.config.issues_tracker['jira']
end
def set_project_url
id = self.project.issues_tracker_id
if id
issues_tracker['project_url'].gsub(":issues_tracker_id", id)
else
issues_tracker['project_url']
end
end
end end

View file

@ -3,56 +3,22 @@ class RedmineService < IssueTrackerService
prop_accessor :title, :description, :project_url, :issues_url, :new_issue_url prop_accessor :title, :description, :project_url, :issues_url, :new_issue_url
def title def title
'Redmine' if self.properties && self.properties['title'].present?
self.properties['title']
else
'Redmine'
end
end end
def description def description
'Redmine issue tracker' if self.properties && self.properties['description'].present?
self.properties['description']
else
'Redmine issue tracker'
end
end end
def to_param def to_param
'redmine' 'redmine'
end end
def fields
[
{ type: 'text', name: 'project_url', placeholder: 'Project url' },
{ type: 'text', name: 'issues_url', placeholder: 'Issue url'},
{ type: 'text', name: 'new_issue_url', placeholder: 'New Issue url'}
]
end
def initialize_properties
if properties.nil?
if enabled_in_gitlab_config
self.properties = {
title: issues_tracker['title'],
project_url: set_project_url,
issues_url: issues_tracker['issues_url'],
new_issue_url: issues_tracker['new_issue_url']
}
end
end
end
private
def enabled_in_gitlab_config
Gitlab.config.issues_tracker &&
Gitlab.config.issues_tracker.values.any? &&
issues_tracker
end
def issues_tracker
Gitlab.config.issues_tracker['redmine']
end
def set_project_url
id = self.project.issues_tracker_id
if id
issues_tracker['project_url'].gsub(":issues_tracker_id", id)
else
issues_tracker['project_url']
end
end
end end

View file

@ -220,9 +220,8 @@ module Gitlab
link_to("#{prefix_text}##{identifier}", url, options) link_to("#{prefix_text}##{identifier}", url, options)
end end
else else
external_issue_tracker = project.external_issue_tracker if project.external_issue_tracker.present?
if external_issue_tracker.present? reference_external_issue(identifier, project,
reference_external_issue(identifier, external_issue_tracker, project,
prefix_text) prefix_text)
end end
end end
@ -266,10 +265,10 @@ module Gitlab
end end
end end
def reference_external_issue(identifier, issue_tracker, project = @project, def reference_external_issue(identifier, project = @project,
prefix_text = nil) prefix_text = nil)
url = url_for_issue(identifier, project) url = url_for_issue(identifier, project)
title = issue_tracker.title title = project.external_issue_tracker.title
options = html_options.merge( options = html_options.merge(
title: "Issue in #{title}", title: "Issue in #{title}",