custom_fields 1.1.0.rc1 → 2.0.0.rc1

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.
Files changed (41) hide show
  1. data/MIT-LICENSE +1 -1
  2. data/README.textile +14 -6
  3. data/config/locales/fr.yml +5 -1
  4. data/lib/custom_fields.rb +11 -37
  5. data/lib/custom_fields/extensions/carrierwave.rb +25 -0
  6. data/lib/custom_fields/extensions/mongoid/document.rb +12 -50
  7. data/lib/custom_fields/extensions/mongoid/factory.rb +20 -0
  8. data/lib/custom_fields/extensions/mongoid/fields.rb +29 -0
  9. data/lib/custom_fields/extensions/mongoid/fields/i18n.rb +53 -0
  10. data/lib/custom_fields/extensions/mongoid/fields/internal/localized.rb +84 -0
  11. data/lib/custom_fields/extensions/mongoid/relations/referenced/many.rb +29 -0
  12. data/lib/custom_fields/field.rb +44 -175
  13. data/lib/custom_fields/source.rb +333 -0
  14. data/lib/custom_fields/target.rb +90 -0
  15. data/lib/custom_fields/types/boolean.rb +26 -3
  16. data/lib/custom_fields/types/date.rb +36 -24
  17. data/lib/custom_fields/types/default.rb +44 -24
  18. data/lib/custom_fields/types/file.rb +35 -17
  19. data/lib/custom_fields/types/select.rb +184 -0
  20. data/lib/custom_fields/types/string.rb +25 -6
  21. data/lib/custom_fields/types/text.rb +35 -8
  22. data/lib/custom_fields/types_old/boolean.rb +13 -0
  23. data/lib/custom_fields/{types → types_old}/category.rb +0 -0
  24. data/lib/custom_fields/types_old/date.rb +49 -0
  25. data/lib/custom_fields/types_old/default.rb +44 -0
  26. data/lib/custom_fields/types_old/file.rb +27 -0
  27. data/lib/custom_fields/{types → types_old}/has_many.rb +0 -0
  28. data/lib/custom_fields/{types → types_old}/has_many/proxy_collection.rb +0 -0
  29. data/lib/custom_fields/{types → types_old}/has_many/reverse_lookup_proxy_collection.rb +0 -0
  30. data/lib/custom_fields/{types → types_old}/has_one.rb +0 -0
  31. data/lib/custom_fields/types_old/string.rb +13 -0
  32. data/lib/custom_fields/types_old/text.rb +15 -0
  33. data/lib/custom_fields/version.rb +1 -1
  34. metadata +115 -91
  35. data/lib/custom_fields/custom_fields_for.rb +0 -350
  36. data/lib/custom_fields/extensions/mongoid/relations/accessors.rb +0 -31
  37. data/lib/custom_fields/extensions/mongoid/relations/builders.rb +0 -30
  38. data/lib/custom_fields/proxy_class/base.rb +0 -112
  39. data/lib/custom_fields/proxy_class/builder.rb +0 -60
  40. data/lib/custom_fields/proxy_class/helper.rb +0 -57
  41. data/lib/custom_fields/self_metadata.rb +0 -30
@@ -1,13 +1,32 @@
1
1
  module CustomFields
2
+
2
3
  module Types
4
+
3
5
  module String
4
-
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- register_type :string
6
+
7
+ module Field; end
8
+
9
+ module Target
10
+
11
+ extend ActiveSupport::Concern
12
+
13
+ module ClassMethods
14
+
15
+ # Adds a string field
16
+ #
17
+ # @param [ Class ] klass The class to modify
18
+ # @param [ Hash ] rule It contains the name of the field and if it is required or not
19
+ #
20
+ def apply_string_custom_field(klass, rule)
21
+ apply_custom_field(klass, rule)
22
+ end
23
+
24
+ end
25
+
9
26
  end
10
-
27
+
11
28
  end
29
+
12
30
  end
31
+
13
32
  end
@@ -1,15 +1,42 @@
1
1
  module CustomFields
2
+
2
3
  module Types
4
+
3
5
  module Text
4
-
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- field :text_formatting, :default => 'html'
9
-
10
- register_type :text
6
+
7
+ module Field
8
+
9
+ extend ActiveSupport::Concern
10
+
11
+ included do
12
+
13
+ field :text_formatting, :default => 'html'
14
+
15
+ end
16
+
11
17
  end
12
-
18
+
19
+ module Target
20
+
21
+ extend ActiveSupport::Concern
22
+
23
+ module ClassMethods
24
+
25
+ # Adds a text field (simply a string field)
26
+ #
27
+ # @param [ Class ] klass The class to modify
28
+ # @param [ Hash ] rule It contains the name of the field and if it is required or not
29
+ #
30
+ def apply_text_custom_field(klass, rule)
31
+ apply_custom_field(klass, rule)
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+
13
38
  end
39
+
14
40
  end
41
+
15
42
  end
@@ -0,0 +1,13 @@
1
+ module CustomFields
2
+ module Types
3
+ module Boolean
4
+
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ register_type :boolean, ::Boolean
9
+ end
10
+
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,49 @@
1
+ module CustomFields
2
+ module Types
3
+ module Date
4
+
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ register_type :date, ::Date
9
+ end
10
+
11
+ module InstanceMethods
12
+
13
+ def apply_date_type(klass)
14
+
15
+ klass.class_eval <<-EOF
16
+
17
+ def #{self.safe_alias}
18
+ self.#{self._name}
19
+ end
20
+
21
+ def #{self.safe_alias}=(value)
22
+ if value.is_a?(::String) && !value.blank?
23
+ date = ::Date._strptime(value, I18n.t('date.formats.default'))
24
+ value = ::Date.new(date[:year], date[:mon], date[:mday])
25
+ end
26
+
27
+ self.#{self._name} = value
28
+ end
29
+
30
+ def formatted_#{self.safe_alias}
31
+ self.#{self._name}.strftime(I18n.t('date.formats.default')) rescue nil
32
+ end
33
+
34
+ alias formatted_#{self.safe_alias}= #{self.safe_alias}=
35
+ EOF
36
+
37
+ def add_date_validation(klass)
38
+ if self.required?
39
+ klass.validates_presence_of self.safe_alias.to_sym, :"formatted_#{self.safe_alias}"
40
+ end
41
+ end
42
+
43
+ end
44
+
45
+ end
46
+
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,44 @@
1
+ module CustomFields
2
+ module Types
3
+ module Default
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ cattr_accessor :field_types
8
+ end
9
+
10
+ module InstanceMethods
11
+
12
+ def apply_default_type(klass)
13
+ klass.class_eval <<-EOF
14
+ alias :#{self.safe_alias} :#{self._name}
15
+ alias :#{self.safe_alias}= :#{self._name}=
16
+ EOF
17
+ end
18
+
19
+ def add_default_validation(klass)
20
+ # add validation if required field
21
+ if self.required?
22
+ klass.validates_presence_of self.safe_alias.to_sym
23
+ end
24
+ end
25
+
26
+ end
27
+
28
+ module ClassMethods
29
+
30
+ def register_type(kind, klass = ::String)
31
+ self.field_types ||= {}
32
+ self.field_types[kind.to_sym] = klass unless klass.nil?
33
+
34
+ self.class_eval <<-EOF
35
+ def #{kind.to_s}?
36
+ self.kind.downcase == '#{kind}' rescue false
37
+ end
38
+ EOF
39
+ end
40
+
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,27 @@
1
+ module CustomFields
2
+ module Types
3
+ module File
4
+
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ register_type :file, nil # do not create the default field
9
+ end
10
+
11
+ module InstanceMethods
12
+
13
+ def apply_file_type(klass)
14
+
15
+ klass.mount_uploader self._name, FileUploader
16
+
17
+ self.apply_default_type(klass)
18
+ end
19
+
20
+ end
21
+
22
+ class FileUploader < ::CarrierWave::Uploader::Base
23
+ end
24
+
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,13 @@
1
+ module CustomFields
2
+ module Types
3
+ module String
4
+
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ register_type :string
9
+ end
10
+
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ module CustomFields
2
+ module Types
3
+ module Text
4
+
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ field :text_formatting, :default => 'html'
9
+
10
+ register_type :text
11
+ end
12
+
13
+ end
14
+ end
15
+ end
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module CustomFields #:nodoc
3
- VERSION = "1.1.0.rc1"
3
+ VERSION = "2.0.0.rc1"
4
4
  end
metadata CHANGED
@@ -1,151 +1,179 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: custom_fields
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0.rc1
4
5
  prerelease: 6
5
- version: 1.1.0.rc1
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Didier Lafforgue
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-10-27 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2012-01-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: mongoid
17
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2158024560 !ruby/object:Gem::Requirement
18
17
  none: false
19
- requirements:
20
- - - "="
21
- - !ruby/object:Gem::Version
22
- version: 2.3.2
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 2.4.0
23
22
  type: :runtime
24
23
  prerelease: false
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
24
+ version_requirements: *2158024560
25
+ - !ruby/object:Gem::Dependency
27
26
  name: activesupport
28
- requirement: &id002 !ruby/object:Gem::Requirement
27
+ requirement: &2158023800 !ruby/object:Gem::Requirement
29
28
  none: false
30
- requirements:
29
+ requirements:
31
30
  - - ~>
32
- - !ruby/object:Gem::Version
33
- version: 3.1.1
31
+ - !ruby/object:Gem::Version
32
+ version: 3.1.3
34
33
  type: :runtime
35
34
  prerelease: false
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
35
+ version_requirements: *2158023800
36
+ - !ruby/object:Gem::Dependency
38
37
  name: carrierwave-mongoid
39
- requirement: &id003 !ruby/object:Gem::Requirement
38
+ requirement: &2158023040 !ruby/object:Gem::Requirement
40
39
  none: false
41
- requirements:
40
+ requirements:
42
41
  - - ~>
43
- - !ruby/object:Gem::Version
42
+ - !ruby/object:Gem::Version
44
43
  version: 0.1.3
45
44
  type: :runtime
46
45
  prerelease: false
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
46
+ version_requirements: *2158023040
47
+ - !ruby/object:Gem::Dependency
49
48
  name: yard
50
- requirement: &id004 !ruby/object:Gem::Requirement
49
+ requirement: &2158021900 !ruby/object:Gem::Requirement
51
50
  none: false
52
- requirements:
51
+ requirements:
53
52
  - - ~>
54
- - !ruby/object:Gem::Version
53
+ - !ruby/object:Gem::Version
55
54
  version: 0.7.3
56
55
  type: :development
57
56
  prerelease: false
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
57
+ version_requirements: *2158021900
58
+ - !ruby/object:Gem::Dependency
59
+ name: bson
60
+ requirement: &2158021300 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ~>
64
+ - !ruby/object:Gem::Version
65
+ version: 1.3.1
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *2158021300
69
+ - !ruby/object:Gem::Dependency
70
+ name: mongo
71
+ requirement: &2158020100 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: 1.3.1
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *2158020100
80
+ - !ruby/object:Gem::Dependency
60
81
  name: bson_ext
61
- requirement: &id005 !ruby/object:Gem::Requirement
82
+ requirement: &2158018640 !ruby/object:Gem::Requirement
62
83
  none: false
63
- requirements:
84
+ requirements:
64
85
  - - ~>
65
- - !ruby/object:Gem::Version
66
- version: 1.4.1
86
+ - !ruby/object:Gem::Version
87
+ version: 1.3.1
67
88
  type: :development
68
89
  prerelease: false
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
90
+ version_requirements: *2158018640
91
+ - !ruby/object:Gem::Dependency
71
92
  name: mocha
72
- requirement: &id006 !ruby/object:Gem::Requirement
93
+ requirement: &2158033920 !ruby/object:Gem::Requirement
73
94
  none: false
74
- requirements:
95
+ requirements:
75
96
  - - ~>
76
- - !ruby/object:Gem::Version
97
+ - !ruby/object:Gem::Version
77
98
  version: 0.9.12
78
99
  type: :development
79
100
  prerelease: false
80
- version_requirements: *id006
81
- - !ruby/object:Gem::Dependency
101
+ version_requirements: *2158033920
102
+ - !ruby/object:Gem::Dependency
82
103
  name: rspec
83
- requirement: &id007 !ruby/object:Gem::Requirement
104
+ requirement: &2158032420 !ruby/object:Gem::Requirement
84
105
  none: false
85
- requirements:
106
+ requirements:
86
107
  - - ~>
87
- - !ruby/object:Gem::Version
88
- version: "2.6"
108
+ - !ruby/object:Gem::Version
109
+ version: '2.6'
89
110
  type: :development
90
111
  prerelease: false
91
- version_requirements: *id007
92
- - !ruby/object:Gem::Dependency
112
+ version_requirements: *2158032420
113
+ - !ruby/object:Gem::Dependency
93
114
  name: database_cleaner
94
- requirement: &id008 !ruby/object:Gem::Requirement
115
+ requirement: &2158031400 !ruby/object:Gem::Requirement
95
116
  none: false
96
- requirements:
117
+ requirements:
97
118
  - - ~>
98
- - !ruby/object:Gem::Version
119
+ - !ruby/object:Gem::Version
99
120
  version: 0.6.7
100
121
  type: :development
101
122
  prerelease: false
102
- version_requirements: *id008
103
- - !ruby/object:Gem::Dependency
123
+ version_requirements: *2158031400
124
+ - !ruby/object:Gem::Dependency
104
125
  name: RedCloth
105
- requirement: &id009 !ruby/object:Gem::Requirement
126
+ requirement: &2158029200 !ruby/object:Gem::Requirement
106
127
  none: false
107
- requirements:
128
+ requirements:
108
129
  - - ~>
109
- - !ruby/object:Gem::Version
130
+ - !ruby/object:Gem::Version
110
131
  version: 4.2.8
111
132
  type: :development
112
133
  prerelease: false
113
- version_requirements: *id009
114
- description: Manage custom fields to a mongoid document or a collection. This module is one of the core features we implemented in our custom cms named Locomotive.
115
- email:
134
+ version_requirements: *2158029200
135
+ description: Manage custom fields to a mongoid document or a collection. This module
136
+ is one of the core features we implemented in our custom cms named Locomotive.
137
+ email:
116
138
  - didier@nocoffee.fr
117
139
  executables: []
118
-
119
140
  extensions: []
120
-
121
- extra_rdoc_files:
141
+ extra_rdoc_files:
122
142
  - MIT-LICENSE
123
143
  - README.textile
124
- files:
144
+ files:
125
145
  - init.rb
126
146
  - MIT-LICENSE
127
147
  - README.textile
128
- - lib/custom_fields/custom_fields_for.rb
129
148
  - lib/custom_fields/extensions/active_support.rb
149
+ - lib/custom_fields/extensions/carrierwave.rb
130
150
  - lib/custom_fields/extensions/mongoid/document.rb
131
- - lib/custom_fields/extensions/mongoid/relations/accessors.rb
132
- - lib/custom_fields/extensions/mongoid/relations/builders.rb
151
+ - lib/custom_fields/extensions/mongoid/factory.rb
152
+ - lib/custom_fields/extensions/mongoid/fields/i18n.rb
153
+ - lib/custom_fields/extensions/mongoid/fields/internal/localized.rb
154
+ - lib/custom_fields/extensions/mongoid/fields.rb
155
+ - lib/custom_fields/extensions/mongoid/relations/referenced/many.rb
133
156
  - lib/custom_fields/field.rb
134
- - lib/custom_fields/proxy_class/base.rb
135
- - lib/custom_fields/proxy_class/builder.rb
136
- - lib/custom_fields/proxy_class/helper.rb
137
- - lib/custom_fields/self_metadata.rb
157
+ - lib/custom_fields/source.rb
158
+ - lib/custom_fields/target.rb
138
159
  - lib/custom_fields/types/boolean.rb
139
- - lib/custom_fields/types/category.rb
140
160
  - lib/custom_fields/types/date.rb
141
161
  - lib/custom_fields/types/default.rb
142
162
  - lib/custom_fields/types/file.rb
143
- - lib/custom_fields/types/has_many/proxy_collection.rb
144
- - lib/custom_fields/types/has_many/reverse_lookup_proxy_collection.rb
145
- - lib/custom_fields/types/has_many.rb
146
- - lib/custom_fields/types/has_one.rb
163
+ - lib/custom_fields/types/select.rb
147
164
  - lib/custom_fields/types/string.rb
148
165
  - lib/custom_fields/types/text.rb
166
+ - lib/custom_fields/types_old/boolean.rb
167
+ - lib/custom_fields/types_old/category.rb
168
+ - lib/custom_fields/types_old/date.rb
169
+ - lib/custom_fields/types_old/default.rb
170
+ - lib/custom_fields/types_old/file.rb
171
+ - lib/custom_fields/types_old/has_many/proxy_collection.rb
172
+ - lib/custom_fields/types_old/has_many/reverse_lookup_proxy_collection.rb
173
+ - lib/custom_fields/types_old/has_many.rb
174
+ - lib/custom_fields/types_old/has_one.rb
175
+ - lib/custom_fields/types_old/string.rb
176
+ - lib/custom_fields/types_old/text.rb
149
177
  - lib/custom_fields/version.rb
150
178
  - lib/custom_fields.rb
151
179
  - config/locales/de.yml
@@ -154,33 +182,29 @@ files:
154
182
  - config/locales/pt-BR.yml
155
183
  homepage: http://github.com/locomotivecms/custom_fields
156
184
  licenses: []
157
-
158
185
  post_install_message:
159
186
  rdoc_options: []
160
-
161
- require_paths:
187
+ require_paths:
162
188
  - lib
163
- required_ruby_version: !ruby/object:Gem::Requirement
189
+ required_ruby_version: !ruby/object:Gem::Requirement
164
190
  none: false
165
- requirements:
166
- - - ">="
167
- - !ruby/object:Gem::Version
168
- hash: 1403562502793807305
169
- segments:
191
+ requirements:
192
+ - - ! '>='
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ segments:
170
196
  - 0
171
- version: "0"
172
- required_rubygems_version: !ruby/object:Gem::Requirement
197
+ hash: 159417792925729594
198
+ required_rubygems_version: !ruby/object:Gem::Requirement
173
199
  none: false
174
- requirements:
175
- - - ">="
176
- - !ruby/object:Gem::Version
200
+ requirements:
201
+ - - ! '>='
202
+ - !ruby/object:Gem::Version
177
203
  version: 1.3.6
178
204
  requirements: []
179
-
180
205
  rubyforge_project: nowarning
181
206
  rubygems_version: 1.8.10
182
207
  signing_key:
183
208
  specification_version: 3
184
209
  summary: Custom fields extension for Mongoid
185
210
  test_files: []
186
-