caboose-cms 0.2.23 → 0.2.24
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.
- checksums.yaml +8 -8
- data/app/controllers/caboose/pages_controller.rb +277 -217
- data/app/controllers/caboose/roles_controller.rb +8 -8
- data/app/models/caboose/page.rb +2 -1
- data/app/views/caboose/pages/edit.html.erb +52 -8
- data/app/views/caboose/pages/edit_content.html.erb +49 -37
- data/app/views/caboose/pages/edit_css.html.erb +43 -28
- data/app/views/caboose/pages/edit_js.html.erb +42 -27
- data/app/views/caboose/pages/edit_resources.html.erb +41 -0
- data/app/views/caboose/pages/edit_seo.html.erb +6 -4
- data/app/views/caboose/pages/edit_settings.html.erb +6 -4
- data/app/views/caboose/pages/edit_title.html.erb +1 -0
- data/app/views/caboose/pages/show.html.erb +15 -0
- data/app/views/caboose/pages/sitemap.html.erb +4 -4
- data/app/views/caboose/roles/edit.html.erb +45 -4
- data/config/routes.rb +2 -0
- data/config/tinymce.yml +11 -0
- data/lib/caboose/caboose_helper.rb +1 -1
- data/lib/caboose/migration_version.rb +47 -0
- data/lib/caboose/migrations.rb +7 -0
- data/lib/caboose/version.rb +1 -1
- data/lib/tasks/caboose.rake +75 -12
- metadata +6 -2
@@ -1,10 +1,11 @@
|
|
1
1
|
|
2
2
|
<h1>Page Settings</h1>
|
3
3
|
<div class='top_right_controls'>
|
4
|
-
<input type='button' value='General'
|
5
|
-
<input type='button' value='CSS'
|
6
|
-
<input type='button' value='JS'
|
7
|
-
<input type='button' value='SEO'
|
4
|
+
<input type='button' value='General' onclick="window.location='/pages/<%= @page.id %>/edit-settings';" disabled='true' />
|
5
|
+
<input type='button' value='CSS' onclick="window.location='/pages/<%= @page.id %>/edit-css';" />
|
6
|
+
<input type='button' value='JS' onclick="window.location='/pages/<%= @page.id %>/edit-js';" />
|
7
|
+
<input type='button' value='SEO' onclick="window.location='/pages/<%= @page.id %>/edit-seo';" />
|
8
|
+
<input type='button' value='Resources' onclick="window.location='/pages/<%= @page.id %>/edit-resources';" />
|
8
9
|
</div>
|
9
10
|
<div style='float: left; width: 310px;'>
|
10
11
|
<p><div id='page_<%= @page.id %>_parent_id' ></div></p>
|
@@ -30,6 +31,7 @@ $(document).ready(function() {
|
|
30
31
|
name: 'Page',
|
31
32
|
id: <%= @page.id %>,
|
32
33
|
update_url: '/pages/<%= @page.id %>',
|
34
|
+
authenticity_token: '<%= form_authenticity_token %>',
|
33
35
|
attributes: [
|
34
36
|
{ name: 'parent_id' , nice_name: 'Parent' , type: 'select' , value: <%= @page.parent_id %> , width: 270, text: <%= raw (@page.parent_id == -1 ? "[No Parent]" : @page.parent.title).to_json %>, options_url: '/pages/sitemap-options' },
|
35
37
|
{ name: 'menu_title' , nice_name: 'Menu title' , type: 'text' , value: <%= raw Caboose.json(@page.menu_title ) %> , width: 270 },
|
@@ -1,2 +1,17 @@
|
|
1
|
+
|
2
|
+
<% content_for :caboose_css do %>
|
3
|
+
<% @resources[:css].each do |r| %>
|
4
|
+
<!--link type='text/css' rel='stylesheet' href="<%= r %>" /-->
|
5
|
+
<%= stylesheet_link_tag r %>
|
6
|
+
<% end %>
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
<% content_for :caboose_js do %>
|
10
|
+
<% @resources[:js].each do |r| %>
|
11
|
+
<!--script type='text/javascript' src="<%= r %>" ></script-->
|
12
|
+
<%= javascript_include_tag r %>
|
13
|
+
<% end %>
|
14
|
+
<% end %>
|
15
|
+
|
1
16
|
<% content_for :page_title do %><%= raw @page.title %><% end %>
|
2
17
|
<% content_for :page_content do %><%= raw @page.content %><% end %>
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<h1>Page Sitemap</h1>
|
7
7
|
|
8
8
|
<ul>
|
9
|
-
<% @options.each do |
|
10
|
-
<li
|
11
|
-
|
12
|
-
</ul
|
9
|
+
<% @options.each do |option| %>
|
10
|
+
<li><%= link_to option['text'], pages_path + '/' + option['value'].to_s %></li>
|
11
|
+
<% end %>
|
12
|
+
</ul>
|
@@ -3,15 +3,17 @@
|
|
3
3
|
<div id='role_<%= @role.id %>_container'></div>
|
4
4
|
|
5
5
|
<% content_for :caboose_js do %>
|
6
|
+
<%= javascript_include_tag "caboose/model/all" %>
|
6
7
|
<script type="text/javascript">
|
7
8
|
|
8
9
|
$(document).ready(function() {
|
9
|
-
|
10
|
+
new ModelBinder({
|
10
11
|
name: 'Role',
|
11
12
|
id: <%= @role.id %>,
|
12
13
|
listing_url: 'get /admin/roles',
|
13
14
|
update_url: 'put /admin/roles/<%= @role.id %>',
|
14
15
|
delete_url: 'delete /admin/roles/<%= @role.id %>',
|
16
|
+
authenticity_token: '<%= form_authenticity_token %>',
|
15
17
|
attributes: [
|
16
18
|
{
|
17
19
|
name: 'parent_id',
|
@@ -23,8 +25,47 @@ $(document).ready(function() {
|
|
23
25
|
loading_message: 'Getting roles...',
|
24
26
|
options_url: '/admin/roles/options'
|
25
27
|
},
|
26
|
-
{ name: 'name'
|
27
|
-
{ name: 'description'
|
28
|
+
{ name: 'name' , nice_name: 'Name' , type: 'text' , value: "<%= @role.name %>" },
|
29
|
+
{ name: 'description' , nice_name: 'Description' , type: 'text' , value: "<%= @role.description %>" },
|
30
|
+
{
|
31
|
+
name: 'members',
|
32
|
+
type: 'checkbox-multiple',
|
33
|
+
value: <%= @role.users.collect{|u| u.id}.to_json %>,
|
34
|
+
text: "<%= raw @role.users.order('last_name, first_name').collect{|u| "#{u.first_name} #{u.last_name}"}.join('<br />') %>",
|
35
|
+
loading_message: 'Getting users...',
|
36
|
+
options_url: '/admin/users/options',
|
37
|
+
},
|
38
|
+
{
|
39
|
+
name: 'permissions',
|
40
|
+
type: 'checkbox-multiple',
|
41
|
+
value: <%= @role.permissions.collect{|p| p.id}.to_json %>,
|
42
|
+
text: "<%= raw @role.permissions.order('resource, action').collect{|p| "#{p.resource}_#{p.action}"}.join('<br />') %>",
|
43
|
+
loading_message: 'Getting permissions...',
|
44
|
+
options_url: '/admin/permissions/options',
|
45
|
+
}
|
46
|
+
],
|
47
|
+
on_load: function() { modal.autosize(); }
|
48
|
+
});
|
49
|
+
|
50
|
+
/*var user = new Model({
|
51
|
+
name: 'Role',
|
52
|
+
id: <%= @role.id %>,
|
53
|
+
listing_url: 'get /admin/roles',
|
54
|
+
update_url: 'put /admin/roles/<%= @role.id %>',
|
55
|
+
delete_url: 'delete /admin/roles/<%= @role.id %>',
|
56
|
+
attributes: [
|
57
|
+
{
|
58
|
+
name: 'parent_id',
|
59
|
+
nice_name: 'Parent',
|
60
|
+
type: 'select',
|
61
|
+
value: <%= @role.parent_id %>,
|
62
|
+
text: "<%= @role.parent.nil? ? '[No parent]' : @role.parent.name %>",
|
63
|
+
show_controls: true,
|
64
|
+
loading_message: 'Getting roles...',
|
65
|
+
options_url: '/admin/roles/options'
|
66
|
+
},
|
67
|
+
{ name: 'name' , type: 'text' , value: "<%= @role.name %>" },
|
68
|
+
{ name: 'description' , type: 'text' , value: "<%= @role.description %>" },
|
28
69
|
{
|
29
70
|
name: 'members',
|
30
71
|
type: 'checkbox-multiple',
|
@@ -42,7 +83,7 @@ $(document).ready(function() {
|
|
42
83
|
options_url: '/admin/permissions/options',
|
43
84
|
}
|
44
85
|
]
|
45
|
-
})
|
86
|
+
});*/
|
46
87
|
});
|
47
88
|
|
48
89
|
</script>
|
data/config/routes.rb
CHANGED
@@ -49,11 +49,13 @@ Caboose::Engine.routes.draw do
|
|
49
49
|
get "pages/robots-options" => "pages#robots_options"
|
50
50
|
get "pages/format-options" => "pages#content_format_options"
|
51
51
|
get "pages/new" => "pages#new"
|
52
|
+
get "pages/:id/sitemap" => "pages#sitemap"
|
52
53
|
get "pages/:id/redirect" => "pages#redirect"
|
53
54
|
get "pages/:id/edit-settings" => "pages#edit_settings"
|
54
55
|
get "pages/:id/edit-css" => "pages#edit_css"
|
55
56
|
get "pages/:id/edit-js" => "pages#edit_js"
|
56
57
|
get "pages/:id/edit-seo" => "pages#edit_seo"
|
58
|
+
get "pages/:id/edit-resources" => "pages#edit_resources"
|
57
59
|
get "pages/:id/edit-content" => "pages#edit_content"
|
58
60
|
get "pages/:id/edit-title" => "pages#edit_title"
|
59
61
|
get "pages/:id/edit" => "pages#edit"
|
data/config/tinymce.yml
ADDED
@@ -21,7 +21,7 @@ class CabooseHelper
|
|
21
21
|
gem_root = Gem::Specification.find_by_name('caboose-cms').gem_dir
|
22
22
|
filename = File.join(@app_path, filename)
|
23
23
|
copy_from = File.join(gem_root,'lib','sample_files', Pathname.new(filename).basename)
|
24
|
-
|
24
|
+
|
25
25
|
if (!File.exists?(filename) || @force)
|
26
26
|
FileUtils.cp(copy_from, filename)
|
27
27
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Caboose
|
2
|
+
|
3
|
+
class Version
|
4
|
+
include Comparable
|
5
|
+
attr_accessor :str, :migrations
|
6
|
+
|
7
|
+
def initialize(str, migration_range)
|
8
|
+
@str = str
|
9
|
+
@migrations = []
|
10
|
+
|
11
|
+
if !migration_range.nil?
|
12
|
+
|
13
|
+
directory = File.join(File.expand_path('../../..', __FILE__), 'db/migrate')
|
14
|
+
files = Dir.entries(directory).select{ |f| !File.directory?(f) && /[0-9]{3}_[^\n\r\.]+\.rb$/ =~ f && migration_range.include?(f[0..2].to_i) }
|
15
|
+
files.sort.each do |f|
|
16
|
+
require File.join(directory, f)
|
17
|
+
/[0-9]{3}_(?<clazz_name>[^\n\r\.]+)\.rb$/ =~ f
|
18
|
+
@migrations += [clazz_name.classify.constantize.new]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
def to_s
|
25
|
+
return @str
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.compare_version_strings(a, b)
|
29
|
+
a = a.split('.').map{|s| s.to_i}
|
30
|
+
b = b.split('.').map{|s| s.to_i}
|
31
|
+
return a <=> b
|
32
|
+
end
|
33
|
+
|
34
|
+
def <=>(other)
|
35
|
+
return Version.compare_version_strings(@str, other.to_s)
|
36
|
+
end
|
37
|
+
|
38
|
+
def up(c)
|
39
|
+
@migrations.each{|m| m.up(c)}
|
40
|
+
end
|
41
|
+
|
42
|
+
def down(c)
|
43
|
+
@migrations.reverse_each{|m| m.down(c)}
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
data/lib/caboose/version.rb
CHANGED
data/lib/tasks/caboose.rake
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "caboose/version"
|
2
|
+
require "caboose/migrations"
|
2
3
|
|
3
4
|
namespace :caboose do
|
4
5
|
|
@@ -8,20 +9,37 @@ namespace :caboose do
|
|
8
9
|
create_tables
|
9
10
|
load_data
|
10
11
|
end
|
12
|
+
|
11
13
|
desc "Drops all caboose tables"
|
12
14
|
task :drop_tables => :environment do drop_tables end
|
15
|
+
|
13
16
|
desc "Creates all caboose tables"
|
14
17
|
task :create_tables => :environment do create_tables end
|
18
|
+
|
15
19
|
desc "Loads data into caboose tables"
|
16
20
|
task :load_data => :environment do load_data end
|
21
|
+
|
17
22
|
desc "Resets the admin password to 'caboose'"
|
18
23
|
task :reset_admin_pass => :environment do reset_admin_pass end
|
24
|
+
|
25
|
+
desc "Performs caboose migrations to transition from the first to the second version. (Unsafe.)"
|
26
|
+
task :migrate_between, [:from_version, :to_version] => :environment do |t, args|
|
27
|
+
args.with_defaults(from_version: nil, to_version: nil)
|
28
|
+
migrate_tables(args[:from_version], args[:to_version])
|
29
|
+
end
|
30
|
+
|
31
|
+
desc "Performs caboose migrations to transition from the current version to the given version"
|
32
|
+
task :migrate_to, [:to_version] => :migrate_between
|
19
33
|
|
34
|
+
desc "Performs caboose migrations to transition from the current version to the latest installed version"
|
35
|
+
task :migrate => :migrate_between
|
36
|
+
|
20
37
|
#=============================================================================
|
21
38
|
|
22
39
|
def drop_tables
|
23
40
|
puts "Dropping any existing caboose tables..."
|
24
41
|
c = ActiveRecord::Base.connection
|
42
|
+
<<<<<<< HEAD
|
25
43
|
c.drop_table :users if c.table_exists?('users')
|
26
44
|
c.drop_table :roles if c.table_exists?('roles')
|
27
45
|
c.drop_table :permissions if c.table_exists?('permissions')
|
@@ -29,9 +47,22 @@ namespace :caboose do
|
|
29
47
|
c.drop_table :permissions_roles if c.table_exists?('permissions_roles')
|
30
48
|
c.drop_table :assets if c.table_exists?('assets')
|
31
49
|
c.drop_table :pages if c.table_exists?('pages')
|
50
|
+
c.drop_table :posts if c.table_exists?('posts')
|
32
51
|
c.drop_table :page_permissions if c.table_exists?('page_permissions')
|
33
52
|
c.drop_table :sessions if c.table_exists?('sessions')
|
34
53
|
c.drop_table :settings if c.table_exists?('settings')
|
54
|
+
=======
|
55
|
+
c.drop_table :users if c.table_exists?('users')
|
56
|
+
c.drop_table :roles if c.table_exists?('roles')
|
57
|
+
c.drop_table :permissions if c.table_exists?('permissions')
|
58
|
+
c.drop_table :roles_users if c.table_exists?('roles_users')
|
59
|
+
c.drop_table :permissions_roles if c.table_exists?('permissions_roles')
|
60
|
+
c.drop_table :assets if c.table_exists?('assets')
|
61
|
+
c.drop_table :pages if c.table_exists?('pages')
|
62
|
+
c.drop_table :page_permissions if c.table_exists?('page_permissions')
|
63
|
+
c.drop_table :sessions if c.table_exists?('sessions')
|
64
|
+
c.drop_table :settings if c.table_exists?('settings')
|
65
|
+
>>>>>>> 91fad24b37b250731136ae37abdd655f03b008e3
|
35
66
|
end
|
36
67
|
|
37
68
|
def create_tables
|
@@ -99,6 +130,7 @@ namespace :caboose do
|
|
99
130
|
t.integer :content_format, :default => Caboose::Page::CONTENT_FORMAT_HTML
|
100
131
|
t.text :custom_css
|
101
132
|
t.text :custom_js
|
133
|
+
t.text :linked_resources
|
102
134
|
t.string :layout
|
103
135
|
t.integer :sort_order, :default => 0
|
104
136
|
t.boolean :custom_sort_children, :default => false
|
@@ -109,6 +141,13 @@ namespace :caboose do
|
|
109
141
|
t.string :fb_description, :limit => 156
|
110
142
|
t.string :gp_description, :limit => 156
|
111
143
|
end
|
144
|
+
create_table :posts do |t|
|
145
|
+
t.text :title
|
146
|
+
t.text :body
|
147
|
+
t.boolean :hide
|
148
|
+
t.text :image_url
|
149
|
+
t.timestamps
|
150
|
+
end
|
112
151
|
c.create_table :page_permissions do |t|
|
113
152
|
t.references :role
|
114
153
|
t.references :page
|
@@ -144,18 +183,18 @@ namespace :caboose do
|
|
144
183
|
elo_user = Caboose::User.create(first_name: 'John', last_name: 'Doe', username: 'elo', email: 'william@nine.is')
|
145
184
|
|
146
185
|
admin_perm = Caboose::Permission.create(resource: 'all', action: 'all')
|
147
|
-
Caboose::Permission.create(resource: 'users'
|
148
|
-
Caboose::Permission.create(resource: 'users'
|
149
|
-
Caboose::Permission.create(resource: 'users'
|
150
|
-
Caboose::Permission.create(resource: 'users'
|
151
|
-
Caboose::Permission.create(resource: 'roles'
|
152
|
-
Caboose::Permission.create(resource: 'roles'
|
153
|
-
Caboose::Permission.create(resource: 'roles'
|
154
|
-
Caboose::Permission.create(resource: 'roles'
|
155
|
-
Caboose::Permission.create(resource: 'permissions'
|
156
|
-
Caboose::Permission.create(resource: 'permissions'
|
157
|
-
Caboose::Permission.create(resource: 'permissions'
|
158
|
-
Caboose::Permission.create(resource: 'permissions'
|
186
|
+
Caboose::Permission.create(resource: 'users' , action: 'view')
|
187
|
+
Caboose::Permission.create(resource: 'users' , action: 'edit')
|
188
|
+
Caboose::Permission.create(resource: 'users' , action: 'delete')
|
189
|
+
Caboose::Permission.create(resource: 'users' , action: 'add')
|
190
|
+
Caboose::Permission.create(resource: 'roles' , action: 'view')
|
191
|
+
Caboose::Permission.create(resource: 'roles' , action: 'edit')
|
192
|
+
Caboose::Permission.create(resource: 'roles' , action: 'delete')
|
193
|
+
Caboose::Permission.create(resource: 'roles' , action: 'add')
|
194
|
+
Caboose::Permission.create(resource: 'permissions' , action: 'view')
|
195
|
+
Caboose::Permission.create(resource: 'permissions' , action: 'edit')
|
196
|
+
Caboose::Permission.create(resource: 'permissions' , action: 'delete')
|
197
|
+
Caboose::Permission.create(resource: 'permissions' , action: 'add')
|
159
198
|
|
160
199
|
# Add the admin user to the admin role
|
161
200
|
admin_user.roles.push(admin_role)
|
@@ -189,4 +228,28 @@ namespace :caboose do
|
|
189
228
|
admin_user.password = Digest::SHA1.hexdigest(Caboose::salt + 'caboose')
|
190
229
|
admin_user.save
|
191
230
|
end
|
231
|
+
|
232
|
+
def migrate_tables(from_version, to_version)
|
233
|
+
version_setting = Caboose::Setting.where(name: 'version').first
|
234
|
+
versions = Caboose::VERSIONS
|
235
|
+
|
236
|
+
from_version = version_setting.value if from_version.nil?
|
237
|
+
to_version = Caboose::VERSION if to_version.nil?
|
238
|
+
version_regex = /[0-9]+(\.[0-9]+)*/
|
239
|
+
|
240
|
+
raise "from_version '#{from_version}' was invalid" if not version_regex.match(from_version)
|
241
|
+
raise "to_version '#{to_version}' was invalid" if not version_regex.match(to_version)
|
242
|
+
|
243
|
+
c = ActiveRecord::Base.connection
|
244
|
+
from_to_compare = Caboose::Version.compare_version_strings(from_version, to_version)
|
245
|
+
|
246
|
+
if from_to_compare < 0
|
247
|
+
versions.select{ |v| v > from_version && v <= to_version }.each{ |v| v.up(c) }
|
248
|
+
elsif from_to_compare > 0
|
249
|
+
versions.select{ |v| v > to_version && v <= from_version }.reverse_each{ |v| v.down(c) }
|
250
|
+
end
|
251
|
+
|
252
|
+
version_setting.value = to_version
|
253
|
+
version_setting.save
|
254
|
+
end
|
192
255
|
end
|
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.24
|
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-08-
|
11
|
+
date: 2013-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -201,6 +201,7 @@ files:
|
|
201
201
|
- app/views/caboose/pages/edit_content.html.erb
|
202
202
|
- app/views/caboose/pages/edit_css.html.erb
|
203
203
|
- app/views/caboose/pages/edit_js.html.erb
|
204
|
+
- app/views/caboose/pages/edit_resources.html.erb
|
204
205
|
- app/views/caboose/pages/edit_seo.html.erb
|
205
206
|
- app/views/caboose/pages/edit_settings.html.erb
|
206
207
|
- app/views/caboose/pages/edit_title.html.erb
|
@@ -238,8 +239,11 @@ files:
|
|
238
239
|
- app/views/layouts/caboose/modal.html.erb
|
239
240
|
- bin/caboose
|
240
241
|
- config/routes.rb
|
242
|
+
- config/tinymce.yml
|
241
243
|
- lib/caboose/caboose_helper.rb
|
242
244
|
- lib/caboose/engine.rb
|
245
|
+
- lib/caboose/migration_version.rb
|
246
|
+
- lib/caboose/migrations.rb
|
243
247
|
- lib/caboose/version.rb
|
244
248
|
- lib/caboose.rb
|
245
249
|
- lib/sample_files/layout_default.html.erb
|