custom_fields 2.4.0.rc1 → 2.4.0.rc2

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
  SHA1:
3
- metadata.gz: 0691b611ee56693347828a7d7c2d5e831d4bfdf4
4
- data.tar.gz: 58c48324ef9366f1d1a36876bc0239c212bf5378
3
+ metadata.gz: 5356e1b094019ce1577efe0dd50bb50a53a036a6
4
+ data.tar.gz: 7a26e9aa7c23b01d5f37adacb25d13427f6c7328
5
5
  SHA512:
6
- metadata.gz: 377cdb5985891770d23ec1f76a0bf6a93057c5ef31c5687b0c743b253f591f34ac2c728f26ca7e46ea2634723b2439ad2cbcfd78e5ad310ea50bd307a3fc512b
7
- data.tar.gz: cf70d24c170faa1f6c27c864fcf06cf0f2a3ac5ce2bf7accad0d9e1bf22cd6967872a5df2c7bfe546b3cf8f69ae5becfb67c34e03e979ec6742ca9406e3b3532
6
+ metadata.gz: 2100b8484500a39c00e31221c92e30a6a39a121bf75505b59cee72e3ea0b73d206f6ac8fefd7043a979da41461b13f381942975961c94a9b21c6623c8bd7a9fc
7
+ data.tar.gz: 5acbfac290dc314b4b9371b2ffeabe92f0366488b6e800a25faa82afacee5e8444bea3a70f502eeb5ccd5f33deb4b4e3f988d0a8313da24cad6c2411a7fa4294
data/LICENSE ADDED
@@ -0,0 +1,18 @@
1
+ Copyright (c) 2013-2015, Didier Lafforgue
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
4
+ this software and associated documentation files (the "Software"), to deal in
5
+ the Software without restriction, including without limitation the rights to
6
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
7
+ the Software, and to permit persons to whom the Software is furnished to do so,
8
+ subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
15
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
16
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,104 @@
1
+ [CustomFields]
2
+ ==============
3
+
4
+ [![Travis CI Status][Travis CI Status]][Travis CI]
5
+ [![Gemnasium Status][Gemnasium Status]][Gemnasium]
6
+
7
+ Manage custom fields to a Mongoid document or a collection. This module is one of the core features we implemented in
8
+ our custom CMS, named LocomotiveCMS. Basically, its aim is to provide to editors a way to manage extra fields to a
9
+ Mongoid document through, for instance, a web UI.
10
+
11
+ The main goals:
12
+
13
+ * Offering a very secure way to add, edit and delete extra fields to a Mongoid document.
14
+ * Scoping the modifications added to a Mongoid document, so that other documents of the same class won't be updated.
15
+
16
+ Requirements
17
+ ------------
18
+
19
+ * MongoDB 2.x
20
+ * Mongoid 4.x
21
+ * ActiveSupport 4.2.x
22
+
23
+ Examples
24
+ --------
25
+
26
+ ### On a `has_many` relationship
27
+
28
+ ```ruby
29
+ class Company
30
+ include CustomFields::Source
31
+
32
+ has_many :employees
33
+
34
+ custom_fields_for :employees
35
+ end
36
+
37
+ class Employee
38
+ include CustomFields::Target
39
+
40
+ field :name, String
41
+
42
+ belongs_to :company, inverse_of: :employees
43
+ end
44
+
45
+ company = Company.new
46
+ company.employees_custom_fields.build label: 'His/her position', name: 'position', type: 'string', required: true
47
+
48
+ company.save
49
+
50
+ company.employees.build name: 'Michael Scott', position: 'Regional manager'
51
+
52
+ another_company = Company.new
53
+ employee = another_company.employees.build
54
+ employee.position # Returns a `not defined method` error
55
+ ```
56
+
57
+ ### On the class itself
58
+
59
+ **IN PROGRESS**
60
+
61
+ ```ruby
62
+ class Company
63
+ custom_fields_for_itself
64
+ end
65
+
66
+ company = Company.new
67
+ company.self_metadata_custom_fields.build label: 'Shipping Address', name: 'address', type: 'text'
68
+
69
+ company.save
70
+
71
+ company.self_metadata.address = '700 S Laflin, 60607 Chicago'
72
+
73
+ another_company = Company.new
74
+ other_company.self_metadata.address # Returns a `not defined method` error
75
+ ```
76
+
77
+ Development
78
+ -----------
79
+
80
+ ### Run specs
81
+
82
+ Run `rspec` or `rake`.
83
+
84
+ ### Test Coverage
85
+
86
+ Run `COVERAGE=true rspec` or `COVERAGE=true rake`.
87
+
88
+ Contact
89
+ -------
90
+
91
+ Feel free to contact me at didier at nocoffee dot fr.
92
+
93
+ License
94
+ -------
95
+
96
+ Copyright (c) 2013-2015 NoCoffee, released under the [MIT License (MIT)], see [LICENSE].
97
+
98
+ [CustomFields]: https://github.com/locomotivecms/custom_fields "Custom fields extension for Mongoid."
99
+ [Gemnasium]: https://gemnasium.com/locomotivecms/custom_fields "CustomFields at Gemnasium"
100
+ [Gemnasium Status]: https://img.shields.io/gemnasium/locomotivecms/custom_fields.svg?style=flat "Gemnasium Status"
101
+ [LICENSE]: https://raw.githubusercontent.com/locomotivecms/custom_fields/master/LICENSE "License"
102
+ [MIT License (MIT)]: http://opensource.org/licenses/MIT "The MIT License (MIT)"
103
+ [Travis CI]: https://travis-ci.org/locomotivecms/custom_fields "CustomFields at Travis CI"
104
+ [Travis CI Status]: https://img.shields.io/travis/locomotivecms/custom_fields.svg?style=flat "Travis CI Status"
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  module Mongoid #:nodoc:
3
2
 
4
3
  module Document #:nodoc:
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  module Mongoid #:nodoc:
3
2
 
4
3
  # Instantiates documents that came from the database.
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  module Mongoid #:nodoc:
3
2
  module Fields #:nodoc:
4
3
 
@@ -23,7 +22,18 @@ module Mongoid #:nodoc:
23
22
  elsif object.has_key?(locale.to_s)
24
23
  object[locale.to_s]
25
24
  elsif I18n.fallbacks?
26
- object[I18n.fallbacks[locale].map(&:to_s).find { |loc| !object[loc].nil? }]
25
+ lookup_with_fallback(object)
26
+ else
27
+ nil
28
+ end
29
+ end
30
+
31
+ def lookup_with_fallback(object)
32
+ fallback_locales = I18n.fallbacks[locale].try(:map, &:to_s)
33
+
34
+ if fallback_locales
35
+ _locale = fallback_locales.find { |loc| !object[loc].nil? }
36
+ object[_locale]
27
37
  else
28
38
  nil
29
39
  end
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  module Mongoid # :nodoc:
3
2
  module Relations #:nodoc:
4
3
  module Referenced #:nodoc:
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  module Mongoid #:nodoc:
3
2
  module Relations #:nodoc:
4
3
  module Referenced #:nodoc:
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  module Mongoid
3
2
  module Validations
4
3
 
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  module Origin
3
2
 
4
3
  # This is a smart hash for use with options and selectors.
@@ -172,9 +172,16 @@ module CustomFields
172
172
  operations['$set'].merge!({ 'custom_fields_recipe.version' => self.custom_fields_version(name) })
173
173
  collection, selector = self.send(name).collection, self.send(name).criteria.selector
174
174
 
175
- # puts "selector = #{selector.inspect}, memo = #{attributes.inspect}" # DEBUG
175
+ # http://docs.mongodb.org/manual/reference/method/db.collection.update/#update-parameter
176
+ # The <update> document must contain only update operator expressions.
177
+ %w(set unset rename).each do |operation_name|
178
+ _fields = operations.delete("$#{operation_name}")
176
179
 
177
- collection.find(selector).update operations, multi: true
180
+ next if _fields.empty?
181
+
182
+ _operation = { "$#{operation_name}" => _fields }
183
+ collection.find(selector).update _operation, multi: true
184
+ end
178
185
  end
179
186
 
180
187
  # If the localized attribute has been changed in at least one of the custom fields,
@@ -26,13 +26,13 @@ module CustomFields
26
26
  # @param [ Hash ] rule It contains the name of the relation and if it is required or not
27
27
  #
28
28
  def apply_has_many_custom_field(klass, rule)
29
- # puts "#{klass.inspect}.has_many #{rule['name'].inspect}, class_name: #{rule['class_name'].inspect}, inverse_of: #{rule['inverse_of']}" # DEBUG
29
+ # puts "#{klass.inspect}.has_many #{rule['name'].inspect}, class_name: #{rule['class_name'].inspect}, inverse_of: #{rule['inverse_of']}, order_by: #{rule['order_by'].inspect}" # DEBUG
30
30
  position_name = "position_in_#{rule['inverse_of']}"
31
31
 
32
32
  _order_by = rule['order_by'] || position_name.to_sym.asc
33
33
  _inverse_of = rule['inverse_of'].blank? ? nil : rule['inverse_of'] # an empty String can cause weird behaviours
34
34
 
35
- klass.has_many rule['name'], class_name: rule['class_name'], inverse_of: _inverse_of, order: _order_by do
35
+ klass.has_many rule['name'], class_name: rule['class_name'], inverse_of: _inverse_of, order: _order_by, validate: false do
36
36
 
37
37
  def filtered(conditions = {}, order_by = nil)
38
38
  list = conditions.empty? ? self.unscoped : self.where(conditions)
@@ -28,11 +28,7 @@ module CustomFields
28
28
  def apply_many_to_many_custom_field(klass, rule)
29
29
  # puts "#{klass.inspect}.many_to_many #{rule['name'].inspect}, class_name: #{rule['class_name'].inspect} / #{rule['order_by']}" # DEBUG
30
30
 
31
- klass.has_and_belongs_to_many rule['name'], class_name: rule['class_name'], inverse_of: rule['inverse_of'], order: rule['order_by'] do
32
-
33
- # def at_least_one_element?
34
- # (base.send(metadata.key.to_sym).try(:size) || 0) > 0
35
- # end
31
+ klass.has_and_belongs_to_many rule['name'], class_name: rule['class_name'], inverse_of: rule['inverse_of'], validate: false, order: rule['order_by'] do
36
32
 
37
33
  def filtered(conditions = {}, order_by = nil)
38
34
  list = conditions.empty? ? self : self.where(conditions)
@@ -40,15 +36,30 @@ module CustomFields
40
36
  if order_by
41
37
  list.order_by(order_by)
42
38
  else
43
- # use the natural order given by the initial array (ex: project_ids).
44
- # Warning: it returns an array and not a criteria object meaning it breaks the chain
45
- ids = base.send(relation_metadata.key.to_sym)
46
- list.entries.sort { |a, b| ids.index(a.id) <=> ids.index(b.id) }
39
+ _naturally_ordered(list, order_by)
47
40
  end
48
41
  end
49
42
 
50
43
  alias :ordered :filtered # backward compatibility + semantic purpose
51
44
 
45
+ def _naturally_ordered(criteria, order_by = nil)
46
+ # use the natural order given by the initial array (ex: project_ids).
47
+ # Warning: it returns an array and not a criteria object meaning it breaks the chain
48
+ ids = base.send(relation_metadata.key.to_sym)
49
+ criteria.entries.sort { |a, b| ids.index(a.id) <=> ids.index(b.id) }
50
+ end
51
+
52
+ def pluck_with_natural_order(*attributes)
53
+ criteria = self.only([:_id] + [*attributes])
54
+ _naturally_ordered(criteria).map do |entry|
55
+ if attributes.size == 1
56
+ entry.public_send(attributes.first.to_sym)
57
+ else
58
+ attributes.map { |name| entry.public_send(name.to_sym) }
59
+ end
60
+ end
61
+ end
62
+
52
63
  end
53
64
 
54
65
  if rule['required']
@@ -107,7 +107,7 @@ module CustomFields
107
107
  protected
108
108
 
109
109
  def _set_money_defaults(names)
110
- ::Money.assume_from_symbol = self.send(names[:allow_currency_from_symbol])
110
+ ::Monetize.assume_from_symbol = self.send(names[:allow_currency_from_symbol])
111
111
  ::Money.default_currency = self.send(names[:default_currency])
112
112
  end
113
113
 
@@ -129,7 +129,7 @@ module CustomFields
129
129
  def _set_money(_money, names)
130
130
  return if _money.blank?
131
131
  _set_money_defaults(names)
132
- money = _money.kind_of?(Money) ? _money : ::Money.parse(_money)
132
+ money = _money.kind_of?(Money) ? _money : ::Monetize.parse(_money)
133
133
  self.write_attribute(names[:cents_field], money.cents)
134
134
  self.write_attribute(names[:currency_field], money.currency.iso_code)
135
135
  rescue
@@ -134,8 +134,8 @@ module CustomFields
134
134
  #
135
135
  def group_by_select_option(name, order_by = nil)
136
136
  name_id = "#{name}_id"
137
- groups = self.each.group_by{|x| x.send(name_id)}.map do |(k, v)|
138
- {name_id => k, "group" => v}
137
+ groups = self.each.group_by { |x| x.send(name_id) }.map do |(k, v)|
138
+ { name_id => k, 'group' => v }
139
139
  end
140
140
 
141
141
  _select_options(name).map do |option|
@@ -1,6 +1,5 @@
1
- # encoding: utf-8
2
1
  module CustomFields #:nodoc
3
2
 
4
- VERSION = '2.4.0.rc1'
3
+ VERSION = '2.4.0.rc2'
5
4
 
6
5
  end
data/lib/custom_fields.rb CHANGED
@@ -2,7 +2,7 @@ $:.unshift File.expand_path(File.dirname(__FILE__))
2
2
 
3
3
  require 'active_support'
4
4
  require 'carrierwave/mongoid'
5
- require 'money'
5
+ require 'monetize'
6
6
 
7
7
  Money.use_i18n = false
8
8
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: custom_fields
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0.rc1
4
+ version: 2.4.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Didier Lafforgue
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-07 00:00:00.000000000 Z
11
+ date: 2015-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mongoid
@@ -16,128 +16,128 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 4.0.0
19
+ version: 4.0.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 4.0.0
26
+ version: 4.0.2
27
27
  - !ruby/object:Gem::Dependency
28
- name: activesupport
28
+ name: carrierwave-mongoid
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 4.0.8
33
+ version: 0.7.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 4.0.8
40
+ version: 0.7.1
41
41
  - !ruby/object:Gem::Dependency
42
- name: carrierwave-mongoid
42
+ name: activesupport
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.7'
47
+ version: 4.2.1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.7'
54
+ version: 4.2.1
55
55
  - !ruby/object:Gem::Dependency
56
- name: money
56
+ name: monetize
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 5.1.1
61
+ version: 1.1.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 5.1.1
68
+ version: 1.1.0
69
69
  - !ruby/object:Gem::Dependency
70
- name: yard
70
+ name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.7.3
75
+ version: '10.4'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.7.3
82
+ version: '10.4'
83
83
  - !ruby/object:Gem::Dependency
84
- name: mocha
84
+ name: pry
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.9.12
89
+ version: 0.10.1
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.9.12
96
+ version: 0.10.1
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rspec
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '2.99'
103
+ version: 3.1.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '2.99'
110
+ version: 3.1.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rspec-its
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 1.0.1
117
+ version: 1.1.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 1.0.1
124
+ version: 1.1.0
125
125
  - !ruby/object:Gem::Dependency
126
- name: simplecov
126
+ name: mocha
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 0.6.1
131
+ version: 1.1.0
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 0.6.1
138
+ version: 1.1.0
139
139
  - !ruby/object:Gem::Dependency
140
- name: database_cleaner
140
+ name: simplecov
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
@@ -151,45 +151,58 @@ dependencies:
151
151
  - !ruby/object:Gem::Version
152
152
  version: 0.9.1
153
153
  - !ruby/object:Gem::Dependency
154
- name: pry
154
+ name: database_cleaner
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ">="
157
+ - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: '0'
159
+ version: 1.3.0
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - ">="
164
+ - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: '0'
166
+ version: 1.3.0
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: RedCloth
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: 4.2.8
173
+ version: 4.2.9
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 4.2.9
181
+ - !ruby/object:Gem::Dependency
182
+ name: yard
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: 0.8.7
174
188
  type: :development
175
189
  prerelease: false
176
190
  version_requirements: !ruby/object:Gem::Requirement
177
191
  requirements:
178
192
  - - "~>"
179
193
  - !ruby/object:Gem::Version
180
- version: 4.2.8
181
- description: Manage custom fields to a mongoid document or a collection. This module
182
- is one of the core features we implemented in our custom cms named Locomotive.
183
- email:
184
- - didier@nocoffee.fr
194
+ version: 0.8.7
195
+ description: Manage custom fields to a Mongoid document or a collection. This module
196
+ is one of the core features we implemented in our custom CMS, named LocomotiveCMS.
197
+ email: didier@nocoffee.fr
185
198
  executables: []
186
199
  extensions: []
187
200
  extra_rdoc_files:
188
- - MIT-LICENSE
189
- - README.textile
201
+ - LICENSE
202
+ - README.md
190
203
  files:
191
- - MIT-LICENSE
192
- - README.textile
204
+ - LICENSE
205
+ - README.md
193
206
  - config/locales/de.yml
194
207
  - config/locales/en.yml
195
208
  - config/locales/fr.yml
@@ -230,8 +243,9 @@ files:
230
243
  - lib/custom_fields/types/tags.rb
231
244
  - lib/custom_fields/types/text.rb
232
245
  - lib/custom_fields/version.rb
233
- homepage: http://github.com/locomotivecms/custom_fields
234
- licenses: []
246
+ homepage: https://github.com/locomotivecms/custom_fields
247
+ licenses:
248
+ - MIT
235
249
  metadata: {}
236
250
  post_install_message:
237
251
  rdoc_options: []
@@ -239,18 +253,18 @@ require_paths:
239
253
  - lib
240
254
  required_ruby_version: !ruby/object:Gem::Requirement
241
255
  requirements:
242
- - - ">="
256
+ - - "~>"
243
257
  - !ruby/object:Gem::Version
244
- version: '0'
258
+ version: '2.1'
245
259
  required_rubygems_version: !ruby/object:Gem::Requirement
246
260
  requirements:
247
- - - ">="
261
+ - - "~>"
248
262
  - !ruby/object:Gem::Version
249
- version: 1.3.6
263
+ version: '2.4'
250
264
  requirements: []
251
- rubyforge_project: nowarning
252
- rubygems_version: 2.2.2
265
+ rubyforge_project:
266
+ rubygems_version: 2.4.5
253
267
  signing_key:
254
268
  specification_version: 4
255
- summary: Custom fields extension for Mongoid
269
+ summary: Custom fields extension for Mongoid.
256
270
  test_files: []
data/MIT-LICENSE DELETED
@@ -1,20 +0,0 @@
1
- Copyright (c) 2013 [Didier Lafforgue]
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.textile DELETED
@@ -1,70 +0,0 @@
1
- "!https://secure.travis-ci.org/locomotivecms/custom_fields.png!":http://travis-ci.org/locomotivecms/custom_fields
2
-
3
- h1. CustomFields
4
-
5
- Manage custom fields to a mongoid document or a collection. This module is one of the core features we implemented in our custom cms, LocomotiveCMS.
6
- Basically, its aim is to provide to editors a way to manage extra fields to a Mongoid document through, for instance, a web UI.
7
-
8
- The main goals:
9
-
10
- * offering a very secure way to add / edit / delete extra fields to a Mongoid document
11
- * scoping the modifications added to a Mongoid document so that other documents of the same class won't be updated.
12
-
13
- h2. Requirements
14
-
15
- ActiveSupport 3.2.13, MongoDB 2.0 and Mongoid 3.1.3
16
-
17
- h2. Examples
18
-
19
- h3. On a has_many relationship
20
-
21
- bc.. class Company
22
- include CustomFields::Source
23
-
24
- has_many :employees
25
-
26
- custom_fields_for :employees
27
- end
28
-
29
- class Employee
30
- include CustomFields::Target
31
-
32
- field :name, String
33
-
34
- belongs_to :company, :inverse_of => :employees
35
- end
36
-
37
- company = Company.new
38
- company.employees_custom_fields.build :label => 'His/her position', :name => 'position', :type => 'string', :required => true
39
-
40
- company.save
41
-
42
- company.employees.build :name => 'Michael Scott', :position => 'Regional manager'
43
-
44
- another_company = Company.new
45
- employee = another_company.employees.build
46
- employee.position # returns a "not defined method" error
47
-
48
- h3. On the class itself
49
-
50
- [IN PROGRESS]
51
-
52
- bc.. class Company
53
- custom_fields_for_itself
54
- end
55
-
56
- company = Company.new
57
- company.self_metadata_custom_fields.build :label => 'Shipping Address', :name => 'address', :type => 'text'
58
-
59
- company.save
60
-
61
- company.self_metadata.address = '700 S Laflin, 60607 Chicago'
62
-
63
- another_company = Company.new
64
- other_company.self_metadata.address # returns a "not defined method" error
65
-
66
- h2. Contact
67
-
68
- Feel free to contact me at didier at nocoffee dot fr.
69
-
70
- Copyright (c) 2013 NoCoffee, released under the MIT license