promethee 3.0.2 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -0,0 +1,49 @@
|
|
1
|
+
# Cover Component
|
2
|
+
# ================
|
3
|
+
#
|
4
|
+
# V3
|
5
|
+
# -----
|
6
|
+
#
|
7
|
+
# {
|
8
|
+
# image: {
|
9
|
+
# id: undefined,
|
10
|
+
# name: ''
|
11
|
+
# },
|
12
|
+
# searchable_surtitle: '',
|
13
|
+
# searchable_title: '',
|
14
|
+
# searchable_subtitle: ''
|
15
|
+
# }
|
16
|
+
#
|
17
|
+
|
18
|
+
module Promethee::StructureUpgrader::Components
|
19
|
+
class Cover < Base
|
20
|
+
def upgraded_attributes
|
21
|
+
{
|
22
|
+
'image' => {
|
23
|
+
'searchable' => false,
|
24
|
+
'translatable' => false,
|
25
|
+
'type' => 'blob',
|
26
|
+
'value' => attribute('image')
|
27
|
+
},
|
28
|
+
'surtitle' => {
|
29
|
+
'searchable' => true,
|
30
|
+
'translatable' => true,
|
31
|
+
'type' => 'string',
|
32
|
+
'value' => string_attribute('searchable_surtitle')
|
33
|
+
},
|
34
|
+
'title' => {
|
35
|
+
'searchable' => true,
|
36
|
+
'translatable' => true,
|
37
|
+
'type' => 'string',
|
38
|
+
'value' => string_attribute('searchable_title')
|
39
|
+
},
|
40
|
+
'subtitle' => {
|
41
|
+
'searchable' => true,
|
42
|
+
'translatable' => true,
|
43
|
+
'type' => 'string',
|
44
|
+
'value' => string_attribute('searchable_subtitle')
|
45
|
+
}
|
46
|
+
}
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# Faq Item Component
|
2
|
+
# ================
|
3
|
+
#
|
4
|
+
# V3
|
5
|
+
# -----
|
6
|
+
#
|
7
|
+
# {
|
8
|
+
# image: {
|
9
|
+
# id: undefined,
|
10
|
+
# name: ""
|
11
|
+
# },
|
12
|
+
# searchable_title: "",
|
13
|
+
# searchable_body: "",
|
14
|
+
# special_question: false
|
15
|
+
# }
|
16
|
+
#
|
17
|
+
|
18
|
+
module Promethee::StructureUpgrader::Components
|
19
|
+
class FaqItem < Base
|
20
|
+
def upgraded_attributes
|
21
|
+
{
|
22
|
+
'image' => {
|
23
|
+
'searchable' => false,
|
24
|
+
'translatable' => false,
|
25
|
+
'type' => 'blob',
|
26
|
+
'value' => attribute('image')
|
27
|
+
},
|
28
|
+
'title' => {
|
29
|
+
'searchable' => true,
|
30
|
+
'translatable' => true,
|
31
|
+
'type' => 'string',
|
32
|
+
'value': string_attribute('searchable_title')
|
33
|
+
},
|
34
|
+
'body' => {
|
35
|
+
'searchable' => true,
|
36
|
+
'translatable' => true,
|
37
|
+
'type' => 'text',
|
38
|
+
'value' => attribute('searchable_body')
|
39
|
+
},
|
40
|
+
'special_question' => {
|
41
|
+
'searchable' => false,
|
42
|
+
'translatable' => false,
|
43
|
+
'type' => 'boolean',
|
44
|
+
'value' => attribute('special_question')
|
45
|
+
}
|
46
|
+
}
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# Image Component
|
2
|
+
# ================
|
3
|
+
#
|
4
|
+
# V3
|
5
|
+
# -----
|
6
|
+
#
|
7
|
+
# {
|
8
|
+
# image: {
|
9
|
+
# id: undefined,
|
10
|
+
# name: ''
|
11
|
+
# },
|
12
|
+
# searchable_alt: '',
|
13
|
+
# searchable_caption: ''
|
14
|
+
# }
|
15
|
+
#
|
16
|
+
|
17
|
+
module Promethee::StructureUpgrader::Components
|
18
|
+
class Image < Base
|
19
|
+
def upgraded_attributes
|
20
|
+
{
|
21
|
+
'image' => {
|
22
|
+
'searchable' => false,
|
23
|
+
'translatable' => false,
|
24
|
+
'type' => 'blob',
|
25
|
+
value: attribute('image')
|
26
|
+
},
|
27
|
+
'alt' => {
|
28
|
+
'searchable' => true,
|
29
|
+
'translatable' => true,
|
30
|
+
'type' => 'string',
|
31
|
+
'value' => string_attribute('searchable_alt')
|
32
|
+
},
|
33
|
+
'caption' => {
|
34
|
+
'searchable' => true,
|
35
|
+
'translatable' => true,
|
36
|
+
'type' => 'string',
|
37
|
+
'value' => string_attribute('searchable_caption')
|
38
|
+
}
|
39
|
+
}
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# Page Component
|
2
|
+
# ================
|
3
|
+
#
|
4
|
+
# V3
|
5
|
+
# -----
|
6
|
+
#
|
7
|
+
# {
|
8
|
+
# searchable_title: 'New page',
|
9
|
+
# searchable_description: '',
|
10
|
+
# thumbnail: {
|
11
|
+
# id: undefined,
|
12
|
+
# name: ''
|
13
|
+
# },
|
14
|
+
# stylesheets: '',
|
15
|
+
# javascripts: ''
|
16
|
+
# }
|
17
|
+
#
|
18
|
+
|
19
|
+
module Promethee::StructureUpgrader::Components
|
20
|
+
class Page < Base
|
21
|
+
def upgraded_attributes
|
22
|
+
{
|
23
|
+
'title' => {
|
24
|
+
'searchable' => true,
|
25
|
+
'translatable' => true,
|
26
|
+
'type' => 'string',
|
27
|
+
'value' => string_attribute('searchable_title')
|
28
|
+
},
|
29
|
+
'description' => {
|
30
|
+
'searchable' => true,
|
31
|
+
'translatable' => true,
|
32
|
+
'type' => 'text',
|
33
|
+
'value' => attribute('searchable_description')
|
34
|
+
},
|
35
|
+
'thumbnail' => {
|
36
|
+
'searchable' => false,
|
37
|
+
'translatable' => false,
|
38
|
+
'type' => 'blob',
|
39
|
+
'value' => attribute('thumbnail')
|
40
|
+
},
|
41
|
+
'stylesheets' => {
|
42
|
+
'searchable' => false,
|
43
|
+
'translatable' => false,
|
44
|
+
'type' => 'string',
|
45
|
+
'value' => string_attribute('stylesheets')
|
46
|
+
},
|
47
|
+
'javascripts' => {
|
48
|
+
'searchable' => false,
|
49
|
+
'translatable' => false,
|
50
|
+
'type' => 'string',
|
51
|
+
'value' => string_attribute('javascripts')
|
52
|
+
}
|
53
|
+
}
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# Row Component
|
2
|
+
# ================
|
3
|
+
#
|
4
|
+
# V3
|
5
|
+
# -----
|
6
|
+
#
|
7
|
+
# {
|
8
|
+
# bgcolor: "rgba(255,255,255,0)",
|
9
|
+
# backgrounds: []
|
10
|
+
# }
|
11
|
+
#
|
12
|
+
|
13
|
+
module Promethee::StructureUpgrader::Components
|
14
|
+
class Row < Base
|
15
|
+
def upgraded_attributes
|
16
|
+
{
|
17
|
+
'bgcolor' => {
|
18
|
+
'searchable' => false,
|
19
|
+
'translatable' => false,
|
20
|
+
'type' => 'color',
|
21
|
+
'value' => attribute('bgcolor'),
|
22
|
+
},
|
23
|
+
'backgrounds' => {
|
24
|
+
'searchable' => false,
|
25
|
+
'translatable' => false,
|
26
|
+
'type' => 'array',
|
27
|
+
'value' => attribute('backgrounds')
|
28
|
+
}
|
29
|
+
}
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# Slider 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 SliderItem < 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' => 'string',
|
50
|
+
'value' => attribute('video', 'url')
|
51
|
+
}
|
52
|
+
}
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
# Table Component
|
2
|
+
# ================
|
3
|
+
#
|
4
|
+
# V3
|
5
|
+
# -----
|
6
|
+
#
|
7
|
+
# {
|
8
|
+
# cols: [],
|
9
|
+
# cols_data: {},
|
10
|
+
# rows: [],
|
11
|
+
# rows_data: {}
|
12
|
+
# }
|
13
|
+
#
|
14
|
+
|
15
|
+
module Promethee::StructureUpgrader::Components
|
16
|
+
class Table < Base
|
17
|
+
def upgrade
|
18
|
+
@upgraded_data = @data.deep_dup
|
19
|
+
return if @upgraded_data['attributes'].empty?
|
20
|
+
|
21
|
+
attribute('cols').nil? ? generate_cell_matrix_from_data
|
22
|
+
: generate_cell_matrix_from_structure
|
23
|
+
|
24
|
+
@upgraded_data['attributes'] = upgraded_attributes.deep_stringify_keys
|
25
|
+
@upgraded_data['children'] = @cell_matrix.flatten
|
26
|
+
end
|
27
|
+
|
28
|
+
def upgraded_attributes
|
29
|
+
uuid_matrix = @cell_matrix.map { |row| row.map { |cell| cell['id'] } }
|
30
|
+
|
31
|
+
{
|
32
|
+
'structure' => {
|
33
|
+
'searchable' => false,
|
34
|
+
'translatable' => false,
|
35
|
+
'type' => 'matrix',
|
36
|
+
'value' => uuid_matrix
|
37
|
+
}
|
38
|
+
}
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def generate_cell_matrix_from_structure
|
44
|
+
cols = attribute('cols').to_a
|
45
|
+
rows = attribute('rows').to_a
|
46
|
+
data_matrix = []
|
47
|
+
|
48
|
+
data_matrix << cols.map { |col_uid| new_cell_data(:col, col_uid) }
|
49
|
+
rows.each do |row_uid|
|
50
|
+
data_matrix << cols.map { |col_uid| new_cell_data(:row, col_uid, row_uid) }
|
51
|
+
end
|
52
|
+
|
53
|
+
generate_cell_matrix(data_matrix)
|
54
|
+
end
|
55
|
+
|
56
|
+
def generate_cell_matrix_from_data
|
57
|
+
cols_data = attribute('cols_data').to_h
|
58
|
+
rows_data = attribute('rows_data').to_h
|
59
|
+
data_matrix = []
|
60
|
+
|
61
|
+
data_matrix << cols_data.map { |col_uid, _| new_cell_data(:col, col_uid) }
|
62
|
+
rows_data.each do |row_uid, row_data|
|
63
|
+
data_matrix << row_data.map { |col_uid, _| new_cell_data(:row, col_uid, row_uid) }
|
64
|
+
end
|
65
|
+
|
66
|
+
generate_cell_matrix(data_matrix)
|
67
|
+
end
|
68
|
+
|
69
|
+
def new_cell_data(type, col_uid, row_uid = nil)
|
70
|
+
row_uid ||= col_uid
|
71
|
+
uids = [row_uid, col_uid]
|
72
|
+
|
73
|
+
text = type == :col ? string_attribute('cols_data', col_uid, 'searchable_text')
|
74
|
+
: string_attribute('rows_data', *uids, 'searchable_text')
|
75
|
+
|
76
|
+
{ text: text, uids: uids }
|
77
|
+
end
|
78
|
+
|
79
|
+
def generate_cell_matrix(data_matrix)
|
80
|
+
@cell_matrix = data_matrix.map { |row|
|
81
|
+
row.map { |cell_data| new_cell(cell_data) }
|
82
|
+
}
|
83
|
+
end
|
84
|
+
|
85
|
+
def new_cell(data)
|
86
|
+
{
|
87
|
+
'id' => new_uuid(data[:uids]),
|
88
|
+
'type' => 'table_cell',
|
89
|
+
'attributes' => {
|
90
|
+
'text' => {
|
91
|
+
'searchable' => true,
|
92
|
+
'translatable' => true,
|
93
|
+
'type' => 'string',
|
94
|
+
'value' => data[:text]
|
95
|
+
}
|
96
|
+
}
|
97
|
+
}
|
98
|
+
end
|
99
|
+
|
100
|
+
def new_uuid(uids)
|
101
|
+
# Not random to keep the connection between master & translations
|
102
|
+
# [bf59b8868b, dcd302bc62]
|
103
|
+
# => "bf59b886-8bdc-d302-bc62-8bdcd302bc62"
|
104
|
+
source = uids.join ''
|
105
|
+
parts = [
|
106
|
+
source[0..7],
|
107
|
+
source[8..11],
|
108
|
+
source[12..15],
|
109
|
+
source[16..19],
|
110
|
+
source[8..19]
|
111
|
+
]
|
112
|
+
|
113
|
+
parts.join('-')
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|