Class: Orange::BlogPostResource
Instance Attribute Summary
#model_class
Instance Method Summary
collapse
#afterDelete, #afterNew, #afterSave, #beforeDelete, #beforeNew, #beforeSave, #create, #delete, #do_list_view, #do_view, #edit, #find_one, #index, #list, #new, new, #onDelete, #onNew, #onSave, #save, #show, #table_row, use, #view, #view_opts
#routable, #route
Methods inherited from Resource
#afterLoad, call_me, #do_view, #find_extras, #init, #initialize, #options, #orange, #orange_name, #routable, #set_orange, set_orange, #view, #view_opts
#cattr_accessor, #cattr_reader, #cattr_writer, eval_in_accessor_module, fetch_value, store_value
Instance Method Details
#blog_archive_view(packet, opts = {}) ⇒ Object
67
68
69
70
|
# File 'lib/orange-more/blog/resources/blog_resource.rb', line 67
def blog_archive_view(packet, opts = {})
opts.merge!( :blog_url => blog_url_for(packet))
do_list_view(packet, :blog_archive_view, opts)
end
|
#blog_for_site(packet, site_id = false) ⇒ Object
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/orange-more/blog/resources/blog_resource.rb', line 72
def blog_for_site(packet, site_id = false)
site_id ||= (packet['subsite'].blank? ? packet['site'].id : packet['subsite'].id)
blog = OrangeBlog.first(:orange_site_id => site_id)
if !blog && packet.request.post?
blog = OrangeBlog.new
blog.title = 'An Orange Hosted Blog'
blog.orange_site = packet['site']
blog.save
end
if packet.request.post? && !OrangeRoute.first(:resource => 'blog', :orange_site_id => packet['site'].id)
orange[:sitemap, true].add_route_for(packet,
:orange_site_id => site_id,
:resource => :blog,
:resource_id => blog.id,
:resource_action => :blog_view,
:slug => 'blog',
:link_text => 'Orange Blog'
)
end
blog
end
|
#blog_list_view(packet, opts = {}) ⇒ Object
63
64
65
|
# File 'lib/orange-more/blog/resources/blog_resource.rb', line 63
def blog_list_view(packet, opts = {})
blog_offset_list_view(packet, opts.merge!({:page => 1}))
end
|
#blog_offset_list_view(packet, opts = {}) ⇒ Object
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/orange-more/blog/resources/blog_resource.rb', line 49
def blog_offset_list_view(packet, opts = {})
opts.merge!(packet.)
opts.merge!( :blog_url => blog_url_for(packet))
blog = blog_for_site(packet)
opts[:page] = opts[:page].to_i unless opts[:page].blank?
page = opts[:page].blank? ? 0 : opts[:page] - 1
opts[:list] = blog.posts.published.all(:order => :published_at.desc,
:limit => 5,
:offset => (5*page)
)
opts[:pages] = (blog.posts.published.count / 5) + 1
do_list_view(packet, :blog_offset_list_view, opts)
end
|
#blog_post_view(packet, opts = {}) ⇒ Object
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/orange-more/blog/resources/blog_resource.rb', line 26
def blog_post_view(packet, opts = {})
resource_path = packet['route.resource_path']
blog = blog_for_site(packet)
opts.merge!( :blog_url => blog_url_for(packet))
parts = resource_path.split('/')
if parts.size == 2
post = blog.posts.first(:id => parts[1].to_i)
elsif parts.size == 4
post = blog.posts.year_and_month(parts[1].to_i, parts[2].to_i).slug(parts[3])
end
if post
orange[:blog_posts].do_view(packet, :show, opts.merge({:model => post}))
else
"Not found"
end
end
|
#blog_url_for(packet) ⇒ Object
43
44
45
46
47
|
# File 'lib/orange-more/blog/resources/blog_resource.rb', line 43
def blog_url_for(packet)
blog = blog_for_site(packet)
blog_url = orange[:sitemap, true].url_for(packet, :orange_site_id => blog.orange_site_id, :resource => :blog, :resource_id => blog.id, :resource_action => :blog_view, :include_subsite => true)
blog_url.gsub!(/\/$/, '')
end
|
#blog_view(packet, opts = {}) ⇒ Object
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/orange-more/blog/resources/blog_resource.rb', line 13
def blog_view(packet, opts = {})
resource_path = packet['route.resource_path']
if resource_path.blank?
blog_list_view(packet, opts)
elsif resource_path =~ /^\/page/
blog_offset_list_view(packet, opts)
elsif resource_path =~ /^\/archives?/
blog_archive_view(packet, opts)
else
blog_post_view(packet, opts)
end
end
|
#find_list(packet, mode, id = false) ⇒ Object
94
95
96
97
98
99
100
101
|
# File 'lib/orange-more/blog/resources/blog_resource.rb', line 94
def find_list(packet, mode, id =false)
blog = blog_for_site(packet)
case mode
when :blog_list_view then blog.posts.published.all(:order => :published_at.desc, :limit => 5)
when :blog_archive_view then blog.posts.published
else OrangeBlog.all
end
end
|
#sitemap_row(packet, opts = {}) ⇒ Object
9
10
11
|
# File 'lib/orange-more/blog/resources/blog_resource.rb', line 9
def sitemap_row(packet, opts = {})
do_view(packet, :sitemap_row, opts)
end
|
#stack_init ⇒ Object
5
6
7
|
# File 'lib/orange-more/blog/resources/blog_resource.rb', line 5
def stack_init
orange[:admin, true].add_link("Settings", :resource => @my_orange_name, :text => 'Blog')
end
|