diff options
author | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2016-10-11 22:51:11 +0300 |
---|---|---|
committer | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2016-10-19 19:58:26 +0300 |
commit | 0e8dd599134f17e58cf533ab21cf3c4a5b50c353 (patch) | |
tree | 3d55561fe27868758ee974ab005b2e69d32916bc /app/models/label.rb | |
parent | 247859c82915a0ee88944c1fcda3f6faf49e54c0 (diff) |
Move common logic to reference group/project label to Label#to_reference
Diffstat (limited to 'app/models/label.rb')
-rw-r--r-- | app/models/label.rb | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/app/models/label.rb b/app/models/label.rb index 7dd2d8790b0..444f45fa09e 100644 --- a/app/models/label.rb +++ b/app/models/label.rb @@ -97,8 +97,36 @@ class Label < ActiveRecord::Base write_attribute(:title, sanitize_title(value)) if value.present? end + ## + # Returns the String necessary to reference this Label in Markdown + # + # format - Symbol format to use (default: :id, optional: :name) + # + # Examples: + # + # Label.first.to_reference # => "~1" + # Label.first.to_reference(format: :name) # => "~\"bug\"" + # Label.first.to_reference(project1, project2) # => "gitlab-org/gitlab-ce~1" + # + # Returns a String + # + def to_reference(source_project = nil, target_project = nil, format: :id) + format_reference = label_format_reference(format) + reference = "#{self.class.reference_prefix}#{format_reference}" + + if cross_project_reference?(source_project, target_project) + source_project.to_reference + reference + else + reference + end + end + private + def cross_project_reference?(source_project, target_project) + source_project && target_project && source_project != target_project + end + def issues_count(user, params = {}) IssuesFinder.new(user, { label_name: title, scope: 'all' }.merge(params)) .execute |