caboose-cms 0.0.5 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +0 -2
- data/app/assets/images/caboose/caboose_nav.png +0 -0
- data/app/assets/javascripts/caboose/application.js +19 -18
- data/app/assets/javascripts/caboose/caboose.js +28 -0
- data/app/assets/stylesheets/caboose/application.css +1 -1
- data/app/assets/stylesheets/caboose/caboose.css +37 -0
- data/app/controllers/caboose/admin_controller.rb +6 -0
- data/app/views/layouts/caboose/_station.html.erb +23 -0
- data/app/views/layouts/caboose/_top_nav.html.erb +8 -0
- data/app/views/layouts/caboose/caboose.html.erb +2 -1
- data/lib/caboose.rb +1 -1
- data/lib/caboose/engine.rb +12 -5
- data/lib/caboose/version.rb +1 -1
- data/lib/sample_files/caboose.rb +12 -0
- data/lib/sample_files/caboose_after.css +0 -0
- data/lib/sample_files/caboose_after.js +0 -0
- data/lib/sample_files/caboose_before.css +0 -0
- data/lib/sample_files/caboose_before.js +0 -0
- data/lib/sample_files/caboose_station.html.erb +19 -0
- data/lib/sample_files/layout_default.html.erb +34 -0
- data/lib/tasks/caboose.rake +250 -0
- metadata +14 -6
- data/app/views/layouts/caboose/station.html.erb +0 -28
- data/db/migrate/20130421000000_drop_all_caboose.rb +0 -16
- data/db/migrate/20130422000000_create_caboose.rb +0 -147
- data/lib/tasks/caboose_tasks.rake +0 -30
data/Rakefile
CHANGED
Binary file
|
@@ -15,22 +15,23 @@
|
|
15
15
|
//= require jquery_ujs
|
16
16
|
//= require jquery-ui
|
17
17
|
//= require class
|
18
|
-
//= require model
|
19
|
-
//= require
|
20
|
-
//= require
|
21
|
-
//= require
|
22
|
-
//= require
|
23
|
-
//= require
|
24
|
-
//= require
|
25
|
-
//= require
|
26
|
-
//= require
|
27
|
-
//= require
|
28
|
-
//= require
|
29
|
-
//= require
|
30
|
-
//= require
|
31
|
-
//= require
|
32
|
-
//= require
|
33
|
-
//= require
|
34
|
-
//= require
|
35
|
-
//= require
|
18
|
+
//= require model
|
19
|
+
//= require attribute
|
20
|
+
//= require form
|
21
|
+
//= require form/embedded
|
22
|
+
//= require attribute/checkbox-multiple
|
23
|
+
//= require attribute/checkbox
|
24
|
+
//= require attribute/date-time
|
25
|
+
//= require attribute/file
|
26
|
+
//= require attribute/hidden
|
27
|
+
//= require attribute/image
|
28
|
+
//= require attribute/password
|
29
|
+
//= require attribute/radio
|
30
|
+
//= require attribute/rich-text
|
31
|
+
//= require attribute/select
|
32
|
+
//= require attribute/texarea
|
33
|
+
//= require attribute/textjs
|
34
|
+
//= require attribute/time
|
35
|
+
//= require attribute/video
|
36
|
+
//= require caboose/caboose
|
36
37
|
//= require caboose_after
|
@@ -0,0 +1,28 @@
|
|
1
|
+
|
2
|
+
$(document).ready(function() {
|
3
|
+
$('#caboose_station').hide();
|
4
|
+
$('#caboose_conductor').click(function() {
|
5
|
+
CabooseStation.toggle();
|
6
|
+
});
|
7
|
+
});
|
8
|
+
|
9
|
+
var CabooseStation = function() {};
|
10
|
+
|
11
|
+
CabooseStation.is_open = false;
|
12
|
+
|
13
|
+
CabooseStation.toggle = function() {
|
14
|
+
if (CabooseStation.is_open)
|
15
|
+
CabooseStation.close();
|
16
|
+
else
|
17
|
+
CabooseStation.open();
|
18
|
+
};
|
19
|
+
|
20
|
+
CabooseStation.open = function() {
|
21
|
+
$('#caboose_station').show('slide', { direction: 'right' }, 300);
|
22
|
+
CabooseStation.is_open = true;
|
23
|
+
};
|
24
|
+
|
25
|
+
CabooseStation.close = function() {
|
26
|
+
$('#caboose_station').hide('slide', { direction: 'right' }, 300);
|
27
|
+
CabooseStation.is_open = false;
|
28
|
+
}
|
@@ -26,3 +26,40 @@ body {
|
|
26
26
|
padding: 4px 8px;
|
27
27
|
font-weight: bold;
|
28
28
|
}
|
29
|
+
|
30
|
+
#caboose_station {
|
31
|
+
position: absolute;
|
32
|
+
top: 0;
|
33
|
+
right: 0;
|
34
|
+
width: 250px;
|
35
|
+
height: 100%;
|
36
|
+
background: #333;
|
37
|
+
border: #000 2px solid;
|
38
|
+
}
|
39
|
+
|
40
|
+
#caboose_station ul {
|
41
|
+
margin: 0;
|
42
|
+
padding: 0;
|
43
|
+
list-style: none;
|
44
|
+
}
|
45
|
+
|
46
|
+
#caboose_station ul li {
|
47
|
+
margin: 0;
|
48
|
+
padding: 0;
|
49
|
+
list-style: none;
|
50
|
+
}
|
51
|
+
|
52
|
+
#caboose_station a {
|
53
|
+
display: block;
|
54
|
+
color: #fff;
|
55
|
+
text-decoration: none;
|
56
|
+
margin: 1px 0 0 0;
|
57
|
+
padding: 8px 10px;
|
58
|
+
background: #444;
|
59
|
+
}
|
60
|
+
|
61
|
+
#caboose_station a:hover {
|
62
|
+
background: #555;
|
63
|
+
}
|
64
|
+
|
65
|
+
#caboose_station
|
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
<div id='caboose_station'>
|
3
|
+
<% if (@user.nil? || @user.id == Caboose::User::LOGGED_OUT_USER_ID) %>
|
4
|
+
<a href='/login' class='login'>Login</a>
|
5
|
+
<% else %>
|
6
|
+
<ul>
|
7
|
+
<li class='my_account'><a href='/users/<%= @user.id %>/edit'>My Account</a></li>
|
8
|
+
<li class='logout'><a href='/logout'>Logout</a></li>
|
9
|
+
<% if (@user.is_allowed('admin', 'view')) %>
|
10
|
+
<li class='admin'><a href='/admin'>Admin</a></li>
|
11
|
+
<% end %>
|
12
|
+
<%
|
13
|
+
uru = session['use_redirect_urls'].nil? ? true : session['use_redirect_urls']
|
14
|
+
%>
|
15
|
+
<li><a href="javascript:setServerVar('use_redirect_urls', <%= uru ? '0' : '1' %>, 'redirect_message');"><%= uru ? 'Disable' : 'Enable' %> Redirect Urls</a><span id='redirect_message'></span></li>
|
16
|
+
<% if (!@tasks.nil?) %>
|
17
|
+
<% @tasks.each do |href, task| %>
|
18
|
+
<li><a href='<%= href %>'><%= task %></a></li>
|
19
|
+
<% end %>
|
20
|
+
<% end %>
|
21
|
+
</ul>
|
22
|
+
<% end %>
|
23
|
+
</div>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
|
2
|
+
<div id='top_nav'>
|
3
|
+
<% if (@user.nil? || @user.id == Caboose::User::LOGGED_OUT_USER_ID) %>
|
4
|
+
<%= link_to "Login", "/login?return_url=#{request.fullpath}", :id => 'caboose_login' %>
|
5
|
+
<% else %>
|
6
|
+
<%= link_to "Control Panel", '#', :id => 'caboose_conductor' %>
|
7
|
+
<% end %>
|
8
|
+
</div>
|
@@ -9,7 +9,7 @@
|
|
9
9
|
</head>
|
10
10
|
<body>
|
11
11
|
<div id='header'>
|
12
|
-
<%= render
|
12
|
+
<%= render :partial => 'layouts/caboose/top_nav' %>
|
13
13
|
<div id='content_wrapper'>
|
14
14
|
<div id='content'>
|
15
15
|
|
@@ -18,6 +18,7 @@
|
|
18
18
|
</div>
|
19
19
|
</div>
|
20
20
|
<div class="footer"></div>
|
21
|
+
<%= render :partial => 'layouts/caboose/station' %>
|
21
22
|
<%= javascript_include_tag "caboose/application" %>
|
22
23
|
<%= yield :caboose_js %>
|
23
24
|
</body>
|
data/lib/caboose.rb
CHANGED
data/lib/caboose/engine.rb
CHANGED
@@ -1,10 +1,17 @@
|
|
1
1
|
module Caboose
|
2
2
|
|
3
3
|
def Caboose.log(message, title = nil)
|
4
|
-
Rails.logger.
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
if (Rails.logger.nil?)
|
5
|
+
puts "\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
|
6
|
+
puts title.to_s unless title.nil?
|
7
|
+
puts message
|
8
|
+
puts ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"
|
9
|
+
else
|
10
|
+
Rails.logger.debug("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
|
11
|
+
Rails.logger.debug(title.to_s) unless title.nil?
|
12
|
+
Rails.logger.debug(message)
|
13
|
+
Rails.logger.debug(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n")
|
14
|
+
end
|
8
15
|
end
|
9
16
|
|
10
17
|
def Caboose.plugin_hook(tag, args = nil)
|
@@ -19,6 +26,6 @@ module Caboose
|
|
19
26
|
end
|
20
27
|
|
21
28
|
class Engine < ::Rails::Engine
|
22
|
-
isolate_namespace Caboose
|
29
|
+
isolate_namespace Caboose
|
23
30
|
end
|
24
31
|
end
|
data/lib/caboose/version.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
#
|
2
|
+
# Caboose CMS Settings
|
3
|
+
#
|
4
|
+
|
5
|
+
# Salt to ensure passwords are encrypted securely
|
6
|
+
Caboose::salt = 'CHANGE THIS TO A UNIQUE STRING!!!'
|
7
|
+
|
8
|
+
# Where page asset files will be uploaded
|
9
|
+
Caboose::assets_path = Rails.root.join('app', 'assets', 'caboose')
|
10
|
+
|
11
|
+
# Register any caboose plugins
|
12
|
+
#Caboose::plugins + ['MyCaboosePlugin']
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,19 @@
|
|
1
|
+
|
2
|
+
<div id='caboose_station'>
|
3
|
+
<h2>Station</h2>
|
4
|
+
<ul>
|
5
|
+
<li><%= link_to 'My Account', "/users/#{@user.id}/edit" %></li>
|
6
|
+
<li><%= link_to 'Logout', "/logout" %></li>
|
7
|
+
<% if (@user.is_allowed('admin', 'view')) %>
|
8
|
+
<li><li><%= link_to 'Admin', "/admin" %></li></li>
|
9
|
+
<% end %>
|
10
|
+
<%
|
11
|
+
uru = session['use_redirect_urls'].nil? ? true : session['use_redirect_urls']
|
12
|
+
%>
|
13
|
+
<li><a href="javascript:caboose_set_redirect_url(<%= uru ? '0' : '1' %>, this);"><%= uru ? 'Disable' : 'Enable' %> Redirect Urls</a></li>
|
14
|
+
<% if (!@page_tasks.nil?) %>
|
15
|
+
<% @page_tasks.each do |href, task| %>
|
16
|
+
<li><%= link_to task, href %></li>
|
17
|
+
<% end %>
|
18
|
+
<% end %>
|
19
|
+
</ul>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Caboose</title>
|
5
|
+
<%= yield :css %>
|
6
|
+
<%= csrf_meta_tags %>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<div id='wrapper'>
|
10
|
+
<div id='header'>
|
11
|
+
<div id='top_nav'>
|
12
|
+
<% if (@user.nil? || @user.id == Caboose::User::LOGGED_OUT_USER_ID) %>
|
13
|
+
<%= link_to "Login", "/login?return_url=#{request.fullpath}", :id => 'caboose_login' %>
|
14
|
+
<% else %>
|
15
|
+
<%= link_to "Control Panel", '#', :id => 'caboose_conductor' %>
|
16
|
+
<% end %>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
<div id='content_wrapper'>
|
20
|
+
<div id='content'>
|
21
|
+
|
22
|
+
<% if (yield) %>
|
23
|
+
<%= yield %>
|
24
|
+
<% elsif (!@page.nil?) %>
|
25
|
+
<h1><%= @page.title %></h1>
|
26
|
+
<%= @page.content %>
|
27
|
+
<% end %>
|
28
|
+
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
<%= yield :js %>
|
33
|
+
</body>
|
34
|
+
</html>
|
@@ -0,0 +1,250 @@
|
|
1
|
+
|
2
|
+
namespace :caboose do
|
3
|
+
|
4
|
+
desc "Initialize a caboose installation"
|
5
|
+
task :setup => :environment do
|
6
|
+
init_config
|
7
|
+
init_routes
|
8
|
+
init_assets
|
9
|
+
init_session
|
10
|
+
init_schema
|
11
|
+
init_data
|
12
|
+
end
|
13
|
+
desc "Initializes the caboose config file"
|
14
|
+
task :init_config => :environment do init_config end
|
15
|
+
desc "Configures the host application to use caboose for routing"
|
16
|
+
task :init_routes => :environment do init_routes end
|
17
|
+
desc "Initializes all the required caboose js, css and layout files in the host application"
|
18
|
+
task :init_assets => :environment do init_assets end
|
19
|
+
desc "Configures the host application to use active record session storing"
|
20
|
+
task :init_session => :environment do init_session end
|
21
|
+
desc "Initializes the caboose database schema"
|
22
|
+
task :init_schema => :environment do init_schema end
|
23
|
+
desc "Loads data into caboose tables"
|
24
|
+
task :init_data => :environment do init_data end
|
25
|
+
desc "Drops all caboose tables"
|
26
|
+
task :drop_tables => :environment do drop_tables end
|
27
|
+
desc "Creates all caboose tables"
|
28
|
+
task :create_tables => :environment do create_tables end
|
29
|
+
|
30
|
+
#=============================================================================
|
31
|
+
|
32
|
+
def init_file(filename)
|
33
|
+
gem_root = Gem::Specification.find_by_name('caboose-cms').gem_dir
|
34
|
+
filename = Rails.root.join(filename)
|
35
|
+
copy_from = File.join(gem_root,'lib','sample_files', Pathname.new(filename).basename)
|
36
|
+
|
37
|
+
if (!File.exists?(filename))
|
38
|
+
FileUtils.cp(copy_from, filename)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def init_config
|
43
|
+
puts "Adding the caboose initializer file..."
|
44
|
+
init_file('config/initializers/caboose.rb')
|
45
|
+
end
|
46
|
+
|
47
|
+
def init_routes
|
48
|
+
puts "Adding the caboose routes..."
|
49
|
+
str = ""
|
50
|
+
str << "\t# Catch everything with caboose\n"
|
51
|
+
str << "\tmount Caboose::Engine => '/'\n"
|
52
|
+
str << "\tmatch '*path' => 'caboose/pages#show'\n"
|
53
|
+
str << "\troot :to => 'caboose/pages#show'\n"
|
54
|
+
file = File.open(Rails.root.join('config','routes.rb'), 'rb')
|
55
|
+
contents = file.read
|
56
|
+
file.close
|
57
|
+
if (contents.index(str).nil?)
|
58
|
+
arr = contents.split('end', -1)
|
59
|
+
str2 = arr[0] + "\n" + str + "\nend" + arr[1]
|
60
|
+
File.open(Rails.root.join('config','routes.rb'), 'w') {|file| file.write(str2) }
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def init_assets
|
65
|
+
puts "Adding the javascript files..."
|
66
|
+
init_file('app/assets/javascripts/caboose_before.js')
|
67
|
+
init_file('app/assets/javascripts/caboose_after.js')
|
68
|
+
|
69
|
+
puts "Adding the stylesheet files..."
|
70
|
+
init_file('app/assets/stylesheets/caboose_before.css')
|
71
|
+
init_file('app/assets/stylesheets/caboose_after.css')
|
72
|
+
|
73
|
+
puts "Adding the layout files..."
|
74
|
+
init_file('app/views/layouts/layout_default.html.erb')
|
75
|
+
end
|
76
|
+
|
77
|
+
def init_session
|
78
|
+
puts "Setting the session config..."
|
79
|
+
|
80
|
+
lines = []
|
81
|
+
str = File.open(Rails.root.join('config','initializers','session_store.rb')).read
|
82
|
+
str.gsub!(/\r\n?/, "\n")
|
83
|
+
str.each_line do |line|
|
84
|
+
line = '#' + line if !line.index(':cookie_store').nil? && !line.starts_with?('#')
|
85
|
+
line[0] = '' if !line.index(':active_record_store').nil? && line.starts_with?('#')
|
86
|
+
lines << line.strip
|
87
|
+
end
|
88
|
+
str = lines.join("\n")
|
89
|
+
File.open(Rails.root.join('config','initializers','session_store.rb'), 'w') {|file| file.write(str) }
|
90
|
+
end
|
91
|
+
|
92
|
+
def init_schema
|
93
|
+
drop_tables
|
94
|
+
create_tables
|
95
|
+
end
|
96
|
+
|
97
|
+
def drop_tables
|
98
|
+
puts "Dropping any existing caboose tables..."
|
99
|
+
c = ActiveRecord::Base.connection
|
100
|
+
c.drop_table :users if c.table_exists?('users')
|
101
|
+
c.drop_table :roles if c.table_exists?('roles')
|
102
|
+
c.drop_table :permissions if c.table_exists?('permissions')
|
103
|
+
c.drop_table :roles_users if c.table_exists?('roles_users')
|
104
|
+
c.drop_table :permissions_roles if c.table_exists?('permissions_roles')
|
105
|
+
c.drop_table :assets if c.table_exists?('assets')
|
106
|
+
c.drop_table :pages if c.table_exists?('pages')
|
107
|
+
c.drop_table :page_permissions if c.table_exists?('page_permissions')
|
108
|
+
c.drop_table :sessions if c.table_exists?('sessions')
|
109
|
+
end
|
110
|
+
|
111
|
+
def create_tables
|
112
|
+
puts "Creating required caboose tables..."
|
113
|
+
|
114
|
+
c = ActiveRecord::Base.connection
|
115
|
+
|
116
|
+
# User/Role/Permissions
|
117
|
+
c.create_table :users do |t|
|
118
|
+
t.string :first_name
|
119
|
+
t.string :last_name
|
120
|
+
t.string :username
|
121
|
+
t.string :email
|
122
|
+
t.string :password
|
123
|
+
t.string :password_reset_id
|
124
|
+
t.datetime :password_reset_sent
|
125
|
+
t.string :token
|
126
|
+
end
|
127
|
+
c.create_table :roles do |t|
|
128
|
+
t.integer :parent_id
|
129
|
+
t.string :name
|
130
|
+
t.string :description
|
131
|
+
end
|
132
|
+
c.create_table :permissions do |t|
|
133
|
+
t.string :resource
|
134
|
+
t.string :action
|
135
|
+
end
|
136
|
+
|
137
|
+
# Role membership
|
138
|
+
c.create_table :roles_users do |t|
|
139
|
+
t.references :role
|
140
|
+
t.references :user
|
141
|
+
end
|
142
|
+
c.add_index :roles_users, :role_id
|
143
|
+
c.add_index :roles_users, :user_id
|
144
|
+
|
145
|
+
# Role permissions
|
146
|
+
c.create_table :permissions_roles do |t|
|
147
|
+
t.references :role
|
148
|
+
t.references :permission
|
149
|
+
end
|
150
|
+
c.add_index :permissions_roles, :role_id
|
151
|
+
c.add_index :permissions_roles, :permission_id
|
152
|
+
|
153
|
+
# Pages and Assets
|
154
|
+
c.create_table :assets do |t|
|
155
|
+
t.references :page
|
156
|
+
t.references :user
|
157
|
+
t.datetime :date_uploaded
|
158
|
+
t.string :name
|
159
|
+
t.string :filename
|
160
|
+
t.string :description
|
161
|
+
t.string :extension
|
162
|
+
end
|
163
|
+
c.create_table :pages do |t|
|
164
|
+
t.integer :parent_id
|
165
|
+
t.string :title
|
166
|
+
t.string :menu_title
|
167
|
+
t.text :content
|
168
|
+
t.string :slug
|
169
|
+
t.string :alias
|
170
|
+
t.string :uri
|
171
|
+
t.string :redirect_url
|
172
|
+
t.boolean :hide, :default => false
|
173
|
+
t.integer :content_format, :default => Caboose::Page::CONTENT_FORMAT_HTML
|
174
|
+
t.text :custom_css
|
175
|
+
t.text :custom_js
|
176
|
+
t.string :layout
|
177
|
+
t.integer :sort_order, :default => 0
|
178
|
+
t.boolean :custom_sort_children, :default => false
|
179
|
+
t.string :seo_title, :limit => 70
|
180
|
+
t.string :meta_description, :limit => 156
|
181
|
+
t.string :meta_robots, :default => 'index, follow' # Multi-select options: none, noindex, nofollow, nosnippet, noodp, noarchive
|
182
|
+
t.string :canonical_url
|
183
|
+
t.string :fb_description, :limit => 156
|
184
|
+
t.string :gp_description, :limit => 156
|
185
|
+
end
|
186
|
+
c.create_table :page_permissions do |t|
|
187
|
+
t.references :role
|
188
|
+
t.references :page
|
189
|
+
t.string :action
|
190
|
+
end
|
191
|
+
c.create_table :sessions do |t|
|
192
|
+
t.string :session_id, :null => false
|
193
|
+
t.text :data
|
194
|
+
t.timestamps
|
195
|
+
end
|
196
|
+
c.add_index :sessions, :session_id
|
197
|
+
c.add_index :sessions, :updated_at
|
198
|
+
c.change_column :sessions, :created_at, :datetime, :null => true
|
199
|
+
c.change_column :sessions, :updated_at, :datetime, :null => true
|
200
|
+
|
201
|
+
end
|
202
|
+
|
203
|
+
def init_data
|
204
|
+
puts "Loading data into caboose tables..."
|
205
|
+
|
206
|
+
admin_user = Caboose::User.create(first_name: 'Admin', last_name: 'User', username: 'admin', email: 'william@nine.is')
|
207
|
+
admin_user.password = Digest::SHA1.hexdigest(Caboose::salt + 'caboose')
|
208
|
+
admin_user.save
|
209
|
+
|
210
|
+
admin_role = Caboose::Role.create(parent_id: -1, name: 'Admin')
|
211
|
+
elo_role = Caboose::Role.create(parent_id: -1, name: 'Everyone Logged Out')
|
212
|
+
eli_role = Caboose::Role.create(parent_id: elo_role.id, name: 'Everyone Logged In')
|
213
|
+
|
214
|
+
elo_user = Caboose::User.create(first_name: 'John', last_name: 'Doe', username: 'elo', email: 'william@nine.is')
|
215
|
+
|
216
|
+
admin_perm = Caboose::Permission.create(resource: 'all', action: 'all')
|
217
|
+
Caboose::Permission.create(resource: 'users' , action: 'view')
|
218
|
+
Caboose::Permission.create(resource: 'users' , action: 'edit')
|
219
|
+
Caboose::Permission.create(resource: 'users' , action: 'delete')
|
220
|
+
Caboose::Permission.create(resource: 'users' , action: 'add')
|
221
|
+
Caboose::Permission.create(resource: 'roles' , action: 'view')
|
222
|
+
Caboose::Permission.create(resource: 'roles' , action: 'edit')
|
223
|
+
Caboose::Permission.create(resource: 'roles' , action: 'delete')
|
224
|
+
Caboose::Permission.create(resource: 'roles' , action: 'add')
|
225
|
+
Caboose::Permission.create(resource: 'permissions' , action: 'view')
|
226
|
+
Caboose::Permission.create(resource: 'permissions' , action: 'edit')
|
227
|
+
Caboose::Permission.create(resource: 'permissions' , action: 'delete')
|
228
|
+
Caboose::Permission.create(resource: 'permissions' , action: 'add')
|
229
|
+
|
230
|
+
# Add the admin user to the admin role
|
231
|
+
admin_user.roles.push(admin_role)
|
232
|
+
admin_user.save
|
233
|
+
|
234
|
+
# Add the elo to the elo role
|
235
|
+
elo_user.roles.push(elo_role)
|
236
|
+
elo_user.save
|
237
|
+
|
238
|
+
# Add the all/all permission to the admin role
|
239
|
+
admin_role.permissions.push(admin_perm)
|
240
|
+
admin_role.save
|
241
|
+
|
242
|
+
# Create the home page
|
243
|
+
home_page = Caboose::Page.create(title: 'Home' , parent_id: -1, hide: 0, layout: 'home' , uri: '')
|
244
|
+
admin_page = Caboose::Page.create(title: 'Admin' , parent_id: home_page.id, hide: 0, layout: 'admin', alias: 'admin', slug: 'admin', uri: 'admin')
|
245
|
+
login_page = Caboose::Page.create(title: 'Login' , parent_id: home_page.id, hide: 0, layout: 'login', alias: 'login', slug: 'login', uri: 'login')
|
246
|
+
Caboose::PagePermission.create(role_id: elo_role.id, page_id: home_page.id, action: 'view')
|
247
|
+
Caboose::PagePermission.create(role_id: elo_role.id, page_id: login_page.id, action: 'view')
|
248
|
+
|
249
|
+
end
|
250
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: caboose-cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -98,7 +98,9 @@ executables: []
|
|
98
98
|
extensions: []
|
99
99
|
extra_rdoc_files: []
|
100
100
|
files:
|
101
|
+
- app/assets/images/caboose/caboose_nav.png
|
101
102
|
- app/assets/javascripts/caboose/application.js
|
103
|
+
- app/assets/javascripts/caboose/caboose.js
|
102
104
|
- app/assets/javascripts/caboose/login.js
|
103
105
|
- app/assets/javascripts/caboose/permissions.js
|
104
106
|
- app/assets/javascripts/caboose/roles.js
|
@@ -150,17 +152,23 @@ files:
|
|
150
152
|
- app/views/caboose/users/new.html.erb
|
151
153
|
- app/views/caboose/users/update_pic.html.erb
|
152
154
|
- app/views/caboose/users/update_resume.html.erb
|
155
|
+
- app/views/layouts/caboose/_station.html.erb
|
156
|
+
- app/views/layouts/caboose/_top_nav.html.erb
|
153
157
|
- app/views/layouts/caboose/application.html.erb
|
154
158
|
- app/views/layouts/caboose/caboose.html.erb
|
155
159
|
- app/views/layouts/caboose/error404.html.erb
|
156
|
-
- app/views/layouts/caboose/station.html.erb
|
157
160
|
- config/routes.rb
|
158
|
-
- db/migrate/20130421000000_drop_all_caboose.rb
|
159
|
-
- db/migrate/20130422000000_create_caboose.rb
|
160
161
|
- lib/caboose/engine.rb
|
161
162
|
- lib/caboose/version.rb
|
162
163
|
- lib/caboose.rb
|
163
|
-
- lib/
|
164
|
+
- lib/sample_files/caboose.rb
|
165
|
+
- lib/sample_files/caboose_after.css
|
166
|
+
- lib/sample_files/caboose_after.js
|
167
|
+
- lib/sample_files/caboose_before.css
|
168
|
+
- lib/sample_files/caboose_before.js
|
169
|
+
- lib/sample_files/caboose_station.html.erb
|
170
|
+
- lib/sample_files/layout_default.html.erb
|
171
|
+
- lib/tasks/caboose.rake
|
164
172
|
- MIT-LICENSE
|
165
173
|
- Rakefile
|
166
174
|
- README.md
|
@@ -1,28 +0,0 @@
|
|
1
|
-
<div id='caboose_station'>
|
2
|
-
<a href='/admin' class='logo'><span>Caboose</span></a>
|
3
|
-
|
4
|
-
<% if (@user.nil? || @user.id == Caboose::User::LOGGED_OUT_USER_ID) %>
|
5
|
-
|
6
|
-
<a href='/login' class='login'>Login</a>
|
7
|
-
|
8
|
-
<% else %>
|
9
|
-
|
10
|
-
<ul>
|
11
|
-
<li><a href='/users/<%= @user.id %>/edit'>My Account</a></li>
|
12
|
-
<li><a href='/logout'>Logout</a></li>
|
13
|
-
<% if (@user.is_allowed('admin', 'view')) %>
|
14
|
-
<li><a href='/admin'>Admin</a></li>
|
15
|
-
<% end %>
|
16
|
-
<%
|
17
|
-
uru = session['use_redirect_urls'].nil? ? true : session['use_redirect_urls']
|
18
|
-
%>
|
19
|
-
<li><a href="javascript:setServerVar('use_redirect_urls', <%= uru ? '0' : '1' %>, 'redirect_message');"><%= uru ? 'Disable' : 'Enable' %> Redirect Urls</a><span id='redirect_message'></span></li>
|
20
|
-
<% if (!@tasks.nil?) %>
|
21
|
-
<% @tasks.each do |href, task| %>
|
22
|
-
<li><a href='<%= href %>'><%= task %></a></li>
|
23
|
-
<% end %>
|
24
|
-
<% end %>
|
25
|
-
</ul>
|
26
|
-
|
27
|
-
<% end %>
|
28
|
-
</div>
|
@@ -1,16 +0,0 @@
|
|
1
|
-
class DropAllCaboose < ActiveRecord::Migration
|
2
|
-
def up
|
3
|
-
drop_table :users if table_exists?('users')
|
4
|
-
drop_table :roles if table_exists?('roles')
|
5
|
-
drop_table :permissions if table_exists?('permissions')
|
6
|
-
drop_table :roles_users if table_exists?('roles_users')
|
7
|
-
drop_table :permissions_roles if table_exists?('permissions_roles')
|
8
|
-
drop_table :assets if table_exists?('assets')
|
9
|
-
drop_table :pages if table_exists?('pages')
|
10
|
-
drop_table :page_permissions if table_exists?('page_permissions')
|
11
|
-
end
|
12
|
-
|
13
|
-
def down
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|
@@ -1,147 +0,0 @@
|
|
1
|
-
|
2
|
-
class CreateCaboose < ActiveRecord::Migration
|
3
|
-
|
4
|
-
def up
|
5
|
-
create_tables
|
6
|
-
load_data
|
7
|
-
end
|
8
|
-
|
9
|
-
def down
|
10
|
-
drop_table :users
|
11
|
-
drop_table :roles
|
12
|
-
drop_table :permissions
|
13
|
-
drop_table :roles_users
|
14
|
-
drop_table :permissions_roles
|
15
|
-
end
|
16
|
-
|
17
|
-
#=============================================================================
|
18
|
-
|
19
|
-
def create_tables
|
20
|
-
|
21
|
-
# User/Role/Permissions
|
22
|
-
create_table :users do |t|
|
23
|
-
t.string :first_name
|
24
|
-
t.string :last_name
|
25
|
-
t.string :username
|
26
|
-
t.string :email
|
27
|
-
t.string :password
|
28
|
-
t.string :password_reset_id
|
29
|
-
t.datetime :password_reset_sent
|
30
|
-
t.string :token
|
31
|
-
end
|
32
|
-
create_table :roles do |t|
|
33
|
-
t.integer :parent_id
|
34
|
-
t.string :name
|
35
|
-
t.string :description
|
36
|
-
end
|
37
|
-
create_table :permissions do |t|
|
38
|
-
t.string :resource
|
39
|
-
t.string :action
|
40
|
-
end
|
41
|
-
|
42
|
-
# Role membership
|
43
|
-
create_table :roles_users do |t|
|
44
|
-
t.references :role
|
45
|
-
t.references :user
|
46
|
-
end
|
47
|
-
add_index :roles_users, :role_id
|
48
|
-
add_index :roles_users, :user_id
|
49
|
-
|
50
|
-
# Role permissions
|
51
|
-
create_table :permissions_roles do |t|
|
52
|
-
t.references :role
|
53
|
-
t.references :permission
|
54
|
-
end
|
55
|
-
add_index :permissions_roles, :role_id
|
56
|
-
add_index :permissions_roles, :permission_id
|
57
|
-
|
58
|
-
# Pages and Assets
|
59
|
-
create_table :assets do |t|
|
60
|
-
t.references :page
|
61
|
-
t.references :user
|
62
|
-
t.datetime :date_uploaded
|
63
|
-
t.string :name
|
64
|
-
t.string :filename
|
65
|
-
t.string :description
|
66
|
-
t.string :extension
|
67
|
-
end
|
68
|
-
create_table :pages do |t|
|
69
|
-
t.integer :parent_id
|
70
|
-
t.string :title
|
71
|
-
t.string :menu_title
|
72
|
-
t.text :content
|
73
|
-
t.string :slug
|
74
|
-
t.string :alias
|
75
|
-
t.string :uri
|
76
|
-
t.string :redirect_url
|
77
|
-
t.boolean :hide, :default => false
|
78
|
-
t.integer :content_format, :default => Caboose::Page::CONTENT_FORMAT_HTML
|
79
|
-
t.text :custom_css
|
80
|
-
t.text :custom_js
|
81
|
-
t.string :layout
|
82
|
-
t.integer :sort_order, :default => 0
|
83
|
-
t.boolean :custom_sort_children, :default => false
|
84
|
-
t.string :seo_title, :limit => 70
|
85
|
-
t.string :meta_description, :limit => 156
|
86
|
-
t.string :meta_robots, :default => 'index, follow' # Multi-select options: none, noindex, nofollow, nosnippet, noodp, noarchive
|
87
|
-
t.string :canonical_url
|
88
|
-
t.string :fb_description, :limit => 156
|
89
|
-
t.string :gp_description, :limit => 156
|
90
|
-
end
|
91
|
-
create_table :page_permissions do |t|
|
92
|
-
t.references :role
|
93
|
-
t.references :page
|
94
|
-
t.string :action
|
95
|
-
end
|
96
|
-
|
97
|
-
end
|
98
|
-
|
99
|
-
#=============================================================================
|
100
|
-
|
101
|
-
def load_data
|
102
|
-
|
103
|
-
admin_user = Caboose::User.create(first_name: 'Admin', last_name: 'User', username: 'admin', email: 'william@nine.is')
|
104
|
-
admin_user.password = Digest::SHA1.hexdigest(Caboose::salt + 'caboose')
|
105
|
-
admin_user.save
|
106
|
-
|
107
|
-
admin_role = Caboose::Role.create(parent_id: -1, name: 'Admin')
|
108
|
-
elo_role = Caboose::Role.create(parent_id: -1, name: 'Everyone Logged Out')
|
109
|
-
eli_role = Caboose::Role.create(parent_id: elo_role.id, name: 'Everyone Logged In')
|
110
|
-
|
111
|
-
elo_user = Caboose::User.create(first_name: 'John', last_name: 'Doe', username: 'elo', email: 'william@nine.is')
|
112
|
-
|
113
|
-
admin_perm = Caboose::Permission.create(resource: 'all', action: 'all')
|
114
|
-
Caboose::Permission.create(resource: 'users' , action: 'view')
|
115
|
-
Caboose::Permission.create(resource: 'users' , action: 'edit')
|
116
|
-
Caboose::Permission.create(resource: 'users' , action: 'delete')
|
117
|
-
Caboose::Permission.create(resource: 'users' , action: 'add')
|
118
|
-
Caboose::Permission.create(resource: 'roles' , action: 'view')
|
119
|
-
Caboose::Permission.create(resource: 'roles' , action: 'edit')
|
120
|
-
Caboose::Permission.create(resource: 'roles' , action: 'delete')
|
121
|
-
Caboose::Permission.create(resource: 'roles' , action: 'add')
|
122
|
-
Caboose::Permission.create(resource: 'permissions' , action: 'view')
|
123
|
-
Caboose::Permission.create(resource: 'permissions' , action: 'edit')
|
124
|
-
Caboose::Permission.create(resource: 'permissions' , action: 'delete')
|
125
|
-
Caboose::Permission.create(resource: 'permissions' , action: 'add')
|
126
|
-
|
127
|
-
# Add the admin user to the admin role
|
128
|
-
admin_user.roles.push(admin_role)
|
129
|
-
admin_user.save
|
130
|
-
|
131
|
-
# Add the elo to the elo role
|
132
|
-
elo_user.roles.push(elo_role)
|
133
|
-
elo_user.save
|
134
|
-
|
135
|
-
# Add the all/all permission to the admin role
|
136
|
-
admin_role.permissions.push(admin_perm)
|
137
|
-
admin_role.save
|
138
|
-
|
139
|
-
# Create the home page
|
140
|
-
home_page = Caboose::Page.create(title: 'Home' , parent_id: -1, hide: 0, layout: 'home' , uri: '')
|
141
|
-
admin_page = Caboose::Page.create(title: 'Admin' , parent_id: home_page.id, hide: 0, layout: 'admin', alias: 'admin', slug: 'admin', uri: 'admin')
|
142
|
-
login_page = Caboose::Page.create(title: 'Login' , parent_id: home_page.id, hide: 0, layout: 'login', alias: 'login', slug: 'login', uri: 'login')
|
143
|
-
Caboose::PagePermission.create(role_id: elo_role.id, page_id: home_page.id, action: 'view')
|
144
|
-
Caboose::PagePermission.create(role_id: elo_role.id, page_id: login_page.id, action: 'view')
|
145
|
-
|
146
|
-
end
|
147
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# desc "Explaining what the task does"
|
2
|
-
# task :caboose do
|
3
|
-
# # Task goes here
|
4
|
-
# end
|
5
|
-
|
6
|
-
def init_file(filename, str = nil)
|
7
|
-
if !File.exists(filename)
|
8
|
-
File.open(filename, 'w') do |file|
|
9
|
-
file.write str unless str.nil?
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
desc "Initialize a caboose installation"
|
15
|
-
task :init do
|
16
|
-
|
17
|
-
# Add the js and css files
|
18
|
-
init_file(Rails.root.join('app','assets','javascripts','caboose_before.js'))
|
19
|
-
init_file(Rails.root.join('app','assets','javascripts','caboose_after.js'))
|
20
|
-
init_file(Rails.root.join('app','assets','stylesheets','caboose_before.css'))
|
21
|
-
init_file(Rails.root.join('app','assets','stylesheets','caboose_after.css'))
|
22
|
-
|
23
|
-
# Add the caboose initializer file
|
24
|
-
str = ""
|
25
|
-
str << "Caboose::salt = 'CHANGE THIS TO A UNIQUE STRING!!!'\n\n"
|
26
|
-
str << "Caboose::assets_path = Rails.root.join('app', 'assets', 'caboose')\n\n"
|
27
|
-
str << "Caboose::plugins = []\n"
|
28
|
-
init_file(Rails.root.join('config','initializers','caboose.rb'), str)
|
29
|
-
|
30
|
-
end
|