caboose-cms 0.6.34 → 0.6.35
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/#Untitled-1# +2 -0
- data/app/controllers/caboose/post_custom_field_values_controller.rb +22 -0
- data/app/controllers/caboose/post_custom_fields_controller.rb +132 -0
- data/app/controllers/caboose/posts_controller.rb +2 -1
- data/app/models/caboose/core_plugin.rb +14 -13
- data/app/models/caboose/post.rb +20 -2
- data/app/models/caboose/post_custom_field.rb +21 -0
- data/app/models/caboose/post_custom_field_value.rb +14 -0
- data/app/models/caboose/schema.rb +16 -0
- data/app/views/caboose/post_custom_fields/admin_edit.html.erb +40 -0
- data/app/views/caboose/post_custom_fields/admin_index.html.erb +40 -0
- data/app/views/caboose/posts/admin_edit_general.html.erb +22 -0
- data/config/routes.rb +14 -0
- data/lib/caboose/version.rb +1 -1
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YzkxODRhZjllNzhiN2FlYTNhN2MxMTJmZmMxYWI5NmM3MTY5ZjVlZA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YjQ3ZTQzN2RhZGUzMWIyNjc4YTczNmIzMjAyM2I2MzMwZTk5M2UyOQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
M2ZlM2EyNWEwYTAyYTkyNzdiZjlhNjA2OTEwYWQ2ZjBhMDg5ODJkNDE1ODA4
|
10
|
+
ZGJjYjdhYzAyNWIyYTg1ZTliYmM2NzUzNWIwOWIzY2JlN2M1ZmUyOTE3ZmZh
|
11
|
+
N2M5ZDc3M2IxMGRjMTRhZGFlMTRkOTg3MDc0Yjk5NTRjODM1Y2E=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YjUxNjk3ODVhZjdkNzE5MzllNDZmNDBmZmIyOWJhODQ2ZjgyZjA2MjNlY2M4
|
14
|
+
NzljMDgzMzg2MDNkMzMxMDdjMTlhYmVjYjIxMzY5YjBjYjM3YWYyZDkzZTg2
|
15
|
+
ZGFjOGM5NjEyODg0N2Q3Yzk3ODU0YThjOGJhMjEzMGMzZDM2MDU=
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Caboose
|
2
|
+
class PostCustomFieldValuesController < ApplicationController
|
3
|
+
|
4
|
+
# PUT /admin/post-custom-field-values/:id
|
5
|
+
def admin_update
|
6
|
+
return if !user_is_allowed('postcustomfieldvalues', 'edit')
|
7
|
+
|
8
|
+
resp = Caboose::StdClass.new
|
9
|
+
fv = PostCustomFieldValue.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 PostCustomFieldsController < ApplicationController
|
3
|
+
|
4
|
+
helper :application
|
5
|
+
|
6
|
+
# GET /admin/post-custom-fields
|
7
|
+
def admin_index
|
8
|
+
return if !user_is_allowed_to 'view', 'postcustomfields'
|
9
|
+
render :layout => 'caboose/admin'
|
10
|
+
end
|
11
|
+
|
12
|
+
# GET /admin/post-custom-fields/json
|
13
|
+
def admin_json
|
14
|
+
return if !user_is_allowed_to 'view', 'postcustomfields'
|
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::PostCustomField',
|
29
|
+
'sort' => 'key',
|
30
|
+
'desc' => 'false',
|
31
|
+
'items_per_page' => 100,
|
32
|
+
'base_url' => '/admin/post-custom-fields'
|
33
|
+
})
|
34
|
+
end
|
35
|
+
|
36
|
+
# GET /admin/post-custom-fields/:id/json
|
37
|
+
def admin_json_single
|
38
|
+
return if !user_is_allowed_to 'view', 'postcustomfields'
|
39
|
+
f = PostCustomField.find(params[:id])
|
40
|
+
render :json => f
|
41
|
+
end
|
42
|
+
|
43
|
+
# GET /admin/post-custom-fields/:id
|
44
|
+
def admin_edit
|
45
|
+
return if !user_is_allowed('postcustomfields', 'edit')
|
46
|
+
@post_custom_field = PostCustomField.find(params[:id])
|
47
|
+
render :layout => 'caboose/admin'
|
48
|
+
end
|
49
|
+
|
50
|
+
# PUT /admin/post-custom-fields/:id
|
51
|
+
def admin_update
|
52
|
+
return if !user_is_allowed('postcustomfields', 'edit')
|
53
|
+
|
54
|
+
resp = Caboose::StdClass.new
|
55
|
+
f = PostCustomField.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/post-custom-fields
|
72
|
+
def admin_add
|
73
|
+
return if !user_is_allowed('postcustomfields', 'add')
|
74
|
+
|
75
|
+
resp = Caboose::StdClass.new
|
76
|
+
|
77
|
+
f = PostCustomField.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 = PostCustomField::FIELD_TYPE_TEXT
|
86
|
+
f.save
|
87
|
+
resp.redirect = "/admin/post-custom-fields/#{f.id}"
|
88
|
+
end
|
89
|
+
|
90
|
+
render :json => resp
|
91
|
+
end
|
92
|
+
|
93
|
+
# DELETE /admin/post-custom-fields/:id
|
94
|
+
def admin_delete
|
95
|
+
return if !user_is_allowed('postcustomfields', 'edit')
|
96
|
+
|
97
|
+
if params[:id] == 'bulk'
|
98
|
+
params[:model_ids].each do |fid|
|
99
|
+
PostCustomFieldValue.where(:post_custom_field_id => fid).destroy_all
|
100
|
+
PostCustomField.where(:id => fid).destroy_all
|
101
|
+
end
|
102
|
+
else
|
103
|
+
fid = params[:id]
|
104
|
+
PostCustomFieldValue.where(:post_custom_field_id => fid).destroy_all
|
105
|
+
PostCustomField.where(:id => fid).destroy_all
|
106
|
+
end
|
107
|
+
|
108
|
+
render :json => { 'redirect' => '/admin/post-custom-fields' }
|
109
|
+
end
|
110
|
+
|
111
|
+
# GET /admin/post-custom-fields/:field-options
|
112
|
+
def admin_options
|
113
|
+
return if !user_is_allowed_to 'view', 'postcustomfields'
|
114
|
+
options = []
|
115
|
+
case params[:field]
|
116
|
+
when nil
|
117
|
+
arr = PostCustomField.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' => PostCustomField::FIELD_TYPE_TEXT , 'text' => 'Text' },
|
122
|
+
{ 'value' => PostCustomField::FIELD_TYPE_SELECT , 'text' => 'Select' },
|
123
|
+
{ 'value' => PostCustomField::FIELD_TYPE_CHECKBOX , 'text' => 'Checkbox' },
|
124
|
+
{ 'value' => PostCustomField::FIELD_TYPE_DATE , 'text' => 'Date' },
|
125
|
+
{ 'value' => PostCustomField::FIELD_TYPE_DATETIME , 'text' => 'Datetime' }
|
126
|
+
]
|
127
|
+
end
|
128
|
+
render :json => options
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
132
|
+
end
|
@@ -69,13 +69,14 @@ module Caboose
|
|
69
69
|
def admin_edit_general
|
70
70
|
return if !user_is_allowed('posts', 'edit')
|
71
71
|
@post = Post.find(params[:id])
|
72
|
+
@post.verify_custom_field_values_exist
|
72
73
|
render :layout => 'caboose/admin'
|
73
74
|
end
|
74
75
|
|
75
76
|
# GET /admin/posts/:id/preview
|
76
77
|
def admin_edit_preview
|
77
78
|
return if !user_is_allowed('posts', 'edit')
|
78
|
-
@post = Post.find(params[:id])
|
79
|
+
@post = Post.find(params[:id])
|
79
80
|
render :layout => 'caboose/admin'
|
80
81
|
end
|
81
82
|
|
@@ -7,19 +7,20 @@ class Caboose::CorePlugin < Caboose::CaboosePlugin
|
|
7
7
|
nav << { 'id' => 'my-account' , 'text' => 'My Account' , 'href' => '/my-account' , 'modal' => true }
|
8
8
|
|
9
9
|
item = { 'id' => 'core', 'text' => 'Settings', 'children' => [] }
|
10
|
-
item['children'] << { 'id' => 'blocktypes' , 'text' => 'AB Test Variants' , 'href' => '/admin/ab-variants' , 'modal' => false } if user.is_allowed('abvariants'
|
11
|
-
item['children'] << { 'id' => 'blocktypes' , 'text' => 'Block Types' , 'href' => '/admin/block-types' , 'modal' => false } if user.is_allowed('blocktypes'
|
12
|
-
item['children'] << { 'id' => 'fonts' , 'text' => 'Fonts' , 'href' => '/admin/fonts' , 'modal' => false } if user.is_allowed('fonts'
|
13
|
-
item['children'] << { 'id' => 'redirects' , 'text' => 'Permanent Redirects' , 'href' => '/admin/redirects' , 'modal' => false } if user.is_allowed('redirects'
|
14
|
-
item['children'] << { 'id' => 'permissions' , 'text' => 'Permissions' , 'href' => '/admin/permissions' , 'modal' => false } if user.is_allowed('permissions'
|
15
|
-
item['children'] << { 'id' => 'post_categories' , 'text' => 'Post Categories' , 'href' => '/admin/post-categories' , 'modal' => false } if user.is_allowed('post_categories', 'view')
|
16
|
-
item['children'] << { 'id' => '
|
17
|
-
item['children'] << { 'id' => '
|
18
|
-
item['children'] << { 'id' => '
|
19
|
-
item['children'] << { 'id' => '
|
20
|
-
item['children'] << { 'id' => '
|
21
|
-
item['children'] << { 'id' => '
|
22
|
-
item['children'] << { 'id' => '
|
10
|
+
item['children'] << { 'id' => 'blocktypes' , 'text' => 'AB Test Variants' , 'href' => '/admin/ab-variants' , 'modal' => false } if user.is_allowed('abvariants' , 'view')
|
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
|
+
item['children'] << { 'id' => 'fonts' , 'text' => 'Fonts' , 'href' => '/admin/fonts' , 'modal' => false } if user.is_allowed('fonts' , 'view') if site.use_fonts == true
|
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')
|
15
|
+
item['children'] << { 'id' => 'post_categories' , 'text' => 'Post Categories' , 'href' => '/admin/post-categories' , 'modal' => false } if user.is_allowed('post_categories' , 'view')
|
16
|
+
item['children'] << { 'id' => 'postcustomfields' , 'text' => 'Post Custom Fields' , 'href' => '/admin/post-custom-fields' , 'modal' => false } if user.is_allowed('postcustomfields' , 'view')
|
17
|
+
item['children'] << { 'id' => 'roles' , 'text' => 'Roles' , 'href' => '/admin/roles' , 'modal' => false } if user.is_allowed('roles' , 'view')
|
18
|
+
item['children'] << { 'id' => 'sites' , 'text' => 'Sites' , 'href' => '/admin/sites' , 'modal' => false } if user.is_allowed('sites' , 'view') if site.is_master == true
|
19
|
+
item['children'] << { 'id' => 'smtp' , 'text' => 'SMTP (Mail)' , 'href' => '/admin/smtp' , 'modal' => false } if user.is_allowed('smtp' , 'view')
|
20
|
+
item['children'] << { 'id' => 'social' , 'text' => 'Social Media' , 'href' => '/admin/social' , 'modal' => false } if user.is_allowed('social' , 'view')
|
21
|
+
item['children'] << { 'id' => 'store' , 'text' => 'Store' , 'href' => '/admin/store' , 'modal' => false } if user.is_allowed('store' , 'view') if site.use_store == true
|
22
|
+
item['children'] << { 'id' => 'users' , 'text' => 'Users' , 'href' => '/admin/users' , 'modal' => false } if user.is_allowed('users' , 'view')
|
23
|
+
item['children'] << { 'id' => 'variables' , 'text' => 'Variables' , 'href' => '/admin/settings' , 'modal' => false } if user.is_allowed('settings' , 'view')
|
23
24
|
nav << item if item['children'].count > 0
|
24
25
|
|
25
26
|
item = { 'id' => 'content', 'text' => 'Content', 'children' => [] }
|
data/app/models/caboose/post.rb
CHANGED
@@ -2,15 +2,16 @@
|
|
2
2
|
class Caboose::Post < ActiveRecord::Base
|
3
3
|
self.table_name = "posts"
|
4
4
|
|
5
|
+
has_many :post_custom_field_values
|
5
6
|
has_many :post_category_memberships
|
6
|
-
has_many :post_categories, :through => :post_category_memberships
|
7
|
+
has_many :post_categories, :through => :post_category_memberships
|
7
8
|
belongs_to :site
|
8
9
|
|
9
10
|
attr_accessible :id,
|
10
11
|
:site_id ,
|
11
12
|
:title ,
|
12
13
|
:subtitle ,
|
13
|
-
:author ,
|
14
|
+
:author ,
|
14
15
|
:body ,
|
15
16
|
:preview ,
|
16
17
|
:hide ,
|
@@ -68,5 +69,22 @@ class Caboose::Post < ActiveRecord::Base
|
|
68
69
|
self.uri = new_uri
|
69
70
|
self.save
|
70
71
|
end
|
72
|
+
|
73
|
+
def custom_field_value(key)
|
74
|
+
fv = Caboose::PostCustomFieldValue.where(:post_id => self.id, :key => key).first
|
75
|
+
if fv.nil?
|
76
|
+
f = Caboose::PostCustomField.where(:site_id => self.site_id, :key => key).first
|
77
|
+
return nil if f.nil?
|
78
|
+
fv = Caboose::PostCustomFieldValue.create(:post_id => self.id, :key => key, :value => f.default_value, :sort_order => f.sort_order)
|
79
|
+
end
|
80
|
+
return fv.value
|
81
|
+
end
|
82
|
+
|
83
|
+
def verify_custom_field_values_exist
|
84
|
+
Caboose::PostCustomField.where(:site_id => self.site_id).all.each do |f|
|
85
|
+
fv = Caboose::PostCustomFieldValue.where(:post_id => self.id, :post_custom_field_id => f.id).first
|
86
|
+
Caboose::PostCustomFieldValue.create(:post_id => self.id, :post_custom_field_id => f.id, :key => f.key, :value => f.default_value, :sort_order => f.sort_order) if fv.nil?
|
87
|
+
end
|
88
|
+
end
|
71
89
|
|
72
90
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
|
2
|
+
class Caboose::PostCustomField < ActiveRecord::Base
|
3
|
+
self.table_name = "post_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::PostCustomFieldValue < ActiveRecord::Base
|
3
|
+
self.table_name = "post_custom_field_values"
|
4
|
+
|
5
|
+
belongs_to :post
|
6
|
+
belongs_to :post_custom_field
|
7
|
+
attr_accessible :id ,
|
8
|
+
:post_id ,
|
9
|
+
:post_custom_field_id ,
|
10
|
+
:key ,
|
11
|
+
:value ,
|
12
|
+
:sort_order
|
13
|
+
|
14
|
+
end
|
@@ -507,6 +507,22 @@ class Caboose::Schema < Caboose::Utilities::Schema
|
|
507
507
|
[ :post_id , :integer ],
|
508
508
|
[ :post_category_id , :integer ]
|
509
509
|
],
|
510
|
+
Caboose::PostCustomField => [
|
511
|
+
[ :site_id , :integer ],
|
512
|
+
[ :key , :string ],
|
513
|
+
[ :name , :string ],
|
514
|
+
[ :field_type , :string ],
|
515
|
+
[ :default_value , :text ],
|
516
|
+
[ :options , :text ],
|
517
|
+
[ :sort_order , :integer , { :default => 0 }]
|
518
|
+
],
|
519
|
+
Caboose::PostCustomFieldValue => [
|
520
|
+
[ :post_id , :integer ],
|
521
|
+
[ :post_custom_field_id , :integer ],
|
522
|
+
[ :key , :string ],
|
523
|
+
[ :value , :text ],
|
524
|
+
[ :sort_order , :integer , { :default => 0 }]
|
525
|
+
],
|
510
526
|
Caboose::Product => [
|
511
527
|
[ :site_id , :integer ],
|
512
528
|
[ :alternate_id , :string ],
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<%
|
2
|
+
f = @post_custom_field
|
3
|
+
%>
|
4
|
+
|
5
|
+
<h1>Edit Post Custom Field</h1>
|
6
|
+
|
7
|
+
<p><div id='postcustomfield_<%= f.id %>_key' ></div></p>
|
8
|
+
<p><div id='postcustomfield_<%= f.id %>_name' ></div></p>
|
9
|
+
<p><div id='postcustomfield_<%= f.id %>_field_type' ></div></p>
|
10
|
+
<p><div id='postcustomfield_<%= f.id %>_default_value' ></div></p>
|
11
|
+
<p><div id='postcustomfield_<%= f.id %>_options' ></div></p>
|
12
|
+
|
13
|
+
<div id='message'></div>
|
14
|
+
|
15
|
+
<p>
|
16
|
+
<input type='button' value='< Back' onclick="window.location='/admin/post-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: 'PostCustomField',
|
26
|
+
id: <%= f.id %>,
|
27
|
+
update_url: '/admin/post-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/post-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>Post Custom Fields</h1>
|
3
|
+
|
4
|
+
<div id='postcustomfields'></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: 'postcustomfields',
|
15
|
+
base_url: '/admin/post-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/post-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 %>
|
@@ -6,6 +6,9 @@
|
|
6
6
|
<p><div id='post_<%= @post.id %>_title' ></div></p>
|
7
7
|
<p><div id='post_<%= @post.id %>_subtitle' ></div></p>
|
8
8
|
<p><div id='post_<%= @post.id %>_author' ></div></p>
|
9
|
+
<% @post.post_custom_field_values.each do |fv| %>
|
10
|
+
<p><div id='postcustomfieldvalue_<%= fv.id %>_value'></div></p>
|
11
|
+
<% end %>
|
9
12
|
<p><div id='post_<%= @post.id %>_created_at'></div></p>
|
10
13
|
<p><div id='post_<%= @post.id %>_published' ></div></p>
|
11
14
|
<p><div id='post_<%= @post.id %>_image' ></div></p>
|
@@ -32,6 +35,25 @@ $(document).ready(function() {
|
|
32
35
|
{ name: 'image' , nice_name: 'Image' , type: 'image' , value: <%= raw Caboose.json(@post.image.url(:thumb)) %>, width: 600, update_url: '/admin/posts/<%= @post.id %>/image' }
|
33
36
|
]
|
34
37
|
});
|
38
|
+
<% @post.post_custom_field_values.each do |fv| %>
|
39
|
+
<% f = fv.post_custom_field %>
|
40
|
+
new ModelBinder({
|
41
|
+
name: 'PostCustomFieldValue',
|
42
|
+
id: <%= fv.id %>,
|
43
|
+
update_url: '/admin/post-custom-field-values/<%= fv.id %>',
|
44
|
+
authenticity_token: '<%= form_authenticity_token %>',
|
45
|
+
attributes: [
|
46
|
+
{
|
47
|
+
name: 'value',
|
48
|
+
nice_name: <%= raw Caboose.json(f.name) %>,
|
49
|
+
type: <%= raw Caboose.json(f.field_type) %>,
|
50
|
+
value: <%= raw Caboose.json(fv.value) %>,
|
51
|
+
width: 600
|
52
|
+
<% if f.field_type == 'select' %>, options_url: '/admin/post-custom-fields/<%= f.id %>/options'<% end %>
|
53
|
+
}
|
54
|
+
]
|
55
|
+
});
|
56
|
+
<% end %>
|
35
57
|
});
|
36
58
|
|
37
59
|
function refresh_uri()
|
data/config/routes.rb
CHANGED
@@ -416,6 +416,20 @@ Caboose::Engine.routes.draw do
|
|
416
416
|
post "/admin/post-categories" => "post-categories#admin_add"
|
417
417
|
delete "/admin/post-categories/:id" => "post-categories#admin_delete"
|
418
418
|
|
419
|
+
#=============================================================================
|
420
|
+
# Post Custom Fields and Values
|
421
|
+
#=============================================================================
|
422
|
+
|
423
|
+
put "/admin/post-custom-field-values/:id" => "post_custom_field_values#admin_update"
|
424
|
+
get "/admin/post-custom-fields/json" => "post_custom_fields#admin_json"
|
425
|
+
get "/admin/post-custom-fields/:field-options" => "post_custom_fields#admin_options"
|
426
|
+
get "/admin/post-custom-fields/:id/json" => "post_custom_fields#admin_json_single"
|
427
|
+
get "/admin/post-custom-fields/:id" => "post_custom_fields#admin_edit"
|
428
|
+
put "/admin/post-custom-fields/:id" => "post_custom_fields#admin_update"
|
429
|
+
get "/admin/post-custom-fields" => "post_custom_fields#admin_index"
|
430
|
+
post "/admin/post-custom-fields" => "post_custom_fields#admin_add"
|
431
|
+
delete "/admin/post-custom-fields/:id" => "post_custom_fields#admin_delete"
|
432
|
+
|
419
433
|
#=============================================================================
|
420
434
|
# Google Spreadsheets
|
421
435
|
#=============================================================================
|
data/lib/caboose/version.rb
CHANGED
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.6.
|
4
|
+
version: 0.6.35
|
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-
|
11
|
+
date: 2015-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|
@@ -601,6 +601,7 @@ files:
|
|
601
601
|
- app/assets/templates/caboose/product/images.jst.ejs
|
602
602
|
- app/assets/templates/caboose/product/images_old.jst.ejs
|
603
603
|
- app/assets/templates/caboose/product/options.jst.ejs
|
604
|
+
- app/controllers/caboose/#Untitled-1#
|
604
605
|
- app/controllers/caboose/ab_options_controller.rb
|
605
606
|
- app/controllers/caboose/ab_variants_controller.rb
|
606
607
|
- app/controllers/caboose/admin_controller.rb
|
@@ -641,6 +642,8 @@ files:
|
|
641
642
|
- app/controllers/caboose/pages_controller.rb
|
642
643
|
- app/controllers/caboose/permissions_controller.rb
|
643
644
|
- app/controllers/caboose/post_categories_controller.rb
|
645
|
+
- app/controllers/caboose/post_custom_field_values_controller.rb
|
646
|
+
- app/controllers/caboose/post_custom_fields_controller.rb
|
644
647
|
- app/controllers/caboose/posts_controller.rb
|
645
648
|
- app/controllers/caboose/product_images_controller.rb
|
646
649
|
- app/controllers/caboose/products_controller.rb
|
@@ -740,6 +743,8 @@ files:
|
|
740
743
|
- app/models/caboose/post.rb
|
741
744
|
- app/models/caboose/post_category.rb
|
742
745
|
- app/models/caboose/post_category_membership.rb
|
746
|
+
- app/models/caboose/post_custom_field.rb
|
747
|
+
- app/models/caboose/post_custom_field_value.rb
|
743
748
|
- app/models/caboose/product.rb
|
744
749
|
- app/models/caboose/product_category_sort.rb
|
745
750
|
- app/models/caboose/product_image.rb
|
@@ -950,6 +955,8 @@ files:
|
|
950
955
|
- app/views/caboose/post_categories/admin_edit.html.erb
|
951
956
|
- app/views/caboose/post_categories/admin_index.html.erb
|
952
957
|
- app/views/caboose/post_categories/admin_new.html.erb
|
958
|
+
- app/views/caboose/post_custom_fields/admin_edit.html.erb
|
959
|
+
- app/views/caboose/post_custom_fields/admin_index.html.erb
|
953
960
|
- app/views/caboose/posts/_admin_footer.html.erb
|
954
961
|
- app/views/caboose/posts/_admin_header.html.erb
|
955
962
|
- app/views/caboose/posts/admin_delete_form.html.erb
|