formtastic 2.1.0 → 4.0.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.
- checksums.yaml +7 -0
- data/.gitattributes +1 -0
- data/.github/workflows/test.yml +61 -0
- data/.gitignore +4 -2
- data/CHANGELOG.md +52 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +105 -0
- data/MIT-LICENSE +1 -1
- data/{README.textile → README.md} +204 -219
- data/RELEASE_PROCESS +3 -1
- data/Rakefile +27 -29
- data/app/assets/stylesheets/formtastic.css +3 -2
- data/bin/appraisal +8 -0
- data/formtastic.gemspec +11 -14
- data/gemfiles/rails_5.2/Gemfile +5 -0
- data/gemfiles/rails_6.0/Gemfile +5 -0
- data/gemfiles/rails_6.1/Gemfile +5 -0
- data/gemfiles/rails_edge/Gemfile +13 -0
- data/lib/formtastic/action_class_finder.rb +18 -0
- data/lib/formtastic/actions/button_action.rb +55 -60
- data/lib/formtastic/actions/input_action.rb +59 -57
- data/lib/formtastic/actions/link_action.rb +68 -67
- data/lib/formtastic/actions.rb +6 -3
- data/lib/formtastic/deprecation.rb +5 -0
- data/lib/formtastic/engine.rb +3 -1
- data/lib/formtastic/form_builder.rb +35 -16
- data/lib/formtastic/helpers/action_helper.rb +34 -28
- data/lib/formtastic/helpers/enum.rb +13 -0
- data/lib/formtastic/helpers/errors_helper.rb +2 -2
- data/lib/formtastic/helpers/fieldset_wrapper.rb +16 -12
- data/lib/formtastic/helpers/form_helper.rb +19 -16
- data/lib/formtastic/helpers/input_helper.rb +69 -97
- data/lib/formtastic/helpers/inputs_helper.rb +35 -25
- data/lib/formtastic/helpers/reflection.rb +4 -4
- data/lib/formtastic/helpers.rb +1 -2
- data/lib/formtastic/html_attributes.rb +12 -1
- data/lib/formtastic/i18n.rb +1 -1
- data/lib/formtastic/input_class_finder.rb +18 -0
- data/lib/formtastic/inputs/base/choices.rb +2 -2
- data/lib/formtastic/inputs/base/collections.rb +46 -14
- data/lib/formtastic/inputs/base/database.rb +7 -2
- data/lib/formtastic/inputs/base/datetime_pickerish.rb +85 -0
- data/lib/formtastic/inputs/base/errors.rb +7 -7
- data/lib/formtastic/inputs/base/hints.rb +2 -2
- data/lib/formtastic/inputs/base/html.rb +10 -9
- data/lib/formtastic/inputs/base/labelling.rb +5 -8
- data/lib/formtastic/inputs/base/naming.rb +4 -4
- data/lib/formtastic/inputs/base/numeric.rb +1 -1
- data/lib/formtastic/inputs/base/options.rb +3 -4
- data/lib/formtastic/inputs/base/stringish.rb +10 -2
- data/lib/formtastic/inputs/base/timeish.rb +34 -22
- data/lib/formtastic/inputs/base/validations.rb +41 -13
- data/lib/formtastic/inputs/base/wrapping.rb +29 -26
- data/lib/formtastic/inputs/base.rb +22 -15
- data/lib/formtastic/inputs/boolean_input.rb +26 -12
- data/lib/formtastic/inputs/check_boxes_input.rb +39 -31
- data/lib/formtastic/inputs/color_input.rb +41 -0
- data/lib/formtastic/inputs/country_input.rb +24 -5
- data/lib/formtastic/inputs/datalist_input.rb +41 -0
- data/lib/formtastic/inputs/date_picker_input.rb +93 -0
- data/lib/formtastic/inputs/{date_input.rb → date_select_input.rb} +1 -1
- data/lib/formtastic/inputs/datetime_picker_input.rb +103 -0
- data/lib/formtastic/inputs/{datetime_input.rb → datetime_select_input.rb} +1 -1
- data/lib/formtastic/inputs/file_input.rb +2 -2
- data/lib/formtastic/inputs/hidden_input.rb +2 -6
- data/lib/formtastic/inputs/radio_input.rb +28 -22
- data/lib/formtastic/inputs/select_input.rb +36 -39
- data/lib/formtastic/inputs/time_picker_input.rb +99 -0
- data/lib/formtastic/inputs/{time_input.rb → time_select_input.rb} +6 -2
- data/lib/formtastic/inputs/time_zone_input.rb +16 -6
- data/lib/formtastic/inputs.rb +32 -21
- data/lib/formtastic/localized_string.rb +1 -1
- data/lib/formtastic/localizer.rb +24 -24
- data/lib/formtastic/namespaced_class_finder.rb +99 -0
- data/lib/formtastic/version.rb +1 -1
- data/lib/formtastic.rb +20 -10
- data/lib/generators/formtastic/form/form_generator.rb +10 -4
- data/lib/generators/formtastic/input/input_generator.rb +46 -0
- data/lib/generators/formtastic/install/install_generator.rb +5 -19
- data/lib/generators/templates/_form.html.slim +2 -2
- data/lib/generators/templates/formtastic.rb +46 -25
- data/lib/generators/templates/input.rb +19 -0
- data/sample/basic_inputs.html +23 -3
- data/script/integration-template.rb +74 -0
- data/script/integration.sh +19 -0
- data/spec/action_class_finder_spec.rb +12 -0
- data/spec/actions/button_action_spec.rb +8 -8
- data/spec/actions/generic_action_spec.rb +92 -56
- data/spec/actions/input_action_spec.rb +7 -7
- data/spec/actions/link_action_spec.rb +10 -10
- data/spec/builder/custom_builder_spec.rb +36 -20
- data/spec/builder/error_proc_spec.rb +4 -4
- data/spec/builder/semantic_fields_for_spec.rb +28 -29
- data/spec/fast_spec_helper.rb +12 -0
- data/spec/generators/formtastic/form/form_generator_spec.rb +45 -32
- data/spec/generators/formtastic/input/input_generator_spec.rb +124 -0
- data/spec/generators/formtastic/install/install_generator_spec.rb +9 -9
- data/spec/helpers/action_helper_spec.rb +75 -103
- data/spec/helpers/actions_helper_spec.rb +17 -17
- data/spec/helpers/form_helper_spec.rb +84 -33
- data/spec/helpers/input_helper_spec.rb +333 -285
- data/spec/helpers/inputs_helper_spec.rb +167 -121
- data/spec/helpers/reflection_helper_spec.rb +3 -3
- data/spec/helpers/semantic_errors_helper_spec.rb +23 -23
- data/spec/i18n_spec.rb +26 -26
- data/spec/input_class_finder_spec.rb +10 -0
- data/spec/inputs/base/collections_spec.rb +76 -0
- data/spec/inputs/base/validations_spec.rb +480 -0
- data/spec/inputs/boolean_input_spec.rb +100 -65
- data/spec/inputs/check_boxes_input_spec.rb +200 -101
- data/spec/inputs/color_input_spec.rb +85 -0
- data/spec/inputs/country_input_spec.rb +20 -20
- data/spec/inputs/custom_input_spec.rb +3 -4
- data/spec/inputs/datalist_input_spec.rb +61 -0
- data/spec/inputs/date_picker_input_spec.rb +449 -0
- data/spec/inputs/date_select_input_spec.rb +249 -0
- data/spec/inputs/datetime_picker_input_spec.rb +490 -0
- data/spec/inputs/datetime_select_input_spec.rb +209 -0
- data/spec/inputs/email_input_spec.rb +5 -5
- data/spec/inputs/file_input_spec.rb +6 -6
- data/spec/inputs/hidden_input_spec.rb +22 -35
- data/spec/inputs/include_blank_spec.rb +11 -11
- data/spec/inputs/label_spec.rb +62 -25
- data/spec/inputs/number_input_spec.rb +112 -112
- data/spec/inputs/password_input_spec.rb +5 -5
- data/spec/inputs/phone_input_spec.rb +5 -5
- data/spec/inputs/placeholder_spec.rb +6 -6
- data/spec/inputs/radio_input_spec.rb +99 -55
- data/spec/inputs/range_input_spec.rb +66 -66
- data/spec/inputs/readonly_spec.rb +50 -0
- data/spec/inputs/search_input_spec.rb +5 -5
- data/spec/inputs/select_input_spec.rb +170 -170
- data/spec/inputs/string_input_spec.rb +68 -16
- data/spec/inputs/text_input_spec.rb +16 -16
- data/spec/inputs/time_picker_input_spec.rb +455 -0
- data/spec/inputs/time_select_input_spec.rb +261 -0
- data/spec/inputs/time_zone_input_spec.rb +54 -28
- data/spec/inputs/url_input_spec.rb +5 -5
- data/spec/inputs/with_options_spec.rb +7 -7
- data/spec/localizer_spec.rb +39 -17
- data/spec/namespaced_class_finder_spec.rb +79 -0
- data/spec/schema.rb +21 -0
- data/spec/spec_helper.rb +254 -221
- data/spec/support/custom_macros.rb +128 -95
- data/spec/support/shared_examples.rb +12 -0
- data/spec/support/specialized_class_finder_shared_example.rb +27 -0
- data/spec/support/test_environment.rb +26 -10
- metadata +177 -238
- data/.travis.yml +0 -8
- data/Appraisals +0 -11
- data/CHANGELOG +0 -371
- data/gemfiles/rails-3.0.gemfile +0 -7
- data/gemfiles/rails-3.1.gemfile +0 -7
- data/gemfiles/rails-3.2.gemfile +0 -7
- data/lib/formtastic/helpers/buttons_helper.rb +0 -310
- data/lib/formtastic/inputs/base/grouped_collections.rb +0 -77
- data/lib/formtastic/util.rb +0 -25
- data/lib/tasks/verify_rcov.rb +0 -44
- data/spec/helpers/buttons_helper_spec.rb +0 -166
- data/spec/helpers/commit_button_helper_spec.rb +0 -530
- data/spec/inputs/date_input_spec.rb +0 -227
- data/spec/inputs/datetime_input_spec.rb +0 -185
- data/spec/inputs/time_input_spec.rb +0 -267
- data/spec/support/deferred_garbage_collection.rb +0 -21
data/RELEASE_PROCESS
CHANGED
data/Rakefile
CHANGED
|
@@ -1,28 +1,42 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
require 'bundler/setup'
|
|
3
|
-
require '
|
|
4
|
-
require 'rdoc/task'
|
|
3
|
+
require 'yard'
|
|
5
4
|
require 'rspec/core/rake_task'
|
|
6
|
-
require 'tasks/verify_rcov'
|
|
7
5
|
|
|
8
6
|
Bundler::GemHelper.install_tasks
|
|
9
7
|
|
|
10
8
|
desc 'Default: run unit specs.'
|
|
11
|
-
|
|
9
|
+
if !ENV["APPRAISAL_INITIALIZED"] && !ENV["TRAVIS"]
|
|
10
|
+
task :default => :appraisal
|
|
11
|
+
else
|
|
12
|
+
task :default => :spec
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
desc 'Run the default task over all gemfiles.'
|
|
16
|
+
task :appraisal do
|
|
17
|
+
for_all_gemfiles("exec", "rake")
|
|
18
|
+
end
|
|
12
19
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
20
|
+
namespace :appraisal do
|
|
21
|
+
desc 'Run `bundle install` over all gemfiles.'
|
|
22
|
+
task :install do
|
|
23
|
+
for_all_gemfiles("install")
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def for_all_gemfiles(*args)
|
|
28
|
+
Dir.glob("gemfiles/*/Gemfile").sort.each do |gemfile|
|
|
29
|
+
Bundler.with_original_env do
|
|
30
|
+
sh({ "APPRAISAL_INITIALIZED" => "true", "BUNDLE_GEMFILE" => gemfile }, "bundle", *args)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
16
33
|
end
|
|
17
34
|
|
|
18
35
|
desc 'Generate documentation for the formtastic plugin.'
|
|
19
|
-
Rake::
|
|
20
|
-
|
|
21
|
-
rdoc.title = 'Formtastic'
|
|
22
|
-
rdoc.options << '--line-numbers' << '--inline-source'
|
|
23
|
-
rdoc.rdoc_files.include('README.textile')
|
|
24
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
36
|
+
YARD::Rake::YardocTask.new(:yard) do |t|
|
|
37
|
+
|
|
25
38
|
end
|
|
39
|
+
task doc: :yard
|
|
26
40
|
|
|
27
41
|
desc 'Test the formtastic plugin.'
|
|
28
42
|
RSpec::Core::RakeTask.new('spec') do |t|
|
|
@@ -38,19 +52,3 @@ desc 'Test the formtastic plugin with specdoc formatting and colors'
|
|
|
38
52
|
RSpec::Core::RakeTask.new('specdoc') do |t|
|
|
39
53
|
t.pattern = FileList['spec/**/*_spec.rb']
|
|
40
54
|
end
|
|
41
|
-
|
|
42
|
-
desc 'Run all examples with RCov'
|
|
43
|
-
RSpec::Core::RakeTask.new('rcov') do |t|
|
|
44
|
-
t.pattern = FileList['spec/**/*_spec.rb']
|
|
45
|
-
t.rcov = true
|
|
46
|
-
t.rcov_opts = %w(--exclude gems/*,spec/*,.bundle/*, --aggregate coverage.data)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
RCov::VerifyTask.new(:verify_coverage) do |t|
|
|
50
|
-
t.require_exact_threshold = false
|
|
51
|
-
t.threshold = (RUBY_VERSION == "1.8.7" ? 95 : 0)
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
desc "Run all examples and verify coverage"
|
|
55
|
-
task :spec_and_verify_coverage => [:rcov, :verify_coverage] do
|
|
56
|
-
end
|
|
@@ -194,7 +194,8 @@ This stylesheet forms part of the Formtastic Rails Plugin
|
|
|
194
194
|
width:72%;
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
-
.formtastic .stringish input[size]
|
|
197
|
+
.formtastic .stringish input[size],
|
|
198
|
+
.formtastic .stringish input[max] {
|
|
198
199
|
width:auto;
|
|
199
200
|
max-width:72%;
|
|
200
201
|
}
|
|
@@ -222,7 +223,7 @@ This stylesheet forms part of the Formtastic Rails Plugin
|
|
|
222
223
|
/* BOOLEAN LABELS
|
|
223
224
|
--------------------------------------------------------------------------------------------------*/
|
|
224
225
|
.formtastic .boolean label {
|
|
225
|
-
|
|
226
|
+
margin-left:25%;
|
|
226
227
|
display:block;
|
|
227
228
|
}
|
|
228
229
|
|
data/bin/appraisal
ADDED
data/formtastic.gemspec
CHANGED
|
@@ -8,32 +8,29 @@ Gem::Specification.new do |s|
|
|
|
8
8
|
s.platform = Gem::Platform::RUBY
|
|
9
9
|
s.authors = [%q{Justin French}]
|
|
10
10
|
s.email = [%q{justin@indent.com.au}]
|
|
11
|
-
s.homepage = %q{http://github.com/
|
|
11
|
+
s.homepage = %q{http://github.com/formtastic/formtastic}
|
|
12
12
|
s.summary = %q{A Rails form builder plugin/gem with semantically rich and accessible markup}
|
|
13
13
|
s.description = %q{A Rails form builder plugin/gem with semantically rich and accessible markup}
|
|
14
|
+
s.license = 'MIT'
|
|
14
15
|
|
|
15
16
|
s.files = `git ls-files`.split("\n")
|
|
16
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
17
|
-
s.executables =
|
|
18
|
+
s.executables = []
|
|
18
19
|
s.require_paths = ["lib"]
|
|
19
20
|
|
|
20
21
|
s.rdoc_options = ["--charset=UTF-8"]
|
|
21
|
-
s.extra_rdoc_files = ["README.
|
|
22
|
+
s.extra_rdoc_files = ["README.md"]
|
|
22
23
|
|
|
24
|
+
s.required_ruby_version = '>= 2.4.0'
|
|
23
25
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
24
26
|
s.rubygems_version = %q{1.3.6}
|
|
25
27
|
|
|
26
|
-
s.add_dependency(%q<actionpack>, ["
|
|
28
|
+
s.add_dependency(%q<actionpack>, [">= 5.2.0"])
|
|
27
29
|
|
|
28
|
-
s.add_development_dependency(%q<rspec-rails>, ["~>
|
|
29
|
-
s.add_development_dependency(%q<
|
|
30
|
-
s.add_development_dependency(%q<
|
|
31
|
-
s.add_development_dependency(%q<
|
|
32
|
-
s.add_development_dependency(%q<yard>, ["~> 0.6"])
|
|
33
|
-
s.add_development_dependency(%q<rcov>, ["~> 0.9.9"])
|
|
34
|
-
s.add_development_dependency(%q<colored>)
|
|
35
|
-
s.add_development_dependency(%q<tzinfo>)
|
|
36
|
-
s.add_development_dependency(%q<ammeter>, ["~> 0.2.2"])
|
|
37
|
-
s.add_development_dependency(%q<appraisal>)
|
|
30
|
+
s.add_development_dependency(%q<rspec-rails>, ["~> 3.4"])
|
|
31
|
+
s.add_development_dependency(%q<rspec-dom-testing>, [">= 0.1.0"])
|
|
32
|
+
s.add_development_dependency(%q<yard>, ["~> 0.9.20"])
|
|
33
|
+
s.add_development_dependency(%q<ammeter>, ["~> 1.1.3"])
|
|
38
34
|
s.add_development_dependency(%q<rake>)
|
|
35
|
+
s.add_development_dependency(%q<sqlite3>, ["~> 1.4"])
|
|
39
36
|
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
source "https://rubygems.org"
|
|
2
|
+
|
|
3
|
+
gem "rails", git: "https://github.com/rails/rails.git"
|
|
4
|
+
gem "rack", git: "https://github.com/rack/rack.git"
|
|
5
|
+
gem "i18n", git: "https://github.com/svenfuchs/i18n.git"
|
|
6
|
+
gem "arel", git: "https://github.com/rails/arel.git"
|
|
7
|
+
gem "rspec-rails", git: "https://github.com/rspec/rspec-rails.git"
|
|
8
|
+
gem "rspec-mocks", git: "https://github.com/rspec/rspec-mocks.git"
|
|
9
|
+
gem "rspec-support", git: "https://github.com/rspec/rspec-support.git"
|
|
10
|
+
gem "rspec-core", git: "https://github.com/rspec/rspec-core.git"
|
|
11
|
+
gem "rspec-expectations", git: "https://github.com/rspec/rspec-expectations.git"
|
|
12
|
+
|
|
13
|
+
gemspec path: "../.."
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Formtastic
|
|
2
|
+
|
|
3
|
+
# Uses the {NamespacedClassFinder} to look up action class names.
|
|
4
|
+
#
|
|
5
|
+
# See {Formtastic::Helpers::ActionHelper#namespaced_action_class} for details.
|
|
6
|
+
#
|
|
7
|
+
class ActionClassFinder < NamespacedClassFinder
|
|
8
|
+
|
|
9
|
+
# @param builder [FormBuilder]
|
|
10
|
+
def initialize(builder)
|
|
11
|
+
super builder.action_namespaces
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def class_name(as)
|
|
15
|
+
"#{super}Action"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -1,72 +1,67 @@
|
|
|
1
|
-
# Outputs a `<button type="submit">` or `<button type="reset">` wrapped in the standard `<li>`
|
|
2
|
-
# wrapper. This is an alternative choice for `:submit` and `:reset` actions, which render with
|
|
3
|
-
# `<input type="submit">` and `<input type="reset">` by default.
|
|
4
|
-
#
|
|
5
|
-
# @example Full form context and output
|
|
6
|
-
#
|
|
7
|
-
# <%= semantic_form_for(@post) do |f| %>
|
|
8
|
-
# <%= f.actions do %>
|
|
9
|
-
# <%= f.action :reset, :as => :button %>
|
|
10
|
-
# <%= f.action :submit, :as => :button %>
|
|
11
|
-
# <% end %>
|
|
12
|
-
# <% end %>
|
|
13
|
-
#
|
|
14
|
-
# <form...>
|
|
15
|
-
# <fieldset class="actions">
|
|
16
|
-
# <ol>
|
|
17
|
-
# <li class="action button_action" id="post_reset_action">
|
|
18
|
-
# <button type="reset" value="Reset">
|
|
19
|
-
# </li>
|
|
20
|
-
# <li class="action button_action" id="post_submit_action">
|
|
21
|
-
# <button type="submit" value="Create Post">
|
|
22
|
-
# </li>
|
|
23
|
-
# </ol>
|
|
24
|
-
# </fieldset>
|
|
25
|
-
# </form>
|
|
26
|
-
#
|
|
27
|
-
# @example Specifying a label with a String
|
|
28
|
-
# <%= f.action :submit, :as => :button, :label => "Go" %>
|
|
29
|
-
#
|
|
30
|
-
# @example Pass HTML attributes down to the `<button>`
|
|
31
|
-
# <%= f.action :submit, :as => :button, :button_html => { :class => 'pretty', :accesskey => 'g', :disable_with => "Wait..." } %>
|
|
32
|
-
#
|
|
33
|
-
# @example Access key can also be set as a top-level option
|
|
34
|
-
# <%= f.action :submit, :as => :button, :accesskey => 'g' %>
|
|
35
|
-
#
|
|
36
|
-
# @example Pass HTML attributes down to the `<li>` wrapper (classes are appended to the existing classes)
|
|
37
|
-
# <%= f.action :submit, :as => :button, :wrapper_html => { :class => 'special', :id => 'whatever' } %>
|
|
38
|
-
# <%= f.action :submit, :as => :button, :wrapper_html => { :class => ['extra', 'special'], :id => 'whatever' } %>
|
|
39
|
-
#
|
|
40
|
-
# @option *args :label [String, Symbol]
|
|
41
|
-
# Override the label text with a String or a symbol for an i18n translation key
|
|
42
|
-
#
|
|
43
|
-
# @option *args :button_html [Hash]
|
|
44
|
-
# Override or add to the HTML attributes to be passed down to the `<input>` tag
|
|
45
|
-
#
|
|
46
|
-
# @option *args :wrapper_html [Hash]
|
|
47
|
-
# Override or add to the HTML attributes to be passed down to the wrapping `<li>` tag
|
|
48
|
-
#
|
|
49
|
-
# @todo document i18n keys
|
|
50
|
-
# @todo document i18n translation with :label (?)
|
|
51
1
|
module Formtastic
|
|
52
2
|
module Actions
|
|
53
|
-
|
|
3
|
+
|
|
4
|
+
# Outputs a `<button type="submit">` or `<button type="reset">` wrapped in the standard `<li>`
|
|
5
|
+
# wrapper. This is an alternative choice for `:submit` and `:reset` actions, which render with
|
|
6
|
+
# `<input type="submit">` and `<input type="reset">` by default.
|
|
7
|
+
#
|
|
8
|
+
# @example Full form context and output
|
|
9
|
+
#
|
|
10
|
+
# <%= semantic_form_for(@post) do |f| %>
|
|
11
|
+
# <%= f.actions do %>
|
|
12
|
+
# <%= f.action :reset, :as => :button %>
|
|
13
|
+
# <%= f.action :submit, :as => :button %>
|
|
14
|
+
# <% end %>
|
|
15
|
+
# <% end %>
|
|
16
|
+
#
|
|
17
|
+
# <form...>
|
|
18
|
+
# <fieldset class="actions">
|
|
19
|
+
# <ol>
|
|
20
|
+
# <li class="action button_action" id="post_reset_action">
|
|
21
|
+
# <button type="reset" value="Reset">
|
|
22
|
+
# </li>
|
|
23
|
+
# <li class="action button_action" id="post_submit_action">
|
|
24
|
+
# <button type="submit" value="Create Post">
|
|
25
|
+
# </li>
|
|
26
|
+
# </ol>
|
|
27
|
+
# </fieldset>
|
|
28
|
+
# </form>
|
|
29
|
+
#
|
|
30
|
+
# @example Specifying a label with a String
|
|
31
|
+
# <%= f.action :submit, :as => :button, :label => "Go" %>
|
|
32
|
+
#
|
|
33
|
+
# @example Pass HTML attributes down to the `<button>`
|
|
34
|
+
# <%= f.action :submit, :as => :button, :button_html => { :class => 'pretty', :accesskey => 'g', :disable_with => "Wait..." } %>
|
|
35
|
+
#
|
|
36
|
+
# @example Access key can also be set as a top-level option
|
|
37
|
+
# <%= f.action :submit, :as => :button, :accesskey => 'g' %>
|
|
38
|
+
#
|
|
39
|
+
# @example Pass HTML attributes down to the `<li>` wrapper (classes are appended to the existing classes)
|
|
40
|
+
# <%= f.action :submit, :as => :button, :wrapper_html => { :class => 'special', :id => 'whatever' } %>
|
|
41
|
+
# <%= f.action :submit, :as => :button, :wrapper_html => { :class => ['extra', 'special'], :id => 'whatever' } %>
|
|
42
|
+
#
|
|
43
|
+
# @todo document i18n keys
|
|
44
|
+
# @todo document i18n translation with :label (?)
|
|
45
|
+
class ButtonAction
|
|
54
46
|
include Base
|
|
55
47
|
include Buttonish
|
|
56
|
-
|
|
57
|
-
#
|
|
58
|
-
#
|
|
48
|
+
|
|
49
|
+
# @see Formtastic::Helpers::ActionHelper#action
|
|
50
|
+
# @option *args :label [String, Symbol]
|
|
51
|
+
# Override the label text with a String or a symbol for an i18n translation key
|
|
59
52
|
#
|
|
53
|
+
# @option *args :button_html [Hash]
|
|
54
|
+
# Override or add to the HTML attributes to be passed down to the `<input>` tag
|
|
55
|
+
#
|
|
56
|
+
# @option *args :wrapper_html [Hash]
|
|
57
|
+
# Override or add to the HTML attributes to be passed down to the wrapping `<li>` tag
|
|
58
|
+
|
|
60
59
|
# TODO reset_action class?
|
|
61
60
|
def to_html
|
|
62
61
|
wrapper do
|
|
63
|
-
|
|
64
|
-
template.button_tag(text, button_html)
|
|
65
|
-
else
|
|
66
|
-
template.content_tag(:button, text, button_html)
|
|
67
|
-
end
|
|
62
|
+
template.button_tag(text, button_html)
|
|
68
63
|
end
|
|
69
64
|
end
|
|
70
65
|
end
|
|
71
66
|
end
|
|
72
|
-
end
|
|
67
|
+
end
|
|
@@ -1,63 +1,65 @@
|
|
|
1
|
-
# Outputs an `<input type="submit">` or `<input type="reset">` wrapped in the standard `<li>`
|
|
2
|
-
# wrapper. This the default for `:submit` and `:reset` actions, but `:as => :button` is also
|
|
3
|
-
# available as an alternative.
|
|
4
|
-
#
|
|
5
|
-
# @example The `:as` can be ommitted, these are functionally equivalent
|
|
6
|
-
# <%= f.action :submit, :as => :input %>
|
|
7
|
-
# <%= f.action :submit %>
|
|
8
|
-
#
|
|
9
|
-
# @example Full form context and output
|
|
10
|
-
#
|
|
11
|
-
# <%= semantic_form_for(@post) do |f| %>
|
|
12
|
-
# <%= f.actions do %>
|
|
13
|
-
# <%= f.action :reset, :as => :input %>
|
|
14
|
-
# <%= f.action :submit, :as => :input %>
|
|
15
|
-
# <% end %>
|
|
16
|
-
# <% end %>
|
|
17
|
-
#
|
|
18
|
-
# <form...>
|
|
19
|
-
# <fieldset class="actions">
|
|
20
|
-
# <ol>
|
|
21
|
-
# <li class="action input_action" id="post_reset_action">
|
|
22
|
-
# <input type="reset" value="Reset">
|
|
23
|
-
# </li>
|
|
24
|
-
# <li class="action input_action" id="post_submit_action">
|
|
25
|
-
# <input type="submit" value="Create Post">
|
|
26
|
-
# </li>
|
|
27
|
-
# </ol>
|
|
28
|
-
# </fieldset>
|
|
29
|
-
# </form>
|
|
30
|
-
#
|
|
31
|
-
# @example Specifying a label with a String
|
|
32
|
-
# <%= f.action :submit, :as => :input, :label => "Go" %>
|
|
33
|
-
#
|
|
34
|
-
# @example Pass HTML attributes down to the `<input>`
|
|
35
|
-
# <%= f.action :submit, :as => :input, :button_html => { :class => 'pretty', :accesskey => 'g', :disable_with => "Wait..." } %>
|
|
36
|
-
#
|
|
37
|
-
# @example Access key can also be set as a top-level option
|
|
38
|
-
# <%= f.action :submit, :as => :input, :accesskey => 'g' %>
|
|
39
|
-
#
|
|
40
|
-
# @example Pass HTML attributes down to the `<li>` wrapper (classes are appended to the existing classes)
|
|
41
|
-
# <%= f.action :submit, :as => :input, :wrapper_html => { :class => 'special', :id => 'whatever' } %>
|
|
42
|
-
# <%= f.action :submit, :as => :input, :wrapper_html => { :class => ['extra', 'special'], :id => 'whatever' } %>
|
|
43
|
-
#
|
|
44
|
-
# @option *args :label [String, Symbol]
|
|
45
|
-
# Override the label text with a String or a symbol for an i18n translation key
|
|
46
|
-
#
|
|
47
|
-
# @option *args :button_html [Hash]
|
|
48
|
-
# Override or add to the HTML attributes to be passed down to the `<input>` tag
|
|
49
|
-
#
|
|
50
|
-
# @option *args :wrapper_html [Hash]
|
|
51
|
-
# Override or add to the HTML attributes to be passed down to the wrapping `<li>` tag
|
|
52
|
-
#
|
|
53
|
-
# @todo document i18n keys
|
|
54
|
-
# @todo document i18n translation with :label (?)
|
|
55
1
|
module Formtastic
|
|
56
2
|
module Actions
|
|
57
|
-
|
|
3
|
+
|
|
4
|
+
# Outputs an `<input type="submit">` or `<input type="reset">` wrapped in the standard `<li>`
|
|
5
|
+
# wrapper. This the default for `:submit` and `:reset` actions, but `:as => :button` is also
|
|
6
|
+
# available as an alternative.
|
|
7
|
+
#
|
|
8
|
+
# @example The `:as` can be ommitted, these are functionally equivalent
|
|
9
|
+
# <%= f.action :submit, :as => :input %>
|
|
10
|
+
# <%= f.action :submit %>
|
|
11
|
+
#
|
|
12
|
+
# @example Full form context and output
|
|
13
|
+
#
|
|
14
|
+
# <%= semantic_form_for(@post) do |f| %>
|
|
15
|
+
# <%= f.actions do %>
|
|
16
|
+
# <%= f.action :reset, :as => :input %>
|
|
17
|
+
# <%= f.action :submit, :as => :input %>
|
|
18
|
+
# <% end %>
|
|
19
|
+
# <% end %>
|
|
20
|
+
#
|
|
21
|
+
# <form...>
|
|
22
|
+
# <fieldset class="actions">
|
|
23
|
+
# <ol>
|
|
24
|
+
# <li class="action input_action" id="post_reset_action">
|
|
25
|
+
# <input type="reset" value="Reset">
|
|
26
|
+
# </li>
|
|
27
|
+
# <li class="action input_action" id="post_submit_action">
|
|
28
|
+
# <input type="submit" value="Create Post">
|
|
29
|
+
# </li>
|
|
30
|
+
# </ol>
|
|
31
|
+
# </fieldset>
|
|
32
|
+
# </form>
|
|
33
|
+
#
|
|
34
|
+
# @example Specifying a label with a String
|
|
35
|
+
# <%= f.action :submit, :as => :input, :label => "Go" %>
|
|
36
|
+
#
|
|
37
|
+
# @example Pass HTML attributes down to the `<input>`
|
|
38
|
+
# <%= f.action :submit, :as => :input, :button_html => { :class => 'pretty', :accesskey => 'g', :disable_with => "Wait..." } %>
|
|
39
|
+
#
|
|
40
|
+
# @example Access key can also be set as a top-level option
|
|
41
|
+
# <%= f.action :submit, :as => :input, :accesskey => 'g' %>
|
|
42
|
+
#
|
|
43
|
+
# @example Pass HTML attributes down to the `<li>` wrapper (classes are appended to the existing classes)
|
|
44
|
+
# <%= f.action :submit, :as => :input, :wrapper_html => { :class => 'special', :id => 'whatever' } %>
|
|
45
|
+
# <%= f.action :submit, :as => :input, :wrapper_html => { :class => ['extra', 'special'], :id => 'whatever' } %>
|
|
46
|
+
# @todo document i18n keys
|
|
47
|
+
# @todo document i18n translation with :label (?)
|
|
48
|
+
class InputAction
|
|
58
49
|
include Base
|
|
59
50
|
include Buttonish
|
|
60
|
-
|
|
51
|
+
|
|
52
|
+
# @see Formtastic::Helpers::ActionHelper#action
|
|
53
|
+
# @option *args :label [String, Symbol]
|
|
54
|
+
# Override the label text with a String or a symbol for an i18n translation key
|
|
55
|
+
#
|
|
56
|
+
# @option *args :button_html [Hash]
|
|
57
|
+
# Override or add to the HTML attributes to be passed down to the `<input>` tag
|
|
58
|
+
#
|
|
59
|
+
# @option *args :wrapper_html [Hash]
|
|
60
|
+
# Override or add to the HTML attributes to be passed down to the wrapping `<li>` tag
|
|
61
|
+
#
|
|
62
|
+
|
|
61
63
|
def to_html
|
|
62
64
|
wrapper do
|
|
63
65
|
builder.submit(text, button_html)
|
|
@@ -65,4 +67,4 @@ module Formtastic
|
|
|
65
67
|
end
|
|
66
68
|
end
|
|
67
69
|
end
|
|
68
|
-
end
|
|
70
|
+
end
|
|
@@ -1,82 +1,83 @@
|
|
|
1
|
-
# Outputs a link wrapped in the standard `<li>` wrapper. This the default for `:cancel` actions.
|
|
2
|
-
# The link's URL defaults to Rails' built-in `:back` macro (the HTTP referrer, or Javascript for the
|
|
3
|
-
# browser's history), but can be altered with the `:url` option.
|
|
4
|
-
#
|
|
5
|
-
# @example The `:as` can be ommitted, these are functionally equivalent
|
|
6
|
-
# <%= f.action :cancel, :as => :link %>
|
|
7
|
-
# <%= f.action :cancel %>
|
|
8
|
-
#
|
|
9
|
-
# @example Full form context and output
|
|
10
|
-
#
|
|
11
|
-
# <%= semantic_form_for(@post) do |f| %>
|
|
12
|
-
# <%= f.actions do %>
|
|
13
|
-
# <%= f.action :submit, :as => :input %>
|
|
14
|
-
# <%= f.action :cancel, :as => :link %>
|
|
15
|
-
# <% end %>
|
|
16
|
-
# <% end %>
|
|
17
|
-
#
|
|
18
|
-
# <form...>
|
|
19
|
-
# <fieldset class="actions">
|
|
20
|
-
# <ol>
|
|
21
|
-
# <li class="action input_action" id="post_submit_action">
|
|
22
|
-
# <input type="submit" value="Create Post">
|
|
23
|
-
# </li>
|
|
24
|
-
# <li class="action link_action" id="post_cancel_action">
|
|
25
|
-
# <a href="javascript:history.back()">Cancel</a>
|
|
26
|
-
# </li>
|
|
27
|
-
# </ol>
|
|
28
|
-
# </fieldset>
|
|
29
|
-
# </form>
|
|
30
|
-
#
|
|
31
|
-
# @example Modifying the URL for the link
|
|
32
|
-
# <%= f.action :cancel, :as => :link, :url => "http://example.com/path" %>
|
|
33
|
-
# <%= f.action :cancel, :as => :link, :url => "/path" %>
|
|
34
|
-
# <%= f.action :cancel, :as => :link, :url => posts_path %>
|
|
35
|
-
# <%= f.action :cancel, :as => :link, :url => url_for(...) %>
|
|
36
|
-
# <%= f.action :cancel, :as => :link, :url => { :controller => "posts", :action => "index" } %>
|
|
37
|
-
#
|
|
38
|
-
# @example Specifying a label with a String
|
|
39
|
-
# <%= f.action :cancel, :as => :link, :label => "Stop" %>
|
|
40
|
-
#
|
|
41
|
-
# @example Pass HTML attributes down to the `<a>`
|
|
42
|
-
# <%= f.action :cancel, :as => :link, :button_html => { :class => 'pretty', :accesskey => 'x' } %>
|
|
43
|
-
#
|
|
44
|
-
# @example Access key can also be set as a top-level option
|
|
45
|
-
# <%= f.action :cancel, :as => :link, :accesskey => 'x' %>
|
|
46
|
-
#
|
|
47
|
-
# @example Pass HTML attributes down to the `<li>` wrapper (classes are appended to the existing classes)
|
|
48
|
-
# <%= f.action :cancel, :as => :link, :wrapper_html => { :class => 'special', :id => 'whatever' } %>
|
|
49
|
-
# <%= f.action :cancel, :as => :link, :wrapper_html => { :class => ['extra', 'special'], :id => 'whatever' } %>
|
|
50
|
-
#
|
|
51
|
-
# @option *args :label [String, Symbol]
|
|
52
|
-
# Override the label text with a String or a symbol for an i18n translation key
|
|
53
|
-
#
|
|
54
|
-
# @option *args :button_html [Hash]
|
|
55
|
-
# Override or add to the HTML attributes to be passed down to the `<a>` tag
|
|
56
|
-
#
|
|
57
|
-
# @option *args :wrapper_html [Hash]
|
|
58
|
-
# Override or add to the HTML attributes to be passed down to the wrapping `<li>` tag
|
|
59
|
-
#
|
|
60
|
-
# @todo document i18n keys
|
|
61
|
-
# @todo document i18n translation with :label (?)
|
|
62
|
-
# @todo :prefix and :suffix options? (can also be done with CSS or subclassing for custom Actions)
|
|
63
1
|
module Formtastic
|
|
64
2
|
module Actions
|
|
65
|
-
|
|
66
|
-
|
|
3
|
+
# Outputs a link wrapped in the standard `<li>` wrapper. This the default for `:cancel` actions.
|
|
4
|
+
# The link's URL defaults to Rails' built-in `:back` macro (the HTTP referrer, or Javascript for the
|
|
5
|
+
# browser's history), but can be altered with the `:url` option.
|
|
6
|
+
#
|
|
7
|
+
# @example The `:as` can be ommitted, these are functionally equivalent
|
|
8
|
+
# <%= f.action :cancel, :as => :link %>
|
|
9
|
+
# <%= f.action :cancel %>
|
|
10
|
+
#
|
|
11
|
+
# @example Full form context and output
|
|
12
|
+
#
|
|
13
|
+
# <%= semantic_form_for(@post) do |f| %>
|
|
14
|
+
# <%= f.actions do %>
|
|
15
|
+
# <%= f.action :submit, :as => :input %>
|
|
16
|
+
# <%= f.action :cancel, :as => :link %>
|
|
17
|
+
# <% end %>
|
|
18
|
+
# <% end %>
|
|
19
|
+
#
|
|
20
|
+
# <form...>
|
|
21
|
+
# <fieldset class="actions">
|
|
22
|
+
# <ol>
|
|
23
|
+
# <li class="action input_action" id="post_submit_action">
|
|
24
|
+
# <input type="submit" value="Create Post">
|
|
25
|
+
# </li>
|
|
26
|
+
# <li class="action link_action" id="post_cancel_action">
|
|
27
|
+
# <a href="javascript:history.back()">Cancel</a>
|
|
28
|
+
# </li>
|
|
29
|
+
# </ol>
|
|
30
|
+
# </fieldset>
|
|
31
|
+
# </form>
|
|
32
|
+
#
|
|
33
|
+
# @example Modifying the URL for the link
|
|
34
|
+
# <%= f.action :cancel, :as => :link, :url => "http://example.com/path" %>
|
|
35
|
+
# <%= f.action :cancel, :as => :link, :url => "/path" %>
|
|
36
|
+
# <%= f.action :cancel, :as => :link, :url => posts_path %>
|
|
37
|
+
# <%= f.action :cancel, :as => :link, :url => url_for(...) %>
|
|
38
|
+
# <%= f.action :cancel, :as => :link, :url => { :controller => "posts", :action => "index" } %>
|
|
39
|
+
#
|
|
40
|
+
# @example Specifying a label with a String
|
|
41
|
+
# <%= f.action :cancel, :as => :link, :label => "Stop" %>
|
|
42
|
+
#
|
|
43
|
+
# @example Pass HTML attributes down to the `<a>`
|
|
44
|
+
# <%= f.action :cancel, :as => :link, :button_html => { :class => 'pretty', :accesskey => 'x' } %>
|
|
45
|
+
#
|
|
46
|
+
# @example Access key can also be set as a top-level option
|
|
47
|
+
# <%= f.action :cancel, :as => :link, :accesskey => 'x' %>
|
|
48
|
+
#
|
|
49
|
+
# @example Pass HTML attributes down to the `<li>` wrapper (classes are appended to the existing classes)
|
|
50
|
+
# <%= f.action :cancel, :as => :link, :wrapper_html => { :class => 'special', :id => 'whatever' } %>
|
|
51
|
+
# <%= f.action :cancel, :as => :link, :wrapper_html => { :class => ['extra', 'special'], :id => 'whatever' } %>
|
|
52
|
+
#
|
|
53
|
+
# @todo document i18n keys
|
|
54
|
+
# @todo document i18n translation with :label (?)
|
|
55
|
+
# @todo :prefix and :suffix options? (can also be done with CSS or subclassing for custom Actions)
|
|
56
|
+
class LinkAction
|
|
67
57
|
include Base
|
|
68
|
-
|
|
58
|
+
|
|
59
|
+
# @see Formtastic::Helpers::ActionHelper#action
|
|
60
|
+
# @option *args :label [String, Symbol]
|
|
61
|
+
# Override the label text with a String or a symbol for an i18n translation key
|
|
62
|
+
#
|
|
63
|
+
# @option *args :button_html [Hash]
|
|
64
|
+
# Override or add to the HTML attributes to be passed down to the `<a>` tag
|
|
65
|
+
#
|
|
66
|
+
# @option *args :wrapper_html [Hash]
|
|
67
|
+
# Override or add to the HTML attributes to be passed down to the wrapping `<li>` tag
|
|
68
|
+
#
|
|
69
|
+
|
|
69
70
|
def supported_methods
|
|
70
71
|
[:cancel]
|
|
71
72
|
end
|
|
72
|
-
|
|
73
|
+
|
|
73
74
|
# TODO reset_action class?
|
|
74
75
|
def to_html
|
|
75
76
|
wrapper do
|
|
76
77
|
template.link_to(text, url, button_html)
|
|
77
78
|
end
|
|
78
79
|
end
|
|
79
|
-
|
|
80
|
+
|
|
80
81
|
def url
|
|
81
82
|
return options[:url] if options.key?(:url)
|
|
82
83
|
:back
|
data/lib/formtastic/actions.rb
CHANGED