-
Notifications
You must be signed in to change notification settings - Fork 0
/
blog_extension.rb
67 lines (57 loc) · 2.08 KB
/
blog_extension.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# Uncomment this if you reference any of your controllers in activate
# require_dependency 'application_controller'
class BlogExtension < Radiant::Extension
version "1.0"
description "Add access control to radiant"
url "http://www.imustardsoft.com"
def activate
if admin.respond_to? :page
# Add a checkbox for enable 'the directory of blog'
admin.page.edit.add :parts_bottom, "edit_enable_blog_directory"
# Add 'Post time' and 'Post user' in the index page
admin.page.index.add :sitemap_head, "index_head_view_posted_time_user", :after => "title_column_header"
admin.page.index.add :node, "index_view_posted_time_user", :after => "title_column"
end
Admin::PagesController.class_eval do
before_filter :filter_other_page, :only => [:edit]
def index
if current_user.bloger
@homepage = Page.find_by_blog_directory(1)
else
@homepage = Page.find_by_parent_id(nil)
end
response_for :plural
end
private
def filter_other_page
if current_user.bloger && Page.find_by_id(params[:id]).created_by_id != current_user.id
redirect_to admin_pages_path
flash[:notice] = t 'You do not have permission to access, the request is denied'
end
end
end
Admin::NodeHelper.class_eval do
def render_node(page, locals = {})
if current_user.bloger && page.created_by_id != current_user.id && page.id != Page.find_by_blog_directory(1).id
return
end
@current_node = page
locals.reverse_merge!(:level => 0, :simple => false).merge!(:page => page)
render :partial => 'node', :locals => locals
end
end
Admin::UsersHelper.class_eval do
def roles(user)
roles = []
roles << I18n.t('admin') if user.admin?
roles << I18n.t('designer') if user.designer?
roles << I18n.t('bloger') if user.bloger?
roles.join(', ')
end
end
Page.class_eval do
# Associations
acts_as_tree :order => 'virtual DESC, created_at DESC'
end
end
end