formtastic 2.0.0.rc1 → 2.0.0.rc2

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/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ 2.0.0.rc2
2
+
3
+ * Fixed that the checkbox was mistakenly placed after the label text in BooleanInput, not before it as per 1.x
4
+
1
5
  2.0.0.rc1
2
6
 
3
7
  * Removed the "inline_order" configuration (redefine input_wrapping instead)
data/README.textile CHANGED
@@ -97,13 +97,13 @@ Simply add Formtastic to your Gemfile and bundle it up:
97
97
  gem 'formtastic', '~> 1.2.3'
98
98
  </pre>
99
99
 
100
- If you want to try out our work towards Formtastic 2.0 (Rails >= 3 only), bundle in Formtastic directly from Github with the @:git@ option instead:
100
+ If you want to try out our work towards Formtastic 2.0 (Rails 3.x only):
101
101
 
102
102
  <pre>
103
- gem 'formtastic', :git => 'http://github.com/justinfrench/formtastic', :branch => 'master'
103
+ gem 'formtastic', '2.0.0.rc1'
104
104
  </pre>
105
105
 
106
- Optionally, run the generator to copy a stylesheet (Rails 3.0.x only) and a configuration initializer into your application:
106
+ Run the installation generator to copy a stylesheet (Rails 3.0.x only) and a configuration initializer into your application:
107
107
 
108
108
  <pre>
109
109
  $ rails generate formtastic:install
@@ -536,52 +536,6 @@ h2. Configuration
536
536
  Run @rails generate formtastic:install@ to copy a commented out config file into @config/initializers/formtastic.rb@. You can "view the configuration file on GitHub":http://github.com/justinfrench/formtastic/blob/master/lib/generators/templates/formtastic.rb
537
537
 
538
538
 
539
- h2. Form Generator
540
-
541
- There's a Formtastic form code generator to make your transition to Formtastic easier. All you have to do is to *specify an existing model name*, and optionally specify view template framework (ERB/HAML), and you are good to go. *Note:* This won't overwrite any of your exsting files without confirmation.
542
-
543
- h3. Basic usage
544
-
545
- <pre>
546
- $ rails generate formtastic:form ModelName
547
- exists app/views/posts
548
- create app/views/posts/_form.html.erb
549
- </pre>
550
-
551
- The ERB code is saved to a partial file, but it will not overwrite existing files without a prompt.
552
-
553
- h3. Copying the ERB code to the clipboard instead with @--copy@
554
-
555
- <pre>
556
- $ rails generate formtastic:form Post --copy
557
- </pre>
558
-
559
- h3. Specifying HAML instead of ERB with @--haml@
560
-
561
- <pre>
562
- $ rails generate formtastic:form Post --haml
563
- exists app/views/posts
564
- create app/views/posts/_form.html.haml
565
- </pre>
566
-
567
- h3. Specifying controller namespace with @--controller@
568
-
569
- <pre>
570
- $ rails generate formtastic:form Post --controller admin/posts
571
- exists app/views/admin/posts
572
- create app/views/admin/posts/_form.html.erb
573
- </pre>
574
-
575
- h3. Specifying which attributes need an input
576
-
577
- <pre>
578
- $ rails generate formtastic:form Post title:string body:text publication_state:select
579
- exists app/views/posts
580
- create app/views/posts/_form.html.erb
581
- </pre>
582
-
583
-
584
-
585
539
  h2. Modified & Custom Inputs
586
540
 
587
541
  If you want to change the behaviour of an input, you can subclass it in your app. For example, to tweak @StringInput@, create a new file @app/inputs/string_input.rb@:
data/formtastic.gemspec CHANGED
@@ -5,7 +5,7 @@ require "formtastic/version"
5
5
  Gem::Specification.new do |s|
6
6
  s.name = %q{formtastic}
7
7
  s.version = Formtastic::VERSION
8
- s.date = %q{2011-06-09}
8
+ s.date = %q{2011-06-13}
9
9
  s.platform = Gem::Platform::RUBY
10
10
  s.authors = [%q{Justin French}]
11
11
  s.email = [%q{justin@indent.com.au}]
@@ -1,6 +1,90 @@
1
1
  module Formtastic
2
2
  module Inputs
3
3
  module Base
4
+ # Timeish inputs (`:date`, `:datetime`, `:time`) are similar to the Rails date and time
5
+ # helpers (`date_select`, `datetime_select`, `time_select`), rendering a series of `<select>`
6
+ # tags for each fragment (year, month, day, hour, minute, seconds). The fragments are then
7
+ # re-combined to a date by ActiveRecord through multi-parameter assignment.
8
+ #
9
+ # The mark-up produced by Rails is simple but far from ideal, with no way to label the
10
+ # individual fragments for accessibility, no fieldset to group the related fields, and no
11
+ # legend describing the group. Formtastic addresses this within the standard `<li>` wrapper
12
+ # with a `<fieldset>` with a `<legend>` as a label, followed by an ordered list (`<ol>`) of
13
+ # list items (`<li>`), one for each fragment (year, month, ...). Each `<li>` fragment contains
14
+ # a `<label>` (eg "Year") for the fragment, and a `<select>` containing `<option>`s (eg a
15
+ # range of years).
16
+ #
17
+ # In the supplied formtastic.css file, the resulting mark-up is styled to appear a lot like a
18
+ # standard Rails date time select by:
19
+ #
20
+ # * styling the legend to look like the other labels (to the left hand side of the selects)
21
+ # * floating the `<li>` fragments against each other as a single line
22
+ # * hiding the `<label>` of each fragment with `display:none`
23
+ #
24
+ # @example `:date` input with full form context and sample HTMl output
25
+ #
26
+ # <%= semantic_form_for(@post) do |f| %>
27
+ # <%= f.inputs do %>
28
+ # ...
29
+ # <%= f.input :publish_at, :as => :date %>
30
+ # <% end %>
31
+ # <% end %>
32
+ #
33
+ # <form...>
34
+ # <fieldset class="inputs">
35
+ # <ol>
36
+ # <li class="date">
37
+ # <fieldset class="fragments">
38
+ # <ol class="fragments-group">
39
+ # <li class="fragment">
40
+ # <label for="post_publish_at_1i">Year</label>
41
+ # <select id="post_publish_at_1i" name="post[publish_at_1i]">...</select>
42
+ # </li>
43
+ # <li class="fragment">
44
+ # <label for="post_publish_at_2i">Month</label>
45
+ # <select id="post_publish_at_2i" name="post[publish_at_2i]">...</select>
46
+ # </li>
47
+ # <li class="fragment">
48
+ # <label for="post_publish_at_3i">Day</label>
49
+ # <select id="post_publish_at_3i" name="post[publish_at_3i]">...</select>
50
+ # </li>
51
+ # </ol>
52
+ # </fieldset>
53
+ # </li>
54
+ # </ol>
55
+ # </fieldset>
56
+ # </form>
57
+ #
58
+ #
59
+ # @example `:time` input
60
+ # <%= f.input :publish_at, :as => :time %>
61
+ #
62
+ # @example `:datetime` input
63
+ # <%= f.input :publish_at, :as => :datetime %>
64
+ #
65
+ # @example Change the labels for each fragment
66
+ # <%= f.input :publish_at, :as => :date, :labels => { :year => "Y", :month => "M", :day => "D" } %>
67
+ #
68
+ # @example Skip a fragment (defaults to 1, skips all following fragments)
69
+ # <%= f.input :publish_at, :as => :datetime, :discard_minute => true %>
70
+ # <%= f.input :publish_at, :as => :datetime, :discard_hour => true %>
71
+ # <%= f.input :publish_at, :as => :datetime, :discard_day => true %>
72
+ # <%= f.input :publish_at, :as => :datetime, :discard_month => true %>
73
+ # <%= f.input :publish_at, :as => :datetime, :discard_year => true %>
74
+ #
75
+ # @example Change the order
76
+ # <%= f.input :publish_at, :as => :date, :order => [:month, :day, :year] %>
77
+ #
78
+ # @example Include seconds with times (excluded by default)
79
+ # <%= f.input :publish_at, :as => :time, :include_seconds => true %>
80
+ #
81
+ # @example Specify if there should be a blank option at the start of each select or not
82
+ # <%= f.input :publish_at, :as => :time, :include_blank=> true %>
83
+ # <%= f.input :publish_at, :as => :time, :include_blank=> false %>
84
+ #
85
+ # @todo Document i18n
86
+ # @todo Check what other Rails options are supported (`start_year`, `end_year`, `use_month_numbers`, `use_short_month`, `add_month_numbers`, `prompt`), write tests for them, and otherwise support them
87
+ # @todo Could we take the rendering from Rails' helpers and inject better HTML in and around it rather than re-inventing the whee?
4
88
  module Timeish
5
89
 
6
90
  def to_html
@@ -64,7 +64,7 @@ module Formtastic
64
64
  end
65
65
 
66
66
  def label_text_with_embedded_checkbox
67
- label_text << " " << check_box_html
67
+ check_box_html << "" << label_text
68
68
  end
69
69
 
70
70
  def check_box_html
@@ -1,5 +1,7 @@
1
1
  module Formtastic
2
2
  module Inputs
3
+ # Outputs a series of select boxes for the fragments that make up a date (year, month, day).
4
+ #
3
5
  # @see Formtastic::Inputs::Timeish Timeish module for documetation of date, time and datetime input options.
4
6
  class DateInput
5
7
  include Base
@@ -1,5 +1,8 @@
1
1
  module Formtastic
2
2
  module Inputs
3
+
4
+ # Outputs a series of select boxes for the fragments that make up a date and time (year, month, day, hour, minute, second).
5
+ #
3
6
  # @see Formtastic::Inputs::Timeish Timeish module for documetation of date, time and datetime input options.
4
7
  class DatetimeInput
5
8
  include Base
@@ -175,7 +175,7 @@ module Formtastic
175
175
  end
176
176
 
177
177
  def input_options
178
- {:include_blank => include_blank?}.merge(super)
178
+ super.merge({:include_blank => include_blank?, :prompt => nil})
179
179
  end
180
180
 
181
181
  def input_html_options
@@ -1,5 +1,7 @@
1
1
  module Formtastic
2
2
  module Inputs
3
+ # Outputs a series of select boxes for the fragments that make up a time (hour, minute, second).
4
+ #
3
5
  # @see Formtastic::Inputs::Timeish Timeish module for documetation of date, time and datetime input options.
4
6
  class TimeInput
5
7
  include Base
@@ -1,3 +1,3 @@
1
1
  module Formtastic
2
- VERSION = "2.0.0.rc1"
2
+ VERSION = "2.0.0.rc2"
3
3
  end
@@ -418,7 +418,7 @@ describe 'select input' do
418
418
  end
419
419
 
420
420
  it 'should have a select with prompt' do
421
- output_buffer.should have_tag("form li select option[@value='']", /choose author/)
421
+ output_buffer.should have_tag("form li select option[@value='']", /choose author/, :count => 1)
422
422
  end
423
423
 
424
424
  it 'should not have a blank select option' do
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: 977940590
4
+ hash: 977940591
5
5
  prerelease: true
6
6
  segments:
7
7
  - 2
8
8
  - 0
9
9
  - 0
10
- - rc1
11
- version: 2.0.0.rc1
10
+ - rc2
11
+ version: 2.0.0.rc2
12
12
  platform: ruby
13
13
  authors:
14
14
  - Justin French
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-06-09 00:00:00 +10:00
19
+ date: 2011-06-13 00:00:00 +10:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency