Class: Spina::Page

Inherits:
ActiveRecord::Base
  • Object
show all
Extended by:
FriendlyId
Defined in:
app/models/spina/page.rb

Instance Method Summary collapse

Instance Method Details

#activate!Object



92
93
94
95
# File 'app/models/spina/page.rb', line 92

def activate!
  self.active = true
  self.save
end

#content(page_part) ⇒ Object



70
71
72
73
# File 'app/models/spina/page.rb', line 70

def content(page_part)
  page_part = page_parts.where(name: page_part).first
  page_part.try(:content)
end

#custom_page?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'app/models/spina/page.rb', line 40

def custom_page?
  !deletable
end

#deactivate!Object



87
88
89
90
# File 'app/models/spina/page.rb', line 87

def deactivate!
  self.active = false
  self.save
end

#has_content?(page_part) ⇒ Boolean

Returns:

  • (Boolean)


66
67
68
# File 'app/models/spina/page.rb', line 66

def has_content?(page_part)
  content(page_part).present?
end

#live?Boolean

Returns:

  • (Boolean)


75
76
77
# File 'app/models/spina/page.rb', line 75

def live?
  !draft? && active?
end


52
53
54
# File 'app/models/spina/page.rb', line 52

def menu_title
  read_attribute(:menu_title).blank? ? title : read_attribute(:menu_title)
end

#next_siblingObject



83
84
85
# File 'app/models/spina/page.rb', line 83

def next_sibling
  self.siblings.where('position > ?', self.position).sorted.first
end

#page_part(page_part) ⇒ Object



60
61
62
63
64
# File 'app/models/spina/page.rb', line 60

def page_part(page_part)
  page_part = page_parts.where(name: page_part[:name]).first || page_parts.build(page_part)
  page_part.page_partable = page_part.page_partable_type.constantize.new unless page_part.page_partable.present?
  page_part
end

#previous_siblingObject



79
80
81
# File 'app/models/spina/page.rb', line 79

def previous_sibling
  self.siblings.where('position < ?', self.position).sorted.last
end

#save_childrenObject



48
49
50
# File 'app/models/spina/page.rb', line 48

def save_children
  self.children.each { |child| child.save }
end

#seo_titleObject



56
57
58
# File 'app/models/spina/page.rb', line 56

def seo_title
  read_attribute(:seo_title).blank? ? title : read_attribute(:seo_title)
end

#set_materialized_pathObject



44
45
46
# File 'app/models/spina/page.rb', line 44

def set_materialized_path
  self.materialized_path = generate_materialized_path
end

#should_generate_new_friendly_id?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'app/models/spina/page.rb', line 32

def should_generate_new_friendly_id?
  title_changed?
end

#slug_candidatesObject



25
26
27
28
29
30
# File 'app/models/spina/page.rb', line 25

def slug_candidates
  [
    :title, 
    [:title, :id]
  ]
end

#to_sObject



36
37
38
# File 'app/models/spina/page.rb', line 36

def to_s
  name
end