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.
@@ -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' disabled='true' onclick="window.location='/pages/<%= @page.id %>/edit-settings';" />
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';" />
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 },
@@ -10,6 +10,7 @@ $(document).ready(function() {
10
10
  name: 'Page',
11
11
  id: <%= @page.id %>,
12
12
  update_url: '/pages/<%= @page.id %>',
13
+ authenticity_token: '<%= form_authenticity_token %>',
13
14
  attributes: [{
14
15
  name: 'title',
15
16
  nice_name: 'Title',
@@ -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 |opt| %>
10
- <li><a href='<%= opt.title
11
- this->addPageItems($p);
12
- </ul>\n";
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
- var user = new Model({
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' , type: 'text' , value: "<%= @role.name %>" },
27
- { name: 'description' , type: 'text' , value: "<%= @role.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"
@@ -0,0 +1,11 @@
1
+
2
+ caboose:
3
+ theme_advanced_toolbar_location: top
4
+ theme_advanced_toolbar_align: left
5
+ theme_advanced_statusbar_location: bottom
6
+ theme_advanced_buttons3_add:
7
+ - tablecontrols
8
+ - fullscreen
9
+ plugins:
10
+ - table
11
+ - fullscreen
@@ -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
@@ -0,0 +1,7 @@
1
+ require 'caboose/migration_version.rb'
2
+
3
+ module Caboose
4
+ VERSIONS = [
5
+ Caboose::Version.new('0.2.19', 000..000),
6
+ ]
7
+ end
@@ -1,3 +1,3 @@
1
1
  module Caboose
2
- VERSION = '0.2.23'
2
+ VERSION = '0.2.24'
3
3
  end
@@ -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' , action: 'view')
148
- Caboose::Permission.create(resource: 'users' , action: 'edit')
149
- Caboose::Permission.create(resource: 'users' , action: 'delete')
150
- Caboose::Permission.create(resource: 'users' , action: 'add')
151
- Caboose::Permission.create(resource: 'roles' , action: 'view')
152
- Caboose::Permission.create(resource: 'roles' , action: 'edit')
153
- Caboose::Permission.create(resource: 'roles' , action: 'delete')
154
- Caboose::Permission.create(resource: 'roles' , action: 'add')
155
- Caboose::Permission.create(resource: 'permissions' , action: 'view')
156
- Caboose::Permission.create(resource: 'permissions' , action: 'edit')
157
- Caboose::Permission.create(resource: 'permissions' , action: 'delete')
158
- Caboose::Permission.create(resource: 'permissions' , action: 'add')
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.23
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-09 00:00:00.000000000 Z
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