Class: Activa::Page

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/activa/page.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.has_root?Boolean

Returns:

  • (Boolean)


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

def self.has_root?
  unscoped.count > 0
end

.normalize_path(path) ⇒ Object



123
124
125
# File 'app/models/activa/page.rb', line 123

def self.normalize_path(path)
  path.sub(/^\/+/, '')
end

.normalize_uri(uri) ⇒ Object



119
120
121
# File 'app/models/activa/page.rb', line 119

def self.normalize_uri(uri)
  "/#{uri}".sub(/\/+/, '/')
end

.retrieve(uri) ⇒ Object



113
114
115
116
117
# File 'app/models/activa/page.rb', line 113

def self.retrieve(uri)
  uri = Activa::Page.normalize_uri(uri)
  uri = '/' if uri == '/home'
  Activa::Page.find_by_uri(Activa::Page.normalize_uri(uri))
end

Instance Method Details

#inner_pagesObject



105
106
107
# File 'app/models/activa/page.rb', line 105

def inner_pages
  children.select([:id, :parent_id, :title, :uri, :slug])
end

#neighboursObject



109
110
111
# File 'app/models/activa/page.rb', line 109

def neighbours
  self_and_siblings.select([:id, :parent_id, :title, :uri, :slug])
end

#pathObject



101
102
103
# File 'app/models/activa/page.rb', line 101

def path
  root? ? slug : Activa::Page.normalize_path(uri)
end

#potential_parentsObject

Retrieve list of all potential parents pages for current page



89
90
91
# File 'app/models/activa/page.rb', line 89

def potential_parents
  new_record? ? Activa::Page.scoped : Activa::Page.where("id != ?", id)
end

#publish(params = nil) ⇒ Object



72
73
74
75
76
# File 'app/models/activa/page.rb', line 72

def publish(params = nil)
  self.attributes = params if params
  self.state = :published
  save
end

#regenerate_uri!Object



97
98
99
# File 'app/models/activa/page.rb', line 97

def regenerate_uri!
  update_attribute(:uri, generate_uri)
end

#save_as_draftObject



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

def save_as_draft
  self.state = :draft
  save
end

#update_as_draft(params) ⇒ Object



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

def update_as_draft(params)
  self.attributes = params
  save_as_draft
end