Module: Cms::Fortress::PageMethods

Defined in:
lib/cms/fortress/page_methods.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/cms/fortress/page_methods.rb', line 5

def self.included(base)

  base.extend ClassMethods

  base.class_eval do
    before_create { self.draft if self.new? }

    include AASM

    aasm do
      state :new, initial: true
      state :drafted
      state :reviewed
      state :scheduled
      state :published, before_enter: :check_publish_date

      event :draft do
        after :publish_page?
        transitions from: :new, to: :drafted
      end

      event :review do
        after :publish_page?
        transitions from: [:new, :drafted], to: :reviewed
      end

      event :schedule do
        after :publish_page?
        transitions from: [:new, :drafted, :reviewed], to: :scheduled, guard: :published_date?
      end

      event :publish do
        after :publish_page?
        transitions from: [:new, :drafted, :reviewed, :scheduled], to: :published
      end

      event :reset do
        after :publish_page?
        transitions from: [:reviewed, :scheduled, :published], to: :drafted
      end
    end

    def check_publish_date
      self.published_date = Time.now unless self.published_date
    end

    def publish_page?
      ret = false
      if self.published?
        ret = true
      else
        if self.scheduled? && self.published_date.present? && self.published_date <= Date.today
          ret = true
        end
      end
      self.is_published = ret
    end

  end

end