constructor-pages 0.8.1 → 0.8.2
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7c99ad910ed090f671a97bb20daac6d2c794705
|
4
|
+
data.tar.gz: 738a7f27c0dfaa1c1cb5bdb8684b42cc640599ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21cd621106d968f6458280fbf8046f1e51dc92352311a986ddfef188d91a718beb2ea0d157ca7069cca17a3977c7a2e89d50ce2d73a24151211f423a250f097e
|
7
|
+
data.tar.gz: 072ac7bd7b8a4975c62181809f41faf45477d4b5af133d3d5ff24fc0af3502d759dcd36d10ee7ceaca96371e9e5612af7bdffdadcb937897cdebb6a04d4e9793
|
@@ -33,20 +33,6 @@ module ConstructorPages
|
|
33
33
|
render template: "templates/#{_code_name}"
|
34
34
|
end
|
35
35
|
|
36
|
-
def search
|
37
|
-
@page = Page.find_by_request_or_first("/#{params[:all]}")
|
38
|
-
|
39
|
-
_params = request.query_parameters
|
40
|
-
_params.each_pair {|k,v| v || (_params.delete(k); next)
|
41
|
-
_params[k] = v.numeric? ? v.to_f : (v.to_boolean if v.boolean?)}
|
42
|
-
|
43
|
-
@pages = Page.in(@page).by(_params).search(params[:what_search])
|
44
|
-
|
45
|
-
@page.template.code_name.tap {|c| [c.pluralize, c.singularize].each {|name|
|
46
|
-
instance_variable_set('@'+name, @pages)}
|
47
|
-
render template: "templates/#{c}_search"}
|
48
|
-
end
|
49
|
-
|
50
36
|
def edit
|
51
37
|
@page = Page.find(params[:id])
|
52
38
|
@parent_id, @template_id = @page.parent.try(:id), @page.template.id
|
@@ -47,13 +47,19 @@ module ConstructorPages
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def search(what_search = nil)
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
50
|
+
hash_search, array_search = {}, []
|
51
|
+
|
52
|
+
@where_search = Page.find_by(full_url: @where_search) if @where_search.is_a?(String)
|
53
|
+
array_search = ['lft > ? and rgt < ?', @where_search.lft, @where_search.rgt] if @where_search
|
54
|
+
|
55
|
+
what_search && what_search = what_search.to_s.singularize.downcase
|
56
|
+
hash_search[:template_id] = ConstructorPages::Template.find_by(code_name: what_search).try(:id) if what_search
|
57
|
+
|
58
|
+
hash_search[:id] = ids_by_params(@params_search) if @params_search
|
59
|
+
|
55
60
|
@where_search = @params_search = nil
|
56
|
-
|
61
|
+
|
62
|
+
hash_search.empty? && array_search.empty? ? [] : Page.where(hash_search).where(array_search).to_a
|
57
63
|
end
|
58
64
|
|
59
65
|
def in(where_search = nil); tap {@where_search = where_search} end
|
@@ -61,6 +67,45 @@ module ConstructorPages
|
|
61
67
|
|
62
68
|
def search_in(where_search = nil); self.in(where_search).search end
|
63
69
|
def search_by(params_search = nil); self.by(params_search).search end
|
70
|
+
|
71
|
+
|
72
|
+
def ids_by_params(params)
|
73
|
+
_hash = {}
|
74
|
+
|
75
|
+
params.each_pair do |key, value|
|
76
|
+
next if key == 'utf8'
|
77
|
+
|
78
|
+
key = key.to_s
|
79
|
+
_key, _value = key.gsub(/>|</, ''), value
|
80
|
+
|
81
|
+
if _value.is_a?(String)
|
82
|
+
next if _value.strip.empty?
|
83
|
+
_value = _value.gsub(/>|</, '')
|
84
|
+
_value = _value.numeric? ? _value.to_f : (_value.to_boolean if _value.boolean?)
|
85
|
+
end
|
86
|
+
|
87
|
+
sign = '='
|
88
|
+
|
89
|
+
if key =~ />$/ || value =~ /^>/
|
90
|
+
sign = '>'
|
91
|
+
elsif key =~ /<$/ || value =~ /^</
|
92
|
+
sign = '<'
|
93
|
+
end
|
94
|
+
|
95
|
+
_fields = ConstructorPages::Field.where(code_name: _key)
|
96
|
+
|
97
|
+
_ids = []
|
98
|
+
|
99
|
+
_fields.each do |_field|
|
100
|
+
_hash[:field_id] = _field.id
|
101
|
+
_ids << _field.type_class.where("value #{sign} #{_value}").where(_hash).map(&:page_id)
|
102
|
+
end
|
103
|
+
|
104
|
+
_hash[:page_id] = _ids.flatten.uniq
|
105
|
+
end
|
106
|
+
|
107
|
+
return _hash[:page_id] || []
|
108
|
+
end
|
64
109
|
end
|
65
110
|
|
66
111
|
def search(what_search = nil); Page.in(self).search(what_search) end
|
data/config/routes.rb
CHANGED
@@ -70,7 +70,7 @@ module ConstructorPages
|
|
70
70
|
@content_field = Field.create name: 'Content', code_name: 'content', template: @brand_template, type_value: 'text'
|
71
71
|
@check_field = Field.create name: 'Check', code_name: 'check', template: @brand_template, type_value: 'boolean'
|
72
72
|
@brand_price_field = Field.create name: 'Price', code_name: 'price', template: @brand_template, type_value: 'float'
|
73
|
-
@brand_area_field = Field.create name: 'Area', code_name: '
|
73
|
+
@brand_area_field = Field.create name: 'Area', code_name: 'brand_area', template: @brand_template, type_value: 'integer'
|
74
74
|
|
75
75
|
@page = Page.create name: 'Fresco', template: @template
|
76
76
|
@page.price = 15000
|
@@ -82,21 +82,23 @@ module ConstructorPages
|
|
82
82
|
|
83
83
|
@first_brand_page = Page.create name: 'Midea', template: @brand_template, parent: @page
|
84
84
|
@first_brand_page.price = 20000
|
85
|
-
@first_brand_page.
|
85
|
+
@first_brand_page.brand_area = 25
|
86
86
|
@first_brand_page.content = 'This is first brand page'
|
87
87
|
@first_brand_page.check = true
|
88
88
|
|
89
89
|
@second_brand_page = Page.create name: 'Dantex', template: @brand_template, parent: @page
|
90
90
|
@second_brand_page.price = 30000
|
91
|
-
@second_brand_page.
|
91
|
+
@second_brand_page.brand_area = 55
|
92
92
|
@second_brand_page.content = 'This is second brand page'
|
93
93
|
@second_brand_page.check = false
|
94
|
+
@second_brand_page.reload
|
94
95
|
|
95
96
|
@third_brand_page = Page.create name: 'LG', template: @brand_template, parent: @second_page
|
96
97
|
@third_brand_page.price = 10000
|
97
|
-
@third_brand_page.
|
98
|
+
@third_brand_page.brand_area = 38
|
98
99
|
@third_brand_page.content = 'This is third brand page'
|
99
100
|
@third_brand_page.check = true
|
101
|
+
@third_brand_page.reload
|
100
102
|
|
101
103
|
@page.reload
|
102
104
|
@second_page.reload
|
@@ -104,7 +106,6 @@ module ConstructorPages
|
|
104
106
|
|
105
107
|
context 'search in all pages' do
|
106
108
|
it 'should search with what search' do
|
107
|
-
Page.search.should == [@page, @first_brand_page, @second_brand_page, @second_page, @third_brand_page]
|
108
109
|
Page.search(:hello).should == []
|
109
110
|
Page.search(:brand).should == [@first_brand_page, @second_brand_page, @third_brand_page]
|
110
111
|
Page.search(:brands).should == [@first_brand_page, @second_brand_page, @third_brand_page]
|
@@ -121,22 +122,23 @@ module ConstructorPages
|
|
121
122
|
Page.in(@second_page).search('brand').should == [@third_brand_page]
|
122
123
|
end
|
123
124
|
|
124
|
-
it '
|
125
|
-
|
125
|
+
it 'should search with by params' do
|
126
|
+
@page.reload
|
127
|
+
Page.in(@page).search_by(brand_area: 25).should == [@first_brand_page]
|
126
128
|
Page.search_by(area: 10).should == [@second_page]
|
127
129
|
Page.search_by(price: 15000).should == [@page]
|
128
|
-
Page.in(@page).by(
|
129
|
-
Page.in(@second_page).by(
|
130
|
-
Page.in(@second_page).by(
|
131
|
-
Page.in('/world').search_by(
|
130
|
+
Page.in(@page).by(brand_area: 25).search(:brand).should == [@first_brand_page]
|
131
|
+
Page.in(@second_page).by(brand_area: 38).search(:brand).should == [@third_brand_page]
|
132
|
+
Page.in(@second_page).by(brand_area: 40).search(:brand).should == []
|
133
|
+
Page.in('/world').search_by(brand_area: 10).should == []
|
132
134
|
end
|
133
135
|
|
134
136
|
it 'should search with less' do
|
135
|
-
|
137
|
+
Page.search_by('price<' => '20000').should == [@page, @second_page, @third_brand_page]
|
136
138
|
end
|
137
139
|
|
138
140
|
it 'should search with more' do
|
139
|
-
|
141
|
+
Page.search_by('price>' => 20000).should == [@second_brand_page]
|
140
142
|
end
|
141
143
|
end
|
142
144
|
|
@@ -149,7 +151,7 @@ module ConstructorPages
|
|
149
151
|
end
|
150
152
|
|
151
153
|
it 'it should search with by params' do
|
152
|
-
@page.search_by(
|
154
|
+
@page.search_by(brand_area: 25).should == [@first_brand_page]
|
153
155
|
@page.search_by(price: 30000).should == [@second_brand_page]
|
154
156
|
@page.by(price: 30000).search.should == [@second_brand_page]
|
155
157
|
@page.search_by(area: 10).should == []
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: constructor-pages
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Zotov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-06-
|
11
|
+
date: 2013-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: constructor-core
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.8.
|
19
|
+
version: 0.8.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: 0.8.
|
26
|
+
version: 0.8.2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: dragonfly
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|