neorails-form_fu 0.5 → 0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/form_fu.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'form_fu'
3
- s.version = '0.5'
4
- s.date = '2008-07-07'
3
+ s.version = '0.7'
4
+ s.date = '2008-11-18'
5
5
 
6
6
  s.summary = "Build Nice DRY Rails Forms"
7
7
  s.description = "FormFu is a Rails plugin that enables you to easily build nice, tableless forms"
@@ -15,7 +15,7 @@ module FormFu
15
15
 
16
16
  alias :text_area_input :text_area
17
17
  def text_area(field, options = {}, &block)
18
- format_with_label(field, options.merge(:field_type => "text_area", :preserve => true), super(field, purge_custom_tags(options)), &block)
18
+ format_with_label(field, options.merge(:field_type => "text_area"), super(field, purge_custom_tags(options)), &block)
19
19
  end
20
20
 
21
21
  # wrap the date_select helper
@@ -74,18 +74,17 @@ module FormFu
74
74
 
75
75
  # format a helper by generating the haml to wrap it in a field_tag and include a label
76
76
  def format_with_label(field, options, tag_output, &block)
77
- # see if we have an error on the field
78
- errors_on = object.send(:errors).send(:on, field)
79
- has_error = true unless errors_on.blank?
77
+ if object and object.errors
78
+ # see if we have an error on the field
79
+ has_error = object.errors.on(field).present?
80
+ else
81
+ has_error = false
82
+ end
80
83
 
81
84
  # set field options
82
85
  options[:field] ||= {}
83
86
  options[:field].merge!(:has_error => has_error, :field_type => options[:field_type])
84
87
 
85
- if options[:preserve]
86
- tag_output = @template.preserve(tag_output)
87
- end
88
-
89
88
  # find label name
90
89
  label_name = options[:label] || field.to_s.humanize
91
90
  options[:separator] ||= default_separator
@@ -95,13 +94,13 @@ module FormFu
95
94
  output_html = @template.field_tag(options[:field], [
96
95
  @template.label(@object_name, field, label_name),
97
96
  tag_output,
98
- @template.validation_tag(@object, field),
99
- block_given? ? @template.capture(&block) : nil
97
+ block_given? ? @template.universal_capture(&block) : nil,
98
+ @template.validation_tag(@object, field)
100
99
  ].compact.join("\n"))
101
100
 
102
101
  if block_given?
103
102
  # concat to page if block was given
104
- @template.concat(output_html, block.binding)
103
+ @template.universal_concat(output_html)
105
104
  return nil
106
105
  else
107
106
  # otherwise return html directly
@@ -1,17 +1,31 @@
1
1
  module FormFu
2
2
  module Helpers
3
3
  # Create a form_for block using FormFuBuilder
4
- def formfu_for(record_or_name_or_array, *args, &block)
4
+ def formfu_for(*args, &block)
5
5
  raise ArgumentError, "Missing block" unless block_given?
6
6
 
7
7
  options = args.extract_options!
8
8
  args << options.merge(:builder => FormFu::FormBuilder)
9
- form_for(record_or_name_or_array, *args, &block)
9
+ form_for(*args, &block)
10
10
 
11
11
  end
12
12
 
13
13
  # also work with the more semantic name (build_form_for)
14
14
  alias :build_form_for :formfu_for
15
+
16
+
17
+ # Create a form_for block using FormFuBuilder
18
+ def remote_formfu_for(*args, &block)
19
+ raise ArgumentError, "Missing block" unless block_given?
20
+
21
+ options = args.extract_options!
22
+ args << options.merge(:builder => FormFu::FormBuilder)
23
+ remote_form_for(*args, &block)
24
+ end
25
+
26
+ # also work with the more semantic name (build_form_for)
27
+ alias :build_remote_form_for :remote_formfu_for
28
+
15
29
 
16
30
  # Create a fields_for block using FormFuBuilder
17
31
  def formfu_fields_for(object_or_object_name, *args, &block)
@@ -37,10 +51,10 @@ module FormFu
37
51
  # wrap content with a fieldset tag with a legend
38
52
  def fieldset_tag(legend_name, options = {}, &block)
39
53
  if block_given?
40
- concat(content_tag(:fieldset, options) do
54
+ universal_concat(content_tag(:fieldset, options) do
41
55
  (legend_name ? content_tag(:legend, legend_name) : "")+
42
- capture(&block)
43
- end, block.binding)
56
+ universal_capture(&block)
57
+ end)
44
58
  else
45
59
  return content_tag(:fieldset, options) do
46
60
  content_tag :legend, legend_name
@@ -67,10 +81,10 @@ module FormFu
67
81
  end
68
82
 
69
83
  if block_given?
70
- concat(content_tag(:div, options) do
84
+ universal_concat(content_tag(:div, options) do
71
85
  (label.blank? ? "" : content_tag(:label, label.strip)) +
72
- capture(&block)
73
- end, block.binding)
86
+ universal_capture(&block)
87
+ end)
74
88
  else
75
89
  content_tag(:div, options) do
76
90
  (label.blank? ? "" : content_tag(:label, label.strip))+content.to_s
@@ -89,5 +103,21 @@ module FormFu
89
103
  end
90
104
  end
91
105
 
106
+ def universal_capture(&block)
107
+ if respond_to?(:is_haml?) and is_haml?
108
+ capture_haml(&block)
109
+ else
110
+ capture(&block)
111
+ end
112
+ end
113
+
114
+ def universal_concat(html)
115
+ if haml?
116
+ haml_concat(html)
117
+ else
118
+ concat(html)
119
+ end
120
+ end
121
+
92
122
  end
93
123
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neorails-form_fu
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.5"
4
+ version: "0.7"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tyler Crocker
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-07-07 00:00:00 -07:00
12
+ date: 2008-11-18 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency