Module: DataMapper::Form::Elements

Included in:
ModelElements
Defined in:
lib/dm-forms/elements.rb

Defined Under Namespace

Classes: Proxy

Class Method Summary collapse

Class Method Details

.button(name, options = {}) ⇒ Object

Generates a button.



182
183
184
185
186
# File 'lib/dm-forms/elements.rb', line 182

def button name, options = {}
  type = options.has_key?(:src) ? :image : :button
  options = { :type => type, :name => name }.merge options
  tag :input, :self_closing => true, :attributes => options
end

.capture_elements(model = nil, &block) ⇒ Object

Capture results of elements called within block. Optionally a DataMapper model may be passed, at which point error classes will be applied to invalid elements.



193
194
195
196
# File 'lib/dm-forms/elements.rb', line 193

def capture_elements model = nil, &block
  elements = yield Proxy.new(model)
  elements.join
end

.checkbox(name, options = {}) ⇒ Object

Generates a checkbox.



117
118
119
120
# File 'lib/dm-forms/elements.rb', line 117

def checkbox name, options = {}
  options = { :type => :checkbox, :name => name }.merge options
  tag :input, :self_closing => true, :attributes => options        
end

.desc(text) ⇒ Object

Generates a description.



64
65
66
# File 'lib/dm-forms/elements.rb', line 64

def desc text
  %(\n<p class="description">#{text}</p>) unless text.blank?
end

.fieldset(name, options = {}, &block) ⇒ Object

Generates a fieldset.



91
92
93
94
95
96
# File 'lib/dm-forms/elements.rb', line 91

def fieldset name, options = {}, &block
  legend_value = options.has_key?(:legend) ? options.delete(:legend) : name.humanize.capitalize
  options = { :class => "fieldset-#{name}" }.merge options
  options[:value] = "\n" << legend(legend_value) << (options.delete(:value) || '')
  tag :fieldset, :attributes => options, &block
end

.file(name, options = {}) ⇒ Object

Generates a file field.



148
149
150
151
# File 'lib/dm-forms/elements.rb', line 148

def file name, options = {}
  options = { :type => :file, :name => name }.merge options
  tag :input, :self_closing => true, :attributes => options        
end

.form(name, options = {}, &block) ⇒ Object

Generates a form.



78
79
80
81
82
83
84
85
86
# File 'lib/dm-forms/elements.rb', line 78

def form name, options = {}, &block
  options = { :method => :post, :id => "form-#{name}" }.merge options
  unless valid_http_verb? options
    old_value = options[:value] || ''
    options[:value] = hidden_method(options[:method]) << old_value
    options[:method] = :post
  end
  tag :form, :attributes => options, &block
end

.hidden(name, options = {}) ⇒ Object

Generates a hidden field.



125
126
127
128
# File 'lib/dm-forms/elements.rb', line 125

def hidden name, options = {}
  options = { :type => :hidden, :name => name }.merge options
  tag :input, :self_closing => true, :attributes => options        
end

.hidden_method(method) ⇒ Object

Creates hidden _method, with value of method.



133
134
135
# File 'lib/dm-forms/elements.rb', line 133

def hidden_method method
  hidden :_method, :value => method
end

.label(value, options = {}) ⇒ Object

Generates a label.



48
49
50
51
52
# File 'lib/dm-forms/elements.rb', line 48

def label value, options = {}
  value << ':'
  value << '<em>*</em>' if options.delete :required
  %(<label for="#{options[:for]}">#{value}</label>\n)
end

.legend(value) ⇒ Object

Generates a legend.



57
58
59
# File 'lib/dm-forms/elements.rb', line 57

def legend value
  %(<legend>#{value}</legend>)
end

.option(value, title) ⇒ Object

Generates an option.



71
72
73
# File 'lib/dm-forms/elements.rb', line 71

def option value, title
  %(<option value="#{value}">#{title}</option>\n)
end

.password(name, options = {}) ⇒ Object

Generates a password field.



109
110
111
112
# File 'lib/dm-forms/elements.rb', line 109

def password name, options = {}
  options = { :type => :password, :name => name }.merge options
  tag :input, :self_closing => true, :attributes => options
end

.radio(name, options = {}) ⇒ Object

Generates a radio button.



140
141
142
143
# File 'lib/dm-forms/elements.rb', line 140

def radio name, options = {}
  options = { :type => :radio, :name => name }.merge options
  tag :input, :self_closing => true, :attributes => options        
end

.select(name, options = {}, &block) ⇒ Object

Generates a select field.



156
157
158
159
160
161
# File 'lib/dm-forms/elements.rb', line 156

def select name, options = {}, &block
  options = { :name => name, :value => "\n" }.merge options
  options[:value] << capture_elements(&block) if block_given?
  options[:value] << select_options(options) if options.include? :options
  tag :select, :attributes => options
end

.submit(name, options = {}) ⇒ Object

Generates a submit button.



174
175
176
177
# File 'lib/dm-forms/elements.rb', line 174

def submit name, options = {}
  options = { :type => :submit, :name => name }.merge options
  tag :input, :self_closing => true, :attributes => options
end

.tag(name, options = {}, &block) ⇒ Object

Generates a generic HTML name tag. Although this method is generally used internally by dm-forms, you may utilize it directly passing any of the following options.

Options:

:self_closing   Wither or not the element should self-close (<br />)
:attributes     Hash of attributes such as :type => :textfield


41
42
43
# File 'lib/dm-forms/elements.rb', line 41

def tag name, options = {}, &block
  Tag.new(name, options, &block).render
end

.textarea(name, options = {}, &block) ⇒ Object

Generates a textarea.



166
167
168
169
# File 'lib/dm-forms/elements.rb', line 166

def textarea name, options = {}, &block
  options = { :name => name }.merge options
  tag :textarea, :attributes => options, &block
end

.textfield(name, options = {}) ⇒ Object

Generates a textfield.



101
102
103
104
# File 'lib/dm-forms/elements.rb', line 101

def textfield name, options = {}
  options = { :type => :textfield, :name => name }.merge options
  tag :input, :self_closing => true, :attributes => options
end