diff --git a/CHANGELOG b/CHANGELOG index bc19048e94b..78f7e8fe8f9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -14,6 +14,7 @@ v 8.12.0 (unreleased) - Filter tags by name !6121 - Update gitlab shell secret file also when it is empty. !3774 (glensc) - Give project selection dropdowns responsive width, make non-wrapping. + - Fix note form hint showing slash commands supported for commits. - Make push events have equal vertical spacing. - API: Ensure invitees are not returned in Members API. - Add two-factor recovery endpoint to internal API !5510 diff --git a/app/helpers/notes_helper.rb b/app/helpers/notes_helper.rb index da230f76bae..b0331f36a2f 100644 --- a/app/helpers/notes_helper.rb +++ b/app/helpers/notes_helper.rb @@ -10,6 +10,10 @@ module NotesHelper Ability.can_edit_note?(current_user, note) end + def note_supports_slash_commands?(note) + Notes::SlashCommandsService.supported?(note, current_user) + end + def noteable_json(noteable) { id: noteable.id, diff --git a/app/services/notes/slash_commands_service.rb b/app/services/notes/slash_commands_service.rb index 4a9a8a64653..a14898920a1 100644 --- a/app/services/notes/slash_commands_service.rb +++ b/app/services/notes/slash_commands_service.rb @@ -5,9 +5,17 @@ module Notes 'MergeRequest' => MergeRequests::UpdateService } - def supported?(note) + def self.noteable_update_service(note) + UPDATE_SERVICES[note.noteable_type] + end + + def self.supported?(note, current_user) noteable_update_service(note) && - can?(current_user, :"update_#{note.noteable_type.underscore}", note.noteable) + current_user.can?(:"update_#{note.noteable_type.underscore}", note.noteable) + end + + def supported?(note) + self.class.supported?(note, current_user) end def extract_commands(note) @@ -21,13 +29,7 @@ module Notes return if command_params.empty? return unless supported?(note) - noteable_update_service(note).new(project, current_user, command_params).execute(note.noteable) - end - - private - - def noteable_update_service(note) - UPDATE_SERVICES[note.noteable_type] + self.class.noteable_update_service(note).new(project, current_user, command_params).execute(note.noteable) end end end diff --git a/app/views/projects/notes/_form.html.haml b/app/views/projects/notes/_form.html.haml index 402f5b52f5e..46b402545cd 100644 --- a/app/views/projects/notes/_form.html.haml +++ b/app/views/projects/notes/_form.html.haml @@ -1,3 +1,5 @@ +- supports_slash_commands = note_supports_slash_commands?(@note) + = form_for [@project.namespace.becomes(Namespace), @project, @note], remote: true, html: { :'data-type' => 'json', multipart: true, id: nil, class: "new-note js-new-note-form js-quick-submit common-note-form", "data-noteable-iid" => @note.noteable.try(:iid), }, authenticity_token: true do |f| = hidden_field_tag :view, diff_view = hidden_field_tag :line_type @@ -14,8 +16,8 @@ attr: :note, classes: 'note-textarea js-note-text', placeholder: "Write a comment or drag your files here...", - supports_slash_commands: true - = render 'projects/notes/hints', supports_slash_commands: true + supports_slash_commands: supports_slash_commands + = render 'projects/notes/hints', supports_slash_commands: supports_slash_commands .error-alert .note-form-actions.clearfix diff --git a/spec/features/projects/commits/note_spec.rb b/spec/features/projects/commits/note_spec.rb new file mode 100644 index 00000000000..bc42b63c371 --- /dev/null +++ b/spec/features/projects/commits/note_spec.rb @@ -0,0 +1,16 @@ +require 'spec_helper' + +describe 'Projects > Commits > Note' do + let(:project) { create(:project) } + let(:commit) { project.commit('7d3b0f7cff5f37573aea97cebfd5692ea1689924') } + + before do + login_as :user + project.team << [@user, :master] + visit namespace_project_commit_path(project.namespace, project, commit.id) + end + + it 'says that only markdown is supported, not slash commands' do + expect(page).to have_content('Styling with Markdown is supported') + end +end