constructor-pages 0.5.3 → 0.5.4
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/app/models/constructor_pages/field.rb +16 -19
- data/app/models/constructor_pages/page.rb +13 -19
- metadata +3 -3
@@ -2,24 +2,25 @@
|
|
2
2
|
|
3
3
|
module ConstructorPages
|
4
4
|
class Field < ActiveRecord::Base
|
5
|
+
TYPES = %w{string integer float boolean text date html image}
|
6
|
+
|
5
7
|
attr_accessible :name, :code_name, :type_value, :template_id, :template
|
6
8
|
validates_presence_of :name
|
7
9
|
validates_uniqueness_of :code_name, :scope => :template_id
|
8
10
|
validate :method_uniqueness
|
9
11
|
|
10
12
|
after_create :create_page_fields
|
11
|
-
after_destroy :
|
13
|
+
after_destroy :destroy_all_page_fields
|
12
14
|
|
13
15
|
belongs_to :template
|
14
16
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
has_one :image_type, class_name: 'Types::ImageType'
|
17
|
+
TYPES.each do |t|
|
18
|
+
class_eval %{
|
19
|
+
has_one :#{t}_type, class_name: 'Types::#{t.titleize}Type'
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
has_many :pages, through: :template
|
23
24
|
|
24
25
|
acts_as_list scope: :template_id
|
25
26
|
default_scope order: :position
|
@@ -63,16 +64,12 @@ module ConstructorPages
|
|
63
64
|
end
|
64
65
|
end
|
65
66
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
def destroy_page_fields
|
73
|
-
self.template.pages.each do |page|
|
74
|
-
"constructor_pages/types/#{type_value}_type".classify.constantize.destroy_all page_id: page.id, field_id: id
|
75
|
-
end
|
67
|
+
%w{create destroy_all}.each do |m|
|
68
|
+
class_eval %{
|
69
|
+
def #{m}_page_fields
|
70
|
+
pages.each {|page| type_model.#{m} page_id: page.id, field_id: id}
|
71
|
+
end
|
72
|
+
}
|
76
73
|
end
|
77
74
|
end
|
78
75
|
end
|
@@ -7,14 +7,11 @@ module ConstructorPages
|
|
7
7
|
:parent, :parent_id, :link, :in_menu, :in_map,
|
8
8
|
:in_nav, :template_id, :template
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
has_many :date_types, dependent: :destroy, class_name: 'Types::DateType'
|
16
|
-
has_many :html_types, dependent: :destroy, class_name: 'Types::HtmlType'
|
17
|
-
has_many :image_types, dependent: :destroy, class_name: 'Types::ImageType'
|
10
|
+
Field::TYPES.each do |t|
|
11
|
+
class_eval %{
|
12
|
+
has_many :#{t}_types, dependent: :destroy, class_name: 'Types::#{t.titleize}Type'
|
13
|
+
}
|
14
|
+
end
|
18
15
|
|
19
16
|
has_many :fields, through: :template
|
20
17
|
|
@@ -36,11 +33,11 @@ module ConstructorPages
|
|
36
33
|
end
|
37
34
|
|
38
35
|
def field(code_name, meth = 'value')
|
39
|
-
field = Field.
|
36
|
+
field = Field.find_by_code_name_and_template_id code_name, template_id
|
40
37
|
|
41
38
|
if field
|
42
|
-
|
43
|
-
|
39
|
+
_field = field.type_model.find_by_field_id_and_page_id field.id, id
|
40
|
+
_field.send(meth) if _field
|
44
41
|
end
|
45
42
|
end
|
46
43
|
|
@@ -50,7 +47,7 @@ module ConstructorPages
|
|
50
47
|
:title => self.title
|
51
48
|
}.merge options
|
52
49
|
|
53
|
-
|
50
|
+
fields.each do |field|
|
54
51
|
unless self.send(field.code_name)
|
55
52
|
options = {field.code_name => self.send(field.code_name)}.merge options
|
56
53
|
end
|
@@ -63,13 +60,12 @@ module ConstructorPages
|
|
63
60
|
name = name.to_s
|
64
61
|
|
65
62
|
if field(name).nil?
|
66
|
-
_template = Template.find_by_code_name
|
63
|
+
_template = Template.find_by_code_name name.singularize
|
67
64
|
template_id = _template.id if _template
|
68
65
|
|
69
66
|
if template_id
|
70
|
-
result =
|
71
|
-
result =
|
72
|
-
result = ancestors.where(:template_id => template_id).first if result.empty?
|
67
|
+
result = descendants.where(template_id: template_id) if name == name.pluralize
|
68
|
+
result = ancestors.where(template_id: template_id).first if result.empty?
|
73
69
|
result || []
|
74
70
|
end
|
75
71
|
else
|
@@ -110,9 +106,7 @@ module ConstructorPages
|
|
110
106
|
def descendants_update; descendants.map(&:save) end
|
111
107
|
|
112
108
|
def create_fields
|
113
|
-
|
114
|
-
"constructor_pages/types/#{field.type_value}_type".classify.constantize.create page_id: id, field: field
|
115
|
-
end
|
109
|
+
fields.each {|field| field.type_model.create page_id: id, field_id: field.id}
|
116
110
|
end
|
117
111
|
end
|
118
112
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: constructor-pages
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.5.
|
21
|
+
version: 0.5.4
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - '='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.5.
|
29
|
+
version: 0.5.4
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: dragonfly
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|