Class: Ramaze::Helper::BlueForm::Form

Inherits:
Object
  • Object
show all
Defined in:
lib/ramaze/helper/blue_form.rb

Overview

Note that an instance of this class is not thread-safe, so you should modify it only within one thread of execution

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Form

Returns a new instance of Form.



43
44
45
46
# File 'lib/ramaze/helper/blue_form.rb', line 43

def initialize(options)
  @form_args = options.dup
  @g = Gestalt.new
end

Instance Attribute Details

#gObject (readonly)

Returns the value of attribute g.



41
42
43
# File 'lib/ramaze/helper/blue_form.rb', line 41

def g
  @g
end

Instance Method Details

#build(form_errors = {}) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
# File 'lib/ramaze/helper/blue_form.rb', line 48

def build(form_errors = {})
  @form_errors = form_errors

  @g.form(@form_args) do
    if block_given?
      @g.fieldset do
        yield self
      end
    end
  end
end

#input_checkbox(label, name, checked = false) ⇒ Object Also known as: checkbox



97
98
99
100
101
102
103
104
105
106
# File 'lib/ramaze/helper/blue_form.rb', line 97

def input_checkbox(label, name, checked = false)
  id = id_for(name)
  args = {:type => :checkbox, :name => name, :class => 'checkbox', :id => id}
  args[:checked] = 'checked' if checked

  @g.p do
    label_for(id, label, name)
    @g.input(args)
  end
end

#input_file(label, name) ⇒ Object Also known as: file



137
138
139
140
141
142
143
144
145
# File 'lib/ramaze/helper/blue_form.rb', line 137

def input_file(label, name)
  id = id_for(name)
  args = {:type => :file, :name => name, :class => 'file', :id => id}

  @g.p do
    label_for(id, label, name)
    @g.input(args)
  end
end

#input_hidden(name, value = nil) ⇒ Object Also known as: hidden



148
149
150
151
152
153
# File 'lib/ramaze/helper/blue_form.rb', line 148

def input_hidden(name, value = nil)
  args = {:type => :hidden, :name => name}
  args[:value] = value.to_s unless value.nil?

  @g.input(args)
end

#input_password(label, name) ⇒ Object Also known as: password



76
77
78
79
80
81
82
83
84
# File 'lib/ramaze/helper/blue_form.rb', line 76

def input_password(label, name)
  id = id_for(name)
  args = {:type => :password, :name => name, :class => 'text', :id => id}

  @g.p do
    label_for(id, label, name)
    @g.input(args)
  end
end

#input_radio(label, name, values, options = {}) ⇒ Object Also known as: radio



109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/ramaze/helper/blue_form.rb', line 109

def input_radio(label, name, values, options = {})
  has_checked, checked = options.key?(:checked), options[:checked]

  @g.p do
    values.each_with_index do |(value, o_name), index|
      o_name ||= value
      id = id_for("#{name}-#{index}")

      o_args = {:type => :radio, :value => value, :id => id, :name => name}
      o_args[:checked] = 'checked' if has_checked && value == checked

      if error = @form_errors.delete(name.to_s)
        @g.label(:for => id){
          @g.span(:class => :error){ error }
          @g.input(o_args)
          @g.out << o_name
        }
      else
        @g.label(:for => id){
          @g.input(o_args)
          @g.out << o_name
        }
      end
    end
  end
end

#input_submit(value = nil) ⇒ Object Also known as: submit



87
88
89
90
91
92
93
94
# File 'lib/ramaze/helper/blue_form.rb', line 87

def input_submit(value = nil)
  args = {:type => :submit, :class => 'button submit'}
  args[:value] = value unless value.nil?

  @g.p do
    @g.input(args)
  end
end

#input_text(label, name, value = nil, args = {}) ⇒ Object Also known as: text



64
65
66
67
68
69
70
71
72
73
# File 'lib/ramaze/helper/blue_form.rb', line 64

def input_text(label, name, value = nil, args = {})
  id = id_for(name)
  args = args.merge(:type => :text, :name => name, :class => 'text', :id => id)
  args[:value] = value unless value.nil?

  @g.p do
    label_for(id, label, name)
    @g.input(args)
  end
end

#legend(text) ⇒ Object



60
61
62
# File 'lib/ramaze/helper/blue_form.rb', line 60

def legend(text)
  @g.legend(text)
end

#select(label, name, values, options = {}) ⇒ Object



166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/ramaze/helper/blue_form.rb', line 166

def select(label, name, values, options = {})
  id = id_for(name)
  multiple, size = options.values_at(:multiple, :size)

  args = {:id => id}
  args[:multiple] = 'multiple' if multiple
  args[:size] = (size || multiple || 1).to_i
  args[:name] = multiple ? "#{name}[]" : name

  has_selected, selected = options.key?(:selected), options[:selected]

  @g.p do
    label_for(id, label, name)
    @g.select args do
      values.each do |value, o_name|
        o_name ||= value
        o_args = {:value => value}
        o_args[:selected] = 'selected' if has_selected && value == selected
        @g.option(o_args){ o_name }
      end
    end
  end
end

#textarea(label, name, value = nil) ⇒ Object



156
157
158
159
160
161
162
163
164
# File 'lib/ramaze/helper/blue_form.rb', line 156

def textarea(label, name, value = nil)
  id = id_for(name)
  args = {:name => name, :id => id}

  @g.p do
    label_for(id, label, name)
    @g.textarea(args){ value }
  end
end

#to_sObject



190
191
192
# File 'lib/ramaze/helper/blue_form.rb', line 190

def to_s
  @g.to_s
end