promethee 3.0.2 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
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