Refactoring task queue partials

上级 8673a70f
......@@ -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
......
......@@ -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
......
.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]
&middot; #{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
.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)
&middot; #{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
%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)
&middot; #{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)
......@@ -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
end
it 'returns true when target respond to title' do
expect(subject.body?).to eq true
subject.target = build(:issue, title: 'Bugfix')
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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册