class Interview::View

Attributes

assoc_method[R]
assoc_object[R]
auto_title_for[RW]
filter[RW]
object[RW]
objects[RW]
scope[RW]
title[RW]

Public Instance Methods

build(b) { || ... } click to toggle source
# File lib/interview/controls/view.rb, line 54
def build(b)
  tmp_object = @object
  tmp_objects = @objects
  
  if @object.is_a? String
    # if Object::const_defined?(@object.camelcase) # todo: Überdenken!
    #   @object = @object.camelcase.constantize.new
    # else
      @assoc_object = @parent.find_attribute! :object
      @object = @object.split('.').inject(@assoc_object, :send)
    # end
  elsif @object.is_a? Proc  
    @assoc_object = @parent.find_attribute! :object
    @object = @object.call(@assoc_object, self)
  elsif @object.is_a? Class
    @object = @object.new
  elsif @object.nil?
    @object = find_attribute! :object
  end
  
  if @objects.is_a? String
    @assoc_object = find_attribute! :object
    @assoc_method = @objects
    
    @objects = @assoc_method.split('.').inject(@assoc_object, :send)
    # @objects = @assoc_object.send @assoc_method
    @objects = @objects.send @scope if @scope
    @object = @objects.klass.new
    @scope = nil
    @filter = { "#{assoc_object.class.name.underscore}_id" => assoc_object.id }
  end
  
  if Object.const_defined? 'Gretel' and parent.nil?
    model_name = @object.class.lookup_ancestors.last.model_name
    case h.action_name
    when 'index'
      h.breadcrumb model_name.plural.to_sym
    when 'show'
      h.breadcrumb model_name.singular.to_sym, @object
    when 'new'
      h.breadcrumb "new_#{model_name.singular}".to_sym, @object
    when 'edit'
      h.breadcrumb "edit_#{model_name.singular}".to_sym, @object
    end
  end
  
  yield if block_given?
  
  @object = tmp_object
  @objects = tmp_objects
end
nested_form() click to toggle source
# File lib/interview/controls/view.rb, line 7
def nested_form
  return siblings.find { |sib| sib.is_a? Interview::NestedForm }
end
singular_title() click to toggle source
# File lib/interview/controls/view.rb, line 31
def singular_title # todo: Überdenken
  if @auto_title_for
    if @assoc_object
      return @assoc_object.class.human_attribute_name(@assoc_method.to_s.singularize)
    else
      return @object.class.human_name
    end
  end
end
tooltip() click to toggle source
# File lib/interview/controls/view.rb, line 41
def tooltip
  defaults = @object.class.lookup_ancestors.map do |klass|
    klass.name.underscore.to_sym
  end
  defaults << ''
  
  options = { :scope => [@object.class.i18n_scope, :model_tooltips], :default => defaults }
  return I18n.translate(defaults.shift, options)
  
  # return h.t("activerecord.model_tooltips.#{@object.class.name.underscore}", default: '')
  # todo: tooltip von Elternelement verwenden, falls nicht vorhanden.
end