Class: Comatose::PageWrapper
- Inherits:
-
Object
- Object
- Comatose::PageWrapper
show all
- Defined in:
- lib/comatose/page_wrapper.rb
Constant Summary
collapse
- @@allowed_methods =
%w( id full_path uri slug keywords title to_html filter_type author updated_at created_at )
- @@custom_methods =
%w( link content parent next previous children rchildren first_child last_child has_keyword current_user )
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(page, locals = {}, system = {}) ⇒ PageWrapper
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/comatose/page_wrapper.rb', line 12
def initialize(page, locals={}, system={})
@current_user = system[:current_user]
@page = page
@keyword_lst = []
@keyword_hsh = {}
unless page.nil?
@keyword_lst = (page.keywords || '').downcase.split(',').map{ |k| k.strip }
@keyword_lst.each { |kw| @keyword_hsh[kw] = true }
end
@locals = locals
rescue => e
Comatose.logger.debug e.message
Comatose.logger.debug e.backtrace.join("\n")
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_id, *args) ⇒ Object
132
133
134
135
136
137
138
139
140
141
142
143
144
|
# File 'lib/comatose/page_wrapper.rb', line 132
def method_missing(method_id, *args)
if @@allowed_methods.include? method_id.to_s or page.attributes.has_key? method_id.to_s
page_value = page.send(method_id, *args)
return page_value
else
Comatose.logger.debug("PageWrapper#method_missing: could not find #{method_id}")
end
end
|
Instance Attribute Details
#current_user ⇒ Object
Returns the value of attribute current_user.
9
10
11
|
# File 'lib/comatose/page_wrapper.rb', line 9
def current_user
@current_user
end
|
#page ⇒ Object
Returns the value of attribute page.
9
10
11
|
# File 'lib/comatose/page_wrapper.rb', line 9
def page
@page
end
|
Instance Method Details
#[](key) ⇒ Object
107
108
109
110
111
112
113
114
|
# File 'lib/comatose/page_wrapper.rb', line 107
def [](key)
Comatose.logger.debug "using [] to find key: #{key}"
if @@allowed_methods.include? key.to_s page.send(key)
elsif @@custom_methods.include? key
self.send(key.to_sym)
end
end
|
#children ⇒ Object
95
96
97
98
|
# File 'lib/comatose/page_wrapper.rb', line 95
def children
@children ||= @page.children.to_a.collect {|child| Comatose::PageWrapper.new( child, @locals )}
end
|
#content ⇒ Object
79
80
81
|
# File 'lib/comatose/page_wrapper.rb', line 79
def content
@page.to_html( @locals )
end
|
#def(last_child) ⇒ Object
66
67
68
|
# File 'lib/comatose/page_wrapper.rb', line 66
def def last_child
children.last
end
|
#first_child ⇒ Object
61
62
63
|
# File 'lib/comatose/page_wrapper.rb', line 61
def first_child
children.first
end
|
#has_key?(key) ⇒ Boolean
117
118
119
|
# File 'lib/comatose/page_wrapper.rb', line 117
def has_key?(key)
@@allowed_methods.include? key or @@custom_methods.include? key
end
|
#has_keyword ⇒ Object
34
35
36
|
# File 'lib/comatose/page_wrapper.rb', line 34
def has_keyword
@keyword_hsh
end
|
#has_keyword?(keyword) ⇒ Boolean
29
30
31
|
# File 'lib/comatose/page_wrapper.rb', line 29
def has_keyword?(keyword)
@page.has_keyword?(keyword)
end
|
#link(title = nil) ⇒ Object
Generates a link to this page… You can pass in the link text, otherwise it will default to the page title.
73
74
75
76
|
# File 'lib/comatose/page_wrapper.rb', line 73
def link(title=nil)
title = @page.title if title.nil?
TextFilters[@page.filter_type].create_link(title, @page.uri)
end
|
#next ⇒ Object
39
40
41
42
43
44
45
46
47
|
# File 'lib/comatose/page_wrapper.rb', line 39
def next
@next_page ||= begin
if @page.lower_item.nil?
nil
else
Comatose::PageWrapper.new( @page.lower_item )
end
end
end
|
#parent ⇒ Object
84
85
86
87
88
89
90
91
92
|
# File 'lib/comatose/page_wrapper.rb', line 84
def parent
@parent ||= begin
if @page.parent.nil?
nil
else
Comatose::PageWrapper.new( @page.parent )
end
end
end
|
#previous ⇒ Object
50
51
52
53
54
55
56
57
58
|
# File 'lib/comatose/page_wrapper.rb', line 50
def previous
@prev_page ||= begin
if @page.higher_item.nil?
nil
else
Comatose::PageWrapper.new( @page.higher_item )
end
end
end
|
#rchildren ⇒ Object
Children, in reverse order
102
103
104
|
# File 'lib/comatose/page_wrapper.rb', line 102
def rchildren
children.reverse
end
|
#to_liquid ⇒ Object
127
128
129
|
# File 'lib/comatose/page_wrapper.rb', line 127
def to_liquid
self
end
|
#to_s ⇒ Object
122
123
124
|
# File 'lib/comatose/page_wrapper.rb', line 122
def to_s
@page.title
end
|