rails-hidden_autocomplete 0.1.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 714b227121581a2d002269a2255687b039ef2b2e5b18bf1c6e615cae6d3b3aec
4
- data.tar.gz: 2f90d31085eceb2b3d0c084b215f2439464c06217bad2f0d22d26f5d9fbfd4e4
3
+ metadata.gz: 0c7a9e4853b0f4ff53ebb7a25d4b94dc8197b888d264dd1eb5b064241a63ad8e
4
+ data.tar.gz: 3fea7c3aaafc9c54ea3d0ec5009ace7232b9ee95d1db12c3bfc35f460a90b975
5
5
  SHA512:
6
- metadata.gz: 3b18e08b4f20d30fb86258c4449c445fcb43518dd20c2962dc3940226e80f0a7ad5ccc720ba45ac40762bc59ed34b216584d044938a4ec8e09496ebd5c3d5c48
7
- data.tar.gz: 4bfb358b4018c3ab3919d8d5559735bff7f08d76ac24dde8557371132e41896b2fe04cad5feb915c2545a0a87c75ba2a592b34930669a56a6b25052fb54de7ff
6
+ metadata.gz: 64929edf453f4f8112694c8b22370a1d71874e1cd93cb35187f5eb5b4ae2f5d3d0cece4bcf69e502f051feb861b1c9baedf58397912cb8146829d1c1009b7d9c
7
+ data.tar.gz: 2389c9123be817e711678654516d4c53ce30e6a795b4d1c6b4d119557cb7289f32433eb8a7cc271ec53a22cabc9787ab013585da8ef75333fe8a32fbd4f6cde1
data/README.md CHANGED
@@ -1,8 +1,12 @@
1
1
  # rails-hidden_autocomplete
2
- This is a Rails plugin to add `autocomplete="off"` to all hidden form inputs generated by Rails. This is necessary because Firefox has [a long-running bug](https://bugzilla.mozilla.org/show_bug.cgi?id=520561) where it may populate hidden inputs **without** `autocomplete="off"` with completely random values. Since Rails uses hidden fields extensively for CSRF protection and non-standard HTTP methods, this issue is also tracked in the main Rails tracker here: [add autocomplete="OFF" to firefox-proof automagically added hidden fields like method](https://github.com/rails/rails/issues/42610)
2
+ This is a Rails plugin to add `autocomplete="off"` to all hidden form inputs generated by Rails. This is necessary because Firefox has [a longstanding bug](https://bugzilla.mozilla.org/show_bug.cgi?id=520561) where it may populate hidden inputs **without** `autocomplete="off"` with completely random values. Since Rails uses hidden fields extensively for CSRF protection and non-standard HTTP methods, this issue is also tracked in the main Rails tracker here: [add autocomplete="OFF" to firefox-proof automagically added hidden fields like method](https://github.com/rails/rails/issues/42610)
3
+
4
+ You can read the announcement blog post here: <https://blog.podqueue.fm/2021/09/19/giving_back_to_rails_with_rails-hidden_autocomplete/>
5
+
6
+ This work has also been refactored into a Rails PR: <https://github.com/rails/rails/pull/43280>
3
7
 
4
8
  ## Usage
5
- Using this plugin from a Rails 6 application should automatically override Rails classes which generate hidden form inputs to add an `autocomplete="off"` attribute.
9
+ Using this plugin from a Rails 6.1 application should automatically override Rails methods which generate hidden form inputs to add an `autocomplete="off"` attribute.
6
10
 
7
11
  ## Installation
8
12
  Add this line to your application's Gemfile:
@@ -1,6 +1,8 @@
1
- Rails.application.reloader.to_prepare do
1
+ ActiveSupport.on_load(:action_view) do
2
2
  ActionView::Helpers::DateTimeSelector.prepend Rails::HiddenAutocomplete::ActionView::Helpers::DateTimeSelector
3
3
  ActionView::Helpers::FormTagHelper.prepend Rails::HiddenAutocomplete::ActionView::Helpers::FormTagHelper
4
- ActionView::Helpers::Tags.prepend Rails::HiddenAutocomplete::ActionView::Helpers::Tags
4
+ ActionView::Helpers::Tags::Base.prepend Rails::HiddenAutocomplete::ActionView::Helpers::Tags::Base
5
+ ActionView::Helpers::Tags::CheckBox.prepend Rails::HiddenAutocomplete::ActionView::Helpers::Tags::CheckBox
6
+ ActionView::Helpers::Tags::HiddenField.prepend Rails::HiddenAutocomplete::ActionView::Helpers::Tags::HiddenField
5
7
  ActionView::Helpers::UrlHelper.prepend Rails::HiddenAutocomplete::ActionView::Helpers::UrlHelper
6
8
  end
@@ -6,6 +6,10 @@ module Rails
6
6
  def hidden_field_tag(name, value = nil, options = {})
7
7
  super(name, value, options.merge(autocomplete: 'off'))
8
8
  end
9
+
10
+ def utf8_enforcer_tag
11
+ '<input name="utf8" type="hidden" value="&#x2713;" autocomplete="off" />'.html_safe
12
+ end
9
13
  end
10
14
  end
11
15
  end
@@ -0,0 +1,30 @@
1
+ module Rails
2
+ module HiddenAutocomplete
3
+ module ActionView
4
+ module Helpers
5
+ module Tags
6
+ module Base
7
+ def select_content_tag(option_tags, options, html_options)
8
+ html_options = html_options.stringify_keys
9
+ add_default_name_and_id(html_options)
10
+
11
+ if placeholder_required?(html_options)
12
+ raise ArgumentError, "include_blank cannot be false for a required field." if options[:include_blank] == false
13
+ options[:include_blank] ||= true unless options[:prompt]
14
+ end
15
+
16
+ value = options.fetch(:selected) { value() }
17
+ select = content_tag("select", add_options(option_tags, options, value), html_options)
18
+
19
+ if html_options["multiple"] && options.fetch(:include_hidden, true)
20
+ tag("input", disabled: html_options["disabled"], name: html_options["name"], type: "hidden", value: "", autocomplete: "off") + select
21
+ else
22
+ select
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,16 @@
1
+ module Rails
2
+ module HiddenAutocomplete
3
+ module ActionView
4
+ module Helpers
5
+ module Tags
6
+ module CheckBox
7
+ private
8
+ def hidden_field_for_checkbox(options)
9
+ @unchecked_value ? tag("input", options.slice("name", "disabled", "form").merge!("type" => "hidden", "value" => @unchecked_value, "autocomplete" => "off")) : "".html_safe
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -3,7 +3,7 @@ module Rails
3
3
  module ActionView
4
4
  module Helpers
5
5
  module Tags
6
- class HiddenField
6
+ module HiddenField
7
7
  def render
8
8
  @options[:autocomplete] = 'off'
9
9
  super
@@ -1,5 +1,5 @@
1
1
  module Rails
2
2
  module HiddenAutocomplete
3
- VERSION = '0.1.0'
3
+ VERSION = '0.4.0'
4
4
  end
5
5
  end
@@ -1,8 +1,10 @@
1
1
  require "rails/hidden_autocomplete/engine"
2
2
  require "rails/hidden_autocomplete/action_view/helpers/date_time_selector"
3
3
  require "rails/hidden_autocomplete/action_view/helpers/form_tag_helper"
4
- require "rails/hidden_autocomplete/action_view/helpers/tags"
5
4
  require "rails/hidden_autocomplete/action_view/helpers/url_helper"
5
+ require "rails/hidden_autocomplete/action_view/helpers/tags/base"
6
+ require "rails/hidden_autocomplete/action_view/helpers/tags/check_box"
7
+ require "rails/hidden_autocomplete/action_view/helpers/tags/hidden_field"
6
8
 
7
9
  module Rails
8
10
  module HiddenAutocomplete
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-hidden_autocomplete
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Baumann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-19 00:00:00.000000000 Z
11
+ date: 2021-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,22 +16,30 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '6.0'
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 6.0.3.2
19
+ version: '6.1'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '6.0'
26
+ version: '6.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sqlite3
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
30
31
  - - ">="
31
32
  - !ruby/object:Gem::Version
32
- version: 6.0.3.2
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
33
41
  - !ruby/object:Gem::Dependency
34
- name: sqlite3
42
+ name: gem-release
35
43
  requirement: !ruby/object:Gem::Requirement
36
44
  requirements:
37
45
  - - ">="
@@ -63,7 +71,9 @@ files:
63
71
  - lib/rails/hidden_autocomplete.rb
64
72
  - lib/rails/hidden_autocomplete/action_view/helpers/date_time_selector.rb
65
73
  - lib/rails/hidden_autocomplete/action_view/helpers/form_tag_helper.rb
66
- - lib/rails/hidden_autocomplete/action_view/helpers/tags.rb
74
+ - lib/rails/hidden_autocomplete/action_view/helpers/tags/base.rb
75
+ - lib/rails/hidden_autocomplete/action_view/helpers/tags/check_box.rb
76
+ - lib/rails/hidden_autocomplete/action_view/helpers/tags/hidden_field.rb
67
77
  - lib/rails/hidden_autocomplete/action_view/helpers/url_helper.rb
68
78
  - lib/rails/hidden_autocomplete/engine.rb
69
79
  - lib/rails/hidden_autocomplete/version.rb
@@ -87,8 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
87
97
  - !ruby/object:Gem::Version
88
98
  version: '0'
89
99
  requirements: []
90
- rubyforge_project:
91
- rubygems_version: 2.7.6.2
100
+ rubygems_version: 3.2.22
92
101
  signing_key:
93
102
  specification_version: 4
94
103
  summary: Adds autocomplete="off" to all hidden inputs generated by Rails