Class: RivetCms::RevisionSerializer
- Inherits:
-
Object
- Object
- RivetCms::RevisionSerializer
- Defined in:
- app/serializers/rivet_cms/revision_serializer.rb
Constant Summary collapse
- RICH_TEXT_TAGS =
%w[p br strong em b i u s del a img ul ol li h1 h2 h3 h4 h5 h6 blockquote pre code hr].freeze
- RICH_TEXT_ATTRS =
%w[href src alt title class target rel width height style].freeze
Instance Method Summary collapse
- #as_json ⇒ Object
-
#initialize(revision, fields: nil, populate: [], preview: false, preload: nil) ⇒ RevisionSerializer
constructor
fields: root-level key whitelist (nil = all).
Constructor Details
#initialize(revision, fields: nil, populate: [], preview: false, preload: nil) ⇒ RevisionSerializer
fields: root-level key whitelist (nil = all). populate: reference Field records to expand one level deep. preview: serve draft targets and skip the published-only relation filter. preload: a shared RevisionPreloader (built automatically for single-revision use).
10 11 12 13 14 15 16 17 |
# File 'app/serializers/rivet_cms/revision_serializer.rb', line 10 def initialize(revision, fields: nil, populate: [], preview: false, preload: nil) @revision = revision @field_keys = fields @populate = populate @populate_field_ids = populate.map(&:id).to_set @preview = preview @preload = preload end |
Instance Method Details
#as_json ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'app/serializers/rivet_cms/revision_serializer.rb', line 19 def as_json(*) return nil if @revision.nil? @preload ||= RevisionPreloader.new([ @revision ], populate_fields: @populate, preview: @preview) document = @preload.document_for(@revision) fields = @preload.fields_for_content_type(document.content_type_id) fields = fields.select { |field| @field_keys.include?(field.key) } if @field_keys { id: document.prefix_id, slug: document.slug, content_type: document.content_type.slug, state: @revision.state, data: serialize_owner(@revision, fields, root: true) } end |