Module: Spina::Pro::PageRevisions::PageDecorator

Extended by:
ActiveSupport::Concern
Defined in:
lib/spina/pro/page_revisions/page_decorator.rb

Instance Method Summary collapse

Instance Method Details

#copy_content_to_revision(revision) ⇒ Object



33
34
35
36
37
# File 'lib/spina/pro/page_revisions/page_decorator.rb', line 33

def copy_content_to_revision(revision)
  Spina.locales.each do |locale|
    revision.send("#{locale}_content=", send("#{locale}_content"))
  end
end

#create_draft!(updated_by: nil) ⇒ Object



26
27
28
29
30
31
# File 'lib/spina/pro/page_revisions/page_decorator.rb', line 26

def create_draft!(updated_by: nil)
  revision = page_revisions.create
  copy_content_to_revision(revision)
  revision.update(updated_by: updated_by, draft: true)
  revision
end

#load_revision(revision) ⇒ Object



11
12
13
14
15
16
# File 'lib/spina/pro/page_revisions/page_decorator.rb', line 11

def load_revision(revision)
  Spina.locales.each do |locale|
    send("#{locale}_content=", revision.send("#{locale}_content"))
  end
  self.draft = revision.draft
end

#save_revision!(revision = nil, updated_by: nil, draft: true) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/spina/pro/page_revisions/page_decorator.rb', line 18

def save_revision!(revision = nil, updated_by: nil, draft: true)
  # Don't create a new revision if nothing changed
  return if revision.nil? && !json_attributes_changed?
  revision ||= page_revisions.create
  copy_content_to_revision(revision)
  revision.update(updated_by: updated_by, draft: draft)
end