custom_fields 1.0.0.beta.23 → 1.0.0.beta.24
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.
@@ -5,23 +5,7 @@ module CustomFields
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
included do
|
8
|
-
register_type :boolean
|
9
|
-
end
|
10
|
-
|
11
|
-
module InstanceMethods
|
12
|
-
|
13
|
-
def apply_boolean_type(klass)
|
14
|
-
|
15
|
-
klass.class_eval <<-EOF
|
16
|
-
alias :#{self.safe_alias}= :#{self._name}=
|
17
|
-
|
18
|
-
def #{self.safe_alias}
|
19
|
-
::Boolean.set(self.send(:#{self._name}))
|
20
|
-
end
|
21
|
-
EOF
|
22
|
-
|
23
|
-
end
|
24
|
-
|
8
|
+
register_type :boolean, ::Boolean
|
25
9
|
end
|
26
10
|
|
27
11
|
end
|
@@ -75,11 +75,11 @@ module CustomFields
|
|
75
75
|
|
76
76
|
def collection(reload_embedded = false)
|
77
77
|
if self.target_klass.embedded?
|
78
|
-
|
78
|
+
parent_target = self.target_klass._parent
|
79
79
|
|
80
|
-
|
80
|
+
parent_target = parent_target.reload if reload_embedded
|
81
81
|
|
82
|
-
|
82
|
+
parent_target.send(self.target_klass.association_name)
|
83
83
|
else
|
84
84
|
self.target_klass
|
85
85
|
end
|
@@ -23,18 +23,20 @@ module CustomFields
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def persist
|
26
|
-
(self.previous_state[:
|
27
|
-
self.set_foreign_key_and_position(
|
26
|
+
(self.previous_state[:values] - self.values).each do |object|
|
27
|
+
self.set_foreign_key_and_position(object, nil)
|
28
28
|
end
|
29
29
|
|
30
|
-
self.
|
31
|
-
self.set_foreign_key_and_position(
|
30
|
+
self.values.each_with_index do |object, position|
|
31
|
+
self.set_foreign_key_and_position(object, self.parent._id, position)
|
32
32
|
end
|
33
33
|
|
34
34
|
if self.target_klass.embedded?
|
35
35
|
self.target_klass._parent.save!(:validate => false)
|
36
36
|
end
|
37
37
|
|
38
|
+
self.reorder # update positions in the internal collection (self.values)
|
39
|
+
|
38
40
|
self.reset_previous_state
|
39
41
|
end
|
40
42
|
|
@@ -52,29 +54,35 @@ module CustomFields
|
|
52
54
|
end
|
53
55
|
|
54
56
|
def reload
|
55
|
-
self.update(self.reverse_collection)
|
57
|
+
self.update(self.reverse_collection(true))
|
56
58
|
|
57
59
|
self.reset_previous_state
|
58
60
|
end
|
59
61
|
|
60
62
|
protected
|
61
63
|
|
62
|
-
def reverse_collection
|
63
|
-
self.collection.where(self.reverse_lookup_field => self.parent._id).order_by([[:"#{self.reverse_lookup_field}_position", :asc]])
|
64
|
+
def reverse_collection(reload = false)
|
65
|
+
self.collection(reload).where(self.reverse_lookup_field => self.parent._id).order_by([[:"#{self.reverse_lookup_field}_position", :asc]])
|
66
|
+
end
|
67
|
+
|
68
|
+
def reorder
|
69
|
+
self.values.sort! { |a, b| a.send(:"#{self.reverse_lookup_field}_position") <=> b.send(:"#{self.reverse_lookup_field}_position") }
|
64
70
|
end
|
65
71
|
|
66
|
-
def set_foreign_key_and_position(
|
72
|
+
def set_foreign_key_and_position(object, value, position = nil)
|
73
|
+
objects = [object]
|
74
|
+
|
67
75
|
if self.target_klass.embedded?
|
68
|
-
|
69
|
-
|
70
|
-
object = self.previous_state[:values].detect { |o| o._id == object_id }
|
76
|
+
# Fixme (Did): objects in self.values are different from the ones in self.collection
|
77
|
+
objects << self.collection.find(object._id)
|
71
78
|
end
|
72
79
|
|
73
|
-
|
74
|
-
|
75
|
-
|
80
|
+
objects.each do |o|
|
81
|
+
o.send("#{self.reverse_lookup_field}=".to_sym, value)
|
82
|
+
o.send("#{self.reverse_lookup_field}_position=".to_sym, position)
|
83
|
+
end
|
76
84
|
|
77
|
-
|
85
|
+
unless self.target_klass.embedded?
|
78
86
|
object.save(:validate => false)
|
79
87
|
end
|
80
88
|
end
|
metadata
CHANGED
@@ -1,15 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: custom_fields
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 62196397
|
5
4
|
prerelease: 6
|
6
|
-
|
7
|
-
- 1
|
8
|
-
- 0
|
9
|
-
- 0
|
10
|
-
- beta
|
11
|
-
- 23
|
12
|
-
version: 1.0.0.beta.23
|
5
|
+
version: 1.0.0.beta.24
|
13
6
|
platform: ruby
|
14
7
|
authors:
|
15
8
|
- Didier Lafforgue
|
@@ -17,40 +10,30 @@ autorequire:
|
|
17
10
|
bindir: bin
|
18
11
|
cert_chain: []
|
19
12
|
|
20
|
-
date: 2011-08-
|
13
|
+
date: 2011-08-25 00:00:00 Z
|
21
14
|
dependencies:
|
22
15
|
- !ruby/object:Gem::Dependency
|
23
16
|
name: mongoid
|
24
|
-
|
25
|
-
type: :runtime
|
26
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
27
18
|
none: false
|
28
19
|
requirements:
|
29
20
|
- - "="
|
30
21
|
- !ruby/object:Gem::Version
|
31
|
-
hash: 11
|
32
|
-
segments:
|
33
|
-
- 2
|
34
|
-
- 0
|
35
|
-
- 2
|
36
22
|
version: 2.0.2
|
37
|
-
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *id001
|
38
26
|
- !ruby/object:Gem::Dependency
|
39
27
|
name: activesupport
|
40
|
-
|
41
|
-
type: :runtime
|
42
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
28
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
43
29
|
none: false
|
44
30
|
requirements:
|
45
31
|
- - ~>
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
hash: 21
|
48
|
-
segments:
|
49
|
-
- 3
|
50
|
-
- 0
|
51
|
-
- 9
|
52
33
|
version: 3.0.9
|
53
|
-
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *id002
|
54
37
|
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.
|
55
38
|
email:
|
56
39
|
- didier@nocoffee.fr
|
@@ -102,7 +85,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
102
85
|
requirements:
|
103
86
|
- - ">="
|
104
87
|
- !ruby/object:Gem::Version
|
105
|
-
hash:
|
88
|
+
hash: -3936643888107415339
|
106
89
|
segments:
|
107
90
|
- 0
|
108
91
|
version: "0"
|
@@ -111,11 +94,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
94
|
requirements:
|
112
95
|
- - ">="
|
113
96
|
- !ruby/object:Gem::Version
|
114
|
-
hash: 23
|
115
|
-
segments:
|
116
|
-
- 1
|
117
|
-
- 3
|
118
|
-
- 6
|
119
97
|
version: 1.3.6
|
120
98
|
requirements: []
|
121
99
|
|