caboose-cms 0.2.95 → 0.2.96
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/app/models/caboose/database_session.rb +5 -0
- data/app/models/caboose/schema.rb +188 -0
- data/app/models/caboose/utilities/schema.rb +106 -0
- data/lib/caboose/engine.rb +0 -52
- data/lib/caboose/version.rb +1 -1
- data/lib/tasks/caboose.rake +17 -5
- metadata +5 -3
- data/lib/tasks/caboose_db.rake +0 -228
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YzlhMjFjOGFmMmMxMjU5MTRjZDA0MWQ3ODAxZDQ4NDdmZjVhOWIxOA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OGQ4ZThiOTM1NDkyOGQxMzFmYzM5ODk5M2ZhZjMyNzJmMjU5MTA4Nw==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YmZjOTcwMzY4MGI5NDRkODMzODlkZTgxMzE4OGQ3Mzg1ZmVjNDEzMWYyNmQ0
|
10
|
+
ZmI3NzQ0ZDAwMTVhOGI2ZTMwMTA2ZGZiYjQ0ZmYwNjEzNzBjNDRjNDQ2Yjk1
|
11
|
+
Y2U1MzIwZDUzMGQ3MzMzOGVkYjZlZGJlNDVhNjAyNTI2NWU2ODU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YjQ5MDc4MTczM2Y5MGVjYmEwMmYyMTg1MDZiYzU2MmI1Nzk0MzVkYTc2YTg1
|
14
|
+
ZjkyOTY4YTVhMzAwMTI5OTc4MTgxMjA4Y2QyOWVkY2FjMzY3NDMwMTUzNDJm
|
15
|
+
Mzk2ZWQwY2ExY2M1MTMxNTlmZDY1MDQ0MTViYThmYjYxNzRkNTU=
|
@@ -0,0 +1,188 @@
|
|
1
|
+
|
2
|
+
class Caboose::Schema < Caboose::Utilities::Schema
|
3
|
+
|
4
|
+
# Tables (in order) that were renamed in the development of the gem.
|
5
|
+
def self.renamed_tables
|
6
|
+
{
|
7
|
+
:roles_users => :role_memberships,
|
8
|
+
:permissions_roles => :role_permissions
|
9
|
+
}
|
10
|
+
end
|
11
|
+
|
12
|
+
# Any column indexes that need to exist in the database
|
13
|
+
def self.indexes
|
14
|
+
{
|
15
|
+
:role_memberships => [ :role_id , :user_id ],
|
16
|
+
:role_permissions => [ :role_id , :permission_id ],
|
17
|
+
:post_category_memberships => [ :post_id , :post_category_id ],
|
18
|
+
:sessions => [ :session_id , :updated_at ]
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
# The schema of the database
|
23
|
+
# { Model => [[name, data_type, options]] }
|
24
|
+
def self.schema
|
25
|
+
{
|
26
|
+
Caboose::User => [
|
27
|
+
[ :first_name , :string ],
|
28
|
+
[ :last_name , :string ],
|
29
|
+
[ :username , :string ],
|
30
|
+
[ :email , :string ],
|
31
|
+
[ :phone , :string ],
|
32
|
+
[ :password , :string ],
|
33
|
+
[ :password_reset_id , :string ],
|
34
|
+
[ :password_reset_sent , :datetime ],
|
35
|
+
[ :token , :string ],
|
36
|
+
[ :date_created , :datetime ]
|
37
|
+
],
|
38
|
+
Caboose::Role => [
|
39
|
+
[ :parent_id , :integer ],
|
40
|
+
[ :name , :string ],
|
41
|
+
[ :description , :string ]
|
42
|
+
],
|
43
|
+
Caboose::Permission => [
|
44
|
+
[ :resource , :string ],
|
45
|
+
[ :action , :string ]
|
46
|
+
],
|
47
|
+
Caboose::RoleMembership => [
|
48
|
+
[ :role_id, :integer ],
|
49
|
+
[ :user_id, :integer ]
|
50
|
+
],
|
51
|
+
Caboose::RolePermission => [
|
52
|
+
[ :role_id , :integer ],
|
53
|
+
[ :permission_id , :integer ]
|
54
|
+
],
|
55
|
+
Caboose::Asset => [
|
56
|
+
[ :page_id , :integer ],
|
57
|
+
[ :user_id , :integer ],
|
58
|
+
[ :date_uploaded , :datetime ],
|
59
|
+
[ :name , :string ],
|
60
|
+
[ :filename , :string ],
|
61
|
+
[ :description , :string ],
|
62
|
+
[ :extension , :string ]
|
63
|
+
],
|
64
|
+
Caboose::Page => [
|
65
|
+
[ :parent_id , :integer ],
|
66
|
+
[ :title , :string ],
|
67
|
+
[ :menu_title , :string ],
|
68
|
+
[ :content , :text ],
|
69
|
+
[ :slug , :string ],
|
70
|
+
[ :alias , :string ],
|
71
|
+
[ :uri , :string ],
|
72
|
+
[ :redirect_url , :string ],
|
73
|
+
[ :hide , :boolean , :default => false ],
|
74
|
+
[ :content_format , :integer , :default => Caboose::Page::CONTENT_FORMAT_HTML ],
|
75
|
+
[ :custom_css , :text ],
|
76
|
+
[ :custom_js , :text ],
|
77
|
+
[ :linked_resources , :text ],
|
78
|
+
[ :layout , :string ],
|
79
|
+
[ :sort_order , :integer , :default => 0 ],
|
80
|
+
[ :custom_sort_children , :boolean , :default => false ],
|
81
|
+
[ :seo_title , :string , :limit => 70 ],
|
82
|
+
[ :meta_description , :string , :limit => 156 ],
|
83
|
+
[ :meta_robots , :string , :default => 'index, follow' ],
|
84
|
+
[ :canonical_url , :string ],
|
85
|
+
[ :fb_description , :string , :limit => 156 ],
|
86
|
+
[ :gp_description , :string , :limit => 156 ]
|
87
|
+
],
|
88
|
+
Caboose::Post => [
|
89
|
+
[ :title , :text ],
|
90
|
+
[ :body , :text ],
|
91
|
+
[ :hide , :boolean ],
|
92
|
+
[ :image_url , :text ],
|
93
|
+
[ :created_at , :datetime ],
|
94
|
+
[ :updated_at , :datetime ]
|
95
|
+
],
|
96
|
+
Caboose::PostCategory => [
|
97
|
+
[ :name , :string ]
|
98
|
+
],
|
99
|
+
Caboose::PostCategoryMembership => [
|
100
|
+
[ :post_id , :integer ],
|
101
|
+
[ :post_category_id , :integer ]
|
102
|
+
],
|
103
|
+
Caboose::PagePermission => [
|
104
|
+
[ :role_id , :integer ],
|
105
|
+
[ :page_id , :integer ],
|
106
|
+
[ :action , :string ]
|
107
|
+
],
|
108
|
+
Caboose::DatabaseSession => [
|
109
|
+
[ :session_id , :string , :null => false ],
|
110
|
+
[ :data , :text ],
|
111
|
+
[ :created_at , :datetime , :null => true ],
|
112
|
+
[ :updated_at , :datetime , :null => true ]
|
113
|
+
],
|
114
|
+
Caboose::Setting => [
|
115
|
+
[ :name , :string ],
|
116
|
+
[ :value , :text ]
|
117
|
+
]
|
118
|
+
}
|
119
|
+
|
120
|
+
end
|
121
|
+
|
122
|
+
# Loads initial data into the database
|
123
|
+
def self.load_data
|
124
|
+
|
125
|
+
admin_user = nil
|
126
|
+
if !Caboose::User.exists?(:username => 'admin')
|
127
|
+
admin_user = Caboose::User.create(:first_name => 'Admin', :last_name => 'User', :username => 'admin', :email => 'william@nine.is')
|
128
|
+
admin_user.password = Digest::SHA1.hexdigest(Caboose::salt + 'caboose')
|
129
|
+
admin_user.save
|
130
|
+
end
|
131
|
+
admin_user = Caboose::User.where(:username => 'admin').first if admin_user.nil?
|
132
|
+
|
133
|
+
Caboose::Role.create(:parent_id => -1 , :name => 'Admin' ) if !Caboose::Role.exists?(:name => 'Admin' )
|
134
|
+
admin_role = Caboose::Role.where(:name => 'Admin' ).first
|
135
|
+
Caboose::Role.create(:parent_id => -1 , :name => 'Everyone Logged Out' ) if !Caboose::Role.exists?(:name => 'Everyone Logged Out' )
|
136
|
+
elo_role = Caboose::Role.where(:name => 'Everyone Logged Out' ).first
|
137
|
+
Caboose::Role.create(:parent_id => elo_role.id , :name => 'Everyone Logged In' ) if !Caboose::Role.exists?(:name => 'Everyone Logged In' )
|
138
|
+
eli_role = Caboose::Role.where(:name => 'Everyone Logged In' ).first
|
139
|
+
|
140
|
+
Caboose::User.create(:first_name => 'John', :last_name => 'Doe', :username => 'elo', :email => 'william@nine.is') if !Caboose::User.exists?(:username => 'elo')
|
141
|
+
elo_user = Caboose::User.where(:username => 'elo').first
|
142
|
+
|
143
|
+
Caboose::Permission.create(:resource => 'all' , :action => 'all' ) if !Caboose::Permission.exists?(:resource => 'all' , :action => 'all' )
|
144
|
+
Caboose::Permission.create(:resource => 'users' , :action => 'view' ) if !Caboose::Permission.exists?(:resource => 'users' , :action => 'view' )
|
145
|
+
Caboose::Permission.create(:resource => 'users' , :action => 'edit' ) if !Caboose::Permission.exists?(:resource => 'users' , :action => 'edit' )
|
146
|
+
Caboose::Permission.create(:resource => 'users' , :action => 'delete' ) if !Caboose::Permission.exists?(:resource => 'users' , :action => 'delete' )
|
147
|
+
Caboose::Permission.create(:resource => 'users' , :action => 'add' ) if !Caboose::Permission.exists?(:resource => 'users' , :action => 'add' )
|
148
|
+
Caboose::Permission.create(:resource => 'roles' , :action => 'view' ) if !Caboose::Permission.exists?(:resource => 'roles' , :action => 'view' )
|
149
|
+
Caboose::Permission.create(:resource => 'roles' , :action => 'edit' ) if !Caboose::Permission.exists?(:resource => 'roles' , :action => 'edit' )
|
150
|
+
Caboose::Permission.create(:resource => 'roles' , :action => 'delete' ) if !Caboose::Permission.exists?(:resource => 'roles' , :action => 'delete' )
|
151
|
+
Caboose::Permission.create(:resource => 'roles' , :action => 'add' ) if !Caboose::Permission.exists?(:resource => 'roles' , :action => 'add' )
|
152
|
+
Caboose::Permission.create(:resource => 'permissions' , :action => 'view' ) if !Caboose::Permission.exists?(:resource => 'permissions' , :action => 'view' )
|
153
|
+
Caboose::Permission.create(:resource => 'permissions' , :action => 'edit' ) if !Caboose::Permission.exists?(:resource => 'permissions' , :action => 'edit' )
|
154
|
+
Caboose::Permission.create(:resource => 'permissions' , :action => 'delete' ) if !Caboose::Permission.exists?(:resource => 'permissions' , :action => 'delete' )
|
155
|
+
Caboose::Permission.create(:resource => 'permissions' , :action => 'add' ) if !Caboose::Permission.exists?(:resource => 'permissions' , :action => 'add' )
|
156
|
+
|
157
|
+
# Add the admin user to the admin role
|
158
|
+
Caboose::RoleMembership.create(:user_id => admin_user.id, :role_id => admin_role.id) if !Caboose::RoleMembership.exists?(:user_id => admin_user.id, :role_id => admin_role.id)
|
159
|
+
|
160
|
+
# Add the elo to the elo role
|
161
|
+
Caboose::RoleMembership.create(:user_id => elo_user.id, :role_id => elo_role.id) if !Caboose::RoleMembership.exists?(:user_id => elo_user.id, :role_id => elo_role.id)
|
162
|
+
|
163
|
+
# Add the all/all permission to the admin role
|
164
|
+
admin_perm = Caboose::Permission.where(:resource => 'all', :action => 'all').first
|
165
|
+
Caboose::RolePermission.create(:role_id => admin_role.id, :permission_id => admin_perm.id) if !Caboose::RolePermission.exists?(:role_id => admin_role.id, :permission_id => admin_perm.id)
|
166
|
+
|
167
|
+
# Create the necessary pages
|
168
|
+
Caboose::Page.create(:title => 'Home' , :parent_id => -1, :hide => 0, :layout => 'home', :uri => '') if !Caboose::Page.exists?(:title => 'Home')
|
169
|
+
home_page = Caboose::Page.where(:title => 'Home', :parent_id => -1).first
|
170
|
+
Caboose::Page.create(:title => 'Admin' , :parent_id => home_page.id, :hide => 0, :layout => 'admin', :alias => 'admin', :slug => 'admin', :uri => 'admin') if !Caboose::Page.exists?(:alias => 'admin')
|
171
|
+
admin_page = Caboose::Page.where(:alias => 'admin').first
|
172
|
+
Caboose::Page.create(:title => 'Login' , :parent_id => home_page.id, :hide => 0, :layout => 'login', :alias => 'login', :slug => 'login', :uri => 'login') if !Caboose::Page.exists?(:alias => 'login')
|
173
|
+
login_page = Caboose::Page.where(:alias => 'login').first
|
174
|
+
|
175
|
+
Caboose::PagePermission.create(:role_id => elo_role.id, :page_id => home_page.id , :action => 'view') if !Caboose::PagePermission.exists?(:role_id => elo_role.id, :page_id => home_page.id , :action => 'view')
|
176
|
+
Caboose::PagePermission.create(:role_id => elo_role.id, :page_id => login_page.id , :action => 'view') if !Caboose::PagePermission.exists?(:role_id => elo_role.id, :page_id => login_page.id , :action => 'view')
|
177
|
+
|
178
|
+
# Create a default post category
|
179
|
+
Caboose::PostCategory.create(:name => 'General News') if !Caboose::PostCategory.exists?(:name => 'General News')
|
180
|
+
|
181
|
+
# Create the required settings
|
182
|
+
Caboose::Setting.create(:name => 'version' , :value => Caboose::VERSION ) if !Caboose::Setting.exists?(:name => 'version' , :value => Caboose::VERSION )
|
183
|
+
Caboose::Setting.create(:name => 'site_name' , :value => 'New Caboose Site' ) if !Caboose::Setting.exists?(:name => 'site_name' , :value => 'New Caboose Site' )
|
184
|
+
Caboose::Setting.create(:name => 'site_url' , :value => 'www.mycaboosesite.com' ) if !Caboose::Setting.exists?(:name => 'site_url' , :value => 'www.mycaboosesite.com' )
|
185
|
+
Caboose::Setting.create(:name => 'admin_email' , :value => 'william@nine.is' ) if !Caboose::Setting.exists?(:name => 'admin_email' , :value => 'william@nine.is' )
|
186
|
+
|
187
|
+
end
|
188
|
+
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
|
2
|
+
class Caboose::Utilities::Schema
|
3
|
+
|
4
|
+
# Tables (in order) that were renamed in the development of the gem.
|
5
|
+
def self.renamed_tables
|
6
|
+
return nil
|
7
|
+
end
|
8
|
+
|
9
|
+
# Any column indexes that need to exist in the database
|
10
|
+
def self.indexes
|
11
|
+
return nil
|
12
|
+
end
|
13
|
+
|
14
|
+
# The schema of the database
|
15
|
+
# { Model => [[name, data_type, options]] }
|
16
|
+
def self.schema
|
17
|
+
raise NotImplementedError.new("You must implement this")
|
18
|
+
end
|
19
|
+
|
20
|
+
# Loads initial data into the database
|
21
|
+
def self.load_data
|
22
|
+
end
|
23
|
+
|
24
|
+
#===========================================================================
|
25
|
+
# Methods that extended classes will use
|
26
|
+
#===========================================================================
|
27
|
+
|
28
|
+
# Verifies (non-destructively) that the given schema exists in the database.
|
29
|
+
def self.create_schema
|
30
|
+
return if self.schema.nil?
|
31
|
+
|
32
|
+
rename_tables
|
33
|
+
c = ActiveRecord::Base.connection
|
34
|
+
self.schema.each do |model, columns|
|
35
|
+
tbl = model.table_name
|
36
|
+
#puts "Creating table #{tbl}..."
|
37
|
+
c.create_table tbl if !c.table_exists?(tbl)
|
38
|
+
columns.each do |col|
|
39
|
+
#puts "Creating column #{tbl}.#{col[0]}..."
|
40
|
+
|
41
|
+
# Skip if the column exists with the proper data type
|
42
|
+
next if c.column_exists?(tbl, col[0], col[1])
|
43
|
+
|
44
|
+
# If the column doesn't exists, add it
|
45
|
+
if !c.column_exists?(tbl, col[0])
|
46
|
+
if col.count > 2
|
47
|
+
c.add_column tbl, col[0], col[1], col[2]
|
48
|
+
else
|
49
|
+
c.add_column tbl, col[0], col[1]
|
50
|
+
end
|
51
|
+
|
52
|
+
# Column exists, but not with the correct data type, try to change it
|
53
|
+
else
|
54
|
+
|
55
|
+
# Add a temp column
|
56
|
+
if col.count > 2
|
57
|
+
c.add_column tbl, "#{col[0]}_temp", col[1], col[2]
|
58
|
+
else
|
59
|
+
c.add_column tbl, "#{col[0]}_temp", col[1]
|
60
|
+
end
|
61
|
+
|
62
|
+
# Copy the old column and cast with correct data type to the new column
|
63
|
+
model.all.each do |m|
|
64
|
+
m["#{col[0]}_temp"] = case col[1]
|
65
|
+
when :integer then m[col[0]].to_i
|
66
|
+
when :string then m[col[0]].to_s
|
67
|
+
when :text then m[col[0]].to_s
|
68
|
+
when :numeric then m[col[0]].to_f
|
69
|
+
when :datetime then DateTime.parse(m[col[0]])
|
70
|
+
when :boolean then m[col[0]].to_i == 1
|
71
|
+
else nil
|
72
|
+
end
|
73
|
+
m.save
|
74
|
+
end
|
75
|
+
|
76
|
+
# Remove the old column and rename the new one
|
77
|
+
c.remove_column tbl, col[0]
|
78
|
+
c.rename_column tbl, "#{col[0]}_temp", col[0]
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
create_indexes
|
84
|
+
end
|
85
|
+
|
86
|
+
# Verifies (non-destructively) that the given indexes exist in the database.
|
87
|
+
def self.create_indexes
|
88
|
+
return if self.indexes.nil?
|
89
|
+
c = ActiveRecord::Base.connection
|
90
|
+
self.indexes.each do |table, indexes|
|
91
|
+
indexes.each do |index|
|
92
|
+
c.add_index table, index if !c.index_exists?(table, index)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
# Renames a set of tables
|
98
|
+
def self.rename_tables
|
99
|
+
return if self.renamed_tables.nil?
|
100
|
+
c = ActiveRecord::Base.connection
|
101
|
+
self.renamed_tables.each do |old_name, new_name|
|
102
|
+
c.rename_table old_name, new_name if c.table_exists?(old_name)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
data/lib/caboose/engine.rb
CHANGED
@@ -48,58 +48,6 @@ module Caboose
|
|
48
48
|
return obj.to_json
|
49
49
|
end
|
50
50
|
|
51
|
-
# Verifies (non-destructively) that the given schema exists in the database.
|
52
|
-
def Caboose.create_schema(schema)
|
53
|
-
c = ActiveRecord::Base.connection
|
54
|
-
schema.each do |model, columns|
|
55
|
-
tbl = model.table_name
|
56
|
-
c.create_table tbl if !c.table_exists?(tbl)
|
57
|
-
columns.each do |col|
|
58
|
-
|
59
|
-
# Skip if the column exists with the proper data type
|
60
|
-
next if c.column_exists?(tbl, col[0], col[1])
|
61
|
-
|
62
|
-
# If the column doesn't exists, add it
|
63
|
-
if !c.column_exists?(tbl, col[0])
|
64
|
-
if col.count > 2
|
65
|
-
c.add_column tbl, col[0], col[1], col[2]
|
66
|
-
else
|
67
|
-
c.add_column tbl, col[0], col[1]
|
68
|
-
end
|
69
|
-
|
70
|
-
# Column exists, but not with the correct data type, try to change it
|
71
|
-
else
|
72
|
-
|
73
|
-
# Add a temp column
|
74
|
-
if col.count > 2
|
75
|
-
c.add_column tbl, "#{col[0]}_temp", col[1], col[2]
|
76
|
-
else
|
77
|
-
c.add_column tbl, "#{col[0]}_temp", col[1]
|
78
|
-
end
|
79
|
-
|
80
|
-
# Copy the old column and cast with correct data type to the new column
|
81
|
-
model.all.each do |m|
|
82
|
-
m["#{col[0]}_temp"] = case col[1]
|
83
|
-
when :integer then m[col[0]].to_i
|
84
|
-
when :string then m[col[0]].to_s
|
85
|
-
when :text then m[col[0]].to_s
|
86
|
-
when :numeric then m[col[0]].to_f
|
87
|
-
when :datetime then DateTime.parse(m[col[0]])
|
88
|
-
when :boolean then m[col[0]].to_i == 1
|
89
|
-
else nil
|
90
|
-
end
|
91
|
-
m.save
|
92
|
-
end
|
93
|
-
|
94
|
-
# Remove the old column and rename the new one
|
95
|
-
c.remove_column tbl, col[0]
|
96
|
-
c.rename_column tbl, "#{col[0]}_temp", col[0]
|
97
|
-
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
51
|
# Strips html and returns the text that breaks closest to the given length
|
104
52
|
def Caboose.teaser_text(str, length = 100)
|
105
53
|
return "" if str.nil?
|
data/lib/caboose/version.rb
CHANGED
data/lib/tasks/caboose.rake
CHANGED
@@ -1,15 +1,27 @@
|
|
1
1
|
require "caboose/version"
|
2
2
|
require "caboose/migrations"
|
3
3
|
|
4
|
-
namespace :caboose do
|
4
|
+
namespace :caboose do
|
5
|
+
|
6
|
+
desc "Creates/verifies that all database tables and fields are correctly added."
|
7
|
+
task :db => :environment do
|
8
|
+
Caboose::Schema.create_schema
|
9
|
+
Caboose::Schema.load_data
|
10
|
+
end
|
11
|
+
|
12
|
+
desc "Creates all caboose tables"
|
13
|
+
task :create_schema => :environment do Caboose::Schema.create_schema end
|
14
|
+
|
15
|
+
desc "Loads data into caboose tables"
|
16
|
+
task :load_data => :environment do Caboose::Schema.load_data end
|
5
17
|
|
18
|
+
#=============================================================================
|
19
|
+
|
6
20
|
desc "Resets the admin password to 'caboose'"
|
7
|
-
task :reset_admin_pass => :environment do
|
8
|
-
|
21
|
+
task :reset_admin_pass => :environment do
|
9
22
|
admin_user = Caboose::User.where(username: 'admin').first
|
10
23
|
admin_user.password = Digest::SHA1.hexdigest(Caboose::salt + 'caboose')
|
11
|
-
admin_user.save
|
12
|
-
|
24
|
+
admin_user.save
|
13
25
|
end
|
14
26
|
|
15
27
|
desc "Sync production db to development"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: caboose-cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.96
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Barry
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-12-
|
11
|
+
date: 2013-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -181,6 +181,7 @@ files:
|
|
181
181
|
- app/models/caboose/authenticator.rb
|
182
182
|
- app/models/caboose/caboose_plugin.rb
|
183
183
|
- app/models/caboose/core_plugin.rb
|
184
|
+
- app/models/caboose/database_session.rb
|
184
185
|
- app/models/caboose/menu_block.rb
|
185
186
|
- app/models/caboose/page.rb
|
186
187
|
- app/models/caboose/page_bar_generator.rb
|
@@ -194,9 +195,11 @@ files:
|
|
194
195
|
- app/models/caboose/role.rb
|
195
196
|
- app/models/caboose/role_membership.rb
|
196
197
|
- app/models/caboose/role_permission.rb
|
198
|
+
- app/models/caboose/schema.rb
|
197
199
|
- app/models/caboose/setting.rb
|
198
200
|
- app/models/caboose/std_class.rb
|
199
201
|
- app/models/caboose/user.rb
|
202
|
+
- app/models/caboose/utilities/schema.rb
|
200
203
|
- app/views/caboose/admin/index.html.erb
|
201
204
|
- app/views/caboose/application/show.html.erb
|
202
205
|
- app/views/caboose/extras/error.html.erb
|
@@ -266,7 +269,6 @@ files:
|
|
266
269
|
- lib/sample_files/login.css
|
267
270
|
- lib/sample_files/tinymce.yml
|
268
271
|
- lib/tasks/caboose.rake
|
269
|
-
- lib/tasks/caboose_db.rake
|
270
272
|
- MIT-LICENSE
|
271
273
|
- Rakefile
|
272
274
|
- README.md
|
data/lib/tasks/caboose_db.rake
DELETED
@@ -1,228 +0,0 @@
|
|
1
|
-
require "caboose/version"
|
2
|
-
require "caboose/migrations"
|
3
|
-
|
4
|
-
namespace :caboose do
|
5
|
-
|
6
|
-
desc "Creates/verifies that all database tables and fields are correctly added."
|
7
|
-
task :db => :environment do
|
8
|
-
create_tables
|
9
|
-
load_data
|
10
|
-
end
|
11
|
-
|
12
|
-
desc "Drops all caboose tables"
|
13
|
-
task :drop_tables => :environment do drop_tables end
|
14
|
-
|
15
|
-
desc "Creates all caboose tables"
|
16
|
-
task :create_tables => :environment do create_tables end
|
17
|
-
|
18
|
-
desc "Loads data into caboose tables"
|
19
|
-
task :load_data => :environment do load_data end
|
20
|
-
|
21
|
-
#=============================================================================
|
22
|
-
|
23
|
-
def drop_tables
|
24
|
-
puts "Dropping any existing caboose tables..."
|
25
|
-
c = ActiveRecord::Base.connection
|
26
|
-
c.drop_table :users if c.table_exists?('users')
|
27
|
-
c.drop_table :roles if c.table_exists?('roles')
|
28
|
-
c.drop_table :permissions if c.table_exists?('permissions')
|
29
|
-
c.drop_table :roles_users if c.table_exists?('roles_users')
|
30
|
-
c.drop_table :permissions_roles if c.table_exists?('permissions_roles')
|
31
|
-
c.drop_table :assets if c.table_exists?('assets')
|
32
|
-
c.drop_table :pages if c.table_exists?('pages')
|
33
|
-
c.drop_table :posts if c.table_exists?('posts')
|
34
|
-
c.drop_table :page_permissions if c.table_exists?('page_permissions')
|
35
|
-
c.drop_table :sessions if c.table_exists?('sessions')
|
36
|
-
c.drop_table :settings if c.table_exists?('settings')
|
37
|
-
end
|
38
|
-
|
39
|
-
def create_tables
|
40
|
-
puts "Creating required caboose tables..."
|
41
|
-
|
42
|
-
c = ActiveRecord::Base.connection
|
43
|
-
|
44
|
-
# Users
|
45
|
-
c.create_table :users if !c.table_exists?(:users)
|
46
|
-
c.add_column :users, :first_name , :string if !c.column_exists?(:users, :first_name )
|
47
|
-
c.add_column :users, :last_name , :string if !c.column_exists?(:users, :last_name )
|
48
|
-
c.add_column :users, :username , :string if !c.column_exists?(:users, :username )
|
49
|
-
c.add_column :users, :email , :string if !c.column_exists?(:users, :email )
|
50
|
-
c.add_column :users, :phone , :string if !c.column_exists?(:users, :phone )
|
51
|
-
c.add_column :users, :password , :string if !c.column_exists?(:users, :password )
|
52
|
-
c.add_column :users, :password_reset_id , :string if !c.column_exists?(:users, :password_reset_id )
|
53
|
-
c.add_column :users, :password_reset_sent , :datetime if !c.column_exists?(:users, :password_reset_sent )
|
54
|
-
c.add_column :users, :token , :string if !c.column_exists?(:users, :token )
|
55
|
-
c.add_column :users, :date_created , :datetime if !c.column_exists?(:users, :date_created )
|
56
|
-
|
57
|
-
# Roles
|
58
|
-
c.create_table :roles if !c.table_exists?(:roles)
|
59
|
-
c.add_column :roles, :parent_id , :integer if !c.column_exists?(:roles, :parent_id )
|
60
|
-
c.add_column :roles, :name , :string if !c.column_exists?(:roles, :name )
|
61
|
-
c.add_column :roles, :description , :string if !c.column_exists?(:roles, :description )
|
62
|
-
|
63
|
-
# Permissions
|
64
|
-
c.create_table :permissions if !c.table_exists?(:permissions)
|
65
|
-
c.add_column :permissions, :resource , :string if !c.column_exists?(:permissions, :resource )
|
66
|
-
c.add_column :permissions, :action , :string if !c.column_exists?(:permissions, :action )
|
67
|
-
|
68
|
-
# Role membership
|
69
|
-
c.rename_table :roles_users, :role_memberships if c.table_exists?(:roles_users)
|
70
|
-
c.create_table :role_memberships if !c.table_exists?(:role_memberships)
|
71
|
-
c.add_column :role_memberships, :role_id, :integer if !c.column_exists?(:role_memberships, :role_id)
|
72
|
-
c.add_column :role_memberships, :user_id, :integer if !c.column_exists?(:role_memberships, :user_id)
|
73
|
-
c.add_index :role_memberships, :role_id if !c.index_exists?( :role_memberships, :role_id)
|
74
|
-
c.add_index :role_memberships, :user_id if !c.index_exists?( :role_memberships, :user_id)
|
75
|
-
|
76
|
-
# Role permissions
|
77
|
-
c.rename_table :permissions_roles, :role_permissions if c.table_exists?(:permissions_roles)
|
78
|
-
c.create_table :role_permissions if !c.table_exists?(:role_permissions)
|
79
|
-
c.add_column :role_permissions, :role_id , :integer if !c.column_exists?(:role_permissions, :role_id )
|
80
|
-
c.add_column :role_permissions, :permission_id , :integer if !c.column_exists?(:role_permissions, :permission_id )
|
81
|
-
c.add_index :role_permissions, :role_id if !c.index_exists?( :role_permissions, :role_id )
|
82
|
-
c.add_index :role_permissions, :permission_id if !c.index_exists?( :role_permissions, :permission_id )
|
83
|
-
|
84
|
-
# Assets
|
85
|
-
c.create_table :assets if !c.table_exists?(:assets)
|
86
|
-
c.add_column :assets, :page_id , :integer if !c.column_exists?(:assets, :page_id )
|
87
|
-
c.add_column :assets, :user_id , :integer if !c.column_exists?(:assets, :user_id )
|
88
|
-
c.add_column :assets, :date_uploaded , :datetime if !c.column_exists?(:assets, :date_uploaded )
|
89
|
-
c.add_column :assets, :name , :string if !c.column_exists?(:assets, :name )
|
90
|
-
c.add_column :assets, :filename , :string if !c.column_exists?(:assets, :filename )
|
91
|
-
c.add_column :assets, :description , :string if !c.column_exists?(:assets, :description )
|
92
|
-
c.add_column :assets, :extension , :string if !c.column_exists?(:assets, :extension )
|
93
|
-
|
94
|
-
# Pages
|
95
|
-
c.create_table :pages if !c.table_exists?(:pages)
|
96
|
-
c.add_column :pages, :parent_id , :integer if !c.column_exists?(:pages, :parent_id )
|
97
|
-
c.add_column :pages, :title , :string if !c.column_exists?(:pages, :title )
|
98
|
-
c.add_column :pages, :menu_title , :string if !c.column_exists?(:pages, :menu_title )
|
99
|
-
c.add_column :pages, :content , :text if !c.column_exists?(:pages, :content )
|
100
|
-
c.add_column :pages, :slug , :string if !c.column_exists?(:pages, :slug )
|
101
|
-
c.add_column :pages, :alias , :string if !c.column_exists?(:pages, :alias )
|
102
|
-
c.add_column :pages, :uri , :string if !c.column_exists?(:pages, :uri )
|
103
|
-
c.add_column :pages, :redirect_url , :string if !c.column_exists?(:pages, :redirect_url )
|
104
|
-
c.add_column :pages, :hide , :boolean , :default => false if !c.column_exists?(:pages, :hide )
|
105
|
-
c.add_column :pages, :content_format , :integer , :default => Caboose::Page::CONTENT_FORMAT_HTML if !c.column_exists?(:pages, :content_format )
|
106
|
-
c.add_column :pages, :custom_css , :text if !c.column_exists?(:pages, :custom_css )
|
107
|
-
c.add_column :pages, :custom_js , :text if !c.column_exists?(:pages, :custom_js )
|
108
|
-
c.add_column :pages, :linked_resources , :text if !c.column_exists?(:pages, :linked_resources )
|
109
|
-
c.add_column :pages, :layout , :string if !c.column_exists?(:pages, :layout )
|
110
|
-
c.add_column :pages, :sort_order , :integer , :default => 0 if !c.column_exists?(:pages, :sort_order )
|
111
|
-
c.add_column :pages, :custom_sort_children , :boolean , :default => false if !c.column_exists?(:pages, :custom_sort_children )
|
112
|
-
c.add_column :pages, :seo_title , :string , :limit => 70 if !c.column_exists?(:pages, :seo_title )
|
113
|
-
c.add_column :pages, :meta_description , :string , :limit => 156 if !c.column_exists?(:pages, :meta_description )
|
114
|
-
c.add_column :pages, :meta_robots , :string , :default => 'index, follow' if !c.column_exists?(:pages, :meta_robots )
|
115
|
-
c.add_column :pages, :canonical_url , :string if !c.column_exists?(:pages, :canonical_url )
|
116
|
-
c.add_column :pages, :fb_description , :string , :limit => 156 if !c.column_exists?(:pages, :fb_description )
|
117
|
-
c.add_column :pages, :gp_description , :string , :limit => 156 if !c.column_exists?(:pages, :gp_description )
|
118
|
-
|
119
|
-
# Posts
|
120
|
-
c.create_table :posts if !c.table_exists?(:posts)
|
121
|
-
c.add_column :posts, :title , :text if !c.column_exists?(:posts, :title )
|
122
|
-
c.add_column :posts, :body , :text if !c.column_exists?(:posts, :body )
|
123
|
-
c.add_column :posts, :hide , :boolean if !c.column_exists?(:posts, :hide )
|
124
|
-
c.add_column :posts, :image_url , :text if !c.column_exists?(:posts, :image_url )
|
125
|
-
c.add_column :posts, :created_at , :datetime if !c.column_exists?(:posts, :created_at )
|
126
|
-
c.add_column :posts, :updated_at , :datetime if !c.column_exists?(:posts, :updated_at )
|
127
|
-
|
128
|
-
# Post categories
|
129
|
-
c.create_table :post_categories if !c.table_exists?(:post_categories)
|
130
|
-
c.add_column :post_categories, :name , :string if !c.column_exists?(:post_categories, :name)
|
131
|
-
|
132
|
-
# Post category membership
|
133
|
-
c.create_table :post_category_memberships if !c.table_exists?(:post_category_memberships)
|
134
|
-
c.add_column :post_category_memberships, :post_id , :integer if !c.column_exists?(:post_category_memberships, :post_id )
|
135
|
-
c.add_column :post_category_memberships, :post_category_id , :integer if !c.column_exists?(:post_category_memberships, :post_category_id )
|
136
|
-
c.add_index :post_category_memberships, :post_id if !c.index_exists?( :post_category_memberships, :post_id )
|
137
|
-
c.add_index :post_category_memberships, :post_category_id if !c.index_exists?( :post_category_memberships, :post_category_id )
|
138
|
-
|
139
|
-
# Page permissions
|
140
|
-
c.create_table :page_permissions if !c.table_exists?(:page_permissions)
|
141
|
-
c.add_column :page_permissions, :role_id , :integer if !c.column_exists?(:page_permissions, :role_id )
|
142
|
-
c.add_column :page_permissions, :page_id , :integer if !c.column_exists?(:page_permissions, :page_id )
|
143
|
-
c.add_column :page_permissions, :action , :string if !c.column_exists?(:page_permissions, :action )
|
144
|
-
|
145
|
-
# Sessions
|
146
|
-
c.create_table :sessions if !c.table_exists?(:sessions)
|
147
|
-
c.add_column :sessions, :session_id , :string , :null => false if !c.column_exists?(:sessions, :session_id )
|
148
|
-
c.add_column :sessions, :data , :text if !c.column_exists?(:sessions, :data )
|
149
|
-
c.add_column :sessions, :created_at , :datetime , :null => true if !c.column_exists?(:sessions, :created_at )
|
150
|
-
c.add_column :sessions, :updated_at , :datetime , :null => true if !c.column_exists?(:sessions, :updated_at )
|
151
|
-
c.add_index :sessions, :session_id if !c.index_exists?( :sessions, :session_id )
|
152
|
-
c.add_index :sessions, :updated_at if !c.index_exists?( :sessions, :updated_at )
|
153
|
-
|
154
|
-
# Settings
|
155
|
-
c.create_table :settings if !c.table_exists?(:settings)
|
156
|
-
c.add_column :settings, :name , :string if !c.column_exists?(:settings, :name )
|
157
|
-
c.add_column :settings, :value , :text if !c.column_exists?(:settings, :value )
|
158
|
-
|
159
|
-
end
|
160
|
-
|
161
|
-
def load_data
|
162
|
-
puts "Loading data into caboose tables..."
|
163
|
-
|
164
|
-
admin_user = nil
|
165
|
-
if !Caboose::User.exists?(:username => 'admin')
|
166
|
-
admin_user = Caboose::User.create(:first_name => 'Admin', :last_name => 'User', :username => 'admin', :email => 'william@nine.is')
|
167
|
-
admin_user.password = Digest::SHA1.hexdigest(Caboose::salt + 'caboose')
|
168
|
-
admin_user.save
|
169
|
-
end
|
170
|
-
admin_user = Caboose::User.where(:username => 'admin').first if admin_user.nil?
|
171
|
-
|
172
|
-
Caboose::Role.create(:parent_id => -1 , :name => 'Admin' ) if !Caboose::Role.exists?(:name => 'Admin' )
|
173
|
-
Caboose::Role.create(:parent_id => -1 , :name => 'Everyone Logged Out' ) if !Caboose::Role.exists?(:name => 'Everyone Logged Out' )
|
174
|
-
Caboose::Role.create(:parent_id => elo_role.id , :name => 'Everyone Logged In' ) if !Caboose::Role.exists?(:name => 'Everyone Logged In' )
|
175
|
-
|
176
|
-
admin_role = Caboose::Role.where(:name => 'Admin' ).first
|
177
|
-
elo_role = Caboose::Role.where(:name => 'Everyone Logged Out' ).first
|
178
|
-
eli_role = Caboose::Role.where(:name => 'Everyone Logged In' ).first
|
179
|
-
|
180
|
-
Caboose::User.create(:first_name => 'John', :last_name => 'Doe', :username => 'elo', :email => 'william@nine.is') if !Caboose::User.exists?(:username => 'elo')
|
181
|
-
elo_user = Caboose::User.where(:username => 'elo').first
|
182
|
-
|
183
|
-
Caboose::Permission.create(:resource => 'all' , :action => 'all' ) if !Caboose::Permission.exists?(:resource => 'all' , :action => 'all' )
|
184
|
-
Caboose::Permission.create(:resource => 'users' , :action => 'view' ) if !Caboose::Permission.exists?(:resource => 'users' , :action => 'view' )
|
185
|
-
Caboose::Permission.create(:resource => 'users' , :action => 'edit' ) if !Caboose::Permission.exists?(:resource => 'users' , :action => 'edit' )
|
186
|
-
Caboose::Permission.create(:resource => 'users' , :action => 'delete' ) if !Caboose::Permission.exists?(:resource => 'users' , :action => 'delete' )
|
187
|
-
Caboose::Permission.create(:resource => 'users' , :action => 'add' ) if !Caboose::Permission.exists?(:resource => 'users' , :action => 'add' )
|
188
|
-
Caboose::Permission.create(:resource => 'roles' , :action => 'view' ) if !Caboose::Permission.exists?(:resource => 'roles' , :action => 'view' )
|
189
|
-
Caboose::Permission.create(:resource => 'roles' , :action => 'edit' ) if !Caboose::Permission.exists?(:resource => 'roles' , :action => 'edit' )
|
190
|
-
Caboose::Permission.create(:resource => 'roles' , :action => 'delete' ) if !Caboose::Permission.exists?(:resource => 'roles' , :action => 'delete' )
|
191
|
-
Caboose::Permission.create(:resource => 'roles' , :action => 'add' ) if !Caboose::Permission.exists?(:resource => 'roles' , :action => 'add' )
|
192
|
-
Caboose::Permission.create(:resource => 'permissions' , :action => 'view' ) if !Caboose::Permission.exists?(:resource => 'permissions' , :action => 'view' )
|
193
|
-
Caboose::Permission.create(:resource => 'permissions' , :action => 'edit' ) if !Caboose::Permission.exists?(:resource => 'permissions' , :action => 'edit' )
|
194
|
-
Caboose::Permission.create(:resource => 'permissions' , :action => 'delete' ) if !Caboose::Permission.exists?(:resource => 'permissions' , :action => 'delete' )
|
195
|
-
Caboose::Permission.create(:resource => 'permissions' , :action => 'add' ) if !Caboose::Permission.exists?(:resource => 'permissions' , :action => 'add' )
|
196
|
-
|
197
|
-
# Add the admin user to the admin role
|
198
|
-
Caboose::RoleMembership.create(:user_id => admin_user.id, :role_id => admin_role.id) if !Caboose::RoleMembership.exists?(:user_id => admin_user.id, :role_id => admin_role.id)
|
199
|
-
|
200
|
-
# Add the elo to the elo role
|
201
|
-
Caboose::RoleMembership.create(:user_id => elo_user.id, :role_id => elo_role.id) if !Caboose::RoleMembership.exists?(:user_id => elo_user.id, :role_id => elo_role.id)
|
202
|
-
|
203
|
-
# Add the all/all permission to the admin role
|
204
|
-
admin_perm = Caboose::Permission.where(:resource => 'all', :action => 'all').first
|
205
|
-
Caboose::RolePermission.create(:role_id => admin_role.id, :permission_id => admin_perm.id) if !Caboose::RolePermission.exists?(:role_id => admin_role.id, :permission_id => admin_perm.id)
|
206
|
-
|
207
|
-
# Create the necessary pages
|
208
|
-
Caboose::Page.create(:title => 'Home' , :parent_id => -1, :hide => 0, :layout => 'home', :uri => '') if !Caboose::Page.exists?(:title => 'Home')
|
209
|
-
home_page = Caboose::Page.where(:title => 'Home', :parent_id => -1).first
|
210
|
-
Caboose::Page.create(:title => 'Admin' , :parent_id => home_page.id, :hide => 0, :layout => 'admin', :alias => 'admin', :slug => 'admin', :uri => 'admin') if !Caboose::Page.exists?(:alias => 'admin')
|
211
|
-
admin_page = Caboose::Page.where(:alias => 'admin').first
|
212
|
-
Caboose::Page.create(:title => 'Login' , :parent_id => home_page.id, :hide => 0, :layout => 'login', :alias => 'login', :slug => 'login', :uri => 'login') if !Caboose::Page.exists?(:alias => 'login')
|
213
|
-
login_page = Caboose::Page.where(:alias => 'login').first
|
214
|
-
|
215
|
-
Caboose::PagePermission.create(:role_id => elo_role.id, :page_id => home_page.id , :action => 'view') if !Caboose::PagePermission.exists?(:role_id => elo_role.id, :page_id => home_page.id , :action => 'view')
|
216
|
-
Caboose::PagePermission.create(:role_id => elo_role.id, :page_id => login_page.id , :action => 'view') if !Caboose::PagePermission.exists?(:role_id => elo_role.id, :page_id => login_page.id , :action => 'view')
|
217
|
-
|
218
|
-
# Create a default post category
|
219
|
-
Caboose::PostCategory.create(:name => 'General News') if !Caboose::PostCategory.exists?(:name => 'General News')
|
220
|
-
|
221
|
-
# Create the required settings
|
222
|
-
Caboose::Setting.create(:name => 'version' , :value => Caboose::VERSION ) if !Caboose::Setting.exists?(:name => 'version' , :value => Caboose::VERSION )
|
223
|
-
Caboose::Setting.create(:name => 'site_name' , :value => 'New Caboose Site' ) if !Caboose::Setting.exists?(:name => 'site_name' , :value => 'New Caboose Site' )
|
224
|
-
Caboose::Setting.create(:name => 'site_url' , :value => 'www.mycaboosesite.com' ) if !Caboose::Setting.exists?(:name => 'site_url' , :value => 'www.mycaboosesite.com' )
|
225
|
-
Caboose::Setting.create(:name => 'admin_email' , :value => 'william@nine.is' ) if !Caboose::Setting.exists?(:name => 'admin_email' , :value => 'william@nine.is' )
|
226
|
-
|
227
|
-
end
|
228
|
-
end
|