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
@@ -8,8 +8,18 @@
8
8
  data: {
9
9
  type: 'blockquote',
10
10
  attributes: {
11
- searchable_body: '<p>Edit me</p>',
12
- searchable_author: ''
11
+ body: {
12
+ searchable: true,
13
+ translatable: true,
14
+ type: 'text',
15
+ value: '<p>Edit me</p>',
16
+ },
17
+ author: {
18
+ searchable: true,
19
+ translatable: false,
20
+ type: 'string',
21
+ value: ''
22
+ }
13
23
  }
14
24
  }
15
25
  })
@@ -1,14 +1,14 @@
1
1
  <script type="text/ng-template" id="promethee/components/blockquote/edit/inspect">
2
2
  <div class="form-group">
3
- <summernote config="summernoteConfig" ng-model="promethee.inspected.attributes.searchable_body"></summernote>
3
+ <summernote config="summernoteConfig" ng-model="promethee.inspected.attributes.body.value"></summernote>
4
4
  <small>Quotation marks are added automatically.</small>
5
5
  </div>
6
6
 
7
7
  <div class="form-group">
8
8
  <label class="label-control">Author</label>
9
- <input ng-model="promethee.inspected.attributes.searchable_author" class="form-control" type="text"/>
9
+ <input ng-model="promethee.inspected.attributes.author.value" class="form-control" type="text"/>
10
10
  </div>
11
11
 
12
- {{promethee.inspected.attributes.searchable_body | textContentFromHTML: 'distinctParagraphs' | numberOfWords}} words<br>
13
- {{promethee.inspected.attributes.searchable_body | textContentFromHTML | numberOfCharacters}} characters
12
+ {{promethee.inspected.attributes.body.value | textContentFromHTML: 'distinctParagraphs' | numberOfWords}} words<br>
13
+ {{promethee.inspected.attributes.body.value | textContentFromHTML | numberOfCharacters}} characters
14
14
  </script>
@@ -1,10 +1,10 @@
1
1
  <script type="text/ng-template" id="promethee/components/blockquote/edit/move">
2
2
  <%= render 'promethee/edit/move.header', type: 'blockquote' %>
3
3
  <div class="row">
4
- <div class="col-md-12 blockquote" ng-bind-html="component.attributes.searchable_body | htmlSafe"></div>
4
+ <div class="col-md-12 blockquote" ng-bind-html="component.attributes.body.value | htmlSafe"></div>
5
5
 
6
- <div ng-show="component.attributes.searchable_author" class="col-xs-12 col-12">
7
- <p class="author">{{component.attributes.searchable_author}}</p>
6
+ <div ng-show="component.attributes.author.value" class="col-xs-12 col-12">
7
+ <p class="author">{{component.attributes.author.value}}</p>
8
8
  </div>
9
9
  </div>
10
10
  </div>
@@ -1,29 +1,29 @@
1
1
  <script type="text/ng-template" id="promethee/components/blockquote/localize">
2
- <div ng-show="master.attributes.searchable_body">
2
+ <div ng-show="master.attributes.body.value">
3
3
  <hr>
4
4
  <div class="row">
5
5
  <div class="col-md-6">
6
6
  <b>Body</b>
7
- <div ng-bind-html="master.attributes.searchable_body | htmlSafe"></div>
7
+ <div ng-bind-html="master.attributes.body.value | htmlSafe"></div>
8
8
  </div>
9
9
  <div class="col-md-6">
10
10
  <div class="form-group">
11
- <label class="label-control">Body</label>
12
- <summernote config="summernoteConfig" ng-model="component.attributes.searchable_body"></summernote>
11
+ <b>Body</b>
12
+ <summernote config="summernoteConfig" ng-model="component.attributes.body.value"></summernote>
13
13
  </div>
14
14
  </div>
15
15
  </div>
16
16
  </div>
17
17
 
18
- <div class="row" ng-show="master.attributes.searchable_author">
18
+ <div class="row" ng-show="master.attributes.author.value">
19
19
  <div class="col-md-6">
20
20
  <b>Author</b>
21
- <p>{{master.attributes.searchable_author}}</p>
21
+ <p>{{master.attributes.author.value}}</p>
22
22
  </div>
23
23
  <div class="col-md-6">
24
24
  <div class="form-group">
25
- <label class="label-control">Author</label>
26
- <input class="form-control" ng-model="component.attributes.searchable_author" type="text">
25
+ <b>Author</b>
26
+ <input class="form-control" ng-model="component.attributes.author.value" type="text">
27
27
  </div>
28
28
  </div>
29
29
  </div>
@@ -1,11 +1,11 @@
1
1
  <%
2
- body = component[:attributes][:searchable_body].to_s
3
- author = component[:attributes][:searchable_author].to_s
2
+ body = component[:attributes].dig(:body, :value)&.to_s&.html_safe
3
+ author = component[:attributes].dig(:author, :value)&.to_s
4
4
  %>
5
5
 
6
6
  <div class="row <%= promethee_class_for(component) %>">
7
7
  <div class="col-md-12">
8
- <div class="blockquote"><%= body.html_safe %></div>
8
+ <div class="blockquote"><%= body %></div>
9
9
  <% if author.present? %>
10
10
  <p class="author"><%= author %></p>
11
11
  <% end %>
@@ -8,7 +8,18 @@
8
8
  data: {
9
9
  type: 'collection',
10
10
  attributes: {
11
- items_per_line: 6
11
+ items_per_line: {
12
+ collection: [
13
+ { label: '2', value: 2 },
14
+ { label: '3', value: 3 },
15
+ { label: '4', value: 4 },
16
+ { label: '6', value: 6 }
17
+ ],
18
+ searchable: false,
19
+ translatable: false,
20
+ type: 'enum',
21
+ value: 6
22
+ }
12
23
  },
13
24
  children: []
14
25
  }
@@ -3,16 +3,16 @@
3
3
  <label class="label-control">Items per line (on desktop):</label>
4
4
  <div class="row">
5
5
  <div class="col-xs-2 col-2">
6
- <input ng-model="promethee.inspected.attributes.items_per_line" type="radio" ng-value="2"> 2
6
+ <input ng-model="promethee.inspected.attributes.items_per_line.value" type="radio" ng-value="2"> 2
7
7
  </div>
8
8
  <div class="col-xs-2 col-2">
9
- <input ng-model="promethee.inspected.attributes.items_per_line" type="radio" ng-value="3"> 3
9
+ <input ng-model="promethee.inspected.attributes.items_per_line.value" type="radio" ng-value="3"> 3
10
10
  </div>
11
11
  <div class="col-xs-2 col-2">
12
- <input ng-model="promethee.inspected.attributes.items_per_line" type="radio" ng-value="4"> 4
12
+ <input ng-model="promethee.inspected.attributes.items_per_line.value" type="radio" ng-value="4"> 4
13
13
  </div>
14
14
  <div class="col-xs-2 col-2">
15
- <input ng-model="promethee.inspected.attributes.items_per_line" type="radio" ng-value="6"> 6
15
+ <input ng-model="promethee.inspected.attributes.items_per_line.value" type="radio" ng-value="6"> 6
16
16
  </div>
17
17
  </div>
18
18
  </div>
@@ -20,7 +20,7 @@
20
20
  Object.defineProperties($scope, {
21
21
  itemsPerLine: {
22
22
  get: function() {
23
- return $scope.component.attributes.items_per_line;
23
+ return $scope.component.attributes.items_per_line.value;
24
24
  }
25
25
  },
26
26
  size: {
@@ -1,3 +1,2 @@
1
1
  <script type="text/ng-template" id="promethee/components/collection/localize">
2
-
3
2
  </script>
@@ -1,6 +1,5 @@
1
1
  <%
2
- title = component[:attributes][:searchable_title]
3
- items_per_line = component[:attributes][:items_per_line]
2
+ items_per_line = component[:attributes].dig(:items_per_line, :value)
4
3
  case items_per_line
5
4
  when 6
6
5
  col_classes = "col-md-2 col-sm-4 col-xs-6 col-6"
@@ -8,14 +8,36 @@
8
8
  data: {
9
9
  type: 'collection_item',
10
10
  attributes: {
11
- searchable_caption: "",
12
- media_type: "image",
11
+ caption: {
12
+ searchable: true,
13
+ translatable: true,
14
+ type: 'text',
15
+ value: ''
16
+ },
17
+ media_type: {
18
+ collection: [
19
+ { label: 'Image', value: 'image' },
20
+ { label: 'Video', value: 'video' }
21
+ ],
22
+ searchable: false,
23
+ translatable: false,
24
+ type: 'enum',
25
+ value: 'image'
26
+ },
13
27
  image: {
14
- id: undefined,
15
- name: ""
28
+ searchable: false,
29
+ translatable: false,
30
+ type: 'blob',
31
+ value: {
32
+ id: undefined,
33
+ name: ''
34
+ }
16
35
  },
17
36
  video: {
18
- url: "https://vimeo.com/115082758"
37
+ searchable: false,
38
+ translatable: true,
39
+ type: 'video',
40
+ value: 'https://vimeo.com/115082758'
19
41
  }
20
42
  }
21
43
  }
@@ -2,23 +2,23 @@
2
2
  <div class="form-group">
3
3
  <label class="label-control">Media type</label>
4
4
  <div>
5
- <label class="radio-inline"> <input ng-model="promethee.inspected.attributes.media_type" type="radio" value="image" />Image </label>
6
- <label class="radio-inline"> <input ng-model="promethee.inspected.attributes.media_type" type="radio" value="video" />Video </label>
5
+ <label class="radio-inline"> <input ng-model="promethee.inspected.attributes.media_type.value" type="radio" value="image" />Image </label>
6
+ <label class="radio-inline"> <input ng-model="promethee.inspected.attributes.media_type.value" type="radio" value="video" />Video </label>
7
7
  </div>
8
8
  </div>
9
9
 
10
- <promethee-uploader ng-show="promethee.inspected.attributes.media_type == 'image'" ng-model="promethee.inspected.attributes.image" label="Image" limits="'.jpg,.jpeg,.png,.gif'"></promethee-uploader>
10
+ <promethee-uploader ng-show="promethee.inspected.attributes.media_type.value == 'image'" ng-model="promethee.inspected.attributes.image.value" label="Image" limits="'.jpg,.jpeg,.png,.gif'"></promethee-uploader>
11
11
 
12
- <div class="form-group" ng-show="promethee.inspected.attributes.media_type == 'video'">
12
+ <div class="form-group" ng-show="promethee.inspected.attributes.media_type.value == 'video'">
13
13
  <label class="label-control">Video URL</label>
14
- <input class="form-control" ng-model="promethee.inspected.attributes.video.url"></summernote>
14
+ <input class="form-control" ng-model="promethee.inspected.attributes.video.value"></summernote>
15
15
  </div>
16
16
 
17
17
  <div class="row">
18
18
  <div class="col-xs-12 col-12">
19
19
  <div class="form-group">
20
20
  <label class="label-control">Caption</label>
21
- <summernote config="summernoteConfig" ng-model="promethee.inspected.attributes.searchable_caption"></summernote>
21
+ <summernote config="summernoteConfig" ng-model="promethee.inspected.attributes.caption.value"></summernote>
22
22
  </div>
23
23
  </div>
24
24
  </div>
@@ -3,8 +3,8 @@
3
3
  <div class="header">Collection Item</div>
4
4
  <div class="row">
5
5
  <div class="col-xs-12 col-12">
6
- <img ng-show="component.attributes.media_type == 'image'" ng-src="{{ component.attributes.image.id ? '/promethee/blob/' + component.attributes.image.id : '#' }}" class="img-fluid img-responsive">
7
- <div ng-show="component.attributes.media_type == 'video'" ng-controller="CollectionItemVideoController">
6
+ <img ng-show="component.attributes.media_type.value == 'image'" ng-src="{{ component.attributes.image.value.id ? '/promethee/blob/' + component.attributes.image.value.id : '#' }}" class="img-fluid img-responsive">
7
+ <div ng-show="component.attributes.media_type.value == 'video'" ng-controller="CollectionItemVideoController">
8
8
  <div class="embed-responsive embed-responsive-16by9">
9
9
  <iframe ng-if="embed" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen="allowfullscreen" ng-src="{{embed | urlSafe}}"></iframe>
10
10
  <div class="video-neutralizing-overlay"></div>
@@ -13,8 +13,8 @@
13
13
  </div>
14
14
  </div>
15
15
  <div class="row">
16
- <div class="col-xs-12 col-12" ng-show="component.attributes.searchable_caption">
17
- <div class="collection-item-caption" ng-bind-html="component.attributes.searchable_caption | htmlSafe"></div>
16
+ <div class="col-xs-12 col-12" ng-show="component.attributes.caption.value">
17
+ <div class="collection-item-caption" ng-bind-html="component.attributes.caption.value | htmlSafe"></div>
18
18
  </fiv>
19
19
  </div>
20
20
  </div>
@@ -26,7 +26,7 @@
26
26
  Object.defineProperty($scope, 'embed', {
27
27
  get: function() {
28
28
  var embed = null;
29
- var url = this.component.attributes.video.url + '';
29
+ var url = this.component.attributes.video.value.value + '';
30
30
 
31
31
  if(url.includes('vimeo')) {
32
32
  var id = url.replace(/^(?:https?:)?\/\/(?:(?:www|player)\.)?vimeo\.com\/(?:video\/)?(\d+).*?$/, '$1');
@@ -1,26 +1,26 @@
1
1
  <script type="text/ng-template" id="promethee/components/collection_item/localize">
2
- <div ng-show="master.attributes.searchable_caption !== '' || master.attributes.media_type == 'video'">
2
+ <div ng-show="master.attributes.caption.value !== '' || master.attributes.media_type.value == 'video'">
3
3
  <hr>
4
4
 
5
- <div class="row" ng-show="master.attributes.searchable_caption !== ''">
5
+ <div class="row" ng-show="master.attributes.caption.value !== ''">
6
6
  <div class="col-md-6">
7
7
  <b>Collection Item Caption</b>
8
- <div class="promethee-edit__wrapper" ng-bind-html="master.attributes.searchable_caption | htmlSafe"></div>
8
+ <div class="promethee-edit__wrapper" ng-bind-html="master.attributes.caption.value | htmlSafe"></div>
9
9
  </div>
10
10
  <div class="col-md-6">
11
- <label class="label-control">Collection Item Caption</label>
12
- <summernote config="summernoteConfig" ng-model="component.attributes.searchable_caption"></summernote>
11
+ <b>Collection Item Caption</b>
12
+ <summernote config="summernoteConfig" ng-model="component.attributes.caption.value"></summernote>
13
13
  </div>
14
14
  </div>
15
15
 
16
- <div class="row" ng-show="master.attributes.media_type == 'video'">
16
+ <div class="row" ng-show="master.attributes.media_type.value == 'video'">
17
17
  <div class="col-md-6">
18
18
  <b>Video URL</b>
19
- <div ng-bind-html="master.attributes.video.url | htmlSafe"></div>
19
+ <div ng-bind-html="master.attributes.video.value | htmlSafe"></div>
20
20
  </div>
21
21
  <div class="col-md-6">
22
- <label class="label-control">Video URL</label>
23
- <input class="form-control" ng-model="component.attributes.video.url" type="text">
22
+ <b>Video URL</b>
23
+ <input class="form-control" ng-model="component.attributes.video.value" type="text">
24
24
  </div>
25
25
  </div>
26
26
  </div>
@@ -1,11 +1,11 @@
1
1
  <%
2
- searchable_caption = component[:attributes][:searchable_caption]
3
- media_type = component[:attributes][:media_type]
2
+ caption = component[:attributes].dig(:caption, :value)&.to_s&.html_safe
3
+ media_type = component[:attributes].dig(:media_type, :value)&.to_s
4
4
  case media_type
5
5
  when 'image'
6
- image_blob = blob_from_data component[:attributes][:image]
6
+ image_blob = blob_from_data component[:attributes][:image][:value]
7
7
  when 'video'
8
- url = component[:attributes][:video][:url].to_s
8
+ url = component[:attributes][:video][:value].to_s
9
9
  if 'vimeo'.in? url
10
10
  video_id = url.gsub(/\A(?:https?:)?\/\/(?:(?:www|player)\.)?vimeo\.com\/(?:video\/)?(\d+).*?\z/, '\1')
11
11
  iframe_src = "https://player.vimeo.com/video/#{video_id}?color=ffffff&title=0&byline=0&portrait=0"
@@ -24,7 +24,7 @@ end
24
24
  <iframe frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen="allowfullscreen" src="<%= iframe_src %>"></iframe>
25
25
  </div>
26
26
  <% elsif image_blob.present? %>
27
- <%= render 'promethee/show/image.srcset', blob: image_blob, alt: '', caption: searchable_caption %>
27
+ <%= render 'promethee/show/image.srcset', blob: image_blob, alt: '', caption: caption %>
28
28
  <% end %>
29
- <%= searchable_caption.to_s.html_safe %>
30
- </div>
29
+ <%= caption %>
30
+ </div>
@@ -8,17 +8,67 @@
8
8
  data: {
9
9
  type: 'column',
10
10
  attributes: {
11
- size: 4,
12
- offset: 0,
11
+ size: {
12
+ searchable: false,
13
+ translatable: false,
14
+ type: 'integer',
15
+ value: 4
16
+ },
17
+ offset: {
18
+ searchable: false,
19
+ translatable: false,
20
+ type: 'integer',
21
+ value: 0
22
+ },
13
23
  mobile: {
14
- enabled: false,
15
- size: 12,
16
- offset: 0
24
+ searchable: false,
25
+ translatable: false,
26
+ type: 'hash',
27
+ value: {
28
+ enabled: {
29
+ searchable: false,
30
+ translatable: false,
31
+ type: 'boolean',
32
+ value: false
33
+ },
34
+ size: {
35
+ searchable: false,
36
+ translatable: false,
37
+ type: 'integer',
38
+ value: 12
39
+ },
40
+ offset: {
41
+ searchable: false,
42
+ translatable: false,
43
+ type: 'integer',
44
+ value: 0
45
+ }
46
+ }
17
47
  },
18
48
  tablet: {
19
- enabled: false,
20
- size: 12,
21
- offset: 0
49
+ searchable: false,
50
+ translatable: false,
51
+ type: 'hash',
52
+ value: {
53
+ enabled: {
54
+ searchable: false,
55
+ translatable: false,
56
+ type: 'boolean',
57
+ value: false
58
+ },
59
+ size: {
60
+ searchable: false,
61
+ translatable: false,
62
+ type: 'integer',
63
+ value: 12
64
+ },
65
+ offset: {
66
+ searchable: false,
67
+ translatable: false,
68
+ type: 'integer',
69
+ value: 0
70
+ }
71
+ }
22
72
  }
23
73
  },
24
74
  children: []
@@ -8,8 +8,8 @@
8
8
 
9
9
  <b>Desktop</b>
10
10
  <div class="form-group">
11
- <label class="label-control">Size: {{promethee.inspected.attributes.size}}</label><br/>
12
- <input ng-model="promethee.inspected.attributes.size"
11
+ <label class="label-control">Size: {{promethee.inspected.attributes.size.value}}</label><br/>
12
+ <input ng-model="promethee.inspected.attributes.size.value"
13
13
  type="range"
14
14
  class="btn-block"
15
15
  list="tickmarks"
@@ -17,24 +17,24 @@
17
17
  max="12">
18
18
  </div>
19
19
  <div class="form-group">
20
- <label class="label-control">Offset: {{promethee.inspected.attributes.offset}}</label><br/>
21
- <offset-input ng-model="promethee.inspected.attributes.offset"
22
- ng-max="12 - promethee.inspected.attributes.size">
20
+ <label class="label-control">Offset: {{promethee.inspected.attributes.offset.value}}</label><br/>
21
+ <offset-input ng-model="promethee.inspected.attributes.offset.value"
22
+ ng-max="12 - promethee.inspected.attributes.size.value">
23
23
  </offset-input>
24
24
  </div>
25
25
 
26
26
  <%= render 'promethee/edit/inspect.advanced' %>
27
27
  <div class="form-group">
28
28
  <input id="column_edit_inspect_tablet_enabled"
29
- ng-model="promethee.inspected.attributes.tablet.enabled"
29
+ ng-model="promethee.inspected.attributes.tablet.value.enabled.value"
30
30
  type="checkbox" />
31
31
  <label class="label-control"
32
32
  for="column_edit_inspect_tablet_enabled"> <b>Tablette</b></label>
33
33
  </div>
34
- <div ng-show="promethee.inspected.attributes.tablet.enabled">
34
+ <div ng-show="promethee.inspected.attributes.tablet.value.enabled.value">
35
35
  <div class="form-group">
36
- <label class="label-control">Size: {{promethee.inspected.attributes.tablet.size}}</label><br/>
37
- <input ng-model="promethee.inspected.attributes.tablet.size"
36
+ <label class="label-control">Size: {{promethee.inspected.attributes.tablet.value.size.value}}</label><br/>
37
+ <input ng-model="promethee.inspected.attributes.tablet.value.size.value"
38
38
  type="range"
39
39
  class="btn-block"
40
40
  list="tickmarks"
@@ -42,24 +42,24 @@
42
42
  max="12">
43
43
  </div>
44
44
  <div class="form-group">
45
- <label class="label-control">Offset: {{promethee.inspected.attributes.tablet.offset}}</label><br/>
46
- <offset-input ng-model="promethee.inspected.attributes.tablet.offset"
47
- ng-max="12 - promethee.inspected.attributes.tablet.size">
45
+ <label class="label-control">Offset: {{promethee.inspected.attributes.tablet.value.offset.value}}</label><br/>
46
+ <offset-input ng-model="promethee.inspected.attributes.tablet.value.offset.value"
47
+ ng-max="12 - promethee.inspected.attributes.tablet.value.size.value">
48
48
  </offset-input>
49
49
  </div>
50
50
  </div>
51
51
 
52
52
  <div class="form-group">
53
53
  <input id="column_edit_inspect_mobile_enabled"
54
- ng-model="promethee.inspected.attributes.mobile.enabled"
54
+ ng-model="promethee.inspected.attributes.mobile.value.enabled.value"
55
55
  type="checkbox" />
56
56
  <label class="label-control"
57
57
  for="column_edit_inspect_mobile_enabled"> <b>Mobile</b></label>
58
58
  </div>
59
- <div ng-show="promethee.inspected.attributes.mobile.enabled">
59
+ <div ng-show="promethee.inspected.attributes.mobile.value.enabled.value">
60
60
  <div class="form-group">
61
- <label class="label-control">Size: {{promethee.inspected.attributes.mobile.size}}</label><br/>
62
- <input ng-model="promethee.inspected.attributes.mobile.size"
61
+ <label class="label-control">Size: {{promethee.inspected.attributes.mobile.value.size.value}}</label><br/>
62
+ <input ng-model="promethee.inspected.attributes.mobile.value.size.value"
63
63
  type="range"
64
64
  class="btn-block"
65
65
  list="tickmarks"
@@ -67,9 +67,9 @@
67
67
  max="12">
68
68
  </div>
69
69
  <div class="form-group">
70
- <label class="label-control">Offset: {{promethee.inspected.attributes.mobile.offset}}</label><br/>
71
- <offset-input ng-model="promethee.inspected.attributes.mobile.offset"
72
- ng-max="12 - promethee.inspected.attributes.mobile.size">
70
+ <label class="label-control">Offset: {{promethee.inspected.attributes.mobile.value.offset.value}}</label><br/>
71
+ <offset-input ng-model="promethee.inspected.attributes.mobile.value.offset.value"
72
+ ng-max="12 - promethee.inspected.attributes.mobile.value.size.value">
73
73
  </offset-input>
74
74
  </div>
75
75
  </div>