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 CHANGED
@@ -23,8 +23,6 @@ end
23
23
  APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
24
24
  load 'rails/tasks/engine.rake'
25
25
 
26
-
27
-
28
26
  Bundler::GemHelper.install_tasks
29
27
 
30
28
  require 'rake/testtask'
@@ -15,22 +15,23 @@
15
15
  //= require jquery_ujs
16
16
  //= require jquery-ui
17
17
  //= require class
18
- //= require model/model
19
- //= require model/attribute
20
- //= require model/form
21
- //= require model/form/embedded
22
- //= require model/attribute/checkbox-multiple
23
- //= require model/attribute/checkbox
24
- //= require model/attribute/date-time
25
- //= require model/attribute/file
26
- //= require model/attribute/hidden
27
- //= require model/attribute/image
28
- //= require model/attribute/password
29
- //= require model/attribute/radio
30
- //= require model/attribute/rich-text
31
- //= require model/attribute/select
32
- //= require model/attribute/texarea
33
- //= require model/attribute/textjs
34
- //= require model/attribute/time
35
- //= require model/attribute/video
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
+ }
@@ -9,7 +9,7 @@
9
9
  * compiled file, but it's generally better to create a new file per style scope.
10
10
  *
11
11
  *= require caboose_before
12
- *= require model
12
+ *= require modeljs
13
13
  *= require caboose/caboose
14
14
  *= require caboose_after
15
15
  */
@@ -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
@@ -15,5 +15,11 @@ module Caboose
15
15
 
16
16
  end
17
17
 
18
+ # GET /station
19
+ def station
20
+ @user = logged_in_user
21
+ render :layout => 'caboose/station'
22
+ end
23
+
18
24
  end
19
25
  end
@@ -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 station %>
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>
@@ -1,7 +1,7 @@
1
1
  require "caboose/engine"
2
2
 
3
3
  module Caboose
4
-
4
+
5
5
  mattr_accessor :salt
6
6
  @@salt = "This needs to be changed pronto."
7
7
 
@@ -1,10 +1,17 @@
1
1
  module Caboose
2
2
 
3
3
  def Caboose.log(message, title = nil)
4
- Rails.logger.debug("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
5
- Rails.logger.debug(title.to_s) unless title.nil?
6
- Rails.logger.debug(message)
7
- Rails.logger.debug(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n")
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
@@ -1,3 +1,3 @@
1
1
  module Caboose
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -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.5
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-24 00:00:00.000000000 Z
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/tasks/caboose_tasks.rake
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