caboose-cms 0.3.129 → 0.4.1
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 +8 -8
- data/app/assets/javascripts/caboose/admin_block_edit.js +267 -0
- data/app/assets/javascripts/caboose/admin_page_edit_content.js +71 -45
- data/app/assets/javascripts/caboose/admin_page_edit_content_bak.js +164 -0
- data/app/assets/javascripts/caboose/admin_page_new_blocks.js +4 -4
- data/app/assets/stylesheets/caboose/admin_page_edit_content.css +37 -16
- data/app/controllers/caboose/block_types_controller.rb +162 -0
- data/app/controllers/caboose/blocks_controller.rb +293 -0
- data/app/controllers/caboose/edit_controller.rb +33 -0
- data/app/controllers/caboose/pages_controller.rb +4 -3
- data/app/controllers/caboose/posts_controller.rb +1 -1
- data/app/models/caboose/block.rb +222 -0
- data/app/models/caboose/block_type.rb +28 -0
- data/app/models/caboose/core_plugin.rb +6 -6
- data/app/models/caboose/page.rb +8 -4
- data/app/models/caboose/schema.rb +90 -59
- data/app/models/caboose/utilities/schema.rb +3 -3
- data/app/views/caboose/block_types/admin_edit.html.erb +111 -0
- data/app/views/caboose/{page_block_types → block_types}/admin_index.html.erb +2 -2
- data/app/views/caboose/{page_block_types → block_types}/admin_new.html.erb +9 -6
- data/app/views/caboose/blocks/_block.html.erb +8 -0
- data/app/views/caboose/blocks/_heading.html.erb +7 -0
- data/app/views/caboose/blocks/_html.html.erb +7 -0
- data/app/views/caboose/blocks/_image.html.erb +0 -0
- data/app/views/caboose/blocks/_layout_default.html.erb +33 -0
- data/app/views/caboose/blocks/_layout_default_content.html.erb +16 -0
- data/app/views/caboose/blocks/_layout_default_footer.html.erb +20 -0
- data/app/views/caboose/blocks/_layout_default_header.html.erb +32 -0
- data/app/views/caboose/blocks/_richtext.html.erb +7 -0
- data/app/views/caboose/{page_blocks/_richtext.html.erb → blocks/_text.html.erb} +1 -2
- data/app/views/caboose/blocks/admin_edit.html.erb +106 -0
- data/app/views/caboose/{page_blocks → blocks}/admin_edit_custom.html.erb +0 -0
- data/app/views/caboose/{page_blocks → blocks}/admin_edit_h1.html.erb +0 -0
- data/app/views/caboose/{page_blocks → blocks}/admin_edit_h2.html.erb +0 -0
- data/app/views/caboose/{page_blocks → blocks}/admin_edit_h3.html.erb +0 -0
- data/app/views/caboose/{page_blocks → blocks}/admin_edit_h4.html.erb +0 -0
- data/app/views/caboose/{page_blocks → blocks}/admin_edit_h5.html.erb +0 -0
- data/app/views/caboose/{page_blocks → blocks}/admin_edit_h6.html.erb +0 -0
- data/app/views/caboose/{page_blocks → blocks}/admin_edit_richtext.html.erb +0 -0
- data/app/views/caboose/blocks/admin_new.html.erb +55 -0
- data/app/views/caboose/pages/_admin_header.html.erb +1 -1
- data/app/views/caboose/pages/_content.html.erb +1 -1
- data/app/views/caboose/pages/_new_block_header.html.erb +13 -0
- data/app/views/caboose/pages/admin_edit_content.html.erb +24 -20
- data/app/views/caboose/pages/show.html.erb +13 -30
- data/app/views/layouts/caboose/application.html.erb +26 -14
- data/config/routes.rb +38 -30
- data/lib/caboose/engine.rb +2 -2
- data/lib/caboose/version.rb +1 -1
- metadata +33 -35
- data/app/controllers/caboose/page_block_field_values_controller.rb +0 -55
- data/app/controllers/caboose/page_block_fields_controller.rb +0 -123
- data/app/controllers/caboose/page_block_types_controller.rb +0 -100
- data/app/controllers/caboose/page_blocks_controller.rb +0 -165
- data/app/models/caboose/page_block.rb +0 -49
- data/app/models/caboose/page_block_field.rb +0 -21
- data/app/models/caboose/page_block_field_value.rb +0 -39
- data/app/models/caboose/page_block_renderers/h1.rb +0 -5
- data/app/models/caboose/page_block_renderers/h2.rb +0 -5
- data/app/models/caboose/page_block_renderers/h3.rb +0 -5
- data/app/models/caboose/page_block_renderers/h4.rb +0 -5
- data/app/models/caboose/page_block_renderers/h5.rb +0 -5
- data/app/models/caboose/page_block_renderers/h6.rb +0 -5
- data/app/models/caboose/page_block_renderers/p.rb +0 -5
- data/app/models/caboose/page_block_renderers/richtext.rb +0 -5
- data/app/models/caboose/page_block_type.rb +0 -12
- data/app/views/caboose/page_block_fields/admin_edit.html.erb +0 -77
- data/app/views/caboose/page_block_fields/admin_new.html.erb +0 -30
- data/app/views/caboose/page_block_types/admin_edit.html.erb +0 -82
- data/app/views/caboose/page_blocks/_heading.html.erb +0 -7
- data/app/views/caboose/page_blocks/_partial.html.erb +0 -11
- data/app/views/caboose/page_blocks/admin_edit.html.erb +0 -69
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
module Caboose
|
|
3
|
-
class PageBlockFieldValuesController < ApplicationController
|
|
4
|
-
|
|
5
|
-
# PUT /admin/page-block-field-values/:id
|
|
6
|
-
def admin_update
|
|
7
|
-
return unless user_is_allowed('pages', 'edit')
|
|
8
|
-
|
|
9
|
-
resp = StdClass.new({'attributes' => {}})
|
|
10
|
-
fv = PageBlockFieldValue.find(params[:id])
|
|
11
|
-
|
|
12
|
-
save = true
|
|
13
|
-
user = logged_in_user
|
|
14
|
-
|
|
15
|
-
params.each do |k,v|
|
|
16
|
-
case k
|
|
17
|
-
when 'value'
|
|
18
|
-
fv.value = v
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
resp.success = save && fv.save
|
|
23
|
-
render :json => resp
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# POST /admin/page-block-field-values/:id/image
|
|
27
|
-
def admin_update_image
|
|
28
|
-
return unless user_is_allowed('pages', 'edit')
|
|
29
|
-
|
|
30
|
-
resp = StdClass.new({'attributes' => {}})
|
|
31
|
-
fv = PageBlockFieldValue.find(params[:id])
|
|
32
|
-
fv.image = params[:value]
|
|
33
|
-
fv.save
|
|
34
|
-
resp.success = true
|
|
35
|
-
resp.attributes = { 'value' => { 'value' => fv.image.url(:tiny) }}
|
|
36
|
-
|
|
37
|
-
render :json => resp
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# POST /admin/page-block-field-values/:id/file
|
|
41
|
-
def admin_update_file
|
|
42
|
-
return unless user_is_allowed('pages', 'edit')
|
|
43
|
-
|
|
44
|
-
resp = StdClass.new({'attributes' => {}})
|
|
45
|
-
fv = PageBlockFieldValue.find(params[:id])
|
|
46
|
-
fv.file = params[:value]
|
|
47
|
-
fv.save
|
|
48
|
-
resp.success = true
|
|
49
|
-
resp.attributes = { 'value' => { 'value' => fv.file.url }}
|
|
50
|
-
|
|
51
|
-
render :json => resp
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
end
|
|
55
|
-
end
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
module Caboose
|
|
3
|
-
class PageBlockFieldsController < ApplicationController
|
|
4
|
-
|
|
5
|
-
#===========================================================================
|
|
6
|
-
# Admin actions
|
|
7
|
-
#===========================================================================
|
|
8
|
-
|
|
9
|
-
# GET /admin/page-block-types/:block_type_id/fields
|
|
10
|
-
def admin_index
|
|
11
|
-
return if !user_is_allowed('pages', 'view')
|
|
12
|
-
fields = PageBlockField.where(:page_block_type_id => params[:block_type_id]).reorder(:name).all
|
|
13
|
-
render :json => fields
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# GET /admin/page-block-types/:block_type_id/fields/new
|
|
17
|
-
def admin_new
|
|
18
|
-
return unless user_is_allowed('pages', 'add')
|
|
19
|
-
@block_type = PageBlockType.find(params[:block_type_id])
|
|
20
|
-
@field = PageBlockField.new
|
|
21
|
-
render :layout => 'caboose/admin'
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# GET /admin/page-block-types/:block_type_id/fields/:id/edit
|
|
25
|
-
def admin_edit
|
|
26
|
-
return unless user_is_allowed('pages', 'edit')
|
|
27
|
-
@field = PageBlockField.find(params[:id])
|
|
28
|
-
render :layout => 'caboose/admin'
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# POST /admin/page-block-types/:block_type_id
|
|
32
|
-
def admin_create
|
|
33
|
-
return unless user_is_allowed('pages', 'add')
|
|
34
|
-
|
|
35
|
-
resp = Caboose::StdClass.new({
|
|
36
|
-
'error' => nil,
|
|
37
|
-
'redirect' => nil
|
|
38
|
-
})
|
|
39
|
-
|
|
40
|
-
field = PageBlockField.new(
|
|
41
|
-
:page_block_type_id => params[:block_type_id],
|
|
42
|
-
:name => params[:name].downcase.gsub(' ', '_'),
|
|
43
|
-
:nice_name => params[:name],
|
|
44
|
-
:field_type => 'text'
|
|
45
|
-
)
|
|
46
|
-
field.save
|
|
47
|
-
|
|
48
|
-
# Send back the response
|
|
49
|
-
resp.redirect = "/admin/page-block-types/#{params[:block_type_id]}/fields/#{field.id}/edit"
|
|
50
|
-
render :json => resp
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# PUT /admin/page-block-types/:block_type_id/fields/:id
|
|
54
|
-
def admin_update
|
|
55
|
-
return unless user_is_allowed('pages', 'edit')
|
|
56
|
-
|
|
57
|
-
resp = StdClass.new({'attributes' => {}})
|
|
58
|
-
field = PageBlockField.find(params[:id])
|
|
59
|
-
|
|
60
|
-
save = true
|
|
61
|
-
user = logged_in_user
|
|
62
|
-
|
|
63
|
-
params.each do |k,v|
|
|
64
|
-
case k
|
|
65
|
-
when 'page_block_type_id' then field.page_block_type_id = v
|
|
66
|
-
when 'name' then field.name = v
|
|
67
|
-
when 'field_type' then field.field_type = v
|
|
68
|
-
when 'nice_name' then field.nice_name = v
|
|
69
|
-
when 'default' then field.default = v
|
|
70
|
-
when 'width' then field.width = v
|
|
71
|
-
when 'height' then field.height = v
|
|
72
|
-
when 'fixed_placeholder' then field.fixed_placeholder = v
|
|
73
|
-
when 'options' then field.options = v
|
|
74
|
-
when 'options_function' then field.options_function = v
|
|
75
|
-
when 'options_url' then field.options_url = v
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
resp.success = save && field.save
|
|
80
|
-
render :json => resp
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
# DELETE /admin/page-block-types/:block_type_id/fields/:id
|
|
84
|
-
def admin_delete
|
|
85
|
-
return unless user_is_allowed('pages', 'delete')
|
|
86
|
-
PageBlockField.find(params[:id]).destroy
|
|
87
|
-
resp = StdClass.new({
|
|
88
|
-
'redirect' => "/admin/page-block-types/#{params[:block_type_id]}/edit"
|
|
89
|
-
})
|
|
90
|
-
render :json => resp
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
# GET /admin/page-block-fields/field-type-options
|
|
94
|
-
def admin_field_type_options
|
|
95
|
-
return unless user_is_allowed('pages', 'edit')
|
|
96
|
-
options = [
|
|
97
|
-
{ 'value' => 'checkbox' , 'text' => 'checkbox' },
|
|
98
|
-
{ 'value' => 'checkbox_multiple' , 'text' => 'checkbox_multiple' },
|
|
99
|
-
{ 'value' => 'image' , 'text' => 'image' },
|
|
100
|
-
{ 'value' => 'file' , 'text' => 'file' },
|
|
101
|
-
{ 'value' => 'richtext' , 'text' => 'richtext' },
|
|
102
|
-
{ 'value' => 'select' , 'text' => 'select' },
|
|
103
|
-
{ 'value' => 'text' , 'text' => 'text' },
|
|
104
|
-
{ 'value' => 'textarea' , 'text' => 'textarea' }
|
|
105
|
-
]
|
|
106
|
-
render :json => options
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
# GET /admin/page-block-fields/:id/options
|
|
110
|
-
def admin_field_options
|
|
111
|
-
return unless user_is_allowed('pages', 'edit')
|
|
112
|
-
f = PageBlockField.find(params[:id])
|
|
113
|
-
options = []
|
|
114
|
-
if f.options_function
|
|
115
|
-
options = f.render_options
|
|
116
|
-
elsif f.options
|
|
117
|
-
options = f.options.strip.split("\n").collect { |line| { 'value' => line, 'text' => line }}
|
|
118
|
-
end
|
|
119
|
-
render :json => options
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
end
|
|
123
|
-
end
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
module Caboose
|
|
3
|
-
class PageBlockTypesController < ApplicationController
|
|
4
|
-
|
|
5
|
-
#===========================================================================
|
|
6
|
-
# Admin actions
|
|
7
|
-
#===========================================================================
|
|
8
|
-
|
|
9
|
-
# GET /admin/page-block-types
|
|
10
|
-
def admin_index
|
|
11
|
-
return if !user_is_allowed('pages', 'view')
|
|
12
|
-
@block_types = PageBlockType.reorder(:name).all
|
|
13
|
-
render :layout => 'caboose/admin'
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# GET /admin/page-block-types/:id
|
|
17
|
-
def admin_show
|
|
18
|
-
return if !user_is_allowed('pages', 'view')
|
|
19
|
-
block_type = PageBlockType.find(params[:id])
|
|
20
|
-
render :json => block_type
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# GET /admin/page-block-types/new
|
|
24
|
-
def admin_new
|
|
25
|
-
return unless user_is_allowed('pages', 'add')
|
|
26
|
-
@block_type = PageBlockType.new
|
|
27
|
-
render :layout => 'caboose/admin'
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
# GET /admin/page-block-types/:id/edit
|
|
31
|
-
def admin_edit
|
|
32
|
-
return unless user_is_allowed('pages', 'edit')
|
|
33
|
-
@block_type = PageBlockType.find(params[:id])
|
|
34
|
-
render :layout => 'caboose/admin'
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# POST /admin/page-block-types
|
|
38
|
-
def admin_create
|
|
39
|
-
return unless user_is_allowed('pages', 'add')
|
|
40
|
-
|
|
41
|
-
resp = Caboose::StdClass.new({
|
|
42
|
-
'error' => nil,
|
|
43
|
-
'redirect' => nil
|
|
44
|
-
})
|
|
45
|
-
|
|
46
|
-
bt = PageBlockType.new(
|
|
47
|
-
:name => params[:name].downcase.gsub(' ', '_'),
|
|
48
|
-
:description => params[:name],
|
|
49
|
-
:use_render_function => false
|
|
50
|
-
)
|
|
51
|
-
bt.save
|
|
52
|
-
|
|
53
|
-
# Send back the response
|
|
54
|
-
resp.redirect = "/admin/page-block-types/#{bt.id}/edit"
|
|
55
|
-
render :json => resp
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
# PUT /admin/page-block-types/:id
|
|
59
|
-
def admin_update
|
|
60
|
-
return unless user_is_allowed('pages', 'edit')
|
|
61
|
-
|
|
62
|
-
resp = StdClass.new({'attributes' => {}})
|
|
63
|
-
bt = PageBlockType.find(params[:id])
|
|
64
|
-
|
|
65
|
-
save = true
|
|
66
|
-
user = logged_in_user
|
|
67
|
-
|
|
68
|
-
params.each do |k,v|
|
|
69
|
-
case k
|
|
70
|
-
when 'name'
|
|
71
|
-
bt.name = v
|
|
72
|
-
break
|
|
73
|
-
when 'description'
|
|
74
|
-
bt.description = v
|
|
75
|
-
break
|
|
76
|
-
when 'use_render_function'
|
|
77
|
-
bt.use_render_function = v
|
|
78
|
-
break
|
|
79
|
-
when 'render_function'
|
|
80
|
-
bt.render_function = v
|
|
81
|
-
break
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
resp.success = save && bt.save
|
|
86
|
-
render :json => resp
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
# DELETE /admin/page-block-types/:id
|
|
90
|
-
def admin_delete
|
|
91
|
-
return unless user_is_allowed('pages', 'delete')
|
|
92
|
-
PageBlockType.find(params[:id]).destroy
|
|
93
|
-
resp = StdClass.new({
|
|
94
|
-
'redirect' => "/admin/page-block-types"
|
|
95
|
-
})
|
|
96
|
-
render :json => resp
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
end
|
|
100
|
-
end
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
module Caboose
|
|
3
|
-
class PageBlocksController < ApplicationController
|
|
4
|
-
|
|
5
|
-
#===========================================================================
|
|
6
|
-
# Admin actions
|
|
7
|
-
#===========================================================================
|
|
8
|
-
|
|
9
|
-
# GET /admin/pages/:page_id/blocks
|
|
10
|
-
def admin_index
|
|
11
|
-
return if !user_is_allowed('pages', 'view')
|
|
12
|
-
blocks = PageBlock.where(:page_id => params[:page_id]).reorder(:sort_order)
|
|
13
|
-
render :json => blocks
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# GET /admin/pages/:page_id/blocks/new
|
|
17
|
-
def admin_new
|
|
18
|
-
return unless user_is_allowed('pages', 'add')
|
|
19
|
-
@page = Page.find(params[:page_id])
|
|
20
|
-
@block = PageBlock.new(:page_id => params[:page_id])
|
|
21
|
-
render :layout => 'caboose/admin'
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# GET /admin/pages/:page_id/blocks/:id
|
|
25
|
-
def admin_show
|
|
26
|
-
return unless user_is_allowed('pages', 'edit')
|
|
27
|
-
block = PageBlock.find(params[:id])
|
|
28
|
-
render :json => block
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# GET /admin/pages/:page_id/blocks/:id/render
|
|
32
|
-
def admin_render
|
|
33
|
-
return unless user_is_allowed('pages', 'edit')
|
|
34
|
-
b = PageBlock.find(params[:id])
|
|
35
|
-
bt = b.page_block_type
|
|
36
|
-
if bt.nil?
|
|
37
|
-
bt = PageBlockType.where(:name => 'richtext').first
|
|
38
|
-
b.page_block_type_id = bt.id
|
|
39
|
-
b.save
|
|
40
|
-
end
|
|
41
|
-
html = nil
|
|
42
|
-
|
|
43
|
-
if bt.use_render_function && bt.render_function
|
|
44
|
-
html = b.render_from_function(params[:empty_text], true)
|
|
45
|
-
else
|
|
46
|
-
html = render_to_string({
|
|
47
|
-
:partial => "caboose/page_blocks/#{b.page_block_type.name}",
|
|
48
|
-
:locals => {
|
|
49
|
-
:block => b,
|
|
50
|
-
:empty_text => params[:empty_text],
|
|
51
|
-
:editing => true
|
|
52
|
-
}
|
|
53
|
-
})
|
|
54
|
-
end
|
|
55
|
-
render :json => html
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
# GET /admin/pages/:page_id/blocks/render
|
|
59
|
-
def admin_render_all
|
|
60
|
-
return unless user_is_allowed('pages', 'edit')
|
|
61
|
-
p = Page.find(params[:page_id])
|
|
62
|
-
blocks = p.page_blocks.collect do |b|
|
|
63
|
-
bt = b.page_block_type
|
|
64
|
-
if bt.nil?
|
|
65
|
-
bt = PageBlockType.where(:name => 'richtext').first
|
|
66
|
-
b.page_block_type_id = bt.id
|
|
67
|
-
b.save
|
|
68
|
-
end
|
|
69
|
-
html = nil
|
|
70
|
-
if bt.use_render_function && bt.render_function
|
|
71
|
-
html = b.render_from_function(params[:empty_text], true)
|
|
72
|
-
else
|
|
73
|
-
html = render_to_string({
|
|
74
|
-
:partial => "caboose/page_blocks/#{bt.name}",
|
|
75
|
-
:locals => { :block => b, :empty_text => params[:empty_text], :editing => true }
|
|
76
|
-
})
|
|
77
|
-
end
|
|
78
|
-
{
|
|
79
|
-
:id => b.id,
|
|
80
|
-
:page_block_type_id => bt.id,
|
|
81
|
-
:sort_order => b.sort_order,
|
|
82
|
-
:html => html
|
|
83
|
-
}
|
|
84
|
-
end
|
|
85
|
-
render :json => blocks
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
# GET /admin/pages/:page_id/blocks/:id/edit
|
|
89
|
-
def admin_edit
|
|
90
|
-
return unless user_is_allowed('pages', 'edit')
|
|
91
|
-
@page = Page.find(params[:page_id])
|
|
92
|
-
PageBlock.create_field_values(params[:id])
|
|
93
|
-
@block = PageBlock.find(params[:id])
|
|
94
|
-
#render "caboose/page_blocks/admin_edit_#{@block.block_type}", :layout => 'caboose/modal'
|
|
95
|
-
render :layout => 'caboose/modal'
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
# POST /admin/pages/:page_id/blocks
|
|
99
|
-
def admin_create
|
|
100
|
-
return unless user_is_allowed('pages', 'add')
|
|
101
|
-
|
|
102
|
-
resp = Caboose::StdClass.new({
|
|
103
|
-
'error' => nil,
|
|
104
|
-
'redirect' => nil
|
|
105
|
-
})
|
|
106
|
-
|
|
107
|
-
b = PageBlock.new
|
|
108
|
-
b.page_id = params[:page_id].to_i
|
|
109
|
-
b.page_block_type_id = params[:page_block_type_id]
|
|
110
|
-
|
|
111
|
-
if !params[:index].nil?
|
|
112
|
-
b.sort_order = params[:index].to_i
|
|
113
|
-
elsif params[:after_id]
|
|
114
|
-
b2 = PageBlock.find(params[:after_id].to_i)
|
|
115
|
-
b.sort_order = b2.sort_order + 1
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
i = b.sort_order + 1
|
|
119
|
-
PageBlock.where("page_id = ? and sort_order >= ?", b.page_id, b.sort_order).reorder(:sort_order).each do |b2|
|
|
120
|
-
b2.sort_order = i
|
|
121
|
-
b2.save
|
|
122
|
-
i = i + 1
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
# Save the block
|
|
126
|
-
b.save
|
|
127
|
-
|
|
128
|
-
# Send back the response
|
|
129
|
-
resp.block = b
|
|
130
|
-
render :json => resp
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
# PUT /admin/pages/:page_id/blocks/:id
|
|
134
|
-
def admin_update
|
|
135
|
-
return unless user_is_allowed('pages', 'edit')
|
|
136
|
-
|
|
137
|
-
resp = StdClass.new({'attributes' => {}})
|
|
138
|
-
b = PageBlock.find(params[:id])
|
|
139
|
-
obj = b.object
|
|
140
|
-
|
|
141
|
-
save = true
|
|
142
|
-
user = logged_in_user
|
|
143
|
-
|
|
144
|
-
b.block_type_definition[:attributes].each do |attrib|
|
|
145
|
-
obj[attrib[:name]] = params[attrib[:name]] if params[attrib[:name]]
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
b.value = JSON.generate(obj)
|
|
149
|
-
resp.success = save && b.save
|
|
150
|
-
render :json => resp
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
# DELETE /admin/pages/:page_id/blocks/:id
|
|
154
|
-
def admin_delete
|
|
155
|
-
return unless user_is_allowed('pages', 'delete')
|
|
156
|
-
PageBlock.find(params[:id]).destroy
|
|
157
|
-
resp = StdClass.new({
|
|
158
|
-
'redirect' => "/admin/pages/#{params[:page_id]}/edit"
|
|
159
|
-
})
|
|
160
|
-
render :json => resp
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
end
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
class Caboose::PageBlock < ActiveRecord::Base
|
|
3
|
-
self.table_name = "page_blocks"
|
|
4
|
-
|
|
5
|
-
belongs_to :page
|
|
6
|
-
belongs_to :page_block_type
|
|
7
|
-
has_many :page_block_field_values
|
|
8
|
-
attr_accessible :id, :page_id, :page_block_type_id, :sort_order
|
|
9
|
-
|
|
10
|
-
def fields
|
|
11
|
-
return page_block_type.fields
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def field_value(name)
|
|
15
|
-
page_block_field_values.each do |fv|
|
|
16
|
-
if fv.page_block_field.name == name
|
|
17
|
-
if fv.page_block_field.field_type == 'image' then return fv.image
|
|
18
|
-
elsif fv.page_block_field.field_type == 'file' then return fv.file
|
|
19
|
-
else return fv.value
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
return nil
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def field_value_object(name)
|
|
27
|
-
page_block_field_values.each do |fv|
|
|
28
|
-
#Caboose.log("fv = #{fv}")
|
|
29
|
-
return fv if fv.page_block_field.name == name
|
|
30
|
-
end
|
|
31
|
-
return nil
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def self.create_field_values(block_id)
|
|
35
|
-
block = self.find(block_id)
|
|
36
|
-
block.page_block_type.fields.each do |f|
|
|
37
|
-
if block.field_value_object(f.name).nil?
|
|
38
|
-
Caboose::PageBlockFieldValue.create(:page_block_id => block.id, :page_block_field_id => f.id, :value => f.default)
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def render_from_function(empty_text = nil, editing = false)
|
|
44
|
-
locals = OpenStruct.new(:block => self, :empty_text => empty_text, :editing => editing)
|
|
45
|
-
erb = ERB.new(page_block_type.render_function)
|
|
46
|
-
return erb.result(locals.instance_eval { binding })
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
end
|