caboose-cms 0.7.8 → 0.7.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2a672e82c544b160af5f8f7aa355f01eed9299d7
4
- data.tar.gz: 5199417e578ff0f20cbc84e6aca74d460a26644c
3
+ metadata.gz: 8e6f3997789d5f79d8f6a9ca3cf6aae4659b0096
4
+ data.tar.gz: 015785dca3640c8f002b0da75b565936539e5cc2
5
5
  SHA512:
6
- metadata.gz: 6b3311b085feffa254dde3c901e96b0d1310150321beb948088348afa96cb75314f0148d02aa00ab245a2d78c546a75a6e21868b6eed29ee2b82d34fc9054afa
7
- data.tar.gz: da90055337c5229dc604cd911ea32c59caff945c24a90002e2f5437033d9abfc541bf767de4fb6bfc43ee631bab86af98cb73be4c323d6eb8b2ed0f064c521ab
6
+ metadata.gz: fa51f2cc0c88e18d7e3d9b074e8883beffe4bb9a340c52d9dadf2413c9c8fee71489cf3f4a1909e63dcac49bb17041cfaa0a3d510a275420cadfbe2173b159df
7
+ data.tar.gz: 3165baf5b25f0c03bc07e673245be41b6e8ec1388acb4d81b8cc2a4135ef8b71fcf4728b8ffee0fbc7fb3648bccd627466be3496c6287c3f0300ab9f76528c16
@@ -0,0 +1,22 @@
1
+ module Caboose
2
+ class PageCustomFieldValuesController < ApplicationController
3
+
4
+ # PUT /admin/page-custom-field-values/:id
5
+ def admin_update
6
+ return if !user_is_allowed('pagecustomfieldvalues', 'edit')
7
+
8
+ resp = Caboose::StdClass.new
9
+ fv = PageCustomFieldValue.find(params[:id])
10
+
11
+ save = true
12
+ params.each do |k, v|
13
+ case k
14
+ when 'value' then fv.value = v
15
+ end
16
+ end
17
+ resp.success = save && fv.save
18
+ render :json => resp
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,132 @@
1
+ module Caboose
2
+ class PageCustomFieldsController < ApplicationController
3
+
4
+ helper :application
5
+
6
+ # GET /admin/page-custom-fields
7
+ def admin_index
8
+ return if !user_is_allowed_to 'view', 'pagecustomfields'
9
+ render :layout => 'caboose/admin'
10
+ end
11
+
12
+ # GET /admin/page-custom-fields/json
13
+ def admin_json
14
+ return if !user_is_allowed_to 'view', 'pagecustomfields'
15
+ pager = self.fields_pager
16
+ render :json => {
17
+ :pager => pager,
18
+ :models => pager.items
19
+ }
20
+ end
21
+
22
+ def fields_pager
23
+ return Caboose::Pager.new(params, {
24
+ 'site_id' => @site.id,
25
+ 'key_like' => '',
26
+ 'name_like' => ''
27
+ }, {
28
+ 'model' => 'Caboose::PageCustomField',
29
+ 'sort' => 'key',
30
+ 'desc' => 'false',
31
+ 'items_per_page' => 100,
32
+ 'base_url' => '/admin/page-custom-fields'
33
+ })
34
+ end
35
+
36
+ # GET /admin/page-custom-fields/:id/json
37
+ def admin_json_single
38
+ return if !user_is_allowed_to 'view', 'pagecustomfields'
39
+ f = PageCustomField.find(params[:id])
40
+ render :json => f
41
+ end
42
+
43
+ # GET /admin/page-custom-fields/:id
44
+ def admin_edit
45
+ return if !user_is_allowed('pagecustomfields', 'edit')
46
+ @page_custom_field = PageCustomField.find(params[:id])
47
+ render :layout => 'caboose/admin'
48
+ end
49
+
50
+ # PUT /admin/page-custom-fields/:id
51
+ def admin_update
52
+ return if !user_is_allowed('pagecustomfields', 'edit')
53
+
54
+ resp = Caboose::StdClass.new
55
+ f = PageCustomField.find(params[:id])
56
+
57
+ save = true
58
+ params.each do |name, value|
59
+ case name
60
+ when 'key' then f.key = value
61
+ when 'name' then f.name = value
62
+ when 'field_type' then f.field_type = value
63
+ when 'default_value' then f.default_value = value
64
+ when 'options' then f.options = value
65
+ end
66
+ end
67
+ resp.success = save && f.save
68
+ render :json => resp
69
+ end
70
+
71
+ # POST /admin/page-custom-fields
72
+ def admin_add
73
+ return if !user_is_allowed('pagecustomfields', 'add')
74
+
75
+ resp = Caboose::StdClass.new
76
+
77
+ f = PageCustomField.new
78
+ f.name = params[:key]
79
+
80
+ if f.name.nil? || f.name.length == 0
81
+ resp.error = 'A field key is required.'
82
+ else
83
+ f.site_id = @site.id
84
+ f.key = f.name.gsub(' ', '_').gsub('-', '_').downcase
85
+ f.field_type = PageCustomField::FIELD_TYPE_TEXT
86
+ f.save
87
+ resp.redirect = "/admin/page-custom-fields/#{f.id}"
88
+ end
89
+
90
+ render :json => resp
91
+ end
92
+
93
+ # DELETE /admin/page-custom-fields/:id
94
+ def admin_delete
95
+ return if !user_is_allowed('pagecustomfields', 'edit')
96
+
97
+ if params[:id] == 'bulk'
98
+ params[:model_ids].each do |fid|
99
+ PageCustomFieldValue.where(:page_custom_field_id => fid).destroy_all
100
+ PageCustomField.where(:id => fid).destroy_all
101
+ end
102
+ else
103
+ fid = params[:id]
104
+ PageCustomFieldValue.where(:page_custom_field_id => fid).destroy_all
105
+ PageCustomField.where(:id => fid).destroy_all
106
+ end
107
+
108
+ render :json => { 'redirect' => '/admin/page-custom-fields' }
109
+ end
110
+
111
+ # GET /admin/page-custom-fields/:field-options
112
+ def admin_options
113
+ return if !user_is_allowed_to 'view', 'pagecustomfields'
114
+ options = []
115
+ case params[:field]
116
+ when nil
117
+ arr = PageCustomField.where(:site_id => @site.id).reorder(:key).all
118
+ options = arr.collect{ |a| { 'value' => a.id, 'text' => a.name }}
119
+ when 'field-type'
120
+ options = [
121
+ { 'value' => PageCustomField::FIELD_TYPE_TEXT , 'text' => 'Text' },
122
+ { 'value' => PageCustomField::FIELD_TYPE_SELECT , 'text' => 'Select' },
123
+ { 'value' => PageCustomField::FIELD_TYPE_CHECKBOX , 'text' => 'Checkbox' },
124
+ { 'value' => PageCustomField::FIELD_TYPE_DATE , 'text' => 'Date' },
125
+ { 'value' => PageCustomField::FIELD_TYPE_DATETIME , 'text' => 'Datetime' }
126
+ ]
127
+ end
128
+ render :json => options
129
+ end
130
+
131
+ end
132
+ end
@@ -162,6 +162,14 @@ module Caboose
162
162
  render :layout => 'caboose/admin'
163
163
  end
164
164
 
165
+ # GET /admin/page/:id/custom-fields
166
+ def admin_edit_custom_fields
167
+ return if !user_is_allowed('pages', 'edit')
168
+ @page = Page.find(params[:id])
169
+ @page.verify_custom_field_values_exist
170
+ render :layout => 'caboose/modal'
171
+ end
172
+
165
173
  # GET /admin/pages/:id/permissions
166
174
  def admin_edit_permissions
167
175
  return unless user_is_allowed('pages', 'edit')
@@ -11,7 +11,8 @@ class Caboose::CorePlugin < Caboose::CaboosePlugin
11
11
  item['children'] << { 'id' => 'blocktypes' , 'text' => 'Block Types' , 'href' => '/admin/block-types' , 'modal' => false } if user.is_allowed('blocktypes' , 'view') if site.is_master == true
12
12
  item['children'] << { 'id' => 'fonts' , 'text' => 'Fonts' , 'href' => '/admin/fonts' , 'modal' => false } if user.is_allowed('fonts' , 'view') if site.use_fonts == true
13
13
  item['children'] << { 'id' => 'redirects' , 'text' => 'Permanent Redirects' , 'href' => '/admin/redirects' , 'modal' => false } if user.is_allowed('redirects' , 'view')
14
- item['children'] << { 'id' => 'permissions' , 'text' => 'Permissions' , 'href' => '/admin/permissions' , 'modal' => false } if user.is_allowed('permissions' , 'view')
14
+ item['children'] << { 'id' => 'permissions' , 'text' => 'Permissions' , 'href' => '/admin/permissions' , 'modal' => false } if user.is_allowed('permissions' , 'view')
15
+ item['children'] << { 'id' => 'pagecustomfields' , 'text' => 'Page Custom Fields' , 'href' => '/admin/page-custom-fields' , 'modal' => false } if user.is_allowed('pagecustomfields' , 'view')
15
16
  item['children'] << { 'id' => 'post_categories' , 'text' => 'Post Categories' , 'href' => '/admin/post-categories' , 'modal' => false } if user.is_allowed('post_categories' , 'view')
16
17
  item['children'] << { 'id' => 'postcustomfields' , 'text' => 'Post Custom Fields' , 'href' => '/admin/post-custom-fields' , 'modal' => false } if user.is_allowed('postcustomfields' , 'view')
17
18
  item['children'] << { 'id' => 'roles' , 'text' => 'Roles' , 'href' => '/admin/roles' , 'modal' => false } if user.is_allowed('roles' , 'view')
@@ -9,6 +9,7 @@ class Caboose::Page < ActiveRecord::Base
9
9
  has_many :blocks, :order => 'sort_order'
10
10
  has_many :page_tags, :class_name => 'Caboose::PageTag', :dependent => :delete_all, :order => 'tag'
11
11
  has_one :page_cache
12
+ has_many :page_custom_field_values
12
13
  attr_accessible :id ,
13
14
  :site_id ,
14
15
  :parent_id ,
@@ -360,5 +361,22 @@ class Caboose::Page < ActiveRecord::Base
360
361
  def self.pages_with_tag(parent_id, tag)
361
362
  self.includes(:page_tags).where(:hide => false, :parent_id => 1, :page_tags => { :tag => tag }).reorder('sort_order, title').all
362
363
  end
364
+
365
+ def custom_field_value(key)
366
+ fv = Caboose::PageCustomFieldValue.where(:page_id => self.id, :key => key).first
367
+ if fv.nil?
368
+ f = Caboose::PageCustomField.where(:site_id => self.site_id, :key => key).first
369
+ return nil if f.nil?
370
+ fv = Caboose::PageCustomFieldValue.create(:page_id => self.id, :page_custom_field_id => f.id, :key => key, :value => f.default_value, :sort_order => f.sort_order)
371
+ end
372
+ return fv.value
373
+ end
374
+
375
+ def verify_custom_field_values_exist
376
+ Caboose::PageCustomField.where(:site_id => self.site_id).all.each do |f|
377
+ fv = Caboose::PageCustomFieldValue.where(:page_id => self.id, :page_custom_field_id => f.id).first
378
+ Caboose::PageCustomFieldValue.create(:page_id => self.id, :page_custom_field_id => f.id, :key => f.key, :value => f.default_value, :sort_order => f.sort_order) if fv.nil?
379
+ end
380
+ end
363
381
 
364
382
  end
@@ -0,0 +1,21 @@
1
+
2
+ class Caboose::PageCustomField < ActiveRecord::Base
3
+ self.table_name = "page_custom_fields"
4
+
5
+ belongs_to :site
6
+ attr_accessible :id ,
7
+ :site_id ,
8
+ :key ,
9
+ :name ,
10
+ :field_type ,
11
+ :default_value ,
12
+ :options ,
13
+ :sort_order
14
+
15
+ FIELD_TYPE_TEXT = 'text'
16
+ FIELD_TYPE_SELECT = 'select'
17
+ FIELD_TYPE_CHECKBOX = 'checkbox'
18
+ FIELD_TYPE_DATE = 'date'
19
+ FIELD_TYPE_DATETIME = 'datetime'
20
+
21
+ end
@@ -0,0 +1,14 @@
1
+
2
+ class Caboose::PageCustomFieldValue < ActiveRecord::Base
3
+ self.table_name = "page_custom_field_values"
4
+
5
+ belongs_to :page
6
+ belongs_to :page_custom_field
7
+ attr_accessible :id ,
8
+ :page_id ,
9
+ :page_custom_field_id ,
10
+ :key ,
11
+ :value ,
12
+ :sort_order
13
+
14
+ end
@@ -463,6 +463,22 @@ class Caboose::Schema < Caboose::Utilities::Schema
463
463
  [ :block , :binary ],
464
464
  [ :refresh , :boolean , { :default => false }]
465
465
  ],
466
+ Caboose::PageCustomField => [
467
+ [ :site_id , :integer ],
468
+ [ :key , :string ],
469
+ [ :name , :string ],
470
+ [ :field_type , :string ],
471
+ [ :default_value , :text ],
472
+ [ :options , :text ],
473
+ [ :sort_order , :integer , { :default => 0 }]
474
+ ],
475
+ Caboose::PageCustomFieldValue => [
476
+ [ :page_id , :integer ],
477
+ [ :page_custom_field_id , :integer ],
478
+ [ :key , :string ],
479
+ [ :value , :text ],
480
+ [ :sort_order , :integer , { :default => 0 }]
481
+ ],
466
482
  Caboose::PagePermission => [
467
483
  [ :role_id , :integer ],
468
484
  [ :page_id , :integer ],
@@ -0,0 +1,40 @@
1
+ <%
2
+ f = @page_custom_field
3
+ %>
4
+
5
+ <h1>Edit Page Custom Field</h1>
6
+
7
+ <p><div id='pagecustomfield_<%= f.id %>_key' ></div></p>
8
+ <p><div id='pagecustomfield_<%= f.id %>_name' ></div></p>
9
+ <p><div id='pagecustomfield_<%= f.id %>_field_type' ></div></p>
10
+ <p><div id='pagecustomfield_<%= f.id %>_default_value' ></div></p>
11
+ <p><div id='pagecustomfield_<%= f.id %>_options' ></div></p>
12
+
13
+ <div id='message'></div>
14
+
15
+ <p>
16
+ <input type='button' value='< Back' onclick="window.location='/admin/page-custom-fields';" />
17
+ </p>
18
+
19
+ <% content_for :caboose_js do %>
20
+ <%= javascript_include_tag "caboose/model/all" %>
21
+ <script type="text/javascript">
22
+
23
+ $(document).ready(function() {
24
+ m = new ModelBinder({
25
+ name: 'PageCustomField',
26
+ id: <%= f.id %>,
27
+ update_url: '/admin/page-custom-fields/<%= f.id %>',
28
+ authenticity_token: '<%= form_authenticity_token %>',
29
+ attributes: [
30
+ { name: 'key' , nice_name: 'Key' , type: 'text' , value: <%= raw Caboose.json(f.key ) %>, width: 800 },
31
+ { name: 'name' , nice_name: 'Name' , type: 'text' , value: <%= raw Caboose.json(f.name ) %>, width: 800 },
32
+ { name: 'field_type' , nice_name: 'Type' , type: 'select' , value: <%= raw Caboose.json(f.field_type ) %>, width: 800 , options_url: '/admin/page-custom-fields/field-type-options' },
33
+ { name: 'default_value' , nice_name: 'Default Value' , type: 'text' , value: <%= raw Caboose.json(f.default_value ) %>, width: 800 },
34
+ { name: 'options' , nice_name: 'Options' , type: 'textarea' , value: <%= raw Caboose.json(f.options ) %>, width: 800 , height: 200 }
35
+ ]
36
+ });
37
+ });
38
+
39
+ </script>
40
+ <% end %>
@@ -0,0 +1,40 @@
1
+
2
+ <h1>Page Custom Fields</h1>
3
+
4
+ <div id='pagecustomfields'></div>
5
+
6
+ <% content_for :caboose_js do %>
7
+ <%= javascript_include_tag 'caboose/model/all' %>
8
+ <script type='text/javascript'>
9
+
10
+ $(document).ready(function() {
11
+ var that = this;
12
+ var table = new IndexTable({
13
+ form_authenticity_token: '<%= form_authenticity_token %>',
14
+ container: 'pagecustomfields',
15
+ base_url: '/admin/page-custom-fields',
16
+ allow_bulk_edit: true,
17
+ allow_bulk_delete: true,
18
+ allow_duplicate: false,
19
+ allow_advanced_edit: true,
20
+ allow_bulk_import: false,
21
+ fields: [
22
+ { show: true, name: 'key' , nice_name: 'Key' , sort: 'key' , type: 'text' , value: function(f) { return f.key }, width: 150, align: 'left', bulk_edit: true },
23
+ { show: true, name: 'name' , nice_name: 'Name' , sort: 'name' , type: 'text' , value: function(f) { return f.name }, width: 150, align: 'left', bulk_edit: true },
24
+ { show: true, name: 'field_type' , nice_name: 'Type' , sort: 'field_type' , type: 'select' , value: function(f) { return f.field_type }, width: 150, align: 'left', bulk_edit: true , options_url: '/admin/page-custom-fields/field-type-options' },
25
+ { show: true, name: 'default_value' , nice_name: 'Default Value' , sort: 'default_value' , type: 'text' , value: function(f) { return f.default_value }, width: 150, align: 'left', bulk_edit: true },
26
+ { show: true, name: 'options' , nice_name: 'Options' , sort: 'options' , type: 'text' , value: function(f) { return f.options }, width: 150, align: 'left', bulk_edit: true }
27
+ ],
28
+ new_model_text: 'New Custom Field',
29
+ new_model_fields: [
30
+ { name: 'key', nice_name: 'Key', type: 'text', width: 400 }
31
+ ],
32
+ search_fields: [
33
+ { name: 'key', nice_name: 'Key', type: 'text', width: 150, align: 'left' }
34
+ ],
35
+ no_models_text: "There are no custom fields right now."
36
+ });
37
+ });
38
+
39
+ </script>
40
+ <% end %>
@@ -63,8 +63,9 @@ $(document).ready(function() {
63
63
  $('body').append($('<div/>')
64
64
  .attr('id', 'tiny_header')
65
65
  .append($('<a/>').attr('href', '/admin/pages').html("< Back"))
66
- .append($('<a/>').attr('href', '/admin/pages/<%= @page.id %>/layout').html("Page Layout"))
67
- .append($('<a/>').attr('href', '/admin/pages/<%= @page.id %>').html("Page Settings"))
66
+ .append($('<a/>').attr('href', '#').html('Custom Fields').click(function(e) { e.preventDefault(); caboose_modal_url('/admin/pages/<%= @page.id %>/custom-fields'); }))
67
+ .append($('<a/>').attr('href', '/admin/pages/<%= @page.id %>/layout').html("Layout"))
68
+ .append($('<a/>').attr('href', '/admin/pages/<%= @page.id %>').html("Settings"))
68
69
  );
69
70
  });
70
71
 
@@ -0,0 +1,45 @@
1
+
2
+ <h1>Custom Fields</h1>
3
+ <% @page.page_custom_field_values.each do |fv| %>
4
+ <p><div id='pagecustomfieldvalue_<%= fv.id %>_value'></div></p>
5
+ <% end %>
6
+
7
+ <p><input type='button' value='Close' onclick="modal.close();" /></p>
8
+
9
+ <% content_for :caboose_js do %>
10
+ <%= javascript_include_tag "caboose/model/all" %>
11
+ <script type='text/javascript'>
12
+
13
+ var modal = false;
14
+ $(window).load(function() {
15
+ modal = new CabooseModal(800);
16
+ setTimeout(function() { modal.autosize(); }, 1000);
17
+ });
18
+
19
+ $(document).ready(function() {
20
+ <% @page.page_custom_field_values.each do |fv| %>
21
+ <% f = fv.page_custom_field %>
22
+ new ModelBinder({
23
+ name: 'PageCustomFieldValue',
24
+ id: <%= fv.id %>,
25
+ update_url: '/admin/page-custom-field-values/<%= fv.id %>',
26
+ authenticity_token: '<%= form_authenticity_token %>',
27
+ attributes: [
28
+ {
29
+ name: 'value',
30
+ nice_name: <%= raw Caboose.json(f.name) %>,
31
+ type: <%= raw Caboose.json(f.field_type) %>,
32
+ value: <%= raw Caboose.json(fv.value) %>,
33
+ width: 600,
34
+ after_update: function() { parent.controller.render_blocks(); },
35
+ after_cancel: function() { parent.controller.render_blocks(); }
36
+ <% if f.field_type == 'select' %>, options_url: '/admin/page-custom-fields/<%= f.id %>/options'<% end %>
37
+ }
38
+ ],
39
+ on_load: function() { if (modal) modal.autosize(); }
40
+ });
41
+ <% end %>
42
+ });
43
+
44
+ </script>
45
+ <% end %>
@@ -265,10 +265,11 @@ Caboose::Engine.routes.draw do
265
265
  get "/admin/pages/robots-options" => "pages#admin_robots_options"
266
266
  get "/admin/pages/format-options" => "pages#admin_content_format_options"
267
267
  get "/admin/pages/new" => "pages#admin_new"
268
- get "/admin/pages/:id/block-options" => "pages#admin_block_options"
268
+ get "/admin/pages/:id/block-options" => "pages#admin_block_options"
269
269
  get "/admin/pages/:id/uri" => "pages#admin_page_uri"
270
270
  get "/admin/pages/:id/delete" => "pages#admin_delete_form"
271
271
  get "/admin/pages/:id/sitemap" => "pages#admin_sitemap"
272
+ get "/admin/pages/:id/custom-fields" => "pages#admin_edit_custom_fields"
272
273
  get "/admin/pages/:id/permissions" => "pages#admin_edit_permissions"
273
274
  get "/admin/pages/:id/css" => "pages#admin_edit_css"
274
275
  get "/admin/pages/:id/js" => "pages#admin_edit_js"
@@ -429,6 +430,20 @@ Caboose::Engine.routes.draw do
429
430
  get "/admin/post-custom-fields" => "post_custom_fields#admin_index"
430
431
  post "/admin/post-custom-fields" => "post_custom_fields#admin_add"
431
432
  delete "/admin/post-custom-fields/:id" => "post_custom_fields#admin_delete"
433
+
434
+ #=============================================================================
435
+ # Page Custom Fields and Values
436
+ #=============================================================================
437
+
438
+ put "/admin/page-custom-field-values/:id" => "page_custom_field_values#admin_update"
439
+ get "/admin/page-custom-fields/json" => "page_custom_fields#admin_json"
440
+ get "/admin/page-custom-fields/:field-options" => "page_custom_fields#admin_options"
441
+ get "/admin/page-custom-fields/:id/json" => "page_custom_fields#admin_json_single"
442
+ get "/admin/page-custom-fields/:id" => "page_custom_fields#admin_edit"
443
+ put "/admin/page-custom-fields/:id" => "page_custom_fields#admin_update"
444
+ get "/admin/page-custom-fields" => "page_custom_fields#admin_index"
445
+ post "/admin/page-custom-fields" => "page_custom_fields#admin_add"
446
+ delete "/admin/page-custom-fields/:id" => "page_custom_fields#admin_delete"
432
447
 
433
448
  #=============================================================================
434
449
  # Google Spreadsheets
@@ -1,3 +1,3 @@
1
1
  module Caboose
2
- VERSION = '0.7.8'
2
+ VERSION = '0.7.9'
3
3
  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.7.8
4
+ version: 0.7.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-18 00:00:00.000000000 Z
11
+ date: 2015-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -721,6 +721,8 @@ files:
721
721
  - app/controllers/caboose/order_packages_controller.rb
722
722
  - app/controllers/caboose/order_reports_controller.rb
723
723
  - app/controllers/caboose/orders_controller.rb
724
+ - app/controllers/caboose/page_custom_field_values_controller.rb
725
+ - app/controllers/caboose/page_custom_fields_controller.rb
724
726
  - app/controllers/caboose/page_permissions_controller.rb
725
727
  - app/controllers/caboose/pages_controller.rb
726
728
  - app/controllers/caboose/permissions_controller.rb
@@ -814,6 +816,8 @@ files:
814
816
  - app/models/caboose/page_bar_generator.rb
815
817
  - app/models/caboose/page_cache.rb
816
818
  - app/models/caboose/page_cacher.rb
819
+ - app/models/caboose/page_custom_field.rb
820
+ - app/models/caboose/page_custom_field_value.rb
817
821
  - app/models/caboose/page_permission.rb
818
822
  - app/models/caboose/page_tag.rb
819
823
  - app/models/caboose/pager.rb
@@ -1012,6 +1016,8 @@ files:
1012
1016
  - app/views/caboose/orders_mailer/fulfillment_new_order.html.erb
1013
1017
  - app/views/caboose/orders_mailer/shipping_order_ready.html.erb
1014
1018
  - app/views/caboose/orders_mailer/test_email.html.erb
1019
+ - app/views/caboose/page_custom_fields/admin_edit.html.erb
1020
+ - app/views/caboose/page_custom_fields/admin_index.html.erb
1015
1021
  - app/views/caboose/pages/_admin_footer.html.erb
1016
1022
  - app/views/caboose/pages/_admin_header.html.erb
1017
1023
  - app/views/caboose/pages/_content.html.erb
@@ -1020,6 +1026,7 @@ files:
1020
1026
  - app/views/caboose/pages/admin_edit_child_sort_order.html.erb
1021
1027
  - app/views/caboose/pages/admin_edit_content.html.erb
1022
1028
  - app/views/caboose/pages/admin_edit_css.html.erb
1029
+ - app/views/caboose/pages/admin_edit_custom_fields.html.erb
1023
1030
  - app/views/caboose/pages/admin_edit_general.html.erb
1024
1031
  - app/views/caboose/pages/admin_edit_js.html.erb
1025
1032
  - app/views/caboose/pages/admin_edit_layout.html.erb