Sha256: 6a0c17ccb000aec87ca2d5e430398aa31bac3b325f22d3c014c499b2ac1a92f8
Contents?: true
Size: 1.99 KB
Versions: 6
Compression:
Stored size: 1.99 KB
Contents
require 'sunrise/config/base' module Sunrise module Config class Field < Base include Sunrise::Utils::EvalHelpers # The condition that must be met on an object attr_reader :if_condition # The condition that must *not* be met on an object attr_reader :unless_condition # Store form block attr_reader :block def initialize(abstract_model, parent, options = {}, &block) options = {:multiply => false, :sort => false}.merge(options) super(abstract_model, parent, options) # Build conditionals @if_condition = options.delete(:if) @unless_condition = options.delete(:unless) @block = block end def block_given? !block.nil? end def visible?(object = nil) object.nil? || matches_conditions?(object) end def input_options @config_options.dup end def human_name @config_options[:label] || abstract_model.model.human_attribute_name(@name) end def html_options css = ["padder"] css << "grey-but" if input_options[:boolean] css << "tags-edit" if association? {:class => css, :id => dom_id}.merge(input_options[:html] || {}) end def association? input_options[:association] === true end def label? @config_options[:label] != false end def nested? false end def dom_id @dom_id ||= "#{name}_field" end protected # Verifies that the conditionals for this field evaluate to true for the # given object def matches_conditions?(object) return true if if_condition.nil? && unless_condition.nil? Array.wrap(if_condition).all? {|condition| evaluate_method(object, condition)} && !Array.wrap(unless_condition).any? {|condition| evaluate_method(object, condition)} end end end end
Version data entries
6 entries across 6 versions & 1 rubygems