Class: Caboose::BlockTypesController

Inherits:
ApplicationController show all
Defined in:
app/controllers/caboose/block_types_controller.rb

Instance Method Summary collapse

Methods inherited from ApplicationController

#before_action, #before_before_action, #hashify_query_string, #init_cart, #logged_in?, #logged_in_user, #login_user, #logout_user, #parse_url_params, #reject_param, #user_is_allowed, #user_is_allowed_to, #validate_cookie, #validate_token, #var, #verify_logged_in

Instance Method Details

#admin_createObject

POST /admin/block-types



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'app/controllers/caboose/block_types_controller.rb', line 71

def admin_create
  return unless user_is_allowed('pages', 'add')

  resp = Caboose::StdClass.new({
      'error' => nil,
      'redirect' => nil
  })

  bt = BlockType.new(
    :parent_id           => params[:parent_id] ? params[:parent_id] : nil,
    :name                => params[:name].downcase.gsub(' ', '_'),
    :description         => params[:name],                                                                
    :field_type          => params[:field_type],
    :allow_child_blocks  => true        
  )       
  bt.save      
  
  # Send back the response
  resp.redirect = "/admin/block-types/#{bt.id}"
  render :json => resp
end

#admin_deleteObject

DELETE /admin/block-types/:id



132
133
134
135
136
137
138
139
# File 'app/controllers/caboose/block_types_controller.rb', line 132

def admin_delete
  return unless user_is_allowed('pages', 'delete')                  
  BlockType.find(params[:id]).destroy            
  resp = StdClass.new({
    'redirect' => "/admin/block-types"
  })
  render :json => resp
end

#admin_editObject

GET /admin/block-types/:id



57
58
59
60
61
# File 'app/controllers/caboose/block_types_controller.rb', line 57

def admin_edit
  return unless user_is_allowed('pages', 'edit')      
  @block_type = BlockType.find(params[:id])
  render :layout => 'caboose/admin'
end

#admin_edit_iconObject

GET /admin/block-types/:id/icon



64
65
66
67
68
# File 'app/controllers/caboose/block_types_controller.rb', line 64

def admin_edit_icon
  return unless user_is_allowed('pages', 'edit')      
  @block_type = BlockType.find(params[:id])
  render :layout => 'caboose/modal'
end

#admin_field_type_optionsObject

GET /admin/block-types/field-type-options



142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# File 'app/controllers/caboose/block_types_controller.rb', line 142

def admin_field_type_options
  return unless user_is_allowed('pages', 'edit')      
  options = [ 
    { 'value' => 'checkbox'           , 'text' => 'Checkbox'                     }, 
    { 'value' => 'checkbox_multiple'  , 'text' => 'Checkbox (multiple)'          }, 
    { 'value' => 'image'              , 'text' => 'Image'                        },
    { 'value' => 'file'               , 'text' => 'File'                         },
    { 'value' => 'richtext'           , 'text' => 'Rich Text'                    }, 
    { 'value' => 'select'             , 'text' => 'Multiple choice (select box)' }, 
    { 'value' => 'text'               , 'text' => 'Textbox'                      }, 
    { 'value' => 'textarea'           , 'text' => 'Textarea'                     },
    { 'value' => 'block'              , 'text' => 'Block'                        }
  ]      
  render :json => options
end

#admin_indexObject

GET /admin/block-types



10
11
12
13
14
# File 'app/controllers/caboose/block_types_controller.rb', line 10

def admin_index
  return if !user_is_allowed('pages', 'view')
  @block_types = BlockType.where("parent_id is null or parent_id = 0").reorder(:name).all
  render :layout => 'caboose/admin'      
end

#admin_jsonObject

GET /admin/block-types/json



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'app/controllers/caboose/block_types_controller.rb', line 17

def admin_json
  h = {        
    'name'           => '',
    'description'    => '',                
  }
  if params[:parent_id]
    h['parent_id'] = ''
  else
    h['parent_id_null'] = true
  end
  pager = Caboose::Pager.new(params, h, {      
    'model' => 'Caboose::BlockType',
    'sort'  => 'description',
    'desc'  => 'false',
    'base_url' => "/admin/block-types",
    'items_per_page' => 10
  })      
  render :json => {
    :pager => pager,
    :models => pager.items.as_json(:include => :sites)
  }
end

#admin_json_singleObject

GET /admin/block-types/:id/json



41
42
43
44
45
# File 'app/controllers/caboose/block_types_controller.rb', line 41

def admin_json_single
  return if !user_is_allowed('pages', 'view')
  block_type = BlockType.find(params[:id])
  render :json => block_type.as_json(:include => :sites)      
end

#admin_newObject

GET /admin/block-types/new GET /admin/block-types/:id/new



49
50
51
52
53
54
# File 'app/controllers/caboose/block_types_controller.rb', line 49

def admin_new
  return unless user_is_allowed('pages', 'add')      
  @block_type = BlockType.new
  @parent_id = params[:id]
  render :layout => 'caboose/admin'
end

#admin_optionsObject

GET /admin/block-types/options



184
185
186
187
188
189
190
# File 'app/controllers/caboose/block_types_controller.rb', line 184

def admin_options
  return unless user_is_allowed('pages', 'edit')      
  options = BlockType.where("parent_id is null").reorder(:name).all.collect do |bt| 
    { 'value' => bt.id, 'text' => bt.description } 
  end      
  render :json => options
end

#admin_site_optionsObject

GET /admin/block-types/site-options



159
160
161
162
163
164
165
166
167
168
# File 'app/controllers/caboose/block_types_controller.rb', line 159

def admin_site_options
  return unless user_is_allowed('pages', 'edit')
  options = Site.reorder("description, name").all.collect do |s| 
    { 
      'value' => s.id, 
      'text' => s.description && s.description.strip.length > 0 ? s.description : s.name
    }
  end                        
  render :json => options
end

#admin_store_detailsObject

GET /admin/block-types/store/:block_type_summary_id



232
233
234
235
236
# File 'app/controllers/caboose/block_types_controller.rb', line 232

def admin_store_details
  return unless user_is_allowed('blocktypestore', 'add')
  @block_type_summary = BlockTypeSummary::find(params[:block_type_summary_id])
  render :layout => 'caboose/admin'
end

#admin_store_downloadObject

GET /admin/block-types/store/:block_type_summary_id/download



239
240
241
242
243
244
245
246
247
# File 'app/controllers/caboose/block_types_controller.rb', line 239

def admin_store_download
  return unless user_is_allowed('blocktypestore', 'add')

  bts = BlockTypeSummary::find(params[:block_type_summary_id])
  bts.source.refresh(bts.name)

  resp = StdClass.new('success' => 'The block type has been downloaded successfully.')
  render :json => resp
end

#admin_store_indexObject

GET /admin/block-types/store



214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
# File 'app/controllers/caboose/block_types_controller.rb', line 214

def admin_store_index
  return unless user_is_allowed('blocktypestore', 'add')
  @pager = PageBarGenerator.new(params, {
		  'block_type_source_id' => '',
		  'name_like'	           => '',
		  'description_like'	   => ''    		  
		},{
		  'model'          => 'Caboose::BlockTypeSummary',
	    'sort'			     => 'block_type_source_id, name',
		  'desc'			     => false,
		  'base_url'		   => '/admin/block-types/store',
		  'use_url_params' => false
	})
	@block_type_summaries = @pager.items
	render :layout => 'caboose/admin'
end

#admin_tree_optionsObject

GET /admin/block-types/tree-options



193
194
195
196
197
198
199
200
# File 'app/controllers/caboose/block_types_controller.rb', line 193

def admin_tree_options
  return unless user_is_allowed('pages', 'edit')
  options = []            
  BlockType.where("parent_id is null or parent_id = 0").reorder(:name).all.each do |bt|        
    admin_tree_options_helper(options, bt, '')         
  end      
  render :json => options
end

#admin_tree_options_helper(options, bt, prefix) ⇒ Object



202
203
204
205
206
207
# File 'app/controllers/caboose/block_types_controller.rb', line 202

def admin_tree_options_helper(options, bt, prefix)      
  options << { 'value' => bt.id, 'text' => "#{prefix}#{bt.description}" }
  bt.children.each do |bt2|
    admin_tree_options_helper(options, bt2, " - #{prefix}")
  end      
end

#admin_updateObject

PUT /admin/block-types/:id



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'app/controllers/caboose/block_types_controller.rb', line 94

def admin_update
  return unless user_is_allowed('pages', 'edit')
  
  resp = StdClass.new({'attributes' => {}})
  bt = BlockType.find(params[:id])
  save = true      

  params.each do |k,v|
    case k          
      when 'parent_id'                       then bt.parent_id                      = v
      when 'name'                            then bt.name                           = v
      when 'description'                     then bt.description                    = v
      when 'is_global'                       then bt.is_global                      = v
      when 'icon'                            then bt.icon                           = v
      when 'block_type_category_id'          then bt.block_type_category_id         = v
      when 'render_function'                 then bt.render_function                = v
      when 'use_render_function'             then bt.use_render_function            = v
      when 'use_render_function_for_layout'  then bt.use_render_function_for_layout = v
      when 'allow_child_blocks'              then bt.allow_child_blocks             = v
      when 'default_child_block_type_id'     then bt.default_child_block_type_id    = v
      when 'name'                            then bt.name                           = v
      when 'field_type'                      then bt.field_type                     = v                       
      when 'default'                         then bt.default                        = v
      when 'width'                           then bt.width                          = v
      when 'height'                          then bt.height                         = v
      when 'fixed_placeholder'               then bt.fixed_placeholder              = v
      when 'options'                         then bt.options                        = v
      when 'options_function'                then bt.options_function               = v
      when 'options_url'                     then bt.options_url                    = v
      when 'site_id'                         then bt.toggle_site(v[0], v[1])
    end
  end

  resp.success = save && bt.save
  render :json => resp
end

#admin_value_optionsObject

GET /admin/block-types/:id/options



171
172
173
174
175
176
177
178
179
180
181
# File 'app/controllers/caboose/block_types_controller.rb', line 171

def admin_value_options
  return unless user_is_allowed('pages', 'edit')
  bt = BlockType.find(params[:id])            
  options = []
  if bt.options_function
    options = bt.render_options
  elsif bt.options
    options = bt.options.strip.split("\n").collect { |line| { 'value' => line, 'text' => line }}
  end        
  render :json => options
end

#api_block_typeObject

GET /caboose/block-types/:name



262
263
264
265
266
# File 'app/controllers/caboose/block_types_controller.rb', line 262

def api_block_type
  bt = BlockType.where(:name => params[:name]).first
  render :json => { 'error' => 'Invalid block type.' } if bt.nil?            
  render :json => bt.api_hash        
end

#api_block_type_listObject

GET /caboose/block-types



254
255
256
257
258
259
# File 'app/controllers/caboose/block_types_controller.rb', line 254

def api_block_type_list
  arr = BlockType.where("parent_id is null and share = ?", true).reorder(:name).all.collect do |bt|
    { 'name' => bt.name, 'description' => bt.description }
  end      
  render :json => arr      
end