Module: NotesHelper
- Included in:
- BaseDiscussionEntity, Mutations::IncidentManagement::TimelineEvent::PromoteFromNote, NoteEntity, Projects::BlobController, Projects::DiscussionsController, Projects::NotesController
- Defined in:
- app/helpers/notes_helper.rb
Constant Summary collapse
- MAX_PRERENDERED_NOTES =
10
Instance Method Summary collapse
- #add_diff_note_button(line_code, position, line_type) ⇒ Object
- #can_create_note? ⇒ Boolean
- #diff_view_data ⇒ Object
- #diff_view_line_data(line_code, position, line_type) ⇒ Object
- #discussion_path(discussion) ⇒ Object
- #discussions_path(issuable, **params) ⇒ Object
- #form_resources ⇒ Object
- #initial_notes_data(autocomplete) ⇒ Object
- #link_to_reply_discussion(discussion, line_type = nil) ⇒ Object
- #new_form_url ⇒ Object
- #note_human_max_access(note) ⇒ Object
- #note_supports_quick_actions?(note) ⇒ Boolean
- #note_target_fields(note) ⇒ Object
- #note_target_title(note) ⇒ Object
- #note_url(note, project = @project) ⇒ Object
- #noteable_note_url(note) ⇒ Object
- #notes_data(issuable) ⇒ Object
- #notes_url(params = {}) ⇒ Object
- #rendered_for_merge_request? ⇒ Boolean
Instance Method Details
#add_diff_note_button(line_code, position, line_type) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'app/helpers/notes_helper.rb', line 48 def (line_code, position, line_type) return if @diff_notes_disabled content_tag(:span, class: 'add-diff-note tooltip-wrapper') do '', class: 'note-button add-diff-note js-add-diff-note-button', type: 'submit', name: 'button', data: diff_view_line_data(line_code, position, line_type), title: _('Add a comment to this line') do sprite_icon('comment', size: 12) end end end |
#can_create_note? ⇒ Boolean
138 139 140 141 142 |
# File 'app/helpers/notes_helper.rb', line 138 def can_create_note? noteable = @issue || @merge_request || @snippet || @project can?(current_user, :create_note, noteable) end |
#diff_view_data ⇒ Object
24 25 26 27 28 |
# File 'app/helpers/notes_helper.rb', line 24 def diff_view_data return {} unless @new_diff_note_attrs @new_diff_note_attrs.slice(:noteable_id, :noteable_type, :commit_id) end |
#diff_view_line_data(line_code, position, line_type) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'app/helpers/notes_helper.rb', line 30 def diff_view_line_data(line_code, position, line_type) return if @diff_notes_disabled data = { line_code: line_code, line_type: line_type } if @use_legacy_diff_notes data[:note_type] = LegacyDiffNote.name else data[:note_type] = DiffNote.name data[:position] = Gitlab::Json.dump(position) end data end |
#discussion_path(discussion) ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'app/helpers/notes_helper.rb', line 85 def discussion_path(discussion) if discussion.for_merge_request? return unless discussion.diff_discussion? version_params = discussion.merge_request_version_params return unless version_params path_params = version_params.merge(anchor: discussion.line_code) diffs_project_merge_request_path(discussion.project, discussion.noteable, path_params) elsif discussion.for_commit? anchor = discussion.diff_discussion? ? discussion.line_code : "note_#{discussion.first_note.id}" project_commit_path(discussion.project, discussion.noteable, anchor: anchor) end end |
#discussions_path(issuable, **params) ⇒ Object
162 163 164 165 166 167 168 |
# File 'app/helpers/notes_helper.rb', line 162 def discussions_path(issuable, **params) if issuable.is_a?(Issue) discussions_project_issue_path(@project, issuable, params.merge(format: :json)) else discussions_project_merge_request_path(@project, issuable, params.merge(format: :json)) end end |
#form_resources ⇒ Object
124 125 126 127 128 129 130 |
# File 'app/helpers/notes_helper.rb', line 124 def form_resources if @snippet.is_a?(PersonalSnippet) [@note] else [@project, @note] end end |
#initial_notes_data(autocomplete) ⇒ Object
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'app/helpers/notes_helper.rb', line 144 def initial_notes_data(autocomplete) { notesUrl: notes_url, now: Time.now.to_i, diffView: diff_view, enableGFM: { emojis: true, members: autocomplete, issues: autocomplete, mergeRequests: autocomplete, vulnerabilities: autocomplete, epics: autocomplete, milestones: autocomplete, labels: autocomplete } } end |
#link_to_reply_discussion(discussion, line_type = nil) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'app/helpers/notes_helper.rb', line 62 def link_to_reply_discussion(discussion, line_type = nil) return unless current_user content_tag( :textarea, rows: 1, placeholder: _('Reply…'), 'aria-label': _('Reply to comment'), class: 'reply-placeholder-text-field js-discussion-reply-button', data: { discussion_id: discussion.reply_id, discussion_project_id: discussion.project&.id, line_type: line_type } ) do # render empty textarea end end |
#new_form_url ⇒ Object
132 133 134 135 136 |
# File 'app/helpers/notes_helper.rb', line 132 def new_form_url return unless @snippet.is_a?(PersonalSnippet) gitlab_snippet_notes_path(@snippet) end |
#note_human_max_access(note) ⇒ Object
81 82 83 |
# File 'app/helpers/notes_helper.rb', line 81 def note_human_max_access(note) note.project.team.human_max_access(note.) end |
#note_supports_quick_actions?(note) ⇒ Boolean
20 21 22 |
# File 'app/helpers/notes_helper.rb', line 20 def note_supports_quick_actions?(note) Notes::QuickActionsService.supported?(note) end |
#note_target_fields(note) ⇒ Object
13 14 15 16 17 18 |
# File 'app/helpers/notes_helper.rb', line 13 def note_target_fields(note) if note.noteable hidden_field_tag(:target_type, note.noteable.class.name.underscore) + hidden_field_tag(:target_id, note.noteable.id) end end |
#note_target_title(note) ⇒ Object
6 7 8 9 10 11 |
# File 'app/helpers/notes_helper.rb', line 6 def note_target_title(note) # The design title is already present in `Event#note_target_reference`. return if note.nil? || note.for_design? note.title end |
#note_url(note, project = @project) ⇒ Object
112 113 114 115 116 117 118 |
# File 'app/helpers/notes_helper.rb', line 112 def note_url(note, project = @project) if note.noteable.is_a?(PersonalSnippet) gitlab_snippet_note_path(note.noteable, note) else project_note_path(project, note) end end |
#noteable_note_url(note) ⇒ Object
120 121 122 |
# File 'app/helpers/notes_helper.rb', line 120 def noteable_note_url(note) Gitlab::UrlBuilder.build(note) if note.id end |
#notes_data(issuable) ⇒ Object
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 |
# File 'app/helpers/notes_helper.rb', line 170 def notes_data(issuable) data = { noteableType: @noteable.class.underscore, noteableId: @noteable.id, projectId: @project&.id, groupId: @group&.id, discussionsPath: discussions_path(issuable), registerPath: new_user_registration_path(redirect_to_referer: 'yes'), newSessionPath: new_session_path(:user, redirect_to_referer: 'yes'), markdownDocsPath: help_page_path('user/markdown.md'), quickActionsDocsPath: help_page_path('user/project/quick_actions.md'), closePath: close_issuable_path(issuable), reopenPath: reopen_issuable_path(issuable), notesPath: notes_url, prerenderedNotesCount: issuable.capped_notes_count(MAX_PRERENDERED_NOTES), lastFetchedAt: Time.current.to_i * NotesActions::MICROSECOND, notesFilter: current_user&.notes_filter_for(issuable) } if issuable.is_a?(MergeRequest) data.merge!( draftsPath: project_merge_request_drafts_path(@project, issuable), draftsPublishPath: publish_project_merge_request_drafts_path(@project, issuable), draftsDiscardPath: discard_project_merge_request_drafts_path(@project, issuable) ) end data end |
#notes_url(params = {}) ⇒ Object
102 103 104 105 106 107 108 109 110 |
# File 'app/helpers/notes_helper.rb', line 102 def notes_url(params = {}) if @snippet.is_a?(PersonalSnippet) gitlab_snippet_notes_path(@snippet, params) else params.merge!(target_id: @noteable.id, target_type: @noteable.class.name.underscore) project_noteable_notes_path(@project, params) end end |
#rendered_for_merge_request? ⇒ Boolean
200 201 202 |
# File 'app/helpers/notes_helper.rb', line 200 def rendered_for_merge_request? params[:from_merge_request].present? end |