promethee 3.0.2 → 4.0.0
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 +5 -5
- data/UPGRADING +2 -2
- data/app/assets/stylesheets/promethee-edit.sass +1 -0
- data/app/assets/stylesheets/promethee-edit/_localizer.sass +4 -0
- data/app/models/concerns/promethee_data.rb +57 -34
- data/app/services/promethee/structure_upgrader/components/aside.rb +51 -0
- data/app/services/promethee/structure_upgrader/components/base.rb +36 -0
- data/app/services/promethee/structure_upgrader/components/blockquote.rb +32 -0
- data/app/services/promethee/structure_upgrader/components/collection.rb +31 -0
- data/app/services/promethee/structure_upgrader/components/collection_item.rb +55 -0
- data/app/services/promethee/structure_upgrader/components/column.rb +92 -0
- data/app/services/promethee/structure_upgrader/components/cover.rb +49 -0
- data/app/services/promethee/structure_upgrader/components/faq.rb +16 -0
- data/app/services/promethee/structure_upgrader/components/faq_item.rb +49 -0
- data/app/services/promethee/structure_upgrader/components/image.rb +42 -0
- data/app/services/promethee/structure_upgrader/components/page.rb +56 -0
- data/app/services/promethee/structure_upgrader/components/row.rb +32 -0
- data/app/services/promethee/structure_upgrader/components/slider.rb +16 -0
- data/app/services/promethee/structure_upgrader/components/slider_item.rb +55 -0
- data/app/services/promethee/structure_upgrader/components/table.rb +116 -0
- data/app/services/promethee/structure_upgrader/components/table_cell.rb +16 -0
- data/app/services/promethee/structure_upgrader/components/text.rb +25 -0
- data/app/services/promethee/structure_upgrader/components/video.rb +32 -0
- data/app/services/promethee/structure_upgrader_service.rb +110 -0
- data/app/views/promethee/_edit.html.erb +34 -4
- data/app/views/promethee/_localize.html.erb +34 -3
- data/app/views/promethee/components/aside/_edit.define.html.erb +29 -4
- data/app/views/promethee/components/aside/_edit.inspect.html.erb +6 -6
- data/app/views/promethee/components/aside/_edit.move.html.erb +7 -7
- data/app/views/promethee/components/aside/_localize.html.erb +11 -11
- data/app/views/promethee/components/aside/_show.html.erb +8 -8
- data/app/views/promethee/components/blockquote/_edit.define.html.erb +12 -2
- data/app/views/promethee/components/blockquote/_edit.inspect.html.erb +4 -4
- data/app/views/promethee/components/blockquote/_edit.move.html.erb +3 -3
- data/app/views/promethee/components/blockquote/_localize.html.erb +8 -8
- data/app/views/promethee/components/blockquote/_show.html.erb +3 -3
- data/app/views/promethee/components/collection/_edit.define.html.erb +12 -1
- data/app/views/promethee/components/collection/_edit.inspect.html.erb +4 -4
- data/app/views/promethee/components/collection/_edit.move.html.erb +1 -1
- data/app/views/promethee/components/collection/_localize.html.erb +0 -1
- data/app/views/promethee/components/collection/_show.html.erb +1 -2
- data/app/views/promethee/components/collection_item/_edit.define.html.erb +27 -5
- data/app/views/promethee/components/collection_item/_edit.inspect.html.erb +6 -6
- data/app/views/promethee/components/collection_item/_edit.move.html.erb +5 -5
- data/app/views/promethee/components/collection_item/_localize.html.erb +9 -9
- data/app/views/promethee/components/collection_item/_show.html.erb +7 -7
- data/app/views/promethee/components/column/_edit.define.html.erb +58 -8
- data/app/views/promethee/components/column/_edit.inspect.html.erb +19 -19
- data/app/views/promethee/components/column/_localize.html.erb +0 -1
- data/app/views/promethee/components/column/_show.html.erb +10 -10
- data/app/views/promethee/components/cover/_edit.define.html.erb +26 -6
- data/app/views/promethee/components/cover/_edit.inspect.html.erb +4 -4
- data/app/views/promethee/components/cover/_edit.move.html.erb +4 -4
- data/app/views/promethee/components/cover/_localize.html.erb +14 -14
- data/app/views/promethee/components/cover/_show.html.erb +10 -10
- data/app/views/promethee/components/faq_item/_edit.define.html.erb +25 -5
- data/app/views/promethee/components/faq_item/_edit.inspect.html.erb +4 -4
- data/app/views/promethee/components/faq_item/_edit.move.html.erb +6 -6
- data/app/views/promethee/components/faq_item/_localize.html.erb +7 -7
- data/app/views/promethee/components/faq_item/_show.html.erb +7 -7
- data/app/views/promethee/components/image/_edit.define.html.erb +19 -4
- data/app/views/promethee/components/image/_edit.inspect.html.erb +3 -3
- data/app/views/promethee/components/image/_edit.move.html.erb +5 -5
- data/app/views/promethee/components/image/_localize.html.erb +20 -17
- data/app/views/promethee/components/image/_show.html.erb +6 -6
- data/app/views/promethee/components/page/_edit.define.html.erb +32 -7
- data/app/views/promethee/components/page/_edit.inspect.html.erb +5 -5
- data/app/views/promethee/components/page/_localize.html.erb +8 -8
- data/app/views/promethee/components/page/_show.html.erb +4 -4
- data/app/views/promethee/components/row/_edit.define.html.erb +12 -2
- data/app/views/promethee/components/row/_edit.inspect.html.erb +8 -8
- data/app/views/promethee/components/row/_edit.move.html.erb +9 -9
- data/app/views/promethee/components/row/_show.html.erb +7 -6
- data/app/views/promethee/components/slider_item/_edit.define.html.erb +27 -5
- data/app/views/promethee/components/slider_item/_edit.inspect.html.erb +6 -6
- data/app/views/promethee/components/slider_item/_edit.move.html.erb +7 -7
- data/app/views/promethee/components/slider_item/_localize.html.erb +9 -9
- data/app/views/promethee/components/slider_item/_show.html.erb +7 -8
- data/app/views/promethee/components/table/_edit.define.html.erb +9 -6
- data/app/views/promethee/components/table/_edit.inspect.html.erb +138 -50
- data/app/views/promethee/components/table/_edit.move.html.erb +17 -7
- data/app/views/promethee/components/table/_localize.html.erb +0 -43
- data/app/views/promethee/components/table/_show.html.erb +13 -16
- data/app/views/promethee/components/table_cell/_edit.define.html.erb +22 -0
- data/app/views/promethee/components/table_cell/_edit.inspect.html.erb +0 -0
- data/app/views/promethee/components/table_cell/_edit.move.html.erb +0 -0
- data/app/views/promethee/components/table_cell/_icon.svg +3 -0
- data/app/views/promethee/components/table_cell/_localize.html.erb +14 -0
- data/app/views/promethee/components/table_cell/_show.html.erb +0 -0
- data/app/views/promethee/components/text/_edit.define.html.erb +6 -1
- data/app/views/promethee/components/text/_edit.inspect.html.erb +3 -3
- data/app/views/promethee/components/text/_edit.move.html.erb +1 -1
- data/app/views/promethee/components/text/_localize.html.erb +3 -3
- data/app/views/promethee/components/text/_show.html.erb +2 -2
- data/app/views/promethee/components/video/_edit.define.html.erb +12 -2
- data/app/views/promethee/components/video/_edit.inspect.html.erb +2 -2
- data/app/views/promethee/components/video/_edit.move.html.erb +6 -6
- data/app/views/promethee/components/video/_localize.html.erb +4 -4
- data/app/views/promethee/components/video/_show.html.erb +4 -3
- data/app/views/promethee/presets/_image-with-text.html.erb +171 -6
- data/lib/promethee/data/localization.rb +13 -2
- data/lib/promethee/rails/version.rb +1 -1
- data/lib/tasks/promethee/promethee.rake +6 -0
- metadata +31 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 9919911b70d645a32c0cc7cb303e88e358964153829f76747dd62b2acbafc8f8
|
|
4
|
+
data.tar.gz: f72bac7ccb51c4c55686bdafe41997d8d6d366f0f00861127ed593786d90938a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 53817f67399c99bd21ba4f2e01c276fc4ef0dc80c62f9c3f7a17e25bc6f73d6cb7758983e2990457672d35042623ddd7f476394be8be36249b552e39a7e76d5c
|
|
7
|
+
data.tar.gz: 6832ef6057efface08ee81ee0db720bf9534df96637b34b3cebd703f849b0c1b3d483b94417ae6ed27c66846e520593e0492e3d6d161e3d087ecd2eb81281bf0
|
data/UPGRADING
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
###################################
|
|
2
|
-
# NOTE FOR UPGRADING TO
|
|
2
|
+
# NOTE FOR UPGRADING TO 4.x.x #
|
|
3
3
|
###################################
|
|
4
4
|
|
|
5
|
-
In Prométhée
|
|
5
|
+
In Prométhée 4.0, to apply the correct sanitization process, every attribute has an explicit type.
|
|
6
6
|
A rake task is available to upgrade your data.
|
|
7
7
|
|
|
8
8
|
For more details, check the documentation:
|
|
@@ -4,51 +4,57 @@ module PrometheeData
|
|
|
4
4
|
# Setter to serialize data as JSON
|
|
5
5
|
def data=(value)
|
|
6
6
|
value = JSON.parse value if value.is_a? String
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
if value.has_key? 'components'
|
|
9
|
+
# For translations, contents are in components, not children
|
|
10
|
+
value['components'].map { |component| promethee_sanitize(component) }
|
|
11
|
+
else
|
|
12
|
+
# For masters, contents are in children
|
|
13
|
+
value = promethee_sanitize(value)
|
|
14
|
+
end
|
|
8
15
|
super(value)
|
|
9
16
|
end
|
|
10
17
|
|
|
11
18
|
# Getters and setters to get PAGE Title, Description & Thumbnail
|
|
12
19
|
def promethee_data_page_title
|
|
13
|
-
data['attributes']['
|
|
20
|
+
data['attributes']['title']['value']
|
|
14
21
|
rescue
|
|
15
22
|
''
|
|
16
23
|
end
|
|
17
24
|
|
|
18
25
|
def promethee_data_page_title=(value)
|
|
19
|
-
self.data['attributes']['
|
|
26
|
+
self.data['attributes']['title']['value'] = value
|
|
20
27
|
end
|
|
21
28
|
|
|
22
29
|
def promethee_data_page_description
|
|
23
|
-
data['attributes']['
|
|
30
|
+
data['attributes']['description']['value']
|
|
24
31
|
rescue
|
|
25
32
|
''
|
|
26
33
|
end
|
|
27
34
|
|
|
28
35
|
def promethee_data_page_description=(value)
|
|
29
|
-
self.data['attributes']['
|
|
36
|
+
self.data['attributes']['description']['value'] = value
|
|
30
37
|
end
|
|
31
38
|
|
|
32
39
|
def promethee_data_page_thumbnail
|
|
33
|
-
ActiveStorage::Blob.find_signed(data['attributes']['thumbnail']['id'])
|
|
40
|
+
ActiveStorage::Blob.find_signed(data['attributes']['thumbnail']['value']['id'])
|
|
34
41
|
rescue
|
|
35
42
|
nil
|
|
36
43
|
end
|
|
37
44
|
|
|
38
45
|
# Getters to get TRANSLATION Title & Description
|
|
39
46
|
def promethee_data_translation_title
|
|
40
|
-
data['components'].first['attributes']['
|
|
47
|
+
data['components'].first['attributes']['title']['value']
|
|
41
48
|
rescue
|
|
42
49
|
''
|
|
43
50
|
end
|
|
44
51
|
|
|
45
52
|
def promethee_data_translation_description
|
|
46
|
-
data['components'].first['attributes']['
|
|
53
|
+
data['components'].first['attributes']['description']['value']
|
|
47
54
|
rescue
|
|
48
55
|
''
|
|
49
56
|
end
|
|
50
57
|
|
|
51
|
-
|
|
52
58
|
def promethee_data_searchable
|
|
53
59
|
promethee_extract_searchable data
|
|
54
60
|
end
|
|
@@ -62,20 +68,25 @@ module PrometheeData
|
|
|
62
68
|
searchable = ' '
|
|
63
69
|
searchable += promethee_extract_searchable_attributes component['attributes'] if component.include?('attributes')
|
|
64
70
|
# For masters, contents are in children
|
|
65
|
-
searchable += promethee_extract_searchable_children component['children'] if component.include?
|
|
71
|
+
searchable += promethee_extract_searchable_children component['children'] if component.include?('children')
|
|
66
72
|
# For translations, contents are in components, not children
|
|
67
|
-
searchable += promethee_extract_searchable_children component['components'] if component.include?
|
|
73
|
+
searchable += promethee_extract_searchable_children component['components'] if component.include?('components')
|
|
68
74
|
searchable
|
|
69
75
|
end
|
|
70
76
|
|
|
71
77
|
def promethee_extract_searchable_attributes(attributes)
|
|
72
78
|
searchable = ' '
|
|
73
|
-
attributes.each do |key,
|
|
74
|
-
if
|
|
75
|
-
clean_value = strip_tags value
|
|
79
|
+
attributes.each do |key, value_object|
|
|
80
|
+
if value_object['searchable']
|
|
81
|
+
clean_value = strip_tags value_object['value']
|
|
76
82
|
searchable += "#{clean_value} "
|
|
77
|
-
|
|
78
|
-
|
|
83
|
+
end
|
|
84
|
+
if value_object['type'] == 'array'
|
|
85
|
+
value_object['value'].each do |object|
|
|
86
|
+
searchable += promethee_extract_searchable_attributes(object)
|
|
87
|
+
end
|
|
88
|
+
elsif value_object['type'] == 'hash'
|
|
89
|
+
searchable += promethee_extract_searchable_attributes(value_object['value'])
|
|
79
90
|
end
|
|
80
91
|
end
|
|
81
92
|
searchable
|
|
@@ -89,24 +100,36 @@ module PrometheeData
|
|
|
89
100
|
searchable
|
|
90
101
|
end
|
|
91
102
|
|
|
92
|
-
def promethee_sanitize(
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
value.each do |element|
|
|
104
|
-
new_array << promethee_sanitize(element)
|
|
105
|
-
end
|
|
106
|
-
data[key] = new_array
|
|
107
|
-
end
|
|
108
|
-
end if data.respond_to? :each
|
|
103
|
+
def promethee_sanitize(component)
|
|
104
|
+
attributes = component['attributes']
|
|
105
|
+
attributes = promethee_sanitize_attributes(attributes)
|
|
106
|
+
|
|
107
|
+
children = component['children']
|
|
108
|
+
children.each do |child|
|
|
109
|
+
child = promethee_sanitize(child)
|
|
110
|
+
end unless children.nil?
|
|
111
|
+
|
|
112
|
+
component
|
|
113
|
+
end
|
|
109
114
|
|
|
110
|
-
|
|
115
|
+
def promethee_sanitize_attributes(attributes)
|
|
116
|
+
attributes.each do |key, value_object|
|
|
117
|
+
case value_object['type']
|
|
118
|
+
when 'string'
|
|
119
|
+
while value_object['value'] != Loofah.fragment(value_object['value']).text(encode_special_chars: false)
|
|
120
|
+
value_object['value'] = Loofah.fragment(value_object['value']).text(encode_special_chars: false)
|
|
121
|
+
end
|
|
122
|
+
when 'text'
|
|
123
|
+
value_object['value'] = sanitize(value_object['value'])
|
|
124
|
+
when 'hash'
|
|
125
|
+
value_object['value'] = promethee_sanitize_attributes(value_object['value'])
|
|
126
|
+
when 'array'
|
|
127
|
+
value_object['value'].each do |object|
|
|
128
|
+
object = promethee_sanitize_attributes(object)
|
|
129
|
+
end
|
|
130
|
+
end if value_object.has_key?('type')
|
|
131
|
+
attributes[key] = value_object
|
|
132
|
+
end unless attributes.nil?
|
|
133
|
+
attributes
|
|
111
134
|
end
|
|
112
135
|
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Aside Component
|
|
2
|
+
# ================
|
|
3
|
+
#
|
|
4
|
+
# V3
|
|
5
|
+
# -----
|
|
6
|
+
#
|
|
7
|
+
# {
|
|
8
|
+
# searchable_visible_content: '<p>Edit me</p>',
|
|
9
|
+
# searchable_collapsed_content: '',
|
|
10
|
+
# searchable_open_label: 'See more',
|
|
11
|
+
# open_label_position: 'left'
|
|
12
|
+
# }
|
|
13
|
+
#
|
|
14
|
+
|
|
15
|
+
module Promethee::StructureUpgrader::Components
|
|
16
|
+
class Aside < Base
|
|
17
|
+
def upgraded_attributes
|
|
18
|
+
{
|
|
19
|
+
'visible_content' => {
|
|
20
|
+
'searchable' => true,
|
|
21
|
+
'translatable' => true,
|
|
22
|
+
'type' => 'text',
|
|
23
|
+
'value' => attribute('searchable_visible_content')
|
|
24
|
+
},
|
|
25
|
+
'collapsed_content' => {
|
|
26
|
+
'searchable' => true,
|
|
27
|
+
'translatable' => true,
|
|
28
|
+
'type' => 'text',
|
|
29
|
+
'value' => attribute('searchable_collapsed_content')
|
|
30
|
+
},
|
|
31
|
+
'open_label' => {
|
|
32
|
+
'searchable' => true,
|
|
33
|
+
'translatable' => true,
|
|
34
|
+
'type' => 'string',
|
|
35
|
+
'value': string_attribute('searchable_open_label')
|
|
36
|
+
},
|
|
37
|
+
'open_label_position' => {
|
|
38
|
+
'collection' => [
|
|
39
|
+
{ 'label' => 'Left', 'value' => 'left' },
|
|
40
|
+
{ 'label' => 'Center', 'value' => 'center' },
|
|
41
|
+
{ 'label' => 'Right', 'value' => 'right' }
|
|
42
|
+
],
|
|
43
|
+
'searchable' => false,
|
|
44
|
+
'translatable' => false,
|
|
45
|
+
'type' => 'enum',
|
|
46
|
+
'value' => attribute('open_label_position')
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module Promethee::StructureUpgrader::Components
|
|
2
|
+
class Base
|
|
3
|
+
def initialize(data)
|
|
4
|
+
@data = data
|
|
5
|
+
# puts "<#{self.class}> Initialized."
|
|
6
|
+
|
|
7
|
+
upgrade
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def upgraded_data
|
|
11
|
+
@upgraded_data
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def upgrade
|
|
15
|
+
@upgraded_data = @data.deep_dup
|
|
16
|
+
return if @upgraded_data['attributes'].empty?
|
|
17
|
+
|
|
18
|
+
@upgraded_data['attributes'] = upgraded_attributes.deep_stringify_keys
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def upgraded_attributes
|
|
22
|
+
raise NotImplementedError
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
protected
|
|
26
|
+
|
|
27
|
+
def string_attribute(*path)
|
|
28
|
+
text = attribute(*path)
|
|
29
|
+
Loofah.fragment(text).text(encode_special_chars: false)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def attribute(*path)
|
|
33
|
+
@data.dig('attributes', *path)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Blockquote Component
|
|
2
|
+
# ================
|
|
3
|
+
#
|
|
4
|
+
# V3
|
|
5
|
+
# -----
|
|
6
|
+
#
|
|
7
|
+
# {
|
|
8
|
+
# searchable_body: '<p>Edit me</p>',
|
|
9
|
+
# searchable_author: ''
|
|
10
|
+
# }
|
|
11
|
+
#
|
|
12
|
+
|
|
13
|
+
module Promethee::StructureUpgrader::Components
|
|
14
|
+
class Blockquote < Base
|
|
15
|
+
def upgraded_attributes
|
|
16
|
+
{
|
|
17
|
+
'body' => {
|
|
18
|
+
'searchable' => true,
|
|
19
|
+
'translatable' => true,
|
|
20
|
+
'type' => 'text',
|
|
21
|
+
'value' => attribute('searchable_body'),
|
|
22
|
+
},
|
|
23
|
+
'author' => {
|
|
24
|
+
'searchable' => true,
|
|
25
|
+
'translatable' => false,
|
|
26
|
+
'type' => 'string',
|
|
27
|
+
'value' => string_attribute('searchable_author')
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Collection Component
|
|
2
|
+
# ================
|
|
3
|
+
#
|
|
4
|
+
# V3
|
|
5
|
+
# -----
|
|
6
|
+
#
|
|
7
|
+
# {
|
|
8
|
+
# items_per_line: 6
|
|
9
|
+
# }
|
|
10
|
+
#
|
|
11
|
+
|
|
12
|
+
module Promethee::StructureUpgrader::Components
|
|
13
|
+
class Collection < Base
|
|
14
|
+
def upgraded_attributes
|
|
15
|
+
{
|
|
16
|
+
'items_per_line' => {
|
|
17
|
+
'collection' => [
|
|
18
|
+
{ 'label' => '2', 'value' => 2 },
|
|
19
|
+
{ 'label' => '3', 'value' => 3 },
|
|
20
|
+
{ 'label' => '4', 'value' => 4 },
|
|
21
|
+
{ 'label' => '6', 'value' => 6 }
|
|
22
|
+
],
|
|
23
|
+
'searchable' => false,
|
|
24
|
+
'translatable' => false,
|
|
25
|
+
'type' => 'enum',
|
|
26
|
+
'value' => attribute('items_per_line')
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Collection Item Component
|
|
2
|
+
# ================
|
|
3
|
+
#
|
|
4
|
+
# V3
|
|
5
|
+
# -----
|
|
6
|
+
#
|
|
7
|
+
# {
|
|
8
|
+
# searchable_caption: "",
|
|
9
|
+
# media_type: "image",
|
|
10
|
+
# image: {
|
|
11
|
+
# id: undefined,
|
|
12
|
+
# name: ""
|
|
13
|
+
# },
|
|
14
|
+
# video: {
|
|
15
|
+
# url: "https://vimeo.com/115082758"
|
|
16
|
+
# }
|
|
17
|
+
# }
|
|
18
|
+
#
|
|
19
|
+
|
|
20
|
+
module Promethee::StructureUpgrader::Components
|
|
21
|
+
class CollectionItem < Base
|
|
22
|
+
def upgraded_attributes
|
|
23
|
+
{
|
|
24
|
+
'caption' => {
|
|
25
|
+
'searchable' => true,
|
|
26
|
+
'translatable' => true,
|
|
27
|
+
'type' => 'text',
|
|
28
|
+
'value' => attribute('searchable_caption')
|
|
29
|
+
},
|
|
30
|
+
'media_type' => {
|
|
31
|
+
'collection' => [
|
|
32
|
+
{ 'label' => 'Image', 'value' => 'image' },
|
|
33
|
+
{ 'label' => 'Video', 'value' => 'video' }
|
|
34
|
+
],
|
|
35
|
+
'searchable' => false,
|
|
36
|
+
'translatable' => false,
|
|
37
|
+
'type' => 'enum',
|
|
38
|
+
'value' => attribute('media_type')
|
|
39
|
+
},
|
|
40
|
+
'image' => {
|
|
41
|
+
'searchable' => false,
|
|
42
|
+
'translatable' => false,
|
|
43
|
+
'type' => 'blob',
|
|
44
|
+
'value' => attribute('image')
|
|
45
|
+
},
|
|
46
|
+
'video' => {
|
|
47
|
+
'searchable' => false,
|
|
48
|
+
'translatable' => true,
|
|
49
|
+
'type' => 'video',
|
|
50
|
+
'value' => attribute('video', 'url')
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Column Component
|
|
2
|
+
# ================
|
|
3
|
+
#
|
|
4
|
+
# V3
|
|
5
|
+
# -----
|
|
6
|
+
#
|
|
7
|
+
# {
|
|
8
|
+
# size: 4,
|
|
9
|
+
# offset: 0,
|
|
10
|
+
# mobile: {
|
|
11
|
+
# enabled: false,
|
|
12
|
+
# size: 12,
|
|
13
|
+
# offset: 0
|
|
14
|
+
# },
|
|
15
|
+
# tablet: {
|
|
16
|
+
# enabled: false,
|
|
17
|
+
# size: 12,
|
|
18
|
+
# offset: 0
|
|
19
|
+
# }
|
|
20
|
+
# }
|
|
21
|
+
#
|
|
22
|
+
|
|
23
|
+
module Promethee::StructureUpgrader::Components
|
|
24
|
+
class Column < Base
|
|
25
|
+
def upgraded_attributes
|
|
26
|
+
{
|
|
27
|
+
'size' => {
|
|
28
|
+
'searchable' => false,
|
|
29
|
+
'translatable' => false,
|
|
30
|
+
'type' => 'integer',
|
|
31
|
+
'value' => attribute('size')
|
|
32
|
+
},
|
|
33
|
+
'offset' => {
|
|
34
|
+
'searchable' => false,
|
|
35
|
+
'translatable' => false,
|
|
36
|
+
'type' => 'integer',
|
|
37
|
+
'value' => attribute('offset')
|
|
38
|
+
},
|
|
39
|
+
'mobile' => {
|
|
40
|
+
'searchable' => false,
|
|
41
|
+
'translatable' => false,
|
|
42
|
+
'type' => 'hash',
|
|
43
|
+
'value' => {
|
|
44
|
+
'enabled' => {
|
|
45
|
+
'searchable' => false,
|
|
46
|
+
'translatable' => false,
|
|
47
|
+
'type' => 'boolean',
|
|
48
|
+
'value' => attribute('mobile', 'enabled')
|
|
49
|
+
},
|
|
50
|
+
'size' => {
|
|
51
|
+
'searchable' => false,
|
|
52
|
+
'translatable' => false,
|
|
53
|
+
'type' => 'integer',
|
|
54
|
+
'value' => attribute('mobile', 'size')
|
|
55
|
+
},
|
|
56
|
+
'offset' => {
|
|
57
|
+
'searchable' => false,
|
|
58
|
+
'translatable' => false,
|
|
59
|
+
'type' => 'integer',
|
|
60
|
+
'value' => attribute('mobile', 'offset')
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
'tablet' => {
|
|
65
|
+
'searchable' => false,
|
|
66
|
+
'translatable' => false,
|
|
67
|
+
'type' => 'hash',
|
|
68
|
+
'value' => {
|
|
69
|
+
'enabled' => {
|
|
70
|
+
'searchable' => false,
|
|
71
|
+
'translatable' => false,
|
|
72
|
+
'type' => 'boolean',
|
|
73
|
+
'value' => attribute('tablet', 'enabled')
|
|
74
|
+
},
|
|
75
|
+
'size' => {
|
|
76
|
+
'searchable' => false,
|
|
77
|
+
'translatable' => false,
|
|
78
|
+
'type' => 'integer',
|
|
79
|
+
'value' => attribute('tablet', 'size')
|
|
80
|
+
},
|
|
81
|
+
'offset' => {
|
|
82
|
+
'searchable' => false,
|
|
83
|
+
'translatable' => false,
|
|
84
|
+
'type' => 'integer',
|
|
85
|
+
'value' => attribute('tablet', 'offset')
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|