Sha256: e7c91d803458ed81003fcdf98fc8986c0701e6fa121444b23c82021cca07a9f0

Contents?: true

Size: 1.21 KB

Versions: 3

Compression:

Stored size: 1.21 KB

Contents

module Coalla
  class ActionsColumnDefinition < ColumnDefinition
    def initialize
      self.title = I18n.t('admin.common.actions')
      @actions = []
    end

    def cols
      @cols || @actions.size % 2 + @actions.size / 2
    end

    def col_class
      "col-xs-#{cols}"
    end

    def cols=(value)
      @cols = value
    end

    def value(item, context = self)
      @actions.collect do |action|
        options = action.second
        if options[:if]
          context.instance_exec(item, &action.first) if options[:if].call(item)
        else
          context.instance_exec(item, &action.first)
        end
      end.compact.join(' ').html_safe
    end

    def action(method, options = {})
      @actions << case method
                    when :edit
                      [->(item) { edit_link(url_for(action: :edit, id: item)) }, options.merge(action_name: :edit)]
                    when :delete
                      [->(item) { delete_link(url_for(action: :destroy, id: item)) }, options.merge(action_name: :destroy)]
                    when Proc
                      [method, options]
                    else
                      raise "unsupported method: #{method.inspect}"
                  end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
coalla-cms-0.7.0.0 lib/coalla/builders/actions_column_definition.rb
coalla-cms-0.6.1.1 lib/coalla/builders/actions_column_definition.rb
coalla-cms-0.6.0.9 lib/coalla/builders/actions_column_definition.rb