formtastic 1.2.0.beta → 1.2.0.beta2

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/README.textile CHANGED
@@ -115,6 +115,30 @@ A proof-of-concept stylesheet is provided which you can include in your layout.
115
115
  </pre>
116
116
 
117
117
 
118
+ h2. Syntax
119
+
120
+ *Please note:* Formtastic makes use of a lot of ERB blocks and currently supports both Rails 2 and Rails 3, which means the syntax in these examples will differ depending on which version of Rails you're using.
121
+
122
+ The difference is subtle, with most blocks in Rails 3 requiring the addition of an equals sign:
123
+
124
+ <pre>
125
+ <!-- Rails 2 -->
126
+ <% semantic_form_for @user do |form| %>
127
+ <% form.inputs do %>
128
+ ...
129
+ <% end %>
130
+ <% end %>
131
+
132
+ <!-- Rails 3 -->
133
+ <%= semantic_form_for @user do |form| %>
134
+ <%= form.inputs do %>
135
+ ...
136
+ <% end %>
137
+ <% end %>
138
+
139
+ This README is currently documenting the Rails 2 way only. If you're using Rails 3 and your forms aren't rendering everything as expected, try changing @<%@ to @<%=@.
140
+
141
+
118
142
  h2. Usage
119
143
 
120
144
  Forms are really boring to code... you want to get onto the good stuff as fast as possible.
@@ -128,7 +152,9 @@ This renders a set of inputs (one for _most_ columns in the database table, and
128
152
  <% end %>
129
153
  </pre>
130
154
 
131
- If you want to specify the order of the fields, skip some of the fields or even add in fields that Formtastic couldn't detect, you can pass in a list of field names to @inputs@ and list of button names to @buttons@:
155
+ This is a great way to get something up fast, but like scaffolding, it's not recommended for production.
156
+
157
+ You probably want to specify the order of the fields, skip some of the fields or even add in fields that Formtastic couldn't detect, you can pass in a list of field names to @inputs@ and list of button names to @buttons@:
132
158
 
133
159
  <pre>
134
160
  <% semantic_form_for @user do |form| %>
@@ -137,7 +163,7 @@ If you want to specify the order of the fields, skip some of the fields or even
137
163
  <% end %>
138
164
  </pre>
139
165
 
140
- If you want control over the input type Formtastic uses for each field, you can expand the @inputs@ and @buttons@ blocks. This specifies the @:section@ input should be a set of radio buttons (rather than the default select box), and that the @:created_at@ field should be a string (rather than the default datetime selects):
166
+ You probably want control over the input type Formtastic uses for each field, you can expand the @inputs@ and @buttons@ blocks. This specifies the @:section@ input should be a set of radio buttons (rather than the default select box), and that the @:created_at@ field should be a string (rather than the default datetime selects):
141
167
 
142
168
  <pre>
143
169
  <% semantic_form_for @post do |form| %>
@@ -428,7 +454,7 @@ If I18n-lookups is disabled, i.e.:
428
454
  <%= form.input :section, :label => true %> # => :label => I18n.t('activerecord.attributes.user.section') or 'Section'
429
455
  <% end %>
430
456
  <% form.buttons do %>
431
- <%= form.commit_button true %> # => "Save changes" (if we are in edit that is...)
457
+ <%= form.commit_button true %> # => "Update %{model}" (if we are in edit that is...)
432
458
  <% end %>
433
459
  <% end %>
434
460
  </pre>
@@ -558,6 +584,25 @@ If you want to add your own input types to encapsulate your own logic or interfa
558
584
 
559
585
  @Formtastic::SemanticFormHelper.builder = MyCustomBuilder@
560
586
 
587
+ Be aware that you should either set the options on custom builder or require it after setting options on formtastic default builder.
588
+
589
+ <pre>
590
+ # OK
591
+ Formtastic::SemanticFormBuilder.i18n_lookups_by_default = true
592
+ require 'formtastic/my_custom_builder'
593
+ Formtastic::SemanticFormHelper.builder = Formtastic::MyCustomBuilder
594
+
595
+ # OK
596
+ require 'formtastic/my_custom_builder'
597
+ Formtastic::SemanticFormHelper.builder = Formtastic::MyCustomBuilder
598
+ Formtastic::MyCustomBuilder.i18n_lookups_by_default = true
599
+
600
+ # WRONG!
601
+ require 'formtastic/my_custom_builder'
602
+ Formtastic::SemanticFormBuilder.i18n_lookups_by_default = true
603
+ Formtastic::SemanticFormHelper.builder = Formtastic::MyCustomBuilder
604
+ </pre>
605
+
561
606
 
562
607
  h2. Security
563
608
 
@@ -4,13 +4,7 @@ module Formtastic
4
4
  module I18n
5
5
 
6
6
  DEFAULT_SCOPE = [:formtastic].freeze
7
- DEFAULT_VALUES = {
8
- :required => 'required',
9
- :yes => 'Yes',
10
- :no => 'No',
11
- :create => 'Create %{model}',
12
- :update => 'Update %{model}'
13
- }.freeze
7
+ DEFAULT_VALUES = YAML.load_file(File.expand_path("../../locale/en.yml", __FILE__))["en"]["formtastic"].freeze
14
8
  SCOPES = [
15
9
  '%{model}.%{nested_model}.%{action}.%{attribute}',
16
10
  '%{model}.%{action}.%{attribute}',
data/lib/formtastic.rb CHANGED
@@ -340,7 +340,9 @@ module Formtastic #:nodoc:
340
340
  #
341
341
  def commit_button(*args)
342
342
  options = args.extract_options!
343
+ ::ActiveSupport::Deprecation.warn(":class => 'whatever' is deprecated on commit button, use :wrapper_html => { :class => 'whatever' } instead.", caller) if options.key?(:class)
343
344
  text = options.delete(:label) || args.shift
345
+
344
346
 
345
347
  if @object && (@object.respond_to?(:persisted?) || @object.respond_to?(:new_record?))
346
348
  if @object.respond_to?(:persisted?) # ActiveModel
@@ -371,10 +373,14 @@ module Formtastic #:nodoc:
371
373
 
372
374
  button_html = options.delete(:button_html) || {}
373
375
  button_html.merge!(:class => [button_html[:class], key].compact.join(' '))
374
- element_class = ['commit', options.delete(:class)].compact.join(' ') # TODO: Add class reflecting on form action.
376
+
377
+ wrapper_html_class = ['commit', options.delete(:class)].compact # TODO: Add class reflecting on form action.
378
+ wrapper_html = options.delete(:wrapper_html) || {}
379
+ wrapper_html[:class] = (wrapper_html_class << wrapper_html[:class] << button_html[:class]).flatten.compact.join(' ')
380
+
375
381
  accesskey = (options.delete(:accesskey) || self.class.default_commit_button_accesskey) unless button_html.has_key?(:accesskey)
376
382
  button_html = button_html.merge(:accesskey => accesskey) if accesskey
377
- template.content_tag(:li, Formtastic::Util.html_safe(self.submit(text, button_html)), :class => element_class)
383
+ template.content_tag(:li, Formtastic::Util.html_safe(self.submit(text, button_html)), wrapper_html)
378
384
  end
379
385
 
380
386
  # A thin wrapper around #fields_for to set :builder => Formtastic::SemanticFormBuilder
data/lib/locale/en.yml CHANGED
@@ -2,7 +2,6 @@ en:
2
2
  formtastic:
3
3
  :yes: 'Yes'
4
4
  :no: 'No'
5
- create: 'Create'
6
- save: 'Save'
7
- submit: 'Submit'
8
- required: 'Required'
5
+ :create: 'Create %{model}'
6
+ :update: 'Update %{model}'
7
+ :required: 'required'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: formtastic
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31098177
4
+ hash: -1848230070
5
5
  prerelease: true
6
6
  segments:
7
7
  - 1
8
8
  - 2
9
9
  - 0
10
- - beta
11
- version: 1.2.0.beta
10
+ - beta2
11
+ version: 1.2.0.beta2
12
12
  platform: ruby
13
13
  authors:
14
14
  - Justin French
@@ -115,6 +115,22 @@ dependencies:
115
115
  version: 1.0.0
116
116
  type: :development
117
117
  version_requirements: *id006
118
+ - !ruby/object:Gem::Dependency
119
+ name: hpricot
120
+ prerelease: false
121
+ requirement: &id007 !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ~>
125
+ - !ruby/object:Gem::Version
126
+ hash: 57
127
+ segments:
128
+ - 0
129
+ - 8
130
+ - 3
131
+ version: 0.8.3
132
+ type: :development
133
+ version_requirements: *id007
118
134
  description: A Rails form builder plugin/gem with semantically rich and accessible markup
119
135
  email: justin@indent.com.au
120
136
  executables: []