caboose-cms 0.0.5 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
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