Sha256: a4b329fdaf5d06964b034e2baff7cb13ffa05a1df2da3b5fc0bf1b96b8722afd

Contents?: true

Size: 1.82 KB

Versions: 1

Compression:

Stored size: 1.82 KB

Contents

# code:
# * George Moschovitis  <gm@navel.gr>
#
# (c) 2004 Navel, all rights reserved.
# $Id: form.rb 187 2004-12-10 13:34:28Z gmosx $

module N

# = FormBuilder
#
class FormBuilder
	
	@@forms_cache = G::SafeHash.new

	# Render a standard form for the given managed object.
	# If show_all is false then apply field filtering.
	#
	# Example:
	#
	#	<p>
	#		<form name="test">
	#			#{N::FormBuilder.render(entry)}
	#		</form>
	#	</p>
	#
	def self.render(obj, lc = nil, show_all = false)
		str = '<dl>'
		
		for p in obj.class.__props
			unless show_all
				next if :oid == p.symbol
			end
			
			if p.klass.ancestors.include?(Integer) or
					p.klass.ancestors.include?(Float) 
				str << %{
				<dt><label for="#{p.name}">#{p.name}</label></dt>
				<dd>
					<input type="text" name="#{p.name}" value="#{obj.send(p.symbol)}" />
				</dd>
				}
			elsif p.klass.ancestors.include?(String)
				str << %{
				<dt><label for="#{p.name}">#{p.name}</label></dt>
				<dd>
				}
				if :textarea == p.meta[:form]
					str << %{
					<textarea name="#{p.name}">#{obj.send(p.symbol)}</textarea>
					}
				else
					str << %{
					<input type="text" name="#{p.name}" value="#{obj.send(p.symbol)}" />
					}				
				end
				str << %{
				</dd>
				}
			elsif p.klass.ancestors.include?(TrueClass)
				str << %{
					<dt><label for="#{p.name}">#{p.name}</label></dt>
					<dd>
						<input type="checkbox" name="${p.name}" />
					</dd>
				}
=begin
			elsif p.klass.ancestors.include?(Time)
				return %|#\{@#{p.symbol} ? "'#\{Og::Utils.timestamp(@#{p.symbol})\}'" : 'NULL'\}|
			elsif p.klass.ancestors.include?(Date)
				return %|#\{@#{p.symbol} ? "'#\{Og::Utils.date(@#{p.symbol})\}'" : 'NULL'\}|
			else 
				return %|#\{@#{p.symbol} ? "'#\{Og::Utils.escape(@#{p.symbol}.to_yaml)\}'" : "''"\}|
=end
			end
		end

		str << '</dl>'
		
		return str
	end
	
end

end # module

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nitro-0.6.0 lib/nitro/builders/form.rb