Class: Effective::FormBuilder

Inherits:
ActionView::Helpers::FormBuilder
  • Object
show all
Defined in:
app/models/effective/form_builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(object_name, object, template, options) ⇒ FormBuilder

Returns a new instance of FormBuilder.



10
11
12
13
14
15
16
17
18
19
20
# File 'app/models/effective/form_builder.rb', line 10

def initialize(object_name, object, template, options)
  @template = template

  @layout = (options.delete(:layout) || :vertical).to_sym
  @action = options.delete(:action)
  @readonly = options.delete(:readonly)
  @disabled = options.delete(:disabled)
  @remote = options[:remote]

  super
end

Instance Attribute Details

#actionObject

Returns the value of attribute action.



6
7
8
# File 'app/models/effective/form_builder.rb', line 6

def action
  @action
end

#disabledObject

Returns the value of attribute disabled.



6
7
8
# File 'app/models/effective/form_builder.rb', line 6

def disabled
  @disabled
end

#layoutObject

Returns the value of attribute layout.



6
7
8
# File 'app/models/effective/form_builder.rb', line 6

def layout
  @layout
end

#readonlyObject

Returns the value of attribute readonly.



6
7
8
# File 'app/models/effective/form_builder.rb', line 6

def readonly
  @readonly
end

#remoteObject

Returns the value of attribute remote.



6
7
8
# File 'app/models/effective/form_builder.rb', line 6

def remote
  @remote
end

#templateObject

Returns the value of attribute template.



6
7
8
# File 'app/models/effective/form_builder.rb', line 6

def template
  @template
end

Instance Method Details

#article_editor(name, options = {}, &block) ⇒ Object



27
28
29
# File 'app/models/effective/form_builder.rb', line 27

def article_editor(name, options = {}, &block)
  Effective::FormInputs::ArticleEditor.new(name, options, builder: self).to_html(&block)
end

#check_box(name, options = {}) ⇒ Object



36
37
38
39
40
41
42
# File 'app/models/effective/form_builder.rb', line 36

def check_box(name, options = {})
  Effective::FormInputs::CheckBox.new(name, options, builder: self).to_html {
    checked_value = options.fetch(:checked_value, '1')
    unchecked_value = options.fetch(:unchecked_value, '0')
    super(name, options.except(:checked_value, :unchecked_value), checked_value, unchecked_value)
  }
end

#checks(name, choices = nil, *args) ⇒ Object



44
45
46
47
# File 'app/models/effective/form_builder.rb', line 44

def checks(name, choices = nil, *args)
  options = args.extract_options!.merge!(collection: choices)
  Effective::FormInputs::Checks.new(name, options, builder: self).to_html
end

#ck_editor(name, options = {}, &block) ⇒ Object



49
50
51
# File 'app/models/effective/form_builder.rb', line 49

def ck_editor(name, options = {}, &block)
  Effective::FormInputs::CkEditor.new(name, options, builder: self).to_html(&block)
end

#clear(name = 'Clear', options = {}) ⇒ Object



31
32
33
34
# File 'app/models/effective/form_builder.rb', line 31

def clear(name = 'Clear', options = {})
  (options = name; name = 'Clear') if name.kind_of?(Hash)
  Effective::FormInputs::Clear.new(name, options, builder: self).to_html
end

#date_field(name, options = {}) ⇒ Object



53
54
55
# File 'app/models/effective/form_builder.rb', line 53

def date_field(name, options = {})
  Effective::FormInputs::DateField.new(name, options, builder: self).to_html { super(name, options) }
end

#datetime_field(name, options = {}) ⇒ Object



57
58
59
# File 'app/models/effective/form_builder.rb', line 57

def datetime_field(name, options = {})
  Effective::FormInputs::DatetimeField.new(name, options, builder: self).to_html { super(name, options) }
end

#delete(name = 'Remove', url = nil, options = {}, &block) ⇒ Object



61
62
63
64
# File 'app/models/effective/form_builder.rb', line 61

def delete(name = 'Remove', url = nil, options = {}, &block)
  options[:href] ||= url
  Effective::FormInputs::Delete.new(name, options, builder: self).to_html(&block)
end

#editor(name, options = {}, &block) ⇒ Object



66
67
68
# File 'app/models/effective/form_builder.rb', line 66

def editor(name, options = {}, &block)
  Effective::FormInputs::Editor.new(name, options, builder: self).to_html(&block)
end

#email_cc_field(name, options = {}) ⇒ Object



74
75
76
# File 'app/models/effective/form_builder.rb', line 74

def email_cc_field(name, options = {})
  Effective::FormInputs::EmailCcField.new(name, options, builder: self).to_html
end

#email_field(name, options = {}) ⇒ Object



70
71
72
# File 'app/models/effective/form_builder.rb', line 70

def email_field(name, options = {})
  Effective::FormInputs::EmailField.new(name, options, builder: self).to_html { super(name, options) }
end

#error(name = nil, options = {}) ⇒ Object Also known as: errors



78
79
80
# File 'app/models/effective/form_builder.rb', line 78

def error(name = nil, options = {})
  Effective::FormInputs::ErrorField.new(name, options, builder: self).to_html()
end

#file_field(name, options = {}) ⇒ Object



83
84
85
# File 'app/models/effective/form_builder.rb', line 83

def file_field(name, options = {})
  Effective::FormInputs::FileField.new(name, options, builder: self).to_html { super(name, options) }
end

#float_field(name, options = {}) ⇒ Object



87
88
89
# File 'app/models/effective/form_builder.rb', line 87

def float_field(name, options = {})
  Effective::FormInputs::FloatField.new(name, options, builder: self).to_html
end

#form_group(name = nil, options = {}, &block) ⇒ Object



91
92
93
# File 'app/models/effective/form_builder.rb', line 91

def form_group(name = nil, options = {}, &block)
  Effective::FormInputs::FormGroup.new(name, options, builder: self).to_html(&block)
end

#has_many(name, collection = nil, options = {}, &block) ⇒ Object

Has Many



213
214
215
216
217
218
219
220
221
222
223
224
# File 'app/models/effective/form_builder.rb', line 213

def has_many(name, collection = nil, options = {}, &block)
  association = object.class.reflect_on_all_associations.find { |a| a.name == name }
  raise("expected #{object.class.name} to has_many :#{name}") if association.blank?

  nested_attributes_options = (object.class.nested_attributes_options || {})[name]
  raise("expected #{object.class.name} to accepts_nested_attributes_for :#{name}") if nested_attributes_options.blank?

  options = collection if collection.kind_of?(Hash)
  options.merge!(collection: collection) if collection && !collection.kind_of?(Hash)

  Effective::FormInputs::HasMany.new(name, options, builder: self).to_html(&block)
end

#hidden_field(name = nil, options = {}) ⇒ Object



95
96
97
# File 'app/models/effective/form_builder.rb', line 95

def hidden_field(name = nil, options = {})
  Effective::FormInputs::HiddenField.new(name, options, builder: self).to_html
end

#hide_if(*args, &block) ⇒ Object

Logics



200
201
202
# File 'app/models/effective/form_builder.rb', line 200

def hide_if(*args, &block)
  Effective::FormLogics::HideIf.new(*args, builder: self).to_html(&block)
end

#integer_field(name, options = {}) ⇒ Object



99
100
101
# File 'app/models/effective/form_builder.rb', line 99

def integer_field(name, options = {})
  Effective::FormInputs::IntegerField.new(name, options, builder: self).to_html
end

#number_field(name, options = {}) ⇒ Object



117
118
119
# File 'app/models/effective/form_builder.rb', line 117

def number_field(name, options = {})
  Effective::FormInputs::NumberField.new(name, options, builder: self).to_html { super(name, options) }
end

#number_text_field(name, options = {}) ⇒ Object



121
122
123
# File 'app/models/effective/form_builder.rb', line 121

def number_text_field(name, options = {})
  Effective::FormInputs::NumberTextField.new(name, options, builder: self).to_html
end

#password_field(name, options = {}) ⇒ Object



125
126
127
# File 'app/models/effective/form_builder.rb', line 125

def password_field(name, options = {})
  Effective::FormInputs::PasswordField.new(name, options, builder: self).to_html { super(name, options) }
end

#percent_field(name, options = {}) ⇒ Object



129
130
131
# File 'app/models/effective/form_builder.rb', line 129

def percent_field(name, options = {})
  Effective::FormInputs::PercentField.new(name, options, builder: self).to_html
end

#phone_field(name, options = {}) ⇒ Object Also known as: tel_field, telephone_field



133
134
135
# File 'app/models/effective/form_builder.rb', line 133

def phone_field(name, options = {})
  Effective::FormInputs::PhoneField.new(name, options, builder: self).to_html { super(name, options) }
end

#price_field(name, options = {}) ⇒ Object



139
140
141
# File 'app/models/effective/form_builder.rb', line 139

def price_field(name, options = {})
  Effective::FormInputs::PriceField.new(name, options, builder: self).to_html { super(name, options) }
end

#radios(name, choices = nil, *args) ⇒ Object



168
169
170
171
# File 'app/models/effective/form_builder.rb', line 168

def radios(name, choices = nil, *args)
  options = args.extract_options!.merge!(collection: choices)
  Effective::FormInputs::Radios.new(name, options, builder: self).to_html
end

This is gonna be a post?



104
105
106
107
# File 'app/models/effective/form_builder.rb', line 104

def remote_link_to(name, url, options = {}, &block)
  options[:href] ||= url
  Effective::FormInputs::RemoteLinkTo.new(name, options, builder: self).to_html(&block)
end

#reset(name = 'Reset', options = {}) ⇒ Object



173
174
175
176
# File 'app/models/effective/form_builder.rb', line 173

def reset(name = 'Reset', options = {})
  (options = name; name = 'Reset') if name.kind_of?(Hash)
  Effective::FormInputs::Reset.new(name, options, builder: self).to_html
end

#rich_text_area(name, options = {}) ⇒ Object



109
110
111
# File 'app/models/effective/form_builder.rb', line 109

def rich_text_area(name, options = {})
  Effective::FormInputs::RichTextArea.new(name, options, builder: self).to_html { super(name, options) }
end

#save(name = 'Save', options = {}) ⇒ Object



143
144
145
146
# File 'app/models/effective/form_builder.rb', line 143

def save(name = 'Save', options = {})
  (options = name; name = 'Save') if name.kind_of?(Hash)
  Effective::FormInputs::Save.new(name, options, builder: self).to_html { super(name, options) }
end

#search_field(name, options = {}) ⇒ Object



113
114
115
# File 'app/models/effective/form_builder.rb', line 113

def search_field(name, options = {})
  Effective::FormInputs::SearchField.new(name, options, builder: self).to_html { super(name, options) }
end

#select(name, choices = nil, *args) ⇒ Object



148
149
150
151
# File 'app/models/effective/form_builder.rb', line 148

def select(name, choices = nil, *args)
  options = args.extract_options!.merge!(collection: choices)
  Effective::FormInputs::Select.new(name, options, builder: self).to_html
end

#select_or_text(name, name_text, choices = nil, *args) ⇒ Object



153
154
155
156
# File 'app/models/effective/form_builder.rb', line 153

def select_or_text(name, name_text, choices = nil, *args)
  options = args.extract_options!.merge!(name_text: name_text, collection: choices)
  Effective::FormInputs::SelectOrText.new(name, options, builder: self).to_html
end

#show_if(*args, &block) ⇒ Object



204
205
206
# File 'app/models/effective/form_builder.rb', line 204

def show_if(*args, &block)
  Effective::FormLogics::ShowIf.new(*args, builder: self).to_html(&block)
end

#show_if_any(*args, &block) ⇒ Object



208
209
210
# File 'app/models/effective/form_builder.rb', line 208

def show_if_any(*args, &block)
  Effective::FormLogics::ShowIfAny.new(*args, builder: self).to_html(&block)
end

#static_field(name, options = {}, &block) ⇒ Object



163
164
165
166
# File 'app/models/effective/form_builder.rb', line 163

def static_field(name, options = {}, &block)
  options = { value: options } if options.kind_of?(String)
  Effective::FormInputs::StaticField.new(name, options, builder: self).to_html(&block)
end

#submit(name = 'Save', options = {}, &block) ⇒ Object



158
159
160
161
# File 'app/models/effective/form_builder.rb', line 158

def submit(name = 'Save', options = {}, &block)
  (options = name; name = 'Save') if name.kind_of?(Hash)
  Effective::FormInputs::Submit.new(name, options, builder: self).to_html(&block)
end

#super_hidden_fieldObject



25
# File 'app/models/effective/form_builder.rb', line 25

alias_method :super_hidden_field, :hidden_field

#super_number_fieldObject



22
# File 'app/models/effective/form_builder.rb', line 22

alias_method :super_number_field, :number_field

#super_text_areaObject



24
# File 'app/models/effective/form_builder.rb', line 24

alias_method :super_text_area, :text_area

#super_text_fieldObject



23
# File 'app/models/effective/form_builder.rb', line 23

alias_method :super_text_field, :text_field

#text_area(name, options = {}) ⇒ Object



178
179
180
# File 'app/models/effective/form_builder.rb', line 178

def text_area(name, options = {})
  Effective::FormInputs::TextArea.new(name, options, builder: self).to_html { super(name, options) }
end

#text_field(name, options = {}) ⇒ Object



182
183
184
# File 'app/models/effective/form_builder.rb', line 182

def text_field(name, options = {})
  Effective::FormInputs::TextField.new(name, options, builder: self).to_html { super(name, options) }
end

#time_field(name, options = {}) ⇒ Object



186
187
188
# File 'app/models/effective/form_builder.rb', line 186

def time_field(name, options = {})
  Effective::FormInputs::TimeField.new(name, options, builder: self).to_html { super(name, options) }
end

#time_zone_select(name, options = {}) ⇒ Object



190
191
192
193
# File 'app/models/effective/form_builder.rb', line 190

def time_zone_select(name, options = {})
  opts = options.merge(collection: Effective::FormInputs::TimeZoneSelect.time_zone_collection)
  Effective::FormInputs::TimeZoneSelect.new(name, opts, builder: self).to_html
end

#url_field(name, options = {}) ⇒ Object



195
196
197
# File 'app/models/effective/form_builder.rb', line 195

def url_field(name, options = {})
  Effective::FormInputs::UrlField.new(name, options, builder: self).to_html { super(name, options) }
end