File: _note.html.haml

package info (click to toggle)
gitlab 17.6.5-19
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 629,368 kB
  • sloc: ruby: 1,915,304; javascript: 557,307; sql: 60,639; xml: 6,509; sh: 4,567; makefile: 1,239; python: 406
file content (83 lines) | stat: -rw-r--r-- 4,751 bytes parent folder | download
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
- return unless note.author
- return unless note.readable_by?(current_user)

- show_image_comment_badge = local_assigns.fetch(:show_image_comment_badge, false)
- note_editable = can?(current_user, :admin_note, note)
- note_counter = local_assigns.fetch(:note_counter, 0)

%li.timeline-entry.note-wrapper{ id: dom_id(note),
  class: ["note", "note-comment", "note-row-#{note.id}", ('system-note system-note-legacy' if note.system)],
  data: { author_id: note.author.id,
    editable: note_editable,
    note_id: note.id } }
  .timeline-entry-inner
    - if note.system
      .gl-float-left.gl-flex.gl-justify-center.gl-items-center.gl-rounded-full.-gl-mt-1.gl-ml-2.gl-w-6.gl-h-6.gl-bg-gray-50.gl-text-subtle
        = icon_for_system_note(note)
    - else
      .timeline-avatar.gl-float-left
        %a.image-diff-avatar-link.gl-block{ href: user_path(note.author) }
          = render Pajamas::AvatarComponent.new(note.author, size: 32, alt: '')
          - if note.is_a?(DiffNote) && note.on_image?
            - if show_image_comment_badge && note_counter == 0
              -# Only show this for the first comment in the discussion
              %span.image-comment-badge
                = sprite_icon('image-comment-dark')
            - elsif note_counter == 0
              - counter = badge_counter if local_assigns[:badge_counter]
              - badge_class = "hidden" if @fresh_discussion || counter.nil?
              %span.gl-flex.gl-items-center.gl-justify-center.gl-text-sm.design-note-pin.small.user-avatar{ class: badge_class }
                = counter
    %div{ class: ('timeline-content' unless note.system) }
      .note-header
        .note-header-info{ class: ('!gl-pt-0 -gl-mt-1' if note.system) }
          %a{ href: user_path(note.author) }
            %span.note-header-author-name.gl-font-bold
              = note.author.name
            = user_status(note.author)
          %span.note-headline-light{ data: { testid: 'note-author-content' } }
            = note.author.to_reference
          %span.note-headline-light.note-headline-meta{ class: ('gl-flex gl-flex-wrap gl-gap-2' if note.system) }
            - if note.system
              %span.system-note-message
                = markdown_field(note, :note)
            - if note.created_at
              %span.system-note-separator.gl-hidden.sm:gl-inline
                ·
              %a.system-note-separator{ href: "##{dom_id(note)}" }= time_ago_with_tooltip(note.created_at, placement: 'bottom', html_class: 'note-created-ago')
            - if note.imported?
              = render "import/shared/imported_badge", importable: note.system? ? _('activity') : _('comment')
        - unless note.system?
          .note-actions
            - if note.for_personal_snippet?
              = render 'snippets/notes/actions', note: note, note_editable: note_editable
            - else
              = render 'projects/notes/actions', note: note, note_editable: note_editable
      .timeline-discussion-body
        .note-body{ class: note_editable ? 'js-task-list-container' : '' }
          .note-text.md{ data: { testid: 'note-content' } }
            = markdown_field(note, :note)
          = edited_time_ago_with_tooltip(note, placement: 'bottom', html_class: 'note_edited_ago')
          .original-note-content.hidden{ data: { post_url: note_url(note), target_id: note.noteable.id, target_type: note.noteable.class.name.underscore } }
            #{note.note}
          - if note_editable
            = render 'shared/notes/edit', note: note
          .note-awards
            = render 'award_emoji/awards_block', awardable: note, inline: false
          - if note.system
            .system-note-commit-list-toggler.hide
              = _("Toggle commit list")
              = sprite_icon('chevron-down', css_class: 'js-chevron-down gl-ml-1 gl-align-text-bottom')
              = sprite_icon('chevron-up', css_class: 'js-chevron-up gl-ml-1 gl-align-text-bottom gl-hidden')
        - if note.attachment.url
          .note-attachment
            - if note.attachment.image?
              = link_to note.attachment.url, target: '_blank' do
                = image_tag note.attachment.url, class: 'note-image-attach col-lg-4'
            .attachment
              = link_to note.attachment.url, target: '_blank' do
                = sprite_icon('paperclip')
                = note.attachment_identifier
                = link_to delete_attachment_project_note_path(note.project, note),
                  title: _('Delete this attachment'), method: :delete, remote: true, data: { confirm: _('Are you sure you want to remove the attachment?') }, class: 'danger js-note-attachment-delete' do
                  = sprite_icon('remove', css_class: 'gl-text-danger')