Module: Quadro::WidgetHelper

Defined in:
app/helpers/quadro/widget_helper.rb

Instance Method Summary collapse

Instance Method Details

#widget_block(widget, options, &block) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'app/helpers/quadro/widget_helper.rb', line 27

def widget_block(widget, options, &block)
  return "" unless widget

  widget_type = widget.type.constantize.short_name

  case widget_type
  when 'form'
    simple_form_for(widget.name, url: form_page_path(widget.page), remote: true, html: { id: widget.name }) do |form|
      content = block_given? ? capture(form, &block) : nil
      if user_signed_in?
        options.merge!({ id: widget.id, type: widget.type, name: widget.name, page: widget.page_id, path: page_widget_path(page_id: widget.page_id, id: widget.id) }).reject!{ |k, v| v.nil? }
        render("quadro/widgets/#{widget_type}/signed_on", widget: widget, options: options, content: content, form: form)
      else
        render("quadro/widgets/#{widget_type}/signed_off", widget: widget, options: options, content: content, form: form)
      end
    end
  else
    content = block_given? ? capture(&block) : nil
    if user_signed_in?
      options.merge!({ id: widget.id, type: widget.type, name: widget.name, page: widget.page_id, path: page_widget_path(page_id: widget.page_id, id: widget.id) }).reject!{ |k, v| v.nil? }
      render("quadro/widgets/#{widget_type}/signed_on", widget: widget, options: options, content: content)
    else
      render("quadro/widgets/#{widget_type}/signed_off", widget: widget, options: options, content: content)
    end
  end
end

#widget_for(name, *args, &block) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/helpers/quadro/widget_helper.rb', line 3

def widget_for(name, *args, &block)
  return "" unless name

  options = args.extract_options!

  new_widget =
    case options[:type]
    when :html
      page.widgets.select{ |w| w.name == name.to_s && w.type == Quadro::Widget::Html.to_s }.first || page.widgets.create(name: name, type: Quadro::Widget::Html.to_s).becomes(Quadro::Widget::Html)
    when :slider
      page.widgets.select{ |w| w.name == name.to_s && w.type == Quadro::Widget::Slider.to_s }.first || page.widgets.create(name: name, type: Quadro::Widget::Slider.to_s).becomes(Quadro::Widget::Slider)
    when :gallery
      page.widgets.select{ |w| w.name == name.to_s && w.type == Quadro::Widget::Gallery.to_s }.first || page.widgets.create(name: name, type: Quadro::Widget::Gallery.to_s).becomes(Quadro::Widget::Gallery)
    when :map
      page.widgets.select{ |w| w.name == name.to_s && w.type == Quadro::Widget::Map.to_s }.first || page.widgets.create(name: name, type: Quadro::Widget::Map.to_s).becomes(Quadro::Widget::Map)
    when :form
      page.widgets.select{ |w| w.name == name.to_s && w.type == Quadro::Widget::Form.to_s }.first || page.widgets.create(name: name, type: Quadro::Widget::Form.to_s).becomes(Quadro::Widget::Form)
    else
      page.widgets.select{ |w| w.name == name.to_s && w.type == Quadro::Widget::Html.to_s }.first || page.widgets.create(name: name, type: Quadro::Widget::Html.to_s)
    end

  widget_block(new_widget, options, &block)
end