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.
@@ -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