class Forma::Action

Attributes

url[R]

attr_reader :label, :icon, :method, :confirm, :as

Public Class Methods

new(h={}) click to toggle source
# File lib/forma/action.rb, line 7
def initialize(h={})
  h = h.symbolize_keys
  @id = h[:id]
  @label = h[:label]
  @icon = h[:icon]
  @url = h[:url]
  @turbolink=h[:turbolink]
  @method = h[:method]
  @confirm = h[:confirm]
  @as = h[:as]
  @tooltip = h[:tooltip]
  @select = h[:select]
  @condition = h[:condition]
end

Public Instance Methods

to_html(model) click to toggle source
# File lib/forma/action.rb, line 22
def to_html(model)
  if eval_condition(model)
    if @select
      attrs = {
        id: @id,
        class: ['ff-action', 'btn', 'btn-mini', 'ff-select-action', 'btn-xs', 'btn-default'],
        href: '#',
        'data-original-title' => @tooltip,
        'data-value-id' => model.id,
        'data-value-type' => model.class.name,
        'data-value-text' => model.to_s
      }
      attrs['data-no-turbolink'] = 'true' if @turbolink == false
      children = [ el('i', attrs: { class: 'icon icon-download fa fa-hand-o-left' }) ]
      el('a', attrs: attrs, children: children)
    else
      children = [ (el('img', attrs: { src: eval_icon(model) }) if @icon.present?), el('span', text: eval_label(model)) ]
      button = (@as.to_s == 'button')
      attrs = {
        id: @id,
        class: ['ff-action', ('btn btn-default' if button)],
        href: eval_url(model),
        'data-method' => @method,
        'data-confirm' => @confirm,
        'data-original-title' => @tooltip
      }
      attrs['data-no-turbolink'] = 'true' if @turbolink == false
      el('a', attrs: attrs, children: children)
    end
  end
end

Private Instance Methods

eval_condition(model) click to toggle source
# File lib/forma/action.rb, line 68
def eval_condition(model)
  if @condition then @condition.is_a?(Proc) ? @condition.call(model) : @condition
  else true end
end
eval_icon(model) click to toggle source
# File lib/forma/action.rb, line 64
def eval_icon(model)
  @icon.is_a?(Proc) ? @icon.call(model).to_s : @icon.to_s
end
eval_label(model) click to toggle source
# File lib/forma/action.rb, line 60
def eval_label(model)
  @label.is_a?(Proc) ? @label.call(model).to_s : @label.to_s
end
eval_url(model) click to toggle source
# File lib/forma/action.rb, line 56
def eval_url(model)
  @url.is_a?(Proc) ? @url.call(model).to_s : @url.to_s
end