diff --git a/app/helpers/tasks_helper.rb b/app/helpers/tasks_helper.rb index a99f2b48a26..d8e0780e4c1 100644 --- a/app/helpers/tasks_helper.rb +++ b/app/helpers/tasks_helper.rb @@ -23,18 +23,20 @@ module TasksHelper [task.action_name, target].join(" ") end - def task_note_link_html(task) - link_to task_note_target_path(task) do + def task_target_link_html(task) + link_to task_target_path(task) do "##{task.target_iid}" end end - def task_note_target_path(task) + def task_target_path(task) + anchor = dom_id(task.note) if task.note.present? + polymorphic_path([task.project.namespace.becomes(Namespace), - task.project, task.target], anchor: dom_id(task.note)) + task.project, task.target], anchor: anchor) end - def task_note(text, options = {}) + def task_body(text, options = {}) text = first_line_in_markdown(text, 150, options) sanitize(text, tags: %w(a img b pre code p span)) end diff --git a/app/models/task.rb b/app/models/task.rb index 9b11698221d..0872743097c 100644 --- a/app/models/task.rb +++ b/app/models/task.rb @@ -50,12 +50,12 @@ class Task < ActiveRecord::Base end end - def body? - target.respond_to? :title - end - - def note_text - note.try(:note) + def body + if note.present? + note.note + else + target.title + end end def target_iid diff --git a/app/views/dashboard/tasks/_common.html.haml b/app/views/dashboard/tasks/_common.html.haml deleted file mode 100644 index b6d0c3c03ac..00000000000 --- a/app/views/dashboard/tasks/_common.html.haml +++ /dev/null @@ -1,17 +0,0 @@ -.task-title - %span.author_name= link_to_author task - %span.task_label{class: task.action_name} - = task_action_name(task) - - %strong= link_to "##{task.target_iid}", [task.project.namespace.becomes(Namespace), task.project, task.target] - - · #{time_ago_with_tooltip(task.created_at)} - -- if task.pending? - .task-actions.pull-right - = link_to 'Done', [:dashboard, task], method: :delete, class: 'btn' - -- if task.body? - .task-body - .task-note - = task.target.title diff --git a/app/views/dashboard/tasks/_note.html.haml b/app/views/dashboard/tasks/_note.html.haml deleted file mode 100644 index 2cfd55afccb..00000000000 --- a/app/views/dashboard/tasks/_note.html.haml +++ /dev/null @@ -1,26 +0,0 @@ -.task-title - %span.author_name - = link_to_author task - %span.task_label{class: task.action_name} - = task_action_name(task) - = task_note_link_html(task) - - · #{time_ago_with_tooltip(task.created_at)} - -- if task.pending? - .task-actions.pull-right - = link_to 'Done', [:dashboard, task], method: :delete, class: 'btn' - -.task-body - .task-note - .md - = task_note(task.note_text, project: task.project) - - note = task.note - - if note.attachment.url - - if note.attachment.image? - = link_to note.attachment.url, target: '_blank' do - = image_tag note.attachment.url, class: 'note-image-attach' - - else - = link_to note.attachment.url, target: "_blank", class: 'note-file-attach' do - %i.fa.fa-paperclip - = note.attachment_identifier diff --git a/app/views/dashboard/tasks/_task.html.haml b/app/views/dashboard/tasks/_task.html.haml index 2ca8f0dad63..d08b021f53b 100644 --- a/app/views/dashboard/tasks/_task.html.haml +++ b/app/views/dashboard/tasks/_task.html.haml @@ -1,8 +1,21 @@ %li{class: "task task-#{task.done? ? 'done' : 'pending'}", id: dom_id(task) } - .task-item{class: "#{task.body? ? 'task-block' : 'task-inline' }"} - = image_tag avatar_icon(task.author_email, 40), class: "avatar s40", alt:'' + .task-item{class: 'task-block'} + = image_tag avatar_icon(task.author_email, 40), class: 'avatar s40', alt:'' - - if task.note.present? - = render 'note', task: task - - else - = render 'common', task: task + .task-title + %span.author_name + = link_to_author task + %span.task_label + = task_action_name(task) + = task_target_link_html(task) + + · #{time_ago_with_tooltip(task.created_at)} + + - if task.pending? + .task-actions.pull-right + = link_to 'Done', [:dashboard, task], method: :delete, class: 'btn' + + .task-body + .task-note + .md + = task_body(task.body, project: task.project) diff --git a/spec/models/task_spec.rb b/spec/models/task_spec.rb index 2d00c7dbc8c..2bbd47c5e8a 100644 --- a/spec/models/task_spec.rb +++ b/spec/models/task_spec.rb @@ -51,35 +51,21 @@ describe Task, models: true do end end - describe '#body?' do - let(:issue) { build(:issue) } - + describe '#body' do before do - subject.target = issue + subject.target = build(:issue, title: 'Bugfix') end - it 'returns true when target respond to title' do - expect(subject.body?).to eq true - end - - it 'returns false when target does not respond to title' do - allow(issue).to receive(:respond_to?).with(:title).and_return(false) - - expect(subject.body?).to eq false - end - end - - describe '#note_text' do - it 'returns nil when note is blank' do + it 'returns target title when note is blank' do subject.note = nil - expect(subject.note_text).to be_nil + expect(subject.body).to eq 'Bugfix' end it 'returns note when note is present' do subject.note = build(:note, note: 'quick fix') - expect(subject.note_text).to eq 'quick fix' + expect(subject.body).to eq 'quick fix' end end