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



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

def self.grouped(site_id=0)

  if(Spud::Core.multisite_mode_enabled)
    return site(site_id).all.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


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

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

#generate_url_nameObject



62
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
# File 'app/models/spud_page.rb', line 62

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).all.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)


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

def is_private?
  return self.visibility == 1
end

#to_liquidObject



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

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