Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-10-11 22:51:11 +0300
committerDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-10-19 19:58:26 +0300
commit0e8dd599134f17e58cf533ab21cf3c4a5b50c353 (patch)
tree3d55561fe27868758ee974ab005b2e69d32916bc /app/models/label.rb
parent247859c82915a0ee88944c1fcda3f6faf49e54c0 (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.rb28
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