ccls-common_lib 1.4.0

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.
Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/README.rdoc +116 -0
  3. data/lib/ccls-common_lib.rb +1 -0
  4. data/lib/common_lib.rb +37 -0
  5. data/lib/common_lib/action_controller_extension.rb +8 -0
  6. data/lib/common_lib/action_controller_extension/accessible_via_protocol.rb +405 -0
  7. data/lib/common_lib/action_controller_extension/accessible_via_user.rb +605 -0
  8. data/lib/common_lib/action_controller_extension/routing.rb +20 -0
  9. data/lib/common_lib/action_controller_extension/test_case.rb +22 -0
  10. data/lib/common_lib/action_view_extension.rb +3 -0
  11. data/lib/common_lib/action_view_extension/base.rb +310 -0
  12. data/lib/common_lib/action_view_extension/form_builder.rb +197 -0
  13. data/lib/common_lib/active_model.rb +4 -0
  14. data/lib/common_lib/active_model/errors.rb +16 -0
  15. data/lib/common_lib/active_model/validations/absence.rb +78 -0
  16. data/lib/common_lib/active_model/validations/complete_date.rb +138 -0
  17. data/lib/common_lib/active_model/validations/past_date.rb +121 -0
  18. data/lib/common_lib/active_record.rb +1 -0
  19. data/lib/common_lib/active_record/base.rb +129 -0
  20. data/lib/common_lib/active_support_extension.rb +12 -0
  21. data/lib/common_lib/active_support_extension/assertions.rb +108 -0
  22. data/lib/common_lib/active_support_extension/associations.rb +154 -0
  23. data/lib/common_lib/active_support_extension/attributes.rb +296 -0
  24. data/lib/common_lib/active_support_extension/pending.rb +115 -0
  25. data/lib/common_lib/active_support_extension/test_case.rb +203 -0
  26. data/lib/common_lib/railtie.rb +48 -0
  27. data/lib/common_lib/ruby.rb +8 -0
  28. data/lib/common_lib/ruby/array.rb +128 -0
  29. data/lib/common_lib/ruby/fixnum.rb +5 -0
  30. data/lib/common_lib/ruby/hash.rb +51 -0
  31. data/lib/common_lib/ruby/integer.rb +11 -0
  32. data/lib/common_lib/ruby/nil_class.rb +13 -0
  33. data/lib/common_lib/ruby/numeric.rb +0 -0
  34. data/lib/common_lib/ruby/object.rb +53 -0
  35. data/lib/common_lib/ruby/string.rb +20 -0
  36. data/lib/common_lib/translation_table.rb +129 -0
  37. data/lib/tasks/common_lib.rake +10 -0
  38. data/lib/tasks/csv.rake +0 -0
  39. data/lib/tasks/database.rake +229 -0
  40. data/lib/tasks/rcov.rake +52 -0
  41. data/vendor/assets/javascripts/common_lib.js +77 -0
  42. data/vendor/assets/stylesheets/common_lib.css +71 -0
  43. metadata +84 -0
@@ -0,0 +1,20 @@
1
+ module CommonLib::ActionControllerExtension::Routing
2
+
3
+ def self.included(base)
4
+ base.extend ClassMethods
5
+ end
6
+
7
+ module ClassMethods
8
+
9
+ def assert_no_route(verb,action,args={})
10
+ test "#{brand}no route to #{verb} #{action} #{args.inspect}" do
11
+ assert_raise(ActionController::RoutingError){
12
+ send(verb,action,args)
13
+ }
14
+ end
15
+ end
16
+
17
+ end # module ClassMethods
18
+ end # module CommonLib::ActionControllerExtension::Routing
19
+ ActionController::TestCase.send(:include,
20
+ CommonLib::ActionControllerExtension::Routing)
@@ -0,0 +1,22 @@
1
+ module CommonLib::ActionControllerExtension::TestCase
2
+
3
+ # def turn_https_on
4
+ # @request.env['HTTPS'] = 'on'
5
+ ## @request.env['HTTP_X_FORWARDED_PROTO'] == 'https'
6
+ # end
7
+ #
8
+ # def turn_https_off
9
+ # @request.env['HTTPS'] = nil
10
+ # end
11
+
12
+ #
13
+ # Apparently, I don't use this?
14
+ #
15
+ # def assert_layout(layout)
16
+ # layout = "layouts/#{layout}" unless layout.match(/^layouts/)
17
+ # assert_equal layout, @response.layout
18
+ # end
19
+
20
+ end # module CommonLib::ActionControllerExtension::TestCase
21
+ ActionController::TestCase.send(:include,
22
+ CommonLib::ActionControllerExtension::TestCase)
@@ -0,0 +1,3 @@
1
+ module CommonLib::ActionViewExtension; end
2
+ require 'common_lib/action_view_extension/base'
3
+ require 'common_lib/action_view_extension/form_builder'
@@ -0,0 +1,310 @@
1
+ module CommonLib::ActionViewExtension::Base
2
+
3
+ def self.included(base)
4
+ base.class_eval do
5
+ # This NEEDS to be HERE or gets stuck at method_missing_without_wrapping call????
6
+ alias_method_chain( :method_missing, :wrapping )
7
+ end
8
+ end
9
+
10
+ # Just a simple method to wrap the passed text in a span
11
+ # with class='required'
12
+ def required(text)
13
+ "<span class='required'>#{text}</span>".html_safe
14
+ end
15
+ alias_method :req, :required
16
+
17
+ def nbsp
18
+ "&nbsp;".html_safe
19
+ end
20
+
21
+ def mdy(date)
22
+ ( date.blank? or !date.respond_to?(:strftime) ) ? nbsp : date.strftime("%m/%d/%Y")
23
+ end
24
+
25
+ # For use in CSV output as don't want the &nbsp;
26
+ def mdy_or_nil(date)
27
+ ( date.blank? or !date.respond_to?(:strftime) ) ? nil : date.strftime("%m/%d/%Y")
28
+ end
29
+
30
+ def mdyhm(datetime)
31
+ ( datetime.blank? or !datetime.respond_to?(:strftime) ) ? nbsp :
32
+ datetime.strftime("%m/%d/%Y %H:%M (%Z)")
33
+ end
34
+
35
+ # For use in CSV output as don't want the &nbsp;
36
+ def mdyhm_or_nil(datetime)
37
+ ( datetime.blank? or !datetime.respond_to?(:strftime) ) ? nil :
38
+ datetime.strftime("%m/%d/%Y %H:%M (%Z)")
39
+ end
40
+
41
+ def time_mdy(time)
42
+ ( time.blank? or !time.respond_to?(:strftime) ) ? nbsp :
43
+ time.strftime("%I:%M %p %m/%d/%Y")
44
+ end
45
+
46
+ def field_wrapper(method,options={},&block)
47
+ classes = [method,options[:class]].compact.join(' ')
48
+ s = "<div class='#{classes} field_wrapper'>\n"
49
+ s << yield
50
+ s << "\n</div><!-- class='#{classes}' -->"
51
+ s.html_safe
52
+ end
53
+
54
+ # t is RedCloth.textualize NOT I18n.translate
55
+
56
+ # This is NOT a form field
57
+ def _wrapped_spans(object_name,method,options={})
58
+ object = instance_variable_get("@#{object_name}")
59
+ # s = "<span class='label'>#{options[:label_text]||method}</span>\n"
60
+
61
+ # could also "object.class.human_attribute_name method" ?
62
+
63
+ # s = "<span class='label'>#{options[:label_text]||I18n.translate(
64
+ # "#{object.class.to_s.underscore}.#{method}",
65
+ # :scope => "activerecord.attributes",
66
+ # :default => method.to_s)}</span>\n" # if method is a symbol, tries to translate it too.
67
+
68
+
69
+
70
+
71
+ #
72
+ # label = if options[:label_text].present?
73
+ # options[:label_text]
74
+ # else
75
+ # l = ( I18n.translate("#{object.class.to_s.underscore}.#{method}",
76
+ # :scope => "activerecord.attributes", :raise => true ) rescue false ) ||
77
+ # method.to_s
78
+ # l.send( :humanize or :titleize or :gsub('_', ' ') or ......
79
+ # end
80
+ #
81
+ # titleize - capitalizes all words
82
+ # humanize - capitalizes only the first word ( same as other rails helpers, but I don't like )
83
+ #
84
+ #
85
+
86
+ s = "<span class='label'>#{options[:label_text] ||
87
+ ( I18n.translate("#{object.class.to_s.underscore}.#{method}",
88
+ :scope => "activerecord.attributes", :raise => true ) rescue false ) ||
89
+ method.to_s.humanize }</span>\n" # if method is a symbol, tries to translate it too.
90
+
91
+ value = if options[:value]
92
+ options[:value]
93
+ else
94
+ # moved to top
95
+ # object = instance_variable_get("@#{object_name}")
96
+ value = object.send(method)
97
+ value = (value.to_s.blank?)?'&nbsp;':value
98
+ end
99
+ s << "<span class='value'>#{value}</span>"
100
+ s << (( options.has_key?(:post_text) ) ? "<span class='post_text'>#{options[:post_text]}</span>" : "")
101
+ s.html_safe
102
+ end
103
+
104
+ def _wrapped_date_spans(object_name,method,options={})
105
+ object = instance_variable_get("@#{object_name}")
106
+ _wrapped_spans(object_name,method,options.update(
107
+ :value => mdy(object.send(method)) ) )
108
+ end
109
+
110
+ def _wrapped_datetime_spans(object_name,method,options={})
111
+ object = instance_variable_get("@#{object_name}")
112
+ _wrapped_spans(object_name,method,options.update(
113
+ :value => mdyhm(object.send(method)) ) )
114
+ end
115
+
116
+ # This is NOT a form field
117
+ def _wrapped_yes_or_no_spans(object_name,method,options={})
118
+ object = instance_variable_get("@#{object_name}")
119
+ _wrapped_spans(object_name,method,options.update(
120
+ :value => (object.send("#{method}?"))?'Yes':'No') )
121
+ # s = "<span class='label'>#{options[:label_text]||method}</span>\n"
122
+ # value = (object.send("#{method}?"))?'Yes':'No'
123
+ # s << "<span class='value'>#{value}</span>"
124
+ end
125
+
126
+ def method_missing_with_wrapping(symb,*args, &block)
127
+ method_name = symb.to_s
128
+ if method_name =~ /^wrapped_(.+)$/
129
+ unwrapped_method_name = $1
130
+ #
131
+ # It'd be nice to be able to genericize all of the
132
+ # wrapped_* methods since they are all basically
133
+ # the same.
134
+ # Strip of the "wrapped_"
135
+ # Label
136
+ # Call "unwrapped" method
137
+ #
138
+
139
+ object_name = args[0]
140
+ method = args[1]
141
+
142
+ content = field_wrapper(method,:class => unwrapped_method_name) do
143
+ s = if respond_to?(unwrapped_method_name)
144
+ options = args.detect{|i| i.is_a?(Hash) }
145
+ label_text = options.delete(:label_text) unless options.nil?
146
+ if unwrapped_method_name == 'check_box'
147
+ send("#{unwrapped_method_name}",*args,&block) <<
148
+ label( object_name, method, label_text )
149
+ else
150
+ label( object_name, method, label_text ) <<
151
+ send("#{unwrapped_method_name}",*args,&block)
152
+ end
153
+ else
154
+ send("_#{method_name}",*args,&block)
155
+ end
156
+
157
+ s << (( block_given? )? capture(&block) : '')
158
+ # send("_#{method_name}",*args) <<
159
+ # (( block_given? )? capture(&block) : '')
160
+ end
161
+ # if block_called_from_erb?(block)
162
+ # concat(content)
163
+ # else
164
+ content
165
+ # end
166
+ else
167
+ method_missing_without_wrapping(symb,*args, &block)
168
+ end
169
+ end
170
+
171
+ def form_link_to( title, url, options={}, &block )
172
+ extra_tags = extra_tags_for_form(options)
173
+ s = "\n" <<
174
+ "<form " <<
175
+ "class='#{options.delete(:class)||'form_link_to'}' " <<
176
+ "action='#{url_for(url)}' " <<
177
+ "method='#{options.delete('method')}'>\n" <<
178
+ extra_tags << "\n"
179
+ s << (( block_given? )? capture(&block) : '')
180
+ s << submit_tag(title, :name => nil ) << "\n" <<
181
+ "</form>\n"
182
+ s.html_safe
183
+ end
184
+
185
+ def destroy_link_to( title, url, options={}, &block )
186
+ s = form_link_to( title, url, options.merge(
187
+ 'method' => 'delete',
188
+ :class => 'destroy_link_to'
189
+ ),&block )
190
+ end
191
+
192
+ def aws_image_tag(image,options={})
193
+ # in console @controller is nil
194
+ protocol = @controller.try(:request).try(:protocol) || 'http://'
195
+ host = 's3.amazonaws.com/'
196
+ # bucket = ( defined?(RAILS_APP_NAME) && RAILS_APP_NAME ) || 'ccls'
197
+ bucket = ( defined?(RAILS_APP_NAME) && RAILS_APP_NAME ) ||
198
+ Rails.application.class.parent.to_s.downcase || 'ccls'
199
+ src = "#{protocol}#{host}#{bucket}/images/#{image}"
200
+ alt = options.delete(:alt) || options.delete('alt') || image
201
+ tag('img',options.merge({:src => src, :alt => alt}))
202
+ end
203
+
204
+ def flasher
205
+ s = ''
206
+ flash.each do |key, msg|
207
+ s << content_tag( :p, msg, :id => key, :class => "flash #{key}" )
208
+ s << "\n"
209
+ end
210
+ s << "<noscript><p id='noscript' class='flash'>\n"
211
+ s << "Javascript is required for this site to be fully functional.\n"
212
+ s << "</p></noscript>\n"
213
+ s.html_safe
214
+ end
215
+
216
+ # Created to stop multiple entries of same stylesheet
217
+ def stylesheets(*args)
218
+ @stylesheets ||= []
219
+ args.each do |stylesheet|
220
+ unless @stylesheets.include?(stylesheet.to_s)
221
+ @stylesheets.push(stylesheet.to_s)
222
+ content_for(:head,stylesheet_link_tag(stylesheet.to_s))
223
+ end
224
+ end
225
+ end
226
+
227
+ def javascripts(*args)
228
+ @javascripts ||= []
229
+ args.each do |javascript|
230
+ unless @javascripts.include?(javascript.to_s)
231
+ @javascripts.push(javascript.to_s)
232
+ content_for(:head,javascript_include_tag(javascript).to_s)
233
+ end
234
+ end
235
+ end
236
+
237
+ def yndk(value=nil)
238
+ (YNDK[value]||'&nbsp;').html_safe
239
+ end
240
+
241
+ def ynodk(value=nil)
242
+ (YNODK[value]||'&nbsp;').html_safe
243
+ end
244
+
245
+ def ynrdk(value=nil)
246
+ (YNRDK[value]||'&nbsp;').html_safe
247
+ end
248
+
249
+ def ynordk(value=nil)
250
+ (YNORDK[value]||'&nbsp;').html_safe
251
+ end
252
+
253
+ def padk(value=nil)
254
+ (PADK[value]||'&nbsp;').html_safe
255
+ end
256
+
257
+ def adna(value=nil)
258
+ (ADNA[value]||'&nbsp;').html_safe
259
+ end
260
+
261
+ def pos_neg(value=nil)
262
+ (POSNEG[value]||'&nbsp;').html_safe
263
+ end
264
+ alias_method :posneg, :pos_neg
265
+
266
+ def _wrapped_yndk_spans(object_name,method,options={})
267
+ object = instance_variable_get("@#{object_name}")
268
+ _wrapped_spans(object_name,method,options.update(
269
+ :value => (YNDK[object.send(method)]||'&nbsp;') ) )
270
+ end
271
+
272
+ def _wrapped_ynodk_spans(object_name,method,options={})
273
+ object = instance_variable_get("@#{object_name}")
274
+ _wrapped_spans(object_name,method,options.update(
275
+ :value => (YNODK[object.send(method)]||'&nbsp;') ) )
276
+ end
277
+
278
+ def _wrapped_ynrdk_spans(object_name,method,options={})
279
+ object = instance_variable_get("@#{object_name}")
280
+ _wrapped_spans(object_name,method,options.update(
281
+ :value => (YNRDK[object.send(method)]||'&nbsp;') ) )
282
+ end
283
+
284
+ def _wrapped_ynordk_spans(object_name,method,options={})
285
+ object = instance_variable_get("@#{object_name}")
286
+ _wrapped_spans(object_name,method,options.update(
287
+ :value => (YNORDK[object.send(method)]||'&nbsp;') ) )
288
+ end
289
+
290
+ def _wrapped_padk_spans(object_name,method,options={})
291
+ object = instance_variable_get("@#{object_name}")
292
+ _wrapped_spans(object_name,method,options.update(
293
+ :value => (PADK[object.send(method)]||'&nbsp;') ) )
294
+ end
295
+
296
+ def _wrapped_adna_spans(object_name,method,options={})
297
+ object = instance_variable_get("@#{object_name}")
298
+ _wrapped_spans(object_name,method,options.update(
299
+ :value => (ADNA[object.send(method)]||'&nbsp;') ) )
300
+ end
301
+
302
+ def _wrapped_pos_neg_spans(object_name,method,options={})
303
+ object = instance_variable_get("@#{object_name}")
304
+ _wrapped_spans(object_name,method,options.update(
305
+ :value => (POSNEG[object.send(method)]||'&nbsp;') ) )
306
+ end
307
+
308
+ end # module CommonLib::ActionViewExtension::Base
309
+ ActionView::Base.send(:include,
310
+ CommonLib::ActionViewExtension::Base )
@@ -0,0 +1,197 @@
1
+ module CommonLib::ActionViewExtension::FormBuilder
2
+
3
+ def error_messages
4
+ if self.object.errors.count > 0
5
+ s = '<div id="errorExplanation" class="errorExplanation">'
6
+ s << "<h2>#{self.object.errors.count} #{"error".pluralize(self.object.errors.count)} prohibited this #{self.object.class} from being saved:</h2>"
7
+ s << '<p>There were problems with the following fields:</p>'
8
+ s << '<ul>'
9
+ self.object.errors.full_messages.each do |msg|
10
+ s << "<li>#{msg}</li>"
11
+ end
12
+ s << '</ul></div>'
13
+ s.html_safe
14
+ end
15
+ end
16
+
17
+ def hour_select(method,options={},html_options={})
18
+ @template.select(object_name, method,
19
+ (1..12),
20
+ {:include_blank => 'Hour'}.merge(options), html_options)
21
+ end
22
+
23
+ def minute_select(method,options={},html_options={})
24
+ minutes = (0..59).to_a.collect{|m|[sprintf("%02d",m),m]}
25
+ @template.select(object_name, method,
26
+ minutes,
27
+ {:include_blank => 'Minute'}.merge(options), html_options)
28
+ end
29
+
30
+ def meridiem_select(method,options={},html_options={})
31
+ @template.select(object_name, method,
32
+ ['AM','PM'],
33
+ {:include_blank => 'Meridiem'}.merge(options), html_options)
34
+ end
35
+
36
+ def sex_select(method,options={},html_options={})
37
+ @template.select(object_name, method,
38
+ [['-select-',''],['male','M'],['female','F'],["don't know",'DK']],
39
+ options, html_options)
40
+ end
41
+ alias_method :gender_select, :sex_select
42
+
43
+ def date_text_field(method, options = {})
44
+ format = options.delete(:format) || '%m/%d/%Y'
45
+ tmp_value = if options[:value].blank? #and !options[:object].nil?
46
+ # object = options[:object]
47
+ tmp = self.object.send("#{method}") ||
48
+ self.object.send("#{method}_before_type_cast")
49
+ else
50
+ options[:value]
51
+ end
52
+ begin
53
+ options[:value] = tmp_value.to_date.try(:strftime,format)
54
+ rescue NoMethodError, ArgumentError
55
+ options[:value] = tmp_value
56
+ end
57
+ options.update(:class => [options[:class],'datepicker'].compact.join(' '))
58
+ @template.text_field( object_name, method, options )
59
+ end
60
+
61
+ def datetime_text_field(method, options = {})
62
+ format = options.delete(:format) || '%m/%d/%Y %H:%M'
63
+ tmp_value = if options[:value].blank?
64
+ tmp = self.object.send("#{method}") ||
65
+ self.object.send("#{method}_before_type_cast")
66
+ else
67
+ options[:value]
68
+ end
69
+ begin
70
+ options[:value] = tmp_value.to_datetime.try(:strftime,format)
71
+ rescue NoMethodError, ArgumentError
72
+ options[:value] = tmp_value
73
+ end
74
+ options.update(:class => [options[:class],'datetimepicker'].compact.join(' '))
75
+ @template.text_field( object_name, method, options )
76
+ end
77
+
78
+ def yndk_select(method,options={},html_options={})
79
+ @template.select(object_name, method, YNDK.selector_options,
80
+ {:include_blank => true}.merge(objectify_options(options)), html_options)
81
+ end
82
+
83
+ def ynrdk_select(method,options={},html_options={})
84
+ @template.select(object_name, method, YNRDK.selector_options,
85
+ {:include_blank => true}.merge(objectify_options(options)), html_options)
86
+ end
87
+
88
+ def ynodk_select(method,options={},html_options={})
89
+ @template.select(object_name, method, YNODK.selector_options,
90
+ {:include_blank => true}.merge(objectify_options(options)), html_options)
91
+ end
92
+
93
+ def ynordk_select(method,options={},html_options={})
94
+ @template.select(object_name, method, YNORDK.selector_options,
95
+ {:include_blank => true}.merge(objectify_options(options)), html_options)
96
+ end
97
+
98
+ def padk_select(method,options={},html_options={})
99
+ @template.select(object_name, method, PADK.selector_options,
100
+ {:include_blank => true}.merge(objectify_options(options)), html_options)
101
+ end
102
+
103
+ def adna_select(method,options={},html_options={})
104
+ @template.select(object_name, method, ADNA.selector_options,
105
+ {:include_blank => true}.merge(objectify_options(options)), html_options)
106
+ end
107
+
108
+ def pos_neg_select(method, options={}, html_options={})
109
+ @template.select(object_name, method, POSNEG.selector_options,
110
+ {:include_blank => true}.merge(objectify_options(options)), html_options)
111
+ end
112
+
113
+ def wrapped_check_box(*args,&block)
114
+ method = args[0]
115
+ content = @template.field_wrapper(method,:class => 'check_box') do
116
+ options = args.detect{|i| i.is_a?(Hash) }
117
+ label_text = options.delete(:label_text) unless options.nil?
118
+ post_text = options.delete(:post_text) unless options.nil?
119
+ # INVERTED ORDER SO NOT INCLUDED BELOW
120
+ s = check_box(*args,&block) <<
121
+ self.label( method, label_text )
122
+ s << (( block_given? )? @template.capture(&block) : '')
123
+ s << (( post_text.blank? ) ? '' : "<span>#{post_text}</span>".html_safe )
124
+ end
125
+ content.html_safe
126
+ end
127
+
128
+ # special
129
+ # def wrapped_check_box(*args,&block)
130
+
131
+ #
132
+ # This isn't pretty, but does appear to work.
133
+ # Dynamically defined using a class_eval rather than
134
+ # define_method. And no method_missing.
135
+ #
136
+ # Actually, now that we're using ruby 1.9, can't I use
137
+ # define_method with a block?
138
+ #
139
+ # Add "field_error" class if errors.include?(method)
140
+ #
141
+ %w( adna_select collection_select country_select
142
+ datetime_select date_text_field datetime_text_field
143
+ file_field password_field
144
+ hour_select minute_select meridiem_select gender_select
145
+ grouped_collection_select padk_select
146
+ pos_neg_select select sex_select text_area
147
+ text_field yndk_select ynodk_select ynrdk_select ynordk_select
148
+ ).each do |unwrapped_method_name|
149
+ define_method "wrapped_#{unwrapped_method_name}" do |*args,&block|
150
+ #class_eval %Q"
151
+ # def wrapped_#{unwrapped_method_name}(*args,&block)
152
+ method = args[0]
153
+ # content = @template.field_wrapper(method,:class => '#{unwrapped_method_name}') do
154
+ content = @template.field_wrapper(method,:class => unwrapped_method_name) do
155
+ options = args.detect{|i| i.is_a?(Hash) }
156
+ label_text = options.delete(:label_text) unless options.nil?
157
+ post_text = options.delete(:post_text) unless options.nil?
158
+ # removing these from the options hash will stop them from being
159
+ # passed on to the unwrapped_method
160
+
161
+ # s = self.label( method, label_text ) <<
162
+ # #{unwrapped_method_name}(*args)
163
+ ## #{unwrapped_method_name}(*args,&block)
164
+ ## why pass the block along? usually a good idea, but these methods don't use it. (at least I don't see any)
165
+ ## if they did, then why capture it again too?
166
+ # s << (( block_given? )? @template.capture(&block) : '')
167
+ # s << (( post_text.blank? ) ? '' : \"<span>\#{post_text}</span>\".html_safe )
168
+
169
+ # I would prefer to do this the newer way, but
170
+ # when a wrapped method has a block with a wrapped method
171
+ # it ends up being rendered a couple times ??
172
+
173
+ s = self.label( method, label_text )
174
+ s << send(unwrapped_method_name,*args,&block)
175
+ # s << (( block )? block.call : '')
176
+ # s << (( block_given? )? @template.capture(&block) : '')
177
+ # the new way won't work with block_given?, but template.capture still does.
178
+ s << (( block )? @template.capture(&block) : '')
179
+ #if block #block_given?
180
+ # puts "BLOCK GIVEN"
181
+ ##puts @template.concat(&block)
182
+ #puts @template.capture(&block)
183
+ #else
184
+ # puts "NO BLOCK GIVEN"
185
+ #end
186
+ s << (( post_text.blank? ) ? '' : "<span>#{post_text}</span>".html_safe )
187
+
188
+
189
+ end
190
+ content.html_safe
191
+ end
192
+ #"
193
+ end
194
+
195
+ end
196
+ ActionView::Helpers::FormBuilder.send(:include,
197
+ CommonLib::ActionViewExtension::FormBuilder )