Class: SpudPage

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

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.grouped(site_id = 0) ⇒ Object



28
29
30
31
32
33
34
35
# File 'app/models/spud_page.rb', line 28

def self.grouped(site_id=0)

  if(Spud::Core.multisite_mode_enabled)
    return site(site_id).to_a.group_by(&:spud_page_id)
  else
    return all.group_by(&:spud_page_id)
  end
end

.options_tree_for_page(config = {}) ⇒ Object

Returns an array of pages in order of heirarchy :fitler Filters out a page by ID, and all of its children

:value Pick an attribute to be used in the value field, defaults to ID


44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'app/models/spud_page.rb', line 44

def self.options_tree_for_page(config={})
  collection = config[:collection] || self.grouped(config[:site_id])
  level     = config[:level]     || 0
  parent_id  = config[:parent_id]  || nil
  filter      = config[:filter]     || nil
  value      = config[:value]       || :id
  list        = []
  if collection[parent_id]
    collection[parent_id].each do |c|
      if filter.blank? || c.id != filter.id
        list << [level.times.collect{ '- ' }.join('') + c.name, c[value]]
        list += self.options_tree_for_page({:collection => collection, :parent_id => c.id, :level => level+1, :filter => filter})
      end
    end
  end
  return list
end

Instance Method Details

#full_content_processedObject



24
25
26
# File 'app/models/spud_page.rb', line 24

def full_content_processed
  self.spud_page_partials.collect{|partial| partial.content_processed }.join(' ')
end

#generate_url_nameObject



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'app/models/spud_page.rb', line 63

def generate_url_name
  return true if self.name.blank?
  if !self.use_custom_url_name || self.url_name.blank?
    url_name = ""
    if !self.spud_page.blank?
     url_name += self.spud_page.url_name + "/"
    end
    url_name += self.name.parameterize.downcase
      if !self.use_custom_url_name
        pages = SpudPage

        if !self.id.blank?
pages = pages.where("id != #{self.id}")
        end
        url_names = pages.site(self.site_id).load.collect{|p| p.url_name}

        counter = 1
        url_name_new = url_name
        while url_names.include?(url_name_new) do
       url_name_new = url_name + "-#{counter}"
       counter += 1
        end
        # url_name = url_name_new
        # Check Permalinks List

        permalink = SpudPermalink.site(self.site_id).where(:url_name => url_name_new).first
        counter = 1
        while permalink.blank? == false

if permalink.attachment == self
  permalink.destroy
  permalink = nil
else
  url_name_new = url_name + "-#{counter}"
        counter += 1
        permalink = SpudPermalink.site(self.site_id).where(:url_name => url_name_new).first
end
        end
        url_name = url_name_new
  end
  if self.url_name.blank? == false && url_name != self.url_name
    self.spud_permalinks.create(:url_name => self.url_name,:site_id => self.site_id)
  end
     self.url_name = url_name
     self.use_custom_url_name = false
elsif self.id.to_i > 0
        page = SpudPage.where(:id => self.id).first
        if page.url_name.blank? == false && page.url_name != self.url_name
permalink = SpudPermalink.site(self.site_id).where(:url_name => self.url_name).first
if permalink.blank? == false
  if permalink.attachment == self
    permalink.destroy
  else
    self.errors.add :url_name, "This permalink has already been used by another page."
    return false
  end
end
self.spud_permalinks.create(:url_name => page.url_name,:site_id => self.site_id)
        end
end
return true
end

#is_private?Boolean

Returns:

  • (Boolean)


126
127
128
# File 'app/models/spud_page.rb', line 126

def is_private?
  return self.visibility == 1
end

#to_liquidObject



37
38
39
# File 'app/models/spud_page.rb', line 37

def to_liquid
  return {'name' => self.name, 'url_name' => self.url_name}
end