72 lines
1.3 KiB
Ruby
72 lines
1.3 KiB
Ruby
require_dependency "discourse_diff"
|
|
|
|
class PostRevisionSerializer < ApplicationSerializer
|
|
attributes :post_id,
|
|
:version,
|
|
:revisions_count,
|
|
:username,
|
|
:display_username,
|
|
:avatar_template,
|
|
:created_at,
|
|
:edit_reason,
|
|
:inline,
|
|
:side_by_side,
|
|
:side_by_side_markdown
|
|
|
|
def version
|
|
object.number
|
|
end
|
|
|
|
def revisions_count
|
|
object.post.version
|
|
end
|
|
|
|
def username
|
|
object.user.username_lower
|
|
end
|
|
|
|
def display_username
|
|
object.user.username
|
|
end
|
|
|
|
def avatar_template
|
|
object.user.avatar_template
|
|
end
|
|
|
|
def edit_reason
|
|
return unless object.modifications["edit_reason"].present?
|
|
object.modifications["edit_reason"][1]
|
|
end
|
|
|
|
def inline
|
|
DiscourseDiff.new(previous_cooked, cooked).inline_html
|
|
end
|
|
|
|
def side_by_side
|
|
DiscourseDiff.new(previous_cooked, cooked).side_by_side_html
|
|
end
|
|
|
|
def side_by_side_markdown
|
|
DiscourseDiff.new(previous_raw, raw).side_by_side_markdown
|
|
end
|
|
|
|
private
|
|
|
|
def previous_cooked
|
|
@previous_cooked ||= object.modifications["cooked"][0]
|
|
end
|
|
|
|
def previous_raw
|
|
@previous_raw ||= object.modifications["raw"][0]
|
|
end
|
|
|
|
def cooked
|
|
@cooked ||= object.modifications["cooked"][1]
|
|
end
|
|
|
|
def raw
|
|
@raw ||= object.modifications["raw"][1]
|
|
end
|
|
|
|
end
|