ack_rails_admin_settings 1.2.2.1 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/Gemfile.lock +79 -79
- data/README.md +2 -0
- data/app/assets/javascripts/rails_admin_settings/array.coffee +43 -0
- data/app/assets/javascripts/rails_admin_settings/hash.coffee +32 -0
- data/app/assets/stylesheets/rails_admin_settings/hash.sass +5 -0
- data/app/models/rails_admin_settings/setting.rb +6 -6
- data/app/views/rails_admin/main/_setting_value.html.haml +29 -0
- data/app/views/rails_admin/main/rails_admin_settings/array/_element.html.haml +8 -0
- data/app/views/rails_admin/main/rails_admin_settings/hash/_element.html.haml +6 -0
- data/config/locales/en.yml +2 -1
- data/config/locales/ru.yml +2 -1
- data/lib/rails_admin_settings/engine.rb +7 -0
- data/lib/rails_admin_settings/kinds.rb +4 -1
- data/lib/rails_admin_settings/mongoid.rb +2 -0
- data/lib/rails_admin_settings/namespaced.rb +11 -0
- data/lib/rails_admin_settings/processing.rb +28 -1
- data/lib/rails_admin_settings/rails_admin_config.rb +31 -1
- data/lib/rails_admin_settings/version.rb +1 -1
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6663058ce20b74441ee8340c97500cc9908cc091
|
4
|
+
data.tar.gz: 83bcf698383dbdc75b3f2d348ee51ec80aa1bea6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6afa909a56d795a158f0d4a2f36eb1871892a4aef293803396cd362938cf9fba86c501327c05670cc1e545d0bf563914c513849da87aa5ddbbc3bef5e2a5eb60
|
7
|
+
data.tar.gz: 1bb12aa2f4ba502387039761ad4321cb8919825f99d49bbaad7466b44a241686b333053c390ce8af8e168c57ccf63eac1bc113d349d1f587c48b5e5c6246638f
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,92 +1,92 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ack_rails_admin_settings (1.2.
|
4
|
+
ack_rails_admin_settings (1.2.3)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
actioncable (5.
|
10
|
-
actionpack (= 5.
|
11
|
-
nio4r (~>
|
9
|
+
actioncable (5.1.3)
|
10
|
+
actionpack (= 5.1.3)
|
11
|
+
nio4r (~> 2.0)
|
12
12
|
websocket-driver (~> 0.6.1)
|
13
|
-
actionmailer (5.
|
14
|
-
actionpack (= 5.
|
15
|
-
actionview (= 5.
|
16
|
-
activejob (= 5.
|
13
|
+
actionmailer (5.1.3)
|
14
|
+
actionpack (= 5.1.3)
|
15
|
+
actionview (= 5.1.3)
|
16
|
+
activejob (= 5.1.3)
|
17
17
|
mail (~> 2.5, >= 2.5.4)
|
18
18
|
rails-dom-testing (~> 2.0)
|
19
|
-
actionpack (5.
|
20
|
-
actionview (= 5.
|
21
|
-
activesupport (= 5.
|
19
|
+
actionpack (5.1.3)
|
20
|
+
actionview (= 5.1.3)
|
21
|
+
activesupport (= 5.1.3)
|
22
22
|
rack (~> 2.0)
|
23
23
|
rack-test (~> 0.6.3)
|
24
24
|
rails-dom-testing (~> 2.0)
|
25
25
|
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
26
|
-
actionview (5.
|
27
|
-
activesupport (= 5.
|
26
|
+
actionview (5.1.3)
|
27
|
+
activesupport (= 5.1.3)
|
28
28
|
builder (~> 3.1)
|
29
|
-
|
29
|
+
erubi (~> 1.4)
|
30
30
|
rails-dom-testing (~> 2.0)
|
31
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.
|
32
|
-
activejob (5.
|
33
|
-
activesupport (= 5.
|
31
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
32
|
+
activejob (5.1.3)
|
33
|
+
activesupport (= 5.1.3)
|
34
34
|
globalid (>= 0.3.6)
|
35
|
-
activemodel (5.
|
36
|
-
activesupport (= 5.
|
37
|
-
activerecord (5.
|
38
|
-
activemodel (= 5.
|
39
|
-
activesupport (= 5.
|
40
|
-
arel (~>
|
41
|
-
activesupport (5.
|
35
|
+
activemodel (5.1.3)
|
36
|
+
activesupport (= 5.1.3)
|
37
|
+
activerecord (5.1.3)
|
38
|
+
activemodel (= 5.1.3)
|
39
|
+
activesupport (= 5.1.3)
|
40
|
+
arel (~> 8.0)
|
41
|
+
activesupport (5.1.3)
|
42
42
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
43
43
|
i18n (~> 0.7)
|
44
44
|
minitest (~> 5.1)
|
45
45
|
tzinfo (~> 1.1)
|
46
|
-
addressable (2.5.
|
46
|
+
addressable (2.5.1)
|
47
47
|
public_suffix (~> 2.0, >= 2.0.2)
|
48
|
-
arel (
|
49
|
-
bson (3.2.
|
48
|
+
arel (8.0.0)
|
49
|
+
bson (3.2.7)
|
50
50
|
builder (3.2.3)
|
51
51
|
carrierwave (0.9.0)
|
52
52
|
activemodel (>= 3.2.0)
|
53
53
|
activesupport (>= 3.2.0)
|
54
54
|
json (>= 1.7)
|
55
|
-
climate_control (0.
|
55
|
+
climate_control (0.2.0)
|
56
56
|
cocaine (0.5.8)
|
57
57
|
climate_control (>= 0.0.3, < 1.0)
|
58
58
|
coderay (1.1.1)
|
59
|
-
concurrent-ruby (1.0.
|
59
|
+
concurrent-ruby (1.0.5)
|
60
60
|
connection_pool (2.2.1)
|
61
61
|
crass (1.0.2)
|
62
|
-
database_cleaner (1.
|
62
|
+
database_cleaner (1.6.1)
|
63
63
|
diff-lcs (1.3)
|
64
64
|
docile (1.1.5)
|
65
|
-
|
65
|
+
erubi (1.6.1)
|
66
66
|
factory_girl (4.8.0)
|
67
67
|
activesupport (>= 3.0.0)
|
68
|
-
geocoder (1.4.
|
68
|
+
geocoder (1.4.4)
|
69
69
|
glebtv-carrierwave-mongoid (0.7.0)
|
70
70
|
carrierwave (~> 0.9.0)
|
71
71
|
mongoid (~> 4.0.0.alpha1)
|
72
72
|
glebtv-mongoid-paperclip (0.5.0)
|
73
73
|
mongoid (>= 3.0, < 6.1)
|
74
74
|
paperclip (~> 5.1.0)
|
75
|
-
globalid (0.
|
76
|
-
activesupport (>= 4.
|
77
|
-
i18n (0.8.
|
78
|
-
json (2.0
|
75
|
+
globalid (0.4.0)
|
76
|
+
activesupport (>= 4.2.0)
|
77
|
+
i18n (0.8.6)
|
78
|
+
json (2.1.0)
|
79
79
|
loofah (2.0.3)
|
80
80
|
nokogiri (>= 1.5.9)
|
81
|
-
mail (2.6.
|
81
|
+
mail (2.6.6)
|
82
82
|
mime-types (>= 1.16, < 4)
|
83
83
|
method_source (0.8.2)
|
84
84
|
mime-types (3.1)
|
85
85
|
mime-types-data (~> 3.2015)
|
86
86
|
mime-types-data (3.2016.0521)
|
87
87
|
mimemagic (0.3.2)
|
88
|
-
mini_portile2 (2.
|
89
|
-
minitest (5.10.
|
88
|
+
mini_portile2 (2.2.0)
|
89
|
+
minitest (5.10.3)
|
90
90
|
mongoid (4.0.0.beta2)
|
91
91
|
activemodel (>= 4.0.0)
|
92
92
|
moped (~> 2.0.beta6)
|
@@ -100,13 +100,13 @@ GEM
|
|
100
100
|
bson (~> 3.0)
|
101
101
|
connection_pool (~> 2.0)
|
102
102
|
optionable (~> 0.2.0)
|
103
|
-
nio4r (
|
104
|
-
nokogiri (1.
|
105
|
-
mini_portile2 (~> 2.
|
106
|
-
nokogumbo (1.4.
|
103
|
+
nio4r (2.1.0)
|
104
|
+
nokogiri (1.8.0)
|
105
|
+
mini_portile2 (~> 2.2.0)
|
106
|
+
nokogumbo (1.4.13)
|
107
107
|
nokogiri
|
108
108
|
optionable (0.2.0)
|
109
|
-
origin (2.3.
|
109
|
+
origin (2.3.1)
|
110
110
|
paperclip (5.1.0)
|
111
111
|
activemodel (>= 4.2.0)
|
112
112
|
activesupport (>= 4.2.0)
|
@@ -118,57 +118,57 @@ GEM
|
|
118
118
|
method_source (~> 0.8.1)
|
119
119
|
slop (~> 3.4)
|
120
120
|
public_suffix (2.0.5)
|
121
|
-
rack (2.0.
|
121
|
+
rack (2.0.3)
|
122
122
|
rack-test (0.6.3)
|
123
123
|
rack (>= 1.0)
|
124
|
-
rails (5.
|
125
|
-
actioncable (= 5.
|
126
|
-
actionmailer (= 5.
|
127
|
-
actionpack (= 5.
|
128
|
-
actionview (= 5.
|
129
|
-
activejob (= 5.
|
130
|
-
activemodel (= 5.
|
131
|
-
activerecord (= 5.
|
132
|
-
activesupport (= 5.
|
133
|
-
bundler (>= 1.3.0
|
134
|
-
railties (= 5.
|
124
|
+
rails (5.1.3)
|
125
|
+
actioncable (= 5.1.3)
|
126
|
+
actionmailer (= 5.1.3)
|
127
|
+
actionpack (= 5.1.3)
|
128
|
+
actionview (= 5.1.3)
|
129
|
+
activejob (= 5.1.3)
|
130
|
+
activemodel (= 5.1.3)
|
131
|
+
activerecord (= 5.1.3)
|
132
|
+
activesupport (= 5.1.3)
|
133
|
+
bundler (>= 1.3.0)
|
134
|
+
railties (= 5.1.3)
|
135
135
|
sprockets-rails (>= 2.0.0)
|
136
|
-
rails-dom-testing (2.0.
|
137
|
-
activesupport (>= 4.2.0
|
138
|
-
nokogiri (
|
136
|
+
rails-dom-testing (2.0.3)
|
137
|
+
activesupport (>= 4.2.0)
|
138
|
+
nokogiri (>= 1.6)
|
139
139
|
rails-html-sanitizer (1.0.3)
|
140
140
|
loofah (~> 2.0)
|
141
|
-
railties (5.
|
142
|
-
actionpack (= 5.
|
143
|
-
activesupport (= 5.
|
141
|
+
railties (5.1.3)
|
142
|
+
actionpack (= 5.1.3)
|
143
|
+
activesupport (= 5.1.3)
|
144
144
|
method_source
|
145
145
|
rake (>= 0.8.7)
|
146
146
|
thor (>= 0.18.1, < 2.0)
|
147
147
|
rake (12.0.0)
|
148
|
-
rspec (3.
|
149
|
-
rspec-core (~> 3.
|
150
|
-
rspec-expectations (~> 3.
|
151
|
-
rspec-mocks (~> 3.
|
152
|
-
rspec-core (3.
|
153
|
-
rspec-support (~> 3.
|
154
|
-
rspec-expectations (3.
|
148
|
+
rspec (3.6.0)
|
149
|
+
rspec-core (~> 3.6.0)
|
150
|
+
rspec-expectations (~> 3.6.0)
|
151
|
+
rspec-mocks (~> 3.6.0)
|
152
|
+
rspec-core (3.6.0)
|
153
|
+
rspec-support (~> 3.6.0)
|
154
|
+
rspec-expectations (3.6.0)
|
155
155
|
diff-lcs (>= 1.2.0, < 2.0)
|
156
|
-
rspec-support (~> 3.
|
157
|
-
rspec-mocks (3.
|
156
|
+
rspec-support (~> 3.6.0)
|
157
|
+
rspec-mocks (3.6.0)
|
158
158
|
diff-lcs (>= 1.2.0, < 2.0)
|
159
|
-
rspec-support (~> 3.
|
160
|
-
rspec-support (3.
|
161
|
-
russian_phone (0.
|
159
|
+
rspec-support (~> 3.6.0)
|
160
|
+
rspec-support (3.6.0)
|
161
|
+
russian_phone (0.6.0)
|
162
162
|
safe_yaml (1.0.4)
|
163
|
-
sanitize (4.
|
163
|
+
sanitize (4.5.0)
|
164
164
|
crass (~> 1.0.2)
|
165
165
|
nokogiri (>= 1.4.4)
|
166
166
|
nokogumbo (~> 1.4.1)
|
167
|
-
simplecov (0.
|
167
|
+
simplecov (0.14.1)
|
168
168
|
docile (~> 1.1.0)
|
169
169
|
json (>= 1.8, < 3)
|
170
170
|
simplecov-html (~> 0.10.0)
|
171
|
-
simplecov-html (0.10.
|
171
|
+
simplecov-html (0.10.1)
|
172
172
|
slop (3.6.0)
|
173
173
|
sprockets (3.7.1)
|
174
174
|
concurrent-ruby (~> 1.0)
|
@@ -178,8 +178,8 @@ GEM
|
|
178
178
|
activesupport (>= 4.0)
|
179
179
|
sprockets (>= 3.0.0)
|
180
180
|
thor (0.19.4)
|
181
|
-
thread_safe (0.3.
|
182
|
-
tzinfo (1.2.
|
181
|
+
thread_safe (0.3.6)
|
182
|
+
tzinfo (1.2.3)
|
183
183
|
thread_safe (~> 0.1)
|
184
184
|
validates_email_format_of (1.6.3)
|
185
185
|
i18n
|
data/README.md
CHANGED
@@ -0,0 +1,43 @@
|
|
1
|
+
$(document).on "click", "#edit_rails_admin_settings_setting .raw_array_field .rails_admin_settings_array_element_add_link", (e)->
|
2
|
+
e.preventDefault()
|
3
|
+
link = $(e.currentTarget)
|
4
|
+
link_parent = link.parent()
|
5
|
+
link_parent.before(link.data('template'))
|
6
|
+
link_parent.prev().find('input:first').focus().select().trigger('change')
|
7
|
+
return false
|
8
|
+
|
9
|
+
|
10
|
+
$(document).on 'click', '#edit_rails_admin_settings_setting .raw_array_field .rails_admin_settings_array_element_delete_link', (e)->
|
11
|
+
e.preventDefault()
|
12
|
+
hidden_field = $(e.currentTarget).closest(".raw_array_field").find("[type='hidden']")
|
13
|
+
$(e.currentTarget).parent().remove()
|
14
|
+
hidden_field.trigger('change')
|
15
|
+
return false
|
16
|
+
|
17
|
+
|
18
|
+
$(document).on 'click', '#edit_rails_admin_settings_setting .raw_array_field .rails_admin_settings_array_element_move_link', (e)->
|
19
|
+
e.preventDefault()
|
20
|
+
link = $(e.currentTarget)
|
21
|
+
array_element_block = link.parent()
|
22
|
+
if link.hasClass("up")
|
23
|
+
prev = array_element_block.prev(".rails_admin_settings_array_element_block")
|
24
|
+
array_element_block.insertBefore(prev) if prev.length > 0
|
25
|
+
if link.hasClass("down")
|
26
|
+
next = array_element_block.next(".rails_admin_settings_array_element_block")
|
27
|
+
array_element_block.insertAfter(next) if next.length > 0
|
28
|
+
return false
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
$(document).on "change", "#edit_rails_admin_settings_setting .raw_array_field :input", (e)->
|
33
|
+
field_block = $(e.currentTarget).closest(".raw_array_field")
|
34
|
+
hidden_field = field_block.find("[type='hidden']")
|
35
|
+
if field_block.find(":input:not([type='hidden'])").serializeArray().length == 0
|
36
|
+
hidden_field.prop('name', hidden_field.data('name')) if hidden_field.data('name')
|
37
|
+
else
|
38
|
+
hidden_field.data('name', hidden_field.prop('name')) if hidden_field.prop('name')
|
39
|
+
hidden_field.prop('name', '')
|
40
|
+
|
41
|
+
|
42
|
+
$(document).on "rails_admin.dom_ready", (e)->
|
43
|
+
$("#edit_rails_admin_settings_setting .raw_array_field").find(":input[type='hidden']").trigger('change')
|
@@ -0,0 +1,32 @@
|
|
1
|
+
$(document).on "click", "#edit_rails_admin_settings_setting .raw_hash_field .rails_admin_settings_hash_element_add_link", (e)->
|
2
|
+
e.preventDefault()
|
3
|
+
link = $(e.currentTarget)
|
4
|
+
link_parent = link.parent()
|
5
|
+
link_parent.before(link.data('template'))
|
6
|
+
$("#edit_rails_admin_settings_setting .raw_hash_field .rails_admin_settings_hash_element_block input:last").blur()
|
7
|
+
return false
|
8
|
+
|
9
|
+
|
10
|
+
$(document).on 'click', '#edit_rails_admin_settings_setting .raw_hash_field .rails_admin_settings_hash_element_delete_link', (e)->
|
11
|
+
e.preventDefault()
|
12
|
+
$(e.currentTarget).parent().remove()
|
13
|
+
return false
|
14
|
+
|
15
|
+
$(document).on 'blur', '#edit_rails_admin_settings_setting .raw_hash_field .rails_admin_settings_hash_element_key_field', (e)->
|
16
|
+
e.preventDefault()
|
17
|
+
input = $(e.currentTarget).siblings('input')
|
18
|
+
old_id = input.prop('id')
|
19
|
+
old_name = input.prop('name')
|
20
|
+
new_name = e.currentTarget.value
|
21
|
+
reg_for_id = /\[[^\[\]]+\]$/i
|
22
|
+
reg_for_name = /\[[^\[\]]+\]\]$/i
|
23
|
+
input.prop('id', old_id.replace(reg_for_id, "[" + new_name + "]"))
|
24
|
+
input.prop('name', old_name.replace(reg_for_name, "[" + new_name + "]]"))
|
25
|
+
return false
|
26
|
+
|
27
|
+
|
28
|
+
$(document).on 'blur', '#edit_rails_admin_settings_setting .raw_hash_field .rails_admin_settings_hash_element_block input', (e)->
|
29
|
+
fields_block = $(e.currentTarget).closest(".controls")
|
30
|
+
fields_block.find('.value_field').each ->
|
31
|
+
$(this).parent().removeClass('duplicate')
|
32
|
+
fields_block.find('.value_field').not($(this)).filter("[name='" + this.name + "']").parent().addClass('duplicate')
|
@@ -71,12 +71,12 @@ module RailsAdminSettings
|
|
71
71
|
# t = {_all: 'Все'}
|
72
72
|
if ::Settings.table_exists?
|
73
73
|
::RailsAdminSettings::Setting.pluck(:ns).uniq.each do |c|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
74
|
+
s = "ns_#{c.gsub('-', '_')}".to_sym
|
75
|
+
scope s, -> { where(ns: c) }
|
76
|
+
# t[s] = c
|
77
|
+
end
|
78
|
+
end
|
79
|
+
# I18n.backend.store_translations(:ru, {admin: {scopes: {'rails_admin_settings/setting': t}}})
|
80
80
|
|
81
81
|
if Object.const_defined?('RailsAdmin')
|
82
82
|
include RailsAdminSettings::RailsAdminConfig
|
@@ -102,3 +102,32 @@
|
|
102
102
|
}
|
103
103
|
|
104
104
|
= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: 'codemirror', options: js_data.to_json }).reverse_merge({ value: field.form_value })
|
105
|
+
|
106
|
+
|
107
|
+
- elsif @object.type == 'array'
|
108
|
+
= javascript_include_tag 'rails_admin_settings/array'
|
109
|
+
|
110
|
+
= form.hidden_field field.method_name, value: "", multiple: true
|
111
|
+
- (field.value || []).each do |val|
|
112
|
+
= render partial: 'rails_admin/main/rails_admin_settings/array/element', locals: {form: form, field: field, val: val}
|
113
|
+
|
114
|
+
- _template = capture do
|
115
|
+
= render partial: 'rails_admin/main/rails_admin_settings/array/element', locals: {form: form, field: field, val: ""}
|
116
|
+
%p
|
117
|
+
= link_to "добавить", "#", class: "rails_admin_settings_array_element_add_link", data: {template: _template.html_safe}
|
118
|
+
|
119
|
+
|
120
|
+
- elsif @object.type == 'hash'
|
121
|
+
= javascript_include_tag 'rails_admin_settings/hash'
|
122
|
+
= stylesheet_link_tag 'rails_admin_settings/hash'
|
123
|
+
|
124
|
+
- (field.value || {}).each_pair do |name, val|
|
125
|
+
= render partial: 'rails_admin/main/rails_admin_settings/hash/element', locals: {form: form, field: field, name: name, val: val}
|
126
|
+
|
127
|
+
- _template = capture do
|
128
|
+
- name, val = "new", ""
|
129
|
+
= render partial: 'rails_admin/main/rails_admin_settings/hash/element', locals: {form: form, field: field, name: name, val: val}
|
130
|
+
%p
|
131
|
+
= link_to "добавить", "#", class: "rails_admin_settings_hash_element_add_link", data: {template: _template.html_safe}
|
132
|
+
/ = " | "
|
133
|
+
/ = link_to "показать дубликаты", "#", class: "rails_admin_settings_hash_element_duplicate_trigger", data: {text: "скрыть дубликаты"}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
.rails_admin_settings_array_element_block
|
2
|
+
= form.text_field field.method_name, value: val, multiple: true
|
3
|
+
%span= " "
|
4
|
+
= link_to "(удалить)", "#", class: "rails_admin_settings_array_element_delete_link", tabindex: -1
|
5
|
+
%span= " "
|
6
|
+
= link_to "/\\", "#", class: "rails_admin_settings_array_element_move_link array_element_move_up_link up", tabindex: -1
|
7
|
+
%span= " "
|
8
|
+
= link_to "\\/", "#", class: "rails_admin_settings_array_element_move_link array_element_move_down_link down", tabindex: -1
|
@@ -0,0 +1,6 @@
|
|
1
|
+
.rails_admin_settings_hash_element_block
|
2
|
+
= form.text_field nil, value: name, class: 'rails_admin_settings_hash_element_key_field', name: ""
|
3
|
+
%span= ": "
|
4
|
+
= form.text_field "#{field.method_name}[#{name}]", value: val, class: 'value_field'
|
5
|
+
%span= " #{name} "
|
6
|
+
= link_to "(удалить)", "#", class: "rails_admin_settings_hash_element_delete_link", tabindex: -1
|
data/config/locales/en.yml
CHANGED
data/config/locales/ru.yml
CHANGED
@@ -4,6 +4,13 @@ module RailsAdminSettings
|
|
4
4
|
require File.expand_path('../tasks', __FILE__)
|
5
5
|
end
|
6
6
|
|
7
|
+
|
8
|
+
initializer "RailsAdminSettings precompile hook", group: :all do |app|
|
9
|
+
app.config.assets.precompile += %w(rails_admin_settings/array.js)
|
10
|
+
app.config.assets.precompile += %w(rails_admin_settings/hash.js rails_admin_settings/hash.css)
|
11
|
+
end
|
12
|
+
|
13
|
+
|
7
14
|
initializer 'RailsAdminSettings Install after_action' do |app|
|
8
15
|
require File.dirname(__FILE__) + '/../../app/models/rails_admin_settings/setting.rb'
|
9
16
|
|
@@ -11,6 +11,8 @@ module RailsAdminSettings
|
|
11
11
|
field :ns, type: String, default: 'main'
|
12
12
|
field :key, type: String
|
13
13
|
field :raw, type: String
|
14
|
+
field :raw_array, type: Array
|
15
|
+
field :raw_hash, type: Hash
|
14
16
|
field :label, type: String
|
15
17
|
field :loadable, type: Boolean, default: true
|
16
18
|
scope :loadable, -> {
|
@@ -239,10 +239,19 @@ module RailsAdminSettings
|
|
239
239
|
end
|
240
240
|
|
241
241
|
def write_to_database(key, options)
|
242
|
+
options[:kind] = options[:kind].to_s if options[:kind]
|
242
243
|
is_file = !options[:kind].nil? && (options[:kind] == 'image' || options[:kind] == 'file')
|
244
|
+
is_array = !options[:kind].nil? && (options[:kind] == 'array')
|
245
|
+
is_hash = !options[:kind].nil? && (options[:kind] == 'hash')
|
243
246
|
if is_file
|
244
247
|
options[:raw] = ''
|
245
248
|
file = options[:value]
|
249
|
+
elsif is_array
|
250
|
+
options[:raw] = ''
|
251
|
+
options[:raw_array] = options[:value] if options[:value]
|
252
|
+
elsif is_hash
|
253
|
+
options[:raw] = ''
|
254
|
+
options[:raw_hash] = options[:value] if options[:value]
|
246
255
|
else
|
247
256
|
options[:raw] = options[:value] if options[:value]
|
248
257
|
end
|
@@ -280,6 +289,8 @@ module RailsAdminSettings
|
|
280
289
|
opts = options.dup
|
281
290
|
if options[:overwrite] == false && !@settings[key].value.blank?
|
282
291
|
opts.delete(:raw)
|
292
|
+
opts.delete(:raw_array)
|
293
|
+
opts.delete(:raw_hash)
|
283
294
|
opts.delete(:value)
|
284
295
|
opts.delete(:enabled)
|
285
296
|
end
|
@@ -24,6 +24,13 @@ module RailsAdminSettings
|
|
24
24
|
alias_method :upload_type?, :upload_kind?
|
25
25
|
alias_method :html_type?, :html_kind?
|
26
26
|
|
27
|
+
def array_kind?
|
28
|
+
['array'].include? kind
|
29
|
+
end
|
30
|
+
def hash_kind?
|
31
|
+
['hash'].include? kind
|
32
|
+
end
|
33
|
+
|
27
34
|
def value
|
28
35
|
if upload_kind?
|
29
36
|
if file_kind?
|
@@ -31,6 +38,10 @@ module RailsAdminSettings
|
|
31
38
|
else
|
32
39
|
nil
|
33
40
|
end
|
41
|
+
elsif array_kind?
|
42
|
+
raw_array
|
43
|
+
elsif hash_kind?
|
44
|
+
raw_hash
|
34
45
|
elsif raw.blank? || disabled?
|
35
46
|
default_value
|
36
47
|
else
|
@@ -41,6 +52,10 @@ module RailsAdminSettings
|
|
41
52
|
def blank?
|
42
53
|
if file_kind?
|
43
54
|
file.url.nil?
|
55
|
+
elsif array_kind?
|
56
|
+
raw_array.blank?
|
57
|
+
elsif hash_kind?
|
58
|
+
raw_hash.blank?
|
44
59
|
elsif raw.blank? || disabled?
|
45
60
|
true
|
46
61
|
else
|
@@ -51,6 +66,10 @@ module RailsAdminSettings
|
|
51
66
|
def to_s
|
52
67
|
if yaml_kind? || phone_kind? || integer_kind?
|
53
68
|
raw
|
69
|
+
elsif array_kind?
|
70
|
+
raw_array.join(", ")
|
71
|
+
elsif hash_kind?
|
72
|
+
raw_hash.to_json
|
54
73
|
else
|
55
74
|
value
|
56
75
|
end
|
@@ -82,13 +101,17 @@ module RailsAdminSettings
|
|
82
101
|
end
|
83
102
|
elsif phones_kind?
|
84
103
|
[]
|
104
|
+
elsif array_kind?
|
105
|
+
[]
|
106
|
+
elsif hash_kind?
|
107
|
+
{}
|
85
108
|
else
|
86
109
|
nil
|
87
110
|
end
|
88
111
|
end
|
89
112
|
|
90
113
|
def default_serializable_value
|
91
|
-
if phones_kind?
|
114
|
+
if phones_kind? or array_kind? or hash_kind?
|
92
115
|
''
|
93
116
|
elsif boolean_type?
|
94
117
|
'false'
|
@@ -146,6 +169,10 @@ module RailsAdminSettings
|
|
146
169
|
load_phones
|
147
170
|
elsif file_kind?
|
148
171
|
file.url
|
172
|
+
elsif array_kind?
|
173
|
+
raw_array
|
174
|
+
elsif hash_kind?
|
175
|
+
raw_hash
|
149
176
|
else
|
150
177
|
puts "[rails_admin_settings] Unknown field kind: #{kind}".freeze
|
151
178
|
nil
|
@@ -41,6 +41,18 @@ module RailsAdminSettings
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end
|
44
|
+
field :raw_array do
|
45
|
+
searchable true
|
46
|
+
pretty_value do
|
47
|
+
bindings[:object].raw_array.join("<br>").html_safe
|
48
|
+
end
|
49
|
+
end
|
50
|
+
field :raw_hash do
|
51
|
+
searchable true
|
52
|
+
pretty_value do
|
53
|
+
"<pre>#{JSON.pretty_generate(bindings[:object].raw_hash)}</pre>".html_safe
|
54
|
+
end
|
55
|
+
end
|
44
56
|
field :cache_keys_str, :text do
|
45
57
|
searchable true
|
46
58
|
end
|
@@ -72,7 +84,25 @@ module RailsAdminSettings
|
|
72
84
|
field :raw do
|
73
85
|
partial "setting_value".freeze
|
74
86
|
visible do
|
75
|
-
!bindings[:object].upload_kind?
|
87
|
+
!bindings[:object].upload_kind? and !bindings[:object].array_kind? and !bindings[:object].hash_kind?
|
88
|
+
end
|
89
|
+
end
|
90
|
+
field :raw_array do
|
91
|
+
partial "setting_value".freeze
|
92
|
+
pretty_value do
|
93
|
+
bindings[:object].raw_array.map(&:to_s).join("<br>").html_safe
|
94
|
+
end
|
95
|
+
visible do
|
96
|
+
bindings[:object].array_kind?
|
97
|
+
end
|
98
|
+
end
|
99
|
+
field :raw_hash do
|
100
|
+
partial "setting_value".freeze
|
101
|
+
pretty_value do
|
102
|
+
"<pre>#{JSON.pretty_generate(bindings[:object].raw_hash)}</pre>".html_safe
|
103
|
+
end
|
104
|
+
visible do
|
105
|
+
bindings[:object].hash_kind?
|
76
106
|
end
|
77
107
|
end
|
78
108
|
if Settings.file_uploads_supported
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ack_rails_admin_settings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Kiseliev
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-08-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongoid
|
@@ -288,8 +288,13 @@ files:
|
|
288
288
|
- LICENSE.txt
|
289
289
|
- README.md
|
290
290
|
- Rakefile
|
291
|
+
- app/assets/javascripts/rails_admin_settings/array.coffee
|
292
|
+
- app/assets/javascripts/rails_admin_settings/hash.coffee
|
293
|
+
- app/assets/stylesheets/rails_admin_settings/hash.sass
|
291
294
|
- app/models/rails_admin_settings/setting.rb
|
292
295
|
- app/views/rails_admin/main/_setting_value.html.haml
|
296
|
+
- app/views/rails_admin/main/rails_admin_settings/array/_element.html.haml
|
297
|
+
- app/views/rails_admin/main/rails_admin_settings/hash/_element.html.haml
|
293
298
|
- config/locales/en.yml
|
294
299
|
- config/locales/ru.yml
|
295
300
|
- gemfiles/mongoid-3.1.gemfile
|