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.
Files changed (104) hide show
  1. checksums.yaml +5 -5
  2. data/UPGRADING +2 -2
  3. data/app/assets/stylesheets/promethee-edit.sass +1 -0
  4. data/app/assets/stylesheets/promethee-edit/_localizer.sass +4 -0
  5. data/app/models/concerns/promethee_data.rb +57 -34
  6. data/app/services/promethee/structure_upgrader/components/aside.rb +51 -0
  7. data/app/services/promethee/structure_upgrader/components/base.rb +36 -0
  8. data/app/services/promethee/structure_upgrader/components/blockquote.rb +32 -0
  9. data/app/services/promethee/structure_upgrader/components/collection.rb +31 -0
  10. data/app/services/promethee/structure_upgrader/components/collection_item.rb +55 -0
  11. data/app/services/promethee/structure_upgrader/components/column.rb +92 -0
  12. data/app/services/promethee/structure_upgrader/components/cover.rb +49 -0
  13. data/app/services/promethee/structure_upgrader/components/faq.rb +16 -0
  14. data/app/services/promethee/structure_upgrader/components/faq_item.rb +49 -0
  15. data/app/services/promethee/structure_upgrader/components/image.rb +42 -0
  16. data/app/services/promethee/structure_upgrader/components/page.rb +56 -0
  17. data/app/services/promethee/structure_upgrader/components/row.rb +32 -0
  18. data/app/services/promethee/structure_upgrader/components/slider.rb +16 -0
  19. data/app/services/promethee/structure_upgrader/components/slider_item.rb +55 -0
  20. data/app/services/promethee/structure_upgrader/components/table.rb +116 -0
  21. data/app/services/promethee/structure_upgrader/components/table_cell.rb +16 -0
  22. data/app/services/promethee/structure_upgrader/components/text.rb +25 -0
  23. data/app/services/promethee/structure_upgrader/components/video.rb +32 -0
  24. data/app/services/promethee/structure_upgrader_service.rb +110 -0
  25. data/app/views/promethee/_edit.html.erb +34 -4
  26. data/app/views/promethee/_localize.html.erb +34 -3
  27. data/app/views/promethee/components/aside/_edit.define.html.erb +29 -4
  28. data/app/views/promethee/components/aside/_edit.inspect.html.erb +6 -6
  29. data/app/views/promethee/components/aside/_edit.move.html.erb +7 -7
  30. data/app/views/promethee/components/aside/_localize.html.erb +11 -11
  31. data/app/views/promethee/components/aside/_show.html.erb +8 -8
  32. data/app/views/promethee/components/blockquote/_edit.define.html.erb +12 -2
  33. data/app/views/promethee/components/blockquote/_edit.inspect.html.erb +4 -4
  34. data/app/views/promethee/components/blockquote/_edit.move.html.erb +3 -3
  35. data/app/views/promethee/components/blockquote/_localize.html.erb +8 -8
  36. data/app/views/promethee/components/blockquote/_show.html.erb +3 -3
  37. data/app/views/promethee/components/collection/_edit.define.html.erb +12 -1
  38. data/app/views/promethee/components/collection/_edit.inspect.html.erb +4 -4
  39. data/app/views/promethee/components/collection/_edit.move.html.erb +1 -1
  40. data/app/views/promethee/components/collection/_localize.html.erb +0 -1
  41. data/app/views/promethee/components/collection/_show.html.erb +1 -2
  42. data/app/views/promethee/components/collection_item/_edit.define.html.erb +27 -5
  43. data/app/views/promethee/components/collection_item/_edit.inspect.html.erb +6 -6
  44. data/app/views/promethee/components/collection_item/_edit.move.html.erb +5 -5
  45. data/app/views/promethee/components/collection_item/_localize.html.erb +9 -9
  46. data/app/views/promethee/components/collection_item/_show.html.erb +7 -7
  47. data/app/views/promethee/components/column/_edit.define.html.erb +58 -8
  48. data/app/views/promethee/components/column/_edit.inspect.html.erb +19 -19
  49. data/app/views/promethee/components/column/_localize.html.erb +0 -1
  50. data/app/views/promethee/components/column/_show.html.erb +10 -10
  51. data/app/views/promethee/components/cover/_edit.define.html.erb +26 -6
  52. data/app/views/promethee/components/cover/_edit.inspect.html.erb +4 -4
  53. data/app/views/promethee/components/cover/_edit.move.html.erb +4 -4
  54. data/app/views/promethee/components/cover/_localize.html.erb +14 -14
  55. data/app/views/promethee/components/cover/_show.html.erb +10 -10
  56. data/app/views/promethee/components/faq_item/_edit.define.html.erb +25 -5
  57. data/app/views/promethee/components/faq_item/_edit.inspect.html.erb +4 -4
  58. data/app/views/promethee/components/faq_item/_edit.move.html.erb +6 -6
  59. data/app/views/promethee/components/faq_item/_localize.html.erb +7 -7
  60. data/app/views/promethee/components/faq_item/_show.html.erb +7 -7
  61. data/app/views/promethee/components/image/_edit.define.html.erb +19 -4
  62. data/app/views/promethee/components/image/_edit.inspect.html.erb +3 -3
  63. data/app/views/promethee/components/image/_edit.move.html.erb +5 -5
  64. data/app/views/promethee/components/image/_localize.html.erb +20 -17
  65. data/app/views/promethee/components/image/_show.html.erb +6 -6
  66. data/app/views/promethee/components/page/_edit.define.html.erb +32 -7
  67. data/app/views/promethee/components/page/_edit.inspect.html.erb +5 -5
  68. data/app/views/promethee/components/page/_localize.html.erb +8 -8
  69. data/app/views/promethee/components/page/_show.html.erb +4 -4
  70. data/app/views/promethee/components/row/_edit.define.html.erb +12 -2
  71. data/app/views/promethee/components/row/_edit.inspect.html.erb +8 -8
  72. data/app/views/promethee/components/row/_edit.move.html.erb +9 -9
  73. data/app/views/promethee/components/row/_show.html.erb +7 -6
  74. data/app/views/promethee/components/slider_item/_edit.define.html.erb +27 -5
  75. data/app/views/promethee/components/slider_item/_edit.inspect.html.erb +6 -6
  76. data/app/views/promethee/components/slider_item/_edit.move.html.erb +7 -7
  77. data/app/views/promethee/components/slider_item/_localize.html.erb +9 -9
  78. data/app/views/promethee/components/slider_item/_show.html.erb +7 -8
  79. data/app/views/promethee/components/table/_edit.define.html.erb +9 -6
  80. data/app/views/promethee/components/table/_edit.inspect.html.erb +138 -50
  81. data/app/views/promethee/components/table/_edit.move.html.erb +17 -7
  82. data/app/views/promethee/components/table/_localize.html.erb +0 -43
  83. data/app/views/promethee/components/table/_show.html.erb +13 -16
  84. data/app/views/promethee/components/table_cell/_edit.define.html.erb +22 -0
  85. data/app/views/promethee/components/table_cell/_edit.inspect.html.erb +0 -0
  86. data/app/views/promethee/components/table_cell/_edit.move.html.erb +0 -0
  87. data/app/views/promethee/components/table_cell/_icon.svg +3 -0
  88. data/app/views/promethee/components/table_cell/_localize.html.erb +14 -0
  89. data/app/views/promethee/components/table_cell/_show.html.erb +0 -0
  90. data/app/views/promethee/components/text/_edit.define.html.erb +6 -1
  91. data/app/views/promethee/components/text/_edit.inspect.html.erb +3 -3
  92. data/app/views/promethee/components/text/_edit.move.html.erb +1 -1
  93. data/app/views/promethee/components/text/_localize.html.erb +3 -3
  94. data/app/views/promethee/components/text/_show.html.erb +2 -2
  95. data/app/views/promethee/components/video/_edit.define.html.erb +12 -2
  96. data/app/views/promethee/components/video/_edit.inspect.html.erb +2 -2
  97. data/app/views/promethee/components/video/_edit.move.html.erb +6 -6
  98. data/app/views/promethee/components/video/_localize.html.erb +4 -4
  99. data/app/views/promethee/components/video/_show.html.erb +4 -3
  100. data/app/views/promethee/presets/_image-with-text.html.erb +171 -6
  101. data/lib/promethee/data/localization.rb +13 -2
  102. data/lib/promethee/rails/version.rb +1 -1
  103. data/lib/tasks/promethee/promethee.rake +6 -0
  104. 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,16 @@
1
+ # Faq Component
2
+ # ================
3
+ #
4
+ # V3
5
+ # -----
6
+ #
7
+ # {}
8
+ #
9
+
10
+ module Promethee::StructureUpgrader::Components
11
+ class Faq < Base
12
+ def upgraded_attributes
13
+ {}
14
+ end
15
+ end
16
+ 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,16 @@
1
+ # Slider Component
2
+ # ================
3
+ #
4
+ # V3
5
+ # -----
6
+ #
7
+ # {}
8
+ #
9
+
10
+ module Promethee::StructureUpgrader::Components
11
+ class Slider < Base
12
+ def upgraded_attributes
13
+ {}
14
+ end
15
+ end
16
+ 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
@@ -0,0 +1,16 @@
1
+ # Table Cell Component
2
+ # ================
3
+ #
4
+ # V3
5
+ # -----
6
+ #
7
+ # Did not exist
8
+ #
9
+
10
+ module Promethee::StructureUpgrader::Components
11
+ class TableCell < Base
12
+ def upgraded_attributes
13
+ @data['attributes']
14
+ end
15
+ end
16
+ end