trusty-cms 4.1.9 → 4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +70 -67
- data/lib/trusty_cms.rb +1 -1
- data/trusty_cms.gemspec +2 -2
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/base.rb +195 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/check_box.rb +65 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/checkable.rb +18 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/collection_check_boxes.rb +35 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/collection_helpers.rb +118 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/collection_radio_buttons.rb +30 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/collection_select.rb +30 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/color_field.rb +26 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/date_field.rb +14 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/date_select.rb +73 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/datetime_field.rb +31 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/datetime_local_field.rb +20 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/datetime_select.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/email_field.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/file_field.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/grouped_collection_select.rb +31 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/hidden_field.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/label.rb +80 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/month_field.rb +14 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/number_field.rb +20 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/password_field.rb +14 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/placeholderable.rb +24 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/radio_button.rb +32 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/range_field.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/search_field.rb +27 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/select.rb +42 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/tel_field.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/text_area.rb +24 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/text_field.rb +33 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/time_field.rb +14 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/time_select.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/time_zone_select.rb +22 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/translator.rb +39 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/url_field.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/week_field.rb +14 -0
- metadata +164 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 299f6d4ea4f8354fc95eca5057d85ef469ecf514a9b9caccea05498f3ee7b3db
|
4
|
+
data.tar.gz: 9c635ae0f8cb03af87e45321f6f139cdab67abea7ad57d5bb304c3bbb5426204
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41043b6945a24d689aefc362b5eed571b0cb378aaffb9b3dcf67f4570fba089b86062341998e7d54ecc53391d74cab0f7e76af6de131a9743976227f47b5c5a8
|
7
|
+
data.tar.gz: cc491f12651bc85e7fddc1612319882c5b9982fe4dc4bce72d5b4325cbfbf597786a2e06ab8cabbbb1bf2453a515590ec62ddd719e76a4efae1984d6bb77ffa1
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
trusty-cms (4.
|
4
|
+
trusty-cms (4.2)
|
5
5
|
RedCloth (= 4.3.2)
|
6
6
|
acts_as_list (>= 0.9.5, < 1.1.0)
|
7
7
|
acts_as_tree (>= 2.6.1, < 2.9.0)
|
@@ -9,8 +9,8 @@ PATH
|
|
9
9
|
delocalize (>= 0.2, < 2.0)
|
10
10
|
devise
|
11
11
|
execjs (~> 2.7)
|
12
|
-
haml
|
13
|
-
haml-rails
|
12
|
+
haml
|
13
|
+
haml-rails
|
14
14
|
highline (>= 1.7.8, < 2.1.0)
|
15
15
|
kraken-io
|
16
16
|
mini_racer
|
@@ -34,61 +34,65 @@ GEM
|
|
34
34
|
remote: https://rubygems.org/
|
35
35
|
specs:
|
36
36
|
RedCloth (4.3.2)
|
37
|
-
actioncable (6.
|
38
|
-
actionpack (= 6.
|
37
|
+
actioncable (6.1.1)
|
38
|
+
actionpack (= 6.1.1)
|
39
|
+
activesupport (= 6.1.1)
|
39
40
|
nio4r (~> 2.0)
|
40
41
|
websocket-driver (>= 0.6.1)
|
41
|
-
actionmailbox (6.
|
42
|
-
actionpack (= 6.
|
43
|
-
activejob (= 6.
|
44
|
-
activerecord (= 6.
|
45
|
-
activestorage (= 6.
|
46
|
-
activesupport (= 6.
|
42
|
+
actionmailbox (6.1.1)
|
43
|
+
actionpack (= 6.1.1)
|
44
|
+
activejob (= 6.1.1)
|
45
|
+
activerecord (= 6.1.1)
|
46
|
+
activestorage (= 6.1.1)
|
47
|
+
activesupport (= 6.1.1)
|
47
48
|
mail (>= 2.7.1)
|
48
|
-
actionmailer (6.
|
49
|
-
actionpack (= 6.
|
50
|
-
actionview (= 6.
|
51
|
-
activejob (= 6.
|
49
|
+
actionmailer (6.1.1)
|
50
|
+
actionpack (= 6.1.1)
|
51
|
+
actionview (= 6.1.1)
|
52
|
+
activejob (= 6.1.1)
|
53
|
+
activesupport (= 6.1.1)
|
52
54
|
mail (~> 2.5, >= 2.5.4)
|
53
55
|
rails-dom-testing (~> 2.0)
|
54
|
-
actionpack (6.
|
55
|
-
actionview (= 6.
|
56
|
-
activesupport (= 6.
|
57
|
-
rack (~> 2.0, >= 2.0.
|
56
|
+
actionpack (6.1.1)
|
57
|
+
actionview (= 6.1.1)
|
58
|
+
activesupport (= 6.1.1)
|
59
|
+
rack (~> 2.0, >= 2.0.9)
|
58
60
|
rack-test (>= 0.6.3)
|
59
61
|
rails-dom-testing (~> 2.0)
|
60
62
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
61
|
-
actiontext (6.
|
62
|
-
actionpack (= 6.
|
63
|
-
activerecord (= 6.
|
64
|
-
activestorage (= 6.
|
65
|
-
activesupport (= 6.
|
63
|
+
actiontext (6.1.1)
|
64
|
+
actionpack (= 6.1.1)
|
65
|
+
activerecord (= 6.1.1)
|
66
|
+
activestorage (= 6.1.1)
|
67
|
+
activesupport (= 6.1.1)
|
66
68
|
nokogiri (>= 1.8.5)
|
67
|
-
actionview (6.
|
68
|
-
activesupport (= 6.
|
69
|
+
actionview (6.1.1)
|
70
|
+
activesupport (= 6.1.1)
|
69
71
|
builder (~> 3.1)
|
70
72
|
erubi (~> 1.4)
|
71
73
|
rails-dom-testing (~> 2.0)
|
72
74
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
73
|
-
activejob (6.
|
74
|
-
activesupport (= 6.
|
75
|
+
activejob (6.1.1)
|
76
|
+
activesupport (= 6.1.1)
|
75
77
|
globalid (>= 0.3.6)
|
76
|
-
activemodel (6.
|
77
|
-
activesupport (= 6.
|
78
|
-
activerecord (6.
|
79
|
-
activemodel (= 6.
|
80
|
-
activesupport (= 6.
|
81
|
-
activestorage (6.
|
82
|
-
actionpack (= 6.
|
83
|
-
activejob (= 6.
|
84
|
-
activerecord (= 6.
|
78
|
+
activemodel (6.1.1)
|
79
|
+
activesupport (= 6.1.1)
|
80
|
+
activerecord (6.1.1)
|
81
|
+
activemodel (= 6.1.1)
|
82
|
+
activesupport (= 6.1.1)
|
83
|
+
activestorage (6.1.1)
|
84
|
+
actionpack (= 6.1.1)
|
85
|
+
activejob (= 6.1.1)
|
86
|
+
activerecord (= 6.1.1)
|
87
|
+
activesupport (= 6.1.1)
|
85
88
|
marcel (~> 0.3.1)
|
86
|
-
|
89
|
+
mimemagic (~> 0.3.2)
|
90
|
+
activesupport (6.1.1)
|
87
91
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
88
|
-
i18n (>=
|
89
|
-
minitest (
|
90
|
-
tzinfo (~>
|
91
|
-
zeitwerk (~> 2.
|
92
|
+
i18n (>= 1.6, < 2)
|
93
|
+
minitest (>= 5.1)
|
94
|
+
tzinfo (~> 2.0)
|
95
|
+
zeitwerk (~> 2.3)
|
92
96
|
acts_as_list (1.0.3)
|
93
97
|
activerecord (>= 4.2)
|
94
98
|
acts_as_tree (2.8.0)
|
@@ -143,12 +147,12 @@ GEM
|
|
143
147
|
haml (5.2.1)
|
144
148
|
temple (>= 0.8.0)
|
145
149
|
tilt
|
146
|
-
haml-rails (
|
147
|
-
actionpack (>=
|
148
|
-
activesupport (>=
|
150
|
+
haml-rails (2.0.1)
|
151
|
+
actionpack (>= 5.1)
|
152
|
+
activesupport (>= 5.1)
|
149
153
|
haml (>= 4.0.6, < 6.0)
|
150
154
|
html2haml (>= 1.0.1)
|
151
|
-
railties (>=
|
155
|
+
railties (>= 5.1)
|
152
156
|
highline (2.0.3)
|
153
157
|
html2haml (2.2.0)
|
154
158
|
erubis (~> 2.7.0)
|
@@ -218,20 +222,20 @@ GEM
|
|
218
222
|
rack-test (1.1.0)
|
219
223
|
rack (>= 1.0, < 3)
|
220
224
|
radius (0.7.5)
|
221
|
-
rails (6.
|
222
|
-
actioncable (= 6.
|
223
|
-
actionmailbox (= 6.
|
224
|
-
actionmailer (= 6.
|
225
|
-
actionpack (= 6.
|
226
|
-
actiontext (= 6.
|
227
|
-
actionview (= 6.
|
228
|
-
activejob (= 6.
|
229
|
-
activemodel (= 6.
|
230
|
-
activerecord (= 6.
|
231
|
-
activestorage (= 6.
|
232
|
-
activesupport (= 6.
|
233
|
-
bundler (>= 1.
|
234
|
-
railties (= 6.
|
225
|
+
rails (6.1.1)
|
226
|
+
actioncable (= 6.1.1)
|
227
|
+
actionmailbox (= 6.1.1)
|
228
|
+
actionmailer (= 6.1.1)
|
229
|
+
actionpack (= 6.1.1)
|
230
|
+
actiontext (= 6.1.1)
|
231
|
+
actionview (= 6.1.1)
|
232
|
+
activejob (= 6.1.1)
|
233
|
+
activemodel (= 6.1.1)
|
234
|
+
activerecord (= 6.1.1)
|
235
|
+
activestorage (= 6.1.1)
|
236
|
+
activesupport (= 6.1.1)
|
237
|
+
bundler (>= 1.15.0)
|
238
|
+
railties (= 6.1.1)
|
235
239
|
sprockets-rails (>= 2.0.0)
|
236
240
|
rails-dom-testing (2.0.3)
|
237
241
|
activesupport (>= 4.2.0)
|
@@ -240,12 +244,12 @@ GEM
|
|
240
244
|
loofah (~> 2.3)
|
241
245
|
rails-observers (0.1.5)
|
242
246
|
activemodel (>= 4.0)
|
243
|
-
railties (6.
|
244
|
-
actionpack (= 6.
|
245
|
-
activesupport (= 6.
|
247
|
+
railties (6.1.1)
|
248
|
+
actionpack (= 6.1.1)
|
249
|
+
activesupport (= 6.1.1)
|
246
250
|
method_source
|
247
251
|
rake (>= 0.8.7)
|
248
|
-
thor (
|
252
|
+
thor (~> 1.0)
|
249
253
|
rake (13.0.3)
|
250
254
|
rdoc (6.3.0)
|
251
255
|
regexp_parser (1.8.2)
|
@@ -304,12 +308,11 @@ GEM
|
|
304
308
|
terrapin (0.6.0)
|
305
309
|
climate_control (>= 0.0.3, < 1.0)
|
306
310
|
thor (1.0.1)
|
307
|
-
thread_safe (0.3.6)
|
308
311
|
tilt (2.0.10)
|
309
312
|
trustygems (0.2.1)
|
310
313
|
rake
|
311
|
-
tzinfo (
|
312
|
-
|
314
|
+
tzinfo (2.0.4)
|
315
|
+
concurrent-ruby (~> 1.0)
|
313
316
|
uglifier (4.2.0)
|
314
317
|
execjs (>= 0.3.0, < 3)
|
315
318
|
uuidtools (2.2.0)
|
data/lib/trusty_cms.rb
CHANGED
data/trusty_cms.gemspec
CHANGED
@@ -29,8 +29,8 @@ a general purpose content managment system--not merely a blogging engine.'
|
|
29
29
|
s.add_dependency 'delocalize', '>= 0.2', '< 2.0'
|
30
30
|
s.add_dependency 'devise'
|
31
31
|
s.add_dependency 'execjs', '~> 2.7'
|
32
|
-
s.add_dependency 'haml'
|
33
|
-
s.add_dependency 'haml-rails'
|
32
|
+
s.add_dependency 'haml'
|
33
|
+
s.add_dependency 'haml-rails'
|
34
34
|
s.add_dependency 'highline', '>= 1.7.8', '< 2.1.0'
|
35
35
|
s.add_dependency 'kraken-io'
|
36
36
|
s.add_dependency 'mini_racer'
|
@@ -0,0 +1,195 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ActionView
|
4
|
+
module Helpers
|
5
|
+
module Tags # :nodoc:
|
6
|
+
class Base # :nodoc:
|
7
|
+
include Helpers::ActiveModelInstanceTag, Helpers::TagHelper, Helpers::FormTagHelper
|
8
|
+
include FormOptionsHelper
|
9
|
+
|
10
|
+
attr_reader :object
|
11
|
+
|
12
|
+
def initialize(object_name, method_name, template_object, options = {})
|
13
|
+
@object_name, @method_name = object_name.to_s.dup, method_name.to_s.dup
|
14
|
+
@template_object = template_object
|
15
|
+
|
16
|
+
@object_name.sub!(/\[\]$/, "") || @object_name.sub!(/\[\]\]$/, "]")
|
17
|
+
@object = retrieve_object(options.delete(:object))
|
18
|
+
@skip_default_ids = options.delete(:skip_default_ids)
|
19
|
+
@allow_method_names_outside_object = options.delete(:allow_method_names_outside_object)
|
20
|
+
@options = options
|
21
|
+
|
22
|
+
if Regexp.last_match
|
23
|
+
@generate_indexed_names = true
|
24
|
+
@auto_index = retrieve_autoindex(Regexp.last_match.pre_match)
|
25
|
+
else
|
26
|
+
@generate_indexed_names = false
|
27
|
+
@auto_index = nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# This is what child classes implement.
|
32
|
+
def render
|
33
|
+
raise NotImplementedError, "Subclasses must implement a render method"
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
def value
|
38
|
+
if @allow_method_names_outside_object
|
39
|
+
object.public_send @method_name if object && object.respond_to?(@method_name)
|
40
|
+
else
|
41
|
+
object.public_send @method_name if object
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def value_before_type_cast
|
46
|
+
unless object.nil?
|
47
|
+
method_before_type_cast = @method_name + "_before_type_cast"
|
48
|
+
|
49
|
+
if value_came_from_user? && object.respond_to?(method_before_type_cast)
|
50
|
+
object.public_send(method_before_type_cast)
|
51
|
+
else
|
52
|
+
value
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def value_came_from_user?
|
58
|
+
method_name = "#{@method_name}_came_from_user?"
|
59
|
+
!object.respond_to?(method_name) || object.public_send(method_name)
|
60
|
+
end
|
61
|
+
|
62
|
+
def retrieve_object(object)
|
63
|
+
if object
|
64
|
+
object
|
65
|
+
elsif @template_object.instance_variable_defined?("@#{@object_name}")
|
66
|
+
@template_object.instance_variable_get("@#{@object_name}")
|
67
|
+
end
|
68
|
+
rescue NameError
|
69
|
+
# As @object_name may contain the nested syntax (item[subobject]) we need to fallback to nil.
|
70
|
+
nil
|
71
|
+
end
|
72
|
+
|
73
|
+
def retrieve_autoindex(pre_match)
|
74
|
+
object = self.object || @template_object.instance_variable_get("@#{pre_match}")
|
75
|
+
if object && object.respond_to?(:to_param)
|
76
|
+
object.to_param
|
77
|
+
else
|
78
|
+
raise ArgumentError, "object[] naming but object param and @object var don't exist or don't respond to to_param: #{object.inspect}"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def add_default_name_and_id_for_value(tag_value, options)
|
83
|
+
if tag_value.nil?
|
84
|
+
add_default_name_and_id(options)
|
85
|
+
else
|
86
|
+
specified_id = options["id"]
|
87
|
+
add_default_name_and_id(options)
|
88
|
+
|
89
|
+
if specified_id.blank? && options["id"].present?
|
90
|
+
options["id"] += "_#{sanitized_value(tag_value)}"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def add_default_name_and_id(options)
|
96
|
+
index = name_and_id_index(options)
|
97
|
+
options["name"] = options.fetch("name") { tag_name(options["multiple"], index) }
|
98
|
+
|
99
|
+
if generate_ids?
|
100
|
+
options["id"] = options.fetch("id") { tag_id(index) }
|
101
|
+
if namespace = options.delete("namespace")
|
102
|
+
options["id"] = options["id"] ? "#{namespace}_#{options['id']}" : namespace
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def tag_name(multiple = false, index = nil)
|
108
|
+
# a little duplication to construct less strings
|
109
|
+
case
|
110
|
+
when @object_name.empty?
|
111
|
+
"#{sanitized_method_name}#{multiple ? "[]" : ""}"
|
112
|
+
when index
|
113
|
+
"#{@object_name}[#{index}][#{sanitized_method_name}]#{multiple ? "[]" : ""}"
|
114
|
+
else
|
115
|
+
"#{@object_name}[#{sanitized_method_name}]#{multiple ? "[]" : ""}"
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def tag_id(index = nil)
|
120
|
+
# a little duplication to construct less strings
|
121
|
+
case
|
122
|
+
when @object_name.empty?
|
123
|
+
sanitized_method_name.dup
|
124
|
+
when index
|
125
|
+
"#{sanitized_object_name}_#{index}_#{sanitized_method_name}"
|
126
|
+
else
|
127
|
+
"#{sanitized_object_name}_#{sanitized_method_name}"
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
def sanitized_object_name
|
132
|
+
@sanitized_object_name ||= @object_name.gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_").sub(/_$/, "")
|
133
|
+
end
|
134
|
+
|
135
|
+
def sanitized_method_name
|
136
|
+
@sanitized_method_name ||= @method_name.sub(/\?$/, "")
|
137
|
+
end
|
138
|
+
|
139
|
+
def sanitized_value(value)
|
140
|
+
value.to_s.gsub(/[\s\.]/, "_").gsub(/[^-[[:word:]]]/, "").downcase
|
141
|
+
end
|
142
|
+
|
143
|
+
def select_content_tag(option_tags, options, html_options)
|
144
|
+
html_options = html_options.stringify_keys
|
145
|
+
add_default_name_and_id(html_options)
|
146
|
+
|
147
|
+
if placeholder_required?(html_options)
|
148
|
+
raise ArgumentError, "include_blank cannot be false for a required field." if options[:include_blank] == false
|
149
|
+
options[:include_blank] ||= true unless options[:prompt]
|
150
|
+
end
|
151
|
+
|
152
|
+
value = options.fetch(:selected) { value() }
|
153
|
+
select = content_tag("select", add_options(option_tags, options, value), html_options)
|
154
|
+
|
155
|
+
if html_options["multiple"] && options.fetch(:include_hidden, true)
|
156
|
+
tag("input", disabled: html_options["disabled"], name: html_options["name"], type: "hidden", value: "") + select
|
157
|
+
else
|
158
|
+
select
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
def placeholder_required?(html_options)
|
163
|
+
# See https://html.spec.whatwg.org/multipage/forms.html#attr-select-required
|
164
|
+
html_options["required"] && !html_options["multiple"] && html_options.fetch("size", 1).to_i == 1
|
165
|
+
end
|
166
|
+
|
167
|
+
def add_options(option_tags, options, value = nil)
|
168
|
+
if options[:include_blank]
|
169
|
+
option_tags = tag_builder.content_tag_string("option", options[:include_blank].kind_of?(String) ? options[:include_blank] : nil, value: "") + "\n" + option_tags
|
170
|
+
end
|
171
|
+
if value.blank? && options[:prompt]
|
172
|
+
tag_options = { value: "" }.tap do |prompt_opts|
|
173
|
+
prompt_opts[:disabled] = true if options[:disabled] == ""
|
174
|
+
prompt_opts[:selected] = true if options[:selected] == ""
|
175
|
+
end
|
176
|
+
option_tags = tag_builder.content_tag_string("option", prompt_text(options[:prompt]), tag_options) + "\n" + option_tags
|
177
|
+
end
|
178
|
+
option_tags
|
179
|
+
end
|
180
|
+
|
181
|
+
def name_and_id_index(options)
|
182
|
+
if options.key?("index")
|
183
|
+
options.delete("index") || ""
|
184
|
+
elsif @generate_indexed_names
|
185
|
+
@auto_index || ""
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
def generate_ids?
|
190
|
+
!@skip_default_ids
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|
data/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.3.4/lib/action_view/helpers/tags/check_box.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "action_view/helpers/tags/checkable"
|
4
|
+
|
5
|
+
module ActionView
|
6
|
+
module Helpers
|
7
|
+
module Tags # :nodoc:
|
8
|
+
class CheckBox < Base #:nodoc:
|
9
|
+
include Checkable
|
10
|
+
|
11
|
+
def initialize(object_name, method_name, template_object, checked_value, unchecked_value, options)
|
12
|
+
@checked_value = checked_value
|
13
|
+
@unchecked_value = unchecked_value
|
14
|
+
super(object_name, method_name, template_object, options)
|
15
|
+
end
|
16
|
+
|
17
|
+
def render
|
18
|
+
options = @options.stringify_keys
|
19
|
+
options["type"] = "checkbox"
|
20
|
+
options["value"] = @checked_value
|
21
|
+
options["checked"] = "checked" if input_checked?(options)
|
22
|
+
|
23
|
+
if options["multiple"]
|
24
|
+
add_default_name_and_id_for_value(@checked_value, options)
|
25
|
+
options.delete("multiple")
|
26
|
+
else
|
27
|
+
add_default_name_and_id(options)
|
28
|
+
end
|
29
|
+
|
30
|
+
include_hidden = options.delete("include_hidden") { true }
|
31
|
+
checkbox = tag("input", options)
|
32
|
+
|
33
|
+
if include_hidden
|
34
|
+
hidden = hidden_field_for_checkbox(options)
|
35
|
+
hidden + checkbox
|
36
|
+
else
|
37
|
+
checkbox
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
def checked?(value)
|
43
|
+
case value
|
44
|
+
when TrueClass, FalseClass
|
45
|
+
value == !!@checked_value
|
46
|
+
when NilClass
|
47
|
+
false
|
48
|
+
when String
|
49
|
+
value == @checked_value
|
50
|
+
else
|
51
|
+
if value.respond_to?(:include?)
|
52
|
+
value.include?(@checked_value)
|
53
|
+
else
|
54
|
+
value.to_i == @checked_value.to_i
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def hidden_field_for_checkbox(options)
|
60
|
+
@unchecked_value ? tag("input", options.slice("name", "disabled", "form").merge!("type" => "hidden", "value" => @unchecked_value)) : "".html_safe
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|