summaryrefslogtreecommitdiff
path: root/app/views/projects/issues/show.html.haml
blob: 5f92d020eef08820e43a2764bd0d6c3a5191c3be (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
91
92
93
- @content_class = "limit-container-width" unless fluid_layout
- page_title           "#{@issue.title} (#{@issue.to_reference})", "Issues"
- page_description     @issue.description
- page_card_attributes @issue.card_attributes
- can_update_issue = can?(current_user, :update_issue, @issue)
- can_report_spam = @issue.submittable_as_spam_by?(current_user)

- if defined?(@issue) && @issue.confidential?
  .confidential-issue-warning{ data: { spy: 'affix' } }
    %span.confidential-issue-text
      #{confidential_icon(@issue)} This issue is confidential.
      %a{ href: help_page_path('user/project/issues/confidential_issues'), target: '_blank' }
        What are confidential issues?

.clearfix.detail-page-header
  .issuable-header
    .issuable-status-box.status-box.status-box-closed{ class: issue_button_visibility(@issue, false) }
      = icon('check', class: "hidden-sm hidden-md hidden-lg")
      %span.hidden-xs
        Closed
    .issuable-status-box.status-box.status-box-open{ class: issue_button_visibility(@issue, true) }
      = icon('circle-o', class: "hidden-sm hidden-md hidden-lg")
      %span.hidden-xs Open

    %a.btn.btn-default.pull-right.visible-xs-block.gutter-toggle.issuable-gutter-toggle.js-sidebar-toggle{ href: "#" }
      = icon('angle-double-left')

    .issuable-meta
      = issuable_meta(@issue, @project, "Issue")

  .issuable-actions
    .clearfix.issue-btn-group.dropdown
      %button.btn.btn-default.pull-left.hidden-md.hidden-lg{ type: "button", data: { toggle: "dropdown" } }
        Options
        = icon('caret-down')
      .dropdown-menu.dropdown-menu-align-right.hidden-lg
        %ul
          - if can_update_issue
            %li
              = link_to 'Edit', edit_namespace_project_issue_path(@project.namespace, @project, @issue), class: 'issuable-edit'
            %li
              = link_to 'Close issue', issue_path(@issue, issue: { state_event: :close }, format: 'json'), class: "btn-close #{issue_button_visibility(@issue, true)}", title: 'Close issue'
            %li
              = link_to 'Reopen issue', issue_path(@issue, issue: { state_event: :reopen }, format: 'json'), class: "btn-reopen #{issue_button_visibility(@issue, false)}", title: 'Reopen issue'
          - if can_report_spam
            %li
              = link_to 'Submit as spam', mark_as_spam_namespace_project_issue_path(@project.namespace, @project, @issue), method: :post, class: 'btn-spam', title: 'Submit as spam'
          - if can_update_issue || can_report_spam
            %li.divider
          %li
            = link_to 'New issue', new_namespace_project_issue_path(@project.namespace, @project), title: 'New issue', id: 'new_issue_link'

    - if can_update_issue
      = link_to 'Edit', edit_namespace_project_issue_path(@project.namespace, @project, @issue), class: 'hidden-xs hidden-sm btn btn-grouped issuable-edit'
      = link_to 'Close issue', issue_path(@issue, issue: { state_event: :close }, format: 'json'), class: "hidden-xs hidden-sm btn btn-grouped btn-close #{issue_button_visibility(@issue, true)}", title: 'Close issue'
      = link_to 'Reopen issue', issue_path(@issue, issue: { state_event: :reopen }, format: 'json'), class: "hidden-xs hidden-sm btn btn-grouped btn-reopen #{issue_button_visibility(@issue, false)}", title: 'Reopen issue'
    - if can_report_spam
      = link_to 'Submit as spam', mark_as_spam_namespace_project_issue_path(@project.namespace, @project, @issue), method: :post, class: 'hidden-xs hidden-sm btn btn-grouped btn-spam', title: 'Submit as spam'
    = link_to new_namespace_project_issue_path(@project.namespace, @project), class: 'hidden-xs hidden-sm btn btn-grouped new-issue-link btn-new btn-inverted', title: 'New issue', id: 'new_issue_link' do
      New issue

.issue-details.issuable-details
  .detail-page-description.content-block
    %script#js-issuable-app-initial-data{ type: "application/json" }= issuable_initial_data(@issue)
    #js-issuable-app
      %h2.title= markdown_field(@issue, :title)
      - if @issue.description.present?
        .description{ class: can?(current_user, :update_issue, @issue) ? 'js-task-list-container' : '' }
          .wiki= markdown_field(@issue, :description)
          %textarea.hidden.js-task-list-field= @issue.description

      = edited_time_ago_with_tooltip(@issue, placement: 'bottom', html_class: 'issue-edited-ago js-issue-edited-ago')

    #merge-requests{ data: { url: referenced_merge_requests_namespace_project_issue_url(@project.namespace, @project, @issue) } }
      // This element is filled in using JavaScript.

    #related-branches{ data: { url: related_branches_namespace_project_issue_url(@project.namespace, @project, @issue) } }
      // This element is filled in using JavaScript.

  .content-block.emoji-block
    .row
      .col-sm-8
        = render 'award_emoji/awards_block', awardable: @issue, inline: true
      .col-sm-4.new-branch-col
        = render 'new_branch' unless @issue.confidential?

  %section.issuable-discussion
    = render 'projects/issues/discussion'

= render 'shared/issuable/sidebar', issuable: @issue

= page_specific_javascript_bundle_tag('common_vue')
= page_specific_javascript_bundle_tag('issue_show')