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

issues_helper.rb « gitlab « helpers « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 67238926555ab69375fbf516ef044ca3fa5c481d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
module Gitlab
  module IssuesHelper
    def issue_css_classes(issue)
      classes = "issue"
      classes << " closed" if issue.closed?
      classes << " today" if issue.today?
      classes
    end

    # Returns an OpenStruct object suitable for use by <tt>options_from_collection_for_select</tt>
    # to allow filtering issues by an unassigned User or Milestone
    def unassigned_filter
      # Milestone uses :title, Issue uses :name
      OpenStruct.new(id: 0, title: 'None (backlog)', name: 'Unassigned')
    end

    def url_for_project_issues(project = @project, options = {})
      return '' if project.nil?

      if options[:only_path]
        project.issues_tracker.project_path
      else
        project.issues_tracker.project_url
      end
    end

    def url_for_new_issue(project = @project, options = {})
      return '' if project.nil?

      if options[:only_path]
        project.issues_tracker.new_issue_path
      else
        project.issues_tracker.new_issue_url
      end
    end

    def url_for_issue(issue_iid, project = @project, options = {})
      return '' if project.nil?

      if options[:only_path]
        project.issues_tracker.issue_path(issue_iid)
      else
        project.issues_tracker.issue_url(issue_iid)
      end
    end

    def bulk_update_milestone_options
      options_for_select([['None (backlog)', -1]]) +
          options_from_collection_for_select(project_active_milestones, 'id',
                                             'title', params[:milestone_id])
    end

    def milestone_options(object)
      options_from_collection_for_select(object.project.milestones.active,
                                         'id', 'title', object.milestone_id)
    end

    def issue_box_class(item)
      if item.respond_to?(:expired?) && item.expired?
        'issue-box-expired'
      elsif item.respond_to?(:merged?) && item.merged?
        'issue-box-merged'
      elsif item.closed?
        'issue-box-closed'
      else
        'issue-box-open'
      end
    end

    def issue_to_atom(xml, issue)
      xml.entry do
        xml.id      namespace_project_issue_url(issue.project.namespace,
                                                issue.project, issue)
        xml.link    href: namespace_project_issue_url(issue.project.namespace,
                                                      issue.project, issue)
        xml.title   truncate(issue.title, length: 80)
        xml.updated issue.created_at.strftime("%Y-%m-%dT%H:%M:%SZ")
        xml.media   :thumbnail, width: "40", height: "40", url: avatar_icon(issue.author_email)
        xml.author do |author|
          xml.name issue.author_name
          xml.email issue.author_email
        end
        xml.summary issue.title
      end
    end

    # Required for Gitlab::Markdown::IssueReferenceFilter
    module_function :url_for_issue
  end
end