/usr/lib/ruby/1.8/ramaze/helper/form.rb is in libramaze-ruby1.8 2010.06.18-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 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 | require 'ramaze/gestalt'
module Ramaze
module Helper
module Form
def form_text(label, name, value = nil)
form_input(label, :type => :text, :name => name, :value => value)
end
def form_checkbox(label, name, checked = false)
hash = {:type => :checkbox, :name => name}
hash[:checked] = 'checked' if checked
form_input(label, hash)
end
def form_checkbox_tag(label, name, value, checked = false)
hash = {:type => :checkbox, :name => name + '[]', :value => value}
hash[:checked] = 'checked' if checked
form_input(label, hash)
end
def form_password(label, name)
form_input(label, :type => :password, :name => name)
end
def form_textarea(label, name, value = nil)
form_build(:textarea, label, :name => name){ value }
end
def form_file(label, name)
form_input(label, :type => :file, :name => name)
end
def form_hidden(name, value = nil)
Ramaze::Gestalt.build{ input(:type => :hidden, :name => name, :value => value) }
end
def form_submit(value = nil)
hash = {:type => :submit}.merge(form_tabindex)
hash[:value] = value if value
Ramaze::Gestalt.build{ tr{ td(:colspan => 2){ input(hash) }}}
end
# @example usage, normal select drop-down
#
# form_select('Favourite colors', :colors, @colors, :selected => @color)
#
# @example usage for pre-selected value
#
# form_select('Favourite colors', :colors, @colors, :selected => @color)
#
# @example usage, allow selecting multiple
#
# form_select('Cups', :cups, @cups, :selected => @cup, :multiple => 5)
def form_select(label, name, values, hash = {})
name = name.to_sym
id = "form-#{name}"
multiple, size = hash.values_at(:multiple, :size)
s_args = {:name => name, :id => id}.merge(form_tabindex)
s_args[:multiple] = :multiple if multiple
s_args[:size] = (size || multiple || 1).to_i
has_selected, selected = hash.key?(:selected), hash[:selected]
error = form_errors[name.to_s]
g = Ramaze::Gestalt.new
g.tr do
g.td do
g.label(:for => id){ "#{label}:" }
g.span(:class => 'error'){ error } if error
end
g.td do
g.select(s_args) do
values.each do |key, value|
value ||= key
o_args = {:value => value}
o_args[:selected] = :selected if has_selected and value == selected
g.option(o_args){ key }
end
end
end
end
g.to_s
end
def form_input(label, hash)
form_build(:input, label, hash)
end
def form_build(tag_name, label, hash, &block)
name = hash[:name].to_sym
form_id = "form-#{name}"
opts = hash.merge(form_tabindex.merge(:id => form_id))
error = form_errors[name.to_s]
Ramaze::Gestalt.build do
tr do
td do
label(:for => form_id){ "#{label}:" } unless label==''
span(:class => "error"){ error } if error
end
td do
tag(tag_name, opts, &block)
end
end
end
end
def form_tabindex
@tabindex ||= 0
@tabindex += 1
{:tabindex => @tabindex}
end
def form_error(name, message)
form_errors[name.to_s] = message.to_s
end
def form_errors
@form_errors ||= {}
end
def form_errors_from_model(obj)
obj.errors.each do |key, value|
form_error(key, value.first % key)
end
end
end
end
end
|