summaryrefslogtreecommitdiff
path: root/app/views/projects/milestones/show.html.haml
blob: d1db0f64f88751303f5e773ac1bbca08c7db1a15 (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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
- page_title       @milestone.title, "Milestones"
- page_description @milestone.description

= render "header_title"

.detail-page-header
  .status-box{ class: status_box_class(@milestone) }
    - if @milestone.closed?
      Closed
    - elsif @milestone.expired?
      Expired
    - else
      Open
  %span.identifier
    Milestone ##{@milestone.iid}
  - if @milestone.expires_at
    %span.creator
      ·
      = @milestone.expires_at
  .pull-right
    - if can?(current_user, :admin_milestone, @project)
      - if @milestone.active?
        = link_to 'Close Milestone', namespace_project_milestone_path(@project.namespace, @project, @milestone, milestone: {state_event: :close }), method: :put, class: "btn btn-close btn-nr btn-grouped"
      - else
        = link_to 'Reopen Milestone', namespace_project_milestone_path(@project.namespace, @project, @milestone, milestone: {state_event: :activate }), method: :put, class: "btn btn-reopen btn-nr btn-grouped"

      = link_to namespace_project_milestone_path(@project.namespace, @project, @milestone), data: { confirm: 'Are you sure?' }, method: :delete, class: "btn btn-grouped btn-nr btn-remove" do
        = icon('trash-o')
        Delete

      = link_to edit_namespace_project_milestone_path(@project.namespace, @project, @milestone), class: "btn btn-grouped btn-nr" do
        = icon('pencil-square-o')
        Edit

.detail-page-description.gray-content-block.second-block
  %h2.title
    = markdown escape_once(@milestone.title), pipeline: :single_line
  %div
    - if @milestone.description.present?
      .description
        .wiki
          = preserve do
            = markdown @milestone.description

- if @milestone.issues.any? && @milestone.can_be_closed?
  .alert.alert-success.prepend-top-default
    %span All issues for this milestone are closed. You may close milestone now.

.context.prepend-top-default
  %p.lead
    Progress:
    #{@milestone.closed_items_count} closed
    –
    #{@milestone.open_items_count} open
     
    %span.light #{@milestone.percent_complete}% complete
    %span.pull-right= @milestone.expires_at
  = milestone_progress_bar(@milestone)

%ul.center-top-menu.no-top.no-bottom
  %li.active
    = link_to '#tab-issues', 'data-toggle' => 'tab' do
      Issues
      %span.badge= @issues.count
  %li
    = link_to '#tab-merge-requests', 'data-toggle' => 'tab' do
      Merge Requests
      %span.badge= @merge_requests.count
  %li
    = link_to '#tab-participants', 'data-toggle' => 'tab' do
      Participants
      %span.badge= @users.count

.tab-content
  .tab-pane.active#tab-issues
    .gray-content-block.middle-block
      .pull-right
        - if can?(current_user, :create_issue, @project)
          = link_to new_namespace_project_issue_path(@project.namespace, @project, issue: { milestone_id: @milestone.id }), class: "btn  btn-grouped", title: "New Issue" do
            %i.fa.fa-plus
            New Issue
        - if can?(current_user, :read_issue, @project)
          = link_to 'Browse Issues', namespace_project_issues_path(@milestone.project.namespace, @milestone.project, milestone_title: @milestone.title), class: "btn btn-grouped"

      .oneline
        All issues in this milestone

    .row.prepend-top-default
      .col-md-4
        = render('issues', title: 'Unstarted Issues (open and unassigned)', issues: @issues.opened.unassigned, id: 'unassigned')
      .col-md-4
        = render('issues', title: 'Ongoing Issues (open and assigned)', issues: @issues.opened.assigned, id: 'ongoing')
      .col-md-4
        = render('issues', title: 'Completed Issues (closed)', issues: @issues.closed, id: 'closed')

  .tab-pane#tab-merge-requests
    .gray-content-block.middle-block
      .pull-right
        - if can?(current_user, :read_merge_request, @project)
          = link_to 'Browse Merge Requests', namespace_project_merge_requests_path(@milestone.project.namespace, @milestone.project, milestone_title: @milestone.title), class: "btn btn-grouped"

      .oneline
        All merge requests in this milestone

    .row.prepend-top-default
      .col-md-3
        = render('merge_requests', title: 'Work in progress (open and unassigned)', merge_requests: @merge_requests.opened.unassigned, id: 'unassigned')
      .col-md-3
        = render('merge_requests', title: 'Waiting for merge (open and assigned)', merge_requests: @merge_requests.opened.assigned, id: 'ongoing')
      .col-md-3
        = render('merge_requests', title: 'Rejected (closed)', merge_requests: @merge_requests.closed, id: 'closed')
      .col-md-3
        .panel.panel-primary
          .panel-heading Merged
          %ul.well-list
            - @merge_requests.merged.each do |merge_request|
              = render 'merge_request', merge_request: merge_request

  .tab-pane#tab-participants
    .gray-content-block.middle-block
      .oneline
        All participants to this milestone

    %ul.bordered-list
      - @users.each do |user|
        %li
          = link_to user, title: user.name, class: "darken" do
            = image_tag avatar_icon(user, 32), class: "avatar s32"
            %strong= truncate(user.name, lenght: 40)
            %br
            %small.cgray= user.username