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