Module: Puffer

Defined in:
lib/puffer.rb,
lib/puffer/field.rb,
lib/puffer/engine.rb,
lib/puffer/filters.rb,
lib/puffer/resource.rb,
lib/puffer/component.rb,
lib/puffer/field_set.rb,
lib/puffer/resource/node.rb,
lib/puffer/resource/tree.rb,
lib/puffer/controller/dsl.rb,
lib/puffer/controller/auth.rb,
lib/puffer/extensions/core.rb,
lib/puffer/extensions/form.rb,
app/controllers/puffer/base.rb,
lib/puffer/orm_adapter/base.rb,
lib/puffer/resource/routing.rb,
lib/puffer/controller/config.rb,
lib/puffer/controller/mutate.rb,
lib/puffer/extensions/engine.rb,
lib/puffer/extensions/mapper.rb,
lib/puffer/controller/actions.rb,
lib/puffer/orm_adapter/mongoid.rb,
app/controllers/puffer/tree_base.rb,
lib/puffer/extensions/controller.rb,
lib/puffer/orm_adapter/active_record.rb,
app/controllers/puffer/puffer_users_base.rb,
lib/puffer/extensions/directive_processor.rb

Defined Under Namespace

Modules: Component, Controller, Extensions, OrmAdapter, PufferUser Classes: Base, ComponentGenerator, ComponentMissing, ControllerGenerator, DashboardBase, Engine, Field, FieldSet, Filters, PufferError, PufferUsersBase, Resource, SessionsBase, SessionsDeviseBase, TreeBase

Class Method Summary collapse

Class Method Details

.append_custom_field_type(custom_type, &block) ⇒ Object



87
88
89
# File 'lib/puffer.rb', line 87

def self.append_custom_field_type custom_type, &block
  _field_type_customs.push [custom_type, block]
end

.component_for(field) ⇒ Object



54
55
56
57
58
59
60
# File 'lib/puffer.rb', line 54

def self.component_for field
  type = field
  type = field.type if field.respond_to? :type
  (_component_mappings[type.to_sym] || "#{type}_component").to_s.camelize.constantize
rescue NameError
  raise ComponentMissing, "Missing `#{type}` component for `#{field}` field. Please use Puffer.map_component binding or specify field type manually"
end

.field_type_for(field) ⇒ Object



91
92
93
94
95
96
97
98
99
# File 'lib/puffer.rb', line 91

def self.field_type_for field
  custom_type = swallow_nil{_field_type_customs.detect {|(type, block)| block.call(field) }.first}
  case custom_type
  when Proc then
    custom_type.call(field)
  else
    custom_type
  end
end

.map_component(*args) ⇒ Object

Maps field.type to component class

ex:

Puffer.map_component :ckeditor, :rich, :text, :to => CkeditorComponent

this declaration maps even text fields to use CkeditorComponent for rendering



49
50
51
52
# File 'lib/puffer.rb', line 49

def self.map_component *args
  to = args.extract_options![:to]
  args.each { |type| _component_mappings[type.to_sym] = to }
end

.prepend_custom_field_type(custom_type, &block) ⇒ Object

Appends or prepends custom type.

ex:

Puffer.append_custom_field_type :paperclip do |field|
  field.model.respond_to?(:attachment_definitions)
    && field.model.attachment_definitions.key?(:field.field_name.to_sym)
end


83
84
85
# File 'lib/puffer.rb', line 83

def self.prepend_custom_field_type custom_type, &block
  _field_type_customs.shift [custom_type, block]
end