rails_admin_settings 0.3.4 → 0.3.6
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/README.md +4 -0
- data/app/views/rails_admin/main/_setting_value.html.haml +1 -1
- data/lib/rails_admin_settings/processing.rb +9 -1
- data/lib/rails_admin_settings/require_helpers.rb +10 -0
- data/lib/rails_admin_settings/settings.rb +26 -3
- data/lib/rails_admin_settings/types.rb +1 -1
- data/lib/rails_admin_settings/validation.rb +11 -0
- data/lib/rails_admin_settings/version.rb +1 -1
- data/rails_admin_settings.gemspec +1 -0
- data/spec/advanced_usage_spec.rb +6 -0
- metadata +19 -3
data/README.md
CHANGED
@@ -31,6 +31,7 @@ Add this line to your application's Gemfile:
|
|
31
31
|
- Put it after validates_email_format_of to get built-in support
|
32
32
|
- Put it after geocoder to get built-in support
|
33
33
|
- Put it after carrierwave / paperclip to get built-in support
|
34
|
+
- Put it after addressable to get built-in support
|
34
35
|
|
35
36
|
And then execute:
|
36
37
|
|
@@ -69,6 +70,9 @@ Supported types:
|
|
69
70
|
email (requires validates_email_format_of)
|
70
71
|
address (requires geocoder)
|
71
72
|
file (requires paperclip or carrierwave)
|
73
|
+
url (requires addressable)
|
74
|
+
domain (requires addressable)
|
75
|
+
|
72
76
|
|
73
77
|
Strings and html support following replacement patterns:
|
74
78
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
- if ['string', 'integer', 'phone', 'email', 'address'].include?(@object.type)
|
1
|
+
- if ['string', 'integer', 'phone', 'email', 'address', 'url', 'domain'].include?(@object.type)
|
2
2
|
= form.text_field :raw, :value => field.value
|
3
3
|
- elsif @object.type == 'text' || @object.type == 'yaml'
|
4
4
|
= form.text_area :raw, :value => field.value, :rows => 10, :cols => 80
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module RailsAdminSettings
|
2
2
|
module Processing
|
3
3
|
def text_type?
|
4
|
-
['string', 'html', 'sanitized', 'email', 'address'].include? type
|
4
|
+
['string', 'html', 'sanitized', 'email', 'address', 'url', 'domain'].include? type
|
5
5
|
end
|
6
6
|
|
7
7
|
def html_type?
|
@@ -36,6 +36,14 @@ module RailsAdminSettings
|
|
36
36
|
'file' == type
|
37
37
|
end
|
38
38
|
|
39
|
+
def url_type?
|
40
|
+
'url' == type
|
41
|
+
end
|
42
|
+
|
43
|
+
def domain_type?
|
44
|
+
'domain' == type
|
45
|
+
end
|
46
|
+
|
39
47
|
def value
|
40
48
|
if file_type?
|
41
49
|
file.url
|
@@ -51,6 +51,16 @@ module RailsAdminSettings
|
|
51
51
|
raise e
|
52
52
|
end
|
53
53
|
end
|
54
|
+
|
55
|
+
def require_addressable
|
56
|
+
begin
|
57
|
+
require 'addressable/uri'
|
58
|
+
yield
|
59
|
+
rescue LoadError => e
|
60
|
+
e.message << " [rails_admin_settings] Please add gem 'addressable' to your Gemfile to use url/domain type settings"
|
61
|
+
raise e
|
62
|
+
end
|
63
|
+
end
|
54
64
|
end
|
55
65
|
end
|
56
66
|
|
@@ -53,7 +53,7 @@ class Settings
|
|
53
53
|
end
|
54
54
|
|
55
55
|
if @@settings[key].nil?
|
56
|
-
|
56
|
+
write_to_database(key, options.merge(key: key, raw: value))
|
57
57
|
else
|
58
58
|
@@settings[key].update_attributes!(options.merge(raw: value))
|
59
59
|
@@settings[key]
|
@@ -97,19 +97,42 @@ class Settings
|
|
97
97
|
def save_default(key, value, options = {})
|
98
98
|
load!
|
99
99
|
options.merge!(default: value)
|
100
|
-
|
100
|
+
if @@settings[key].nil?
|
101
|
+
create_setting(key, options)
|
102
|
+
else
|
103
|
+
@@settings[key]
|
104
|
+
end
|
101
105
|
end
|
102
106
|
|
103
107
|
def create_setting(key, options = {})
|
104
108
|
load!
|
105
109
|
options.symbolize_keys!
|
106
110
|
options[:raw] = options.delete(:default)
|
107
|
-
|
111
|
+
if @@settings[key].nil?
|
112
|
+
write_to_database(key, options.merge(key: key))
|
113
|
+
else
|
114
|
+
@@settings[key]
|
115
|
+
end
|
108
116
|
end
|
109
117
|
|
110
118
|
# to satisfy rspec
|
111
119
|
def to_ary
|
112
120
|
['Settings']
|
113
121
|
end
|
122
|
+
|
123
|
+
def write_to_database(key, options)
|
124
|
+
begin
|
125
|
+
@@settings[key] = RailsAdminSettings::Setting.create!(options)
|
126
|
+
rescue Mongoid::Errors::Validations => e
|
127
|
+
if @@settings[key].errors[:key].any?
|
128
|
+
@@settings[key] = RailsAdminSettings::Setting.where(key: key).first
|
129
|
+
@@settings[key].update_attributes!(options)
|
130
|
+
end
|
131
|
+
|
132
|
+
if @@settings[key].nil?
|
133
|
+
@@settings[key] = RailsAdminSettings::Setting.new(options)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
114
137
|
end
|
115
138
|
end
|
@@ -33,6 +33,17 @@ module RailsAdminSettings
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
+
base.before_validation if: :url_type? do
|
37
|
+
require_addressable do
|
38
|
+
self.raw = Addressable::URI.heuristic_parse(self.raw) unless self.raw.blank?
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
base.before_validation if: :domain_type? do
|
43
|
+
require_addressable do
|
44
|
+
self.raw = Addressable::URI.heuristic_parse(self.raw).host unless self.raw.blank?
|
45
|
+
end
|
46
|
+
end
|
36
47
|
|
37
48
|
if Object.const_defined?('Geocoder')
|
38
49
|
base.field(:coordinates, type: Array, default: [])
|
@@ -33,4 +33,5 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_development_dependency "sanitize", "~> 2.0.3"
|
34
34
|
spec.add_development_dependency "validates_email_format_of", "~> 1.5.3"
|
35
35
|
spec.add_development_dependency "geocoder", "~> 1.1.6"
|
36
|
+
spec.add_development_dependency "addressable", "~> 2.3.3"
|
36
37
|
end
|
data/spec/advanced_usage_spec.rb
CHANGED
@@ -63,4 +63,10 @@ describe 'Settings advanced usage' do
|
|
63
63
|
Settings.eml = 'test@example.com'
|
64
64
|
Settings.eml.should eq 'test@example.com'
|
65
65
|
end
|
66
|
+
|
67
|
+
it 'should process urls with url type' do
|
68
|
+
Settings.url(type: 'url')
|
69
|
+
Settings.url = 'test.ru'
|
70
|
+
Settings.url.should eq 'http://test.ru'
|
71
|
+
end
|
66
72
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_admin_settings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -219,6 +219,22 @@ dependencies:
|
|
219
219
|
- - ~>
|
220
220
|
- !ruby/object:Gem::Version
|
221
221
|
version: 1.1.6
|
222
|
+
- !ruby/object:Gem::Dependency
|
223
|
+
name: addressable
|
224
|
+
requirement: !ruby/object:Gem::Requirement
|
225
|
+
none: false
|
226
|
+
requirements:
|
227
|
+
- - ~>
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: 2.3.3
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
none: false
|
234
|
+
requirements:
|
235
|
+
- - ~>
|
236
|
+
- !ruby/object:Gem::Version
|
237
|
+
version: 2.3.3
|
222
238
|
description: Mongoid / RailsAdmin App Settings management
|
223
239
|
email:
|
224
240
|
- glebtv@gmail.com
|
@@ -273,7 +289,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
273
289
|
version: '0'
|
274
290
|
segments:
|
275
291
|
- 0
|
276
|
-
hash:
|
292
|
+
hash: 759672937259672322
|
277
293
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
278
294
|
none: false
|
279
295
|
requirements:
|
@@ -282,7 +298,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
282
298
|
version: '0'
|
283
299
|
segments:
|
284
300
|
- 0
|
285
|
-
hash:
|
301
|
+
hash: 759672937259672322
|
286
302
|
requirements: []
|
287
303
|
rubyforge_project:
|
288
304
|
rubygems_version: 1.8.25
|