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
@@ -1,37 +1,40 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/components/image/localize">
|
2
|
-
<div ng-show="master.attributes.
|
2
|
+
<div ng-show="master.attributes.alt.value || master.attributes.caption.value">
|
3
3
|
<hr>
|
4
4
|
|
5
5
|
<div class="row">
|
6
6
|
<div class="col-md-6">
|
7
|
-
<img ng-src="/promethee/blob/{{
|
7
|
+
<img ng-src="/promethee/blob/{{master.attributes.image.value.id}}" class="img-fluid img-responsive" style="max-width: 200px">
|
8
8
|
</div>
|
9
|
-
</div>
|
10
|
-
|
11
|
-
<div class="row" ng-show="master.attributes.searchable_alt">
|
12
9
|
<div class="col-md-6">
|
13
|
-
<
|
14
|
-
<p>{{master.attributes.searchable_alt}}</p>
|
15
|
-
</div>
|
16
|
-
<div class="col-md-6">
|
17
|
-
<div class="form-group">
|
18
|
-
<label class="label-control">Alt</label>
|
19
|
-
<input class="form-control" ng-model="component.attributes.searchable_alt" type="text">
|
20
|
-
</div>
|
10
|
+
<img ng-src="/promethee/blob/{{component.attributes.image.value.id}}" class="img-fluid img-responsive" style="max-width: 200px">
|
21
11
|
</div>
|
22
12
|
</div>
|
23
13
|
|
24
|
-
<div class="row" ng-show="master.attributes.
|
14
|
+
<div class="row" ng-show="master.attributes.caption.value">
|
25
15
|
<div class="col-md-6">
|
26
16
|
<b>Caption</b>
|
27
|
-
<p>{{master.attributes.
|
17
|
+
<p>{{master.attributes.caption.value}}</p>
|
28
18
|
</div>
|
29
19
|
<div class="col-md-6">
|
30
20
|
<div class="form-group">
|
31
|
-
<
|
32
|
-
<input class="form-control" ng-model="component.attributes.
|
21
|
+
<b>Caption</b>
|
22
|
+
<input class="form-control" ng-model="component.attributes.caption.value" type="text">
|
33
23
|
</div>
|
34
24
|
</div>
|
35
25
|
</div>
|
36
26
|
</div>
|
27
|
+
|
28
|
+
<div class="row" ng-show="master.attributes.alt.value">
|
29
|
+
<div class="col-md-6">
|
30
|
+
<b>Alt</b>
|
31
|
+
<p>{{master.attributes.alt.value}}</p>
|
32
|
+
</div>
|
33
|
+
<div class="col-md-6">
|
34
|
+
<div class="form-group">
|
35
|
+
<b>Alt</b>
|
36
|
+
<input class="form-control" ng-model="component.attributes.alt.value" type="text">
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
</div>
|
37
40
|
</script>
|
@@ -1,14 +1,14 @@
|
|
1
1
|
<%
|
2
|
-
blob = blob_from_data component[:attributes]
|
2
|
+
blob = blob_from_data component[:attributes].dig(:image, :value)
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
alt = component[:attributes].dig(:alt, :value)&.to_s
|
5
|
+
caption = component[:attributes].dig(:caption, :value)&.to_s
|
6
6
|
%>
|
7
7
|
<figure class="<%= promethee_class_for component %>">
|
8
|
-
<%= render 'promethee/show/image.srcset', blob: blob, alt:
|
9
|
-
<% unless
|
8
|
+
<%= render 'promethee/show/image.srcset', blob: blob, alt: alt, caption: caption if blob %>
|
9
|
+
<% unless caption.blank? %>
|
10
10
|
<figcaption>
|
11
|
-
<%=
|
11
|
+
<%= caption %>
|
12
12
|
</figcaption>
|
13
13
|
<% end %>
|
14
14
|
</figure>
|
@@ -8,18 +8,43 @@
|
|
8
8
|
data: {
|
9
9
|
type: 'page',
|
10
10
|
attributes: {
|
11
|
-
|
12
|
-
|
11
|
+
title: {
|
12
|
+
searchable: true,
|
13
|
+
translatable: true,
|
14
|
+
type: 'string',
|
15
|
+
value: 'New page'
|
16
|
+
},
|
17
|
+
description: {
|
18
|
+
searchable: true,
|
19
|
+
translatable: true,
|
20
|
+
type: 'text',
|
21
|
+
value: ''
|
22
|
+
},
|
13
23
|
thumbnail: {
|
14
|
-
|
15
|
-
|
24
|
+
searchable: false,
|
25
|
+
translatable: false,
|
26
|
+
type: 'blob',
|
27
|
+
value: {
|
28
|
+
id: undefined,
|
29
|
+
name: ''
|
30
|
+
}
|
31
|
+
},
|
32
|
+
stylesheets: {
|
33
|
+
searchable: false,
|
34
|
+
translatable: false,
|
35
|
+
type: 'string',
|
36
|
+
value: ''
|
16
37
|
},
|
17
|
-
|
18
|
-
|
38
|
+
javascripts: {
|
39
|
+
searchable: false,
|
40
|
+
translatable: false,
|
41
|
+
type: 'string',
|
42
|
+
value: ''
|
43
|
+
}
|
19
44
|
},
|
20
45
|
children: []
|
21
46
|
}
|
22
47
|
})
|
23
48
|
JAVASCRIPT
|
24
49
|
%>
|
25
|
-
<div ng-init="<%= init %>"></div>
|
50
|
+
<div ng-init="<%= init %>"></div>
|
@@ -2,26 +2,26 @@
|
|
2
2
|
<% unless @disable_page_attributes %>
|
3
3
|
<div class="form-group">
|
4
4
|
<label class="label-control">Title</label>
|
5
|
-
<input class="form-control" ng-model="promethee.inspected.attributes.
|
5
|
+
<input class="form-control" ng-model="promethee.inspected.attributes.title.value">
|
6
6
|
</div>
|
7
7
|
|
8
8
|
<div class="form-group">
|
9
9
|
<label class="label-control">Description</label>
|
10
|
-
<textarea class="form-control" ng-model="promethee.inspected.attributes.
|
10
|
+
<textarea class="form-control" ng-model="promethee.inspected.attributes.description.value"></textarea>
|
11
11
|
</div>
|
12
12
|
<% end %>
|
13
13
|
|
14
14
|
<%= render 'promethee/edit/inspect.advanced' %>
|
15
|
-
<promethee-uploader ng-model="promethee.inspected.attributes.thumbnail" label="Thumbnail" limits="'.jpg,.jpeg,.png,.gif'"></promethee-uploader>
|
15
|
+
<promethee-uploader ng-model="promethee.inspected.attributes.thumbnail.value" label="Thumbnail" limits="'.jpg,.jpeg,.png,.gif'"></promethee-uploader>
|
16
16
|
|
17
17
|
<div class="form-group">
|
18
18
|
<label class="label-control">Stylesheets</label>
|
19
|
-
<textarea class="form-control" ng-model="promethee.inspected.attributes.stylesheets"></textarea>
|
19
|
+
<textarea class="form-control" ng-model="promethee.inspected.attributes.stylesheets.value"></textarea>
|
20
20
|
</div>
|
21
21
|
|
22
22
|
<div class="form-group">
|
23
23
|
<label class="label-control">Javascripts</label>
|
24
|
-
<textarea class="form-control" ng-model="promethee.inspected.attributes.javascripts"></textarea>
|
24
|
+
<textarea class="form-control" ng-model="promethee.inspected.attributes.javascripts.value"></textarea>
|
25
25
|
</div>
|
26
26
|
</div>
|
27
27
|
</script>
|
@@ -1,31 +1,31 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/components/page/localize">
|
2
2
|
<% unless @disable_page_attributes %>
|
3
3
|
<hr>
|
4
|
-
|
4
|
+
|
5
5
|
<div class="row">
|
6
6
|
<div class="col-md-6">
|
7
7
|
<b>Page title</b>
|
8
|
-
<p>{{master.attributes.
|
8
|
+
<p>{{master.attributes.title.value}}</p><br>
|
9
9
|
</div>
|
10
10
|
<div class="col-md-6">
|
11
11
|
<div class="form-group">
|
12
|
-
<
|
13
|
-
<input class="form-control" ng-model="component.attributes.
|
12
|
+
<b>Page title</b>
|
13
|
+
<input class="form-control" ng-model="component.attributes.title.value" type="text">
|
14
14
|
</div>
|
15
15
|
</div>
|
16
16
|
</div>
|
17
17
|
|
18
|
-
<div class="row" ng-show="master.attributes.
|
18
|
+
<div class="row" ng-show="master.attributes.description.value">
|
19
19
|
<div class="col-md-6">
|
20
20
|
<div>
|
21
21
|
<b>Page description</b>
|
22
|
-
<p>{{master.attributes.
|
22
|
+
<p>{{master.attributes.description.value}}</p>
|
23
23
|
</div>
|
24
24
|
</div>
|
25
25
|
<div class="col-md-6">
|
26
26
|
<div class="form-group">
|
27
|
-
<
|
28
|
-
<textarea class="form-control" ng-model="component.attributes.
|
27
|
+
<b>Page description</b>
|
28
|
+
<textarea class="form-control" ng-model="component.attributes.description.value"></textarea>
|
29
29
|
</div>
|
30
30
|
</div>
|
31
31
|
</div>
|
@@ -1,14 +1,14 @@
|
|
1
1
|
<%
|
2
|
-
stylesheets = component[:attributes]
|
3
|
-
javascripts = component[:attributes]
|
2
|
+
stylesheets = component[:attributes].dig(:stylesheets, :value)&.to_s&.html_safe
|
3
|
+
javascripts = component[:attributes].dig(:javascripts, :value)&.to_s&.html_safe
|
4
4
|
%>
|
5
5
|
|
6
6
|
<% if stylesheets.present? %>
|
7
|
-
<style><%= stylesheets
|
7
|
+
<style><%= stylesheets %></style>
|
8
8
|
<% end %>
|
9
9
|
|
10
10
|
<% if javascripts.present? %>
|
11
|
-
<script><%= javascripts
|
11
|
+
<script><%= javascripts %></script>
|
12
12
|
<% end %>
|
13
13
|
|
14
14
|
<div class="<%= promethee_class_for component %>">
|
@@ -8,8 +8,18 @@
|
|
8
8
|
data: {
|
9
9
|
type: 'row',
|
10
10
|
attributes: {
|
11
|
-
bgcolor:
|
12
|
-
|
11
|
+
bgcolor: {
|
12
|
+
searchable: false,
|
13
|
+
translatable: false,
|
14
|
+
type: 'color',
|
15
|
+
value: "rgba(255,255,255,0)",
|
16
|
+
},
|
17
|
+
backgrounds: {
|
18
|
+
searchable: false,
|
19
|
+
translatable: false,
|
20
|
+
type: 'array',
|
21
|
+
value: []
|
22
|
+
}
|
13
23
|
},
|
14
24
|
children: []
|
15
25
|
}
|
@@ -20,22 +20,22 @@
|
|
20
20
|
<%= render 'promethee/edit/inspect.advanced' %>
|
21
21
|
<div class="form-group">
|
22
22
|
<label class="label-control">Background color</label>
|
23
|
-
<input ng-model="promethee.inspected.attributes.bgcolor"
|
23
|
+
<input ng-model="promethee.inspected.attributes.bgcolor.value"
|
24
24
|
colorpicker="rgba"
|
25
25
|
class="form-control"
|
26
26
|
type="text" />
|
27
27
|
</div>
|
28
28
|
|
29
29
|
<div>
|
30
|
-
<div class="btn btn-default btn-light" ng-click="promethee.inspected.attributes.backgrounds.push( { image: { id: undefined, name: '' }, posh: 'center', posv: 'center', size: 'auto' } )">Add background image</div>
|
30
|
+
<div class="btn btn-default btn-light" ng-click="promethee.inspected.attributes.backgrounds.value.push( { image: { searchable: false, type: 'blob', value: { id: undefined, name: '' } }, posh: { collection: [ { label: 'Left', value: 'left' }, { label: 'Center', value: 'center' }, { label: 'Right', value: 'right' } ], searchable: false, type: 'enum', value: 'center' }, posv: { collection: [ { label: 'Top', value: 'top' }, { label: 'Center', value: 'center' }, { label: 'Bottom', value: 'bottom' } ], searchable: false, type: 'enum', value: 'center' }, size: { collection: [ { label: 'Auto', value: 'auto' }, { label: 'Cover', value: 'cover' }, { label: 'Contain', value: 'contain' } ], searchable: false, type: 'enum', value: 'auto' } } )">Add background image</div>
|
31
31
|
|
32
|
-
<div ng-repeat="background in promethee.inspected.attributes.backgrounds" style="margin-top: 20px">
|
33
|
-
<h3>Background {{$index + 1}} <span class="fa fa-trash" ng-click="promethee.inspected.attributes.backgrounds.splice($index, 1)" style="cursor: pointer"></span></h3>
|
34
|
-
<promethee-uploader ng-model="background.image" label="" limits="'.jpg,.jpeg,.png,.gif'"></promethee-uploader>
|
32
|
+
<div ng-repeat="background in promethee.inspected.attributes.backgrounds.value" style="margin-top: 20px">
|
33
|
+
<h3>Background {{$index + 1}} <span class="fa fa-trash" ng-click="promethee.inspected.attributes.backgrounds.value.splice($index, 1)" style="cursor: pointer"></span></h3>
|
34
|
+
<promethee-uploader ng-model="background.image.value" label="" limits="'.jpg,.jpeg,.png,.gif'"></promethee-uploader>
|
35
35
|
|
36
|
-
<%= render 'promethee/edit/radiobuttons', label: 'Horizontal position', model: 'background.posh', values: ['left', 'center', 'right'] %>
|
37
|
-
<%= render 'promethee/edit/radiobuttons', label: 'Vertical position', model: 'background.posv', values: ['top', 'center', 'bottom'] %>
|
38
|
-
<%= render 'promethee/edit/radiobuttons', label: 'Size', model: 'background.size', values: ['auto', 'cover', 'contain'] %>
|
36
|
+
<%= render 'promethee/edit/radiobuttons', label: 'Horizontal position', model: 'background.posh.value', values: ['left', 'center', 'right'] %>
|
37
|
+
<%= render 'promethee/edit/radiobuttons', label: 'Vertical position', model: 'background.posv.value', values: ['top', 'center', 'bottom'] %>
|
38
|
+
<%= render 'promethee/edit/radiobuttons', label: 'Size', model: 'background.size.value', values: ['auto', 'cover', 'contain'] %>
|
39
39
|
</div>
|
40
40
|
|
41
41
|
</div>
|
@@ -2,23 +2,23 @@
|
|
2
2
|
<%= render 'promethee/edit/move.header', type: 'row' %>
|
3
3
|
<div class="header">Row</div>
|
4
4
|
<div class="row" ng-controller="RowMoveController">
|
5
|
-
<div class="row__background row__background--color" ng-style="{'background': component.attributes.bgcolor}"></div>
|
5
|
+
<div class="row__background row__background--color" ng-style="{'background': component.attributes.bgcolor.value}"></div>
|
6
6
|
|
7
|
-
<div ng-repeat="background in component.attributes.backgrounds"
|
7
|
+
<div ng-repeat="background in component.attributes.backgrounds.value"
|
8
8
|
class="row__background"
|
9
9
|
style="
|
10
|
-
background-image:url('{{background.image.id ? '/promethee/blob/'+background.image.id : ''}}');
|
11
|
-
background-position:{{background.posh+' '+background.posv}};
|
12
|
-
background-size: {{background.size}}" >
|
10
|
+
background-image:url('{{background.image.value.id ? '/promethee/blob/'+background.image.value.id : ''}}');
|
11
|
+
background-position:{{background.posh.value+' '+background.posv.value}};
|
12
|
+
background-size: {{background.size.value}}" >
|
13
13
|
</div>
|
14
14
|
|
15
15
|
<div ng-click="inspect(component, $event)"
|
16
16
|
ng-class="{'promethee-edit__component--selected': promethee.inspected === component}"
|
17
17
|
ng-repeat="component in components"
|
18
18
|
class=" <%= promethee_bem_classes 'promethee-edit__component', "--column" %>
|
19
|
-
col-md-{{component.attributes.size}}
|
20
|
-
offset-md-{{component.attributes.offset}}
|
21
|
-
col-md-offset-{{component.attributes.offset}}">
|
19
|
+
col-md-{{component.attributes.size.value}}
|
20
|
+
offset-md-{{component.attributes.offset.value}}
|
21
|
+
col-md-offset-{{component.attributes.offset.value}}">
|
22
22
|
<div class="promethee-edit__component__inner">
|
23
23
|
<%= render 'promethee/edit/move.remove' %>
|
24
24
|
<div class="header">Column {{$index + 1}}</div>
|
@@ -39,4 +39,4 @@
|
|
39
39
|
$scope.parent_type = $scope.component.type;
|
40
40
|
$scope.components = $scope.component.children;
|
41
41
|
}]);
|
42
|
-
</script>
|
42
|
+
</script>
|
@@ -1,20 +1,21 @@
|
|
1
1
|
<%
|
2
|
-
background_color = component[:attributes]
|
2
|
+
background_color = component[:attributes].dig(:bgcolor, :value)&.to_s || "rgba(255, 255, 255, 0)"
|
3
|
+
backgrounds = component[:attributes].dig(:backgrounds, :value)
|
3
4
|
background_images = []
|
4
5
|
background_positions = []
|
5
6
|
background_sizes = []
|
6
7
|
|
7
8
|
has_background = !(background_color =~ /rgba\(\s*255\s*,\s*255\s*,\s*255\s*,\s*0\s*\)/)
|
8
9
|
|
9
|
-
if
|
10
|
-
|
11
|
-
blob = blob_from_data item
|
10
|
+
if backgrounds
|
11
|
+
backgrounds.each do |item|
|
12
|
+
blob = blob_from_data item.dig(:image, :value)
|
12
13
|
if blob
|
13
14
|
url = "url(#{url_for(blob)})"
|
14
|
-
position = "#{item
|
15
|
+
position = "#{item.dig(:posh, :value)} #{item.dig(:posv, :value)}"
|
15
16
|
background_images << url
|
16
17
|
background_positions << position
|
17
|
-
background_sizes << item
|
18
|
+
background_sizes << item.dig(:size, :value)
|
18
19
|
end
|
19
20
|
end
|
20
21
|
end
|
@@ -8,14 +8,36 @@
|
|
8
8
|
data: {
|
9
9
|
type: 'slider_item',
|
10
10
|
attributes: {
|
11
|
-
|
12
|
-
|
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
|
-
|
15
|
-
|
28
|
+
searchable: false,
|
29
|
+
translatable: false,
|
30
|
+
type: 'blob',
|
31
|
+
value: {
|
32
|
+
id: undefined,
|
33
|
+
name: ""
|
34
|
+
}
|
16
35
|
},
|
17
36
|
video: {
|
18
|
-
|
37
|
+
searchable: false,
|
38
|
+
translatable: true,
|
39
|
+
type: 'string',
|
40
|
+
value: 'https://vimeo.com/115082758'
|
19
41
|
}
|
20
42
|
}
|
21
43
|
}
|
@@ -3,28 +3,28 @@
|
|
3
3
|
<label class="label-control">Media type</label>
|
4
4
|
<div>
|
5
5
|
<label for="sliderItemMediaTypeImage" class="radio-inline form-check form-check-inline">
|
6
|
-
<input ng-model="promethee.inspected.attributes.media_type" class="form-check-input" type="radio" value="image" id="sliderItemMediaTypeImage" />
|
6
|
+
<input ng-model="promethee.inspected.attributes.media_type.value" class="form-check-input" type="radio" value="image" id="sliderItemMediaTypeImage" />
|
7
7
|
<span class="form-check-label">Image</span>
|
8
8
|
</label>
|
9
9
|
<label for="sliderItemMediaTypeVideo" class="radio-inline form-check form-check-inline">
|
10
|
-
<input ng-model="promethee.inspected.attributes.media_type" class="form-check-input" type="radio" value="video" id="sliderItemMediaTypeVideo" />
|
10
|
+
<input ng-model="promethee.inspected.attributes.media_type.value" class="form-check-input" type="radio" value="video" id="sliderItemMediaTypeVideo" />
|
11
11
|
<span class="form-check-label">Video</span>
|
12
12
|
</label>
|
13
13
|
</div>
|
14
14
|
</div>
|
15
15
|
|
16
|
-
<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>
|
16
|
+
<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>
|
17
17
|
|
18
|
-
<div class="form-group" ng-show="promethee.inspected.attributes.media_type == 'video'">
|
18
|
+
<div class="form-group" ng-show="promethee.inspected.attributes.media_type.value == 'video'">
|
19
19
|
<label class="label-control">Video URL</label>
|
20
|
-
<input class="form-control" ng-model="promethee.inspected.attributes.video.
|
20
|
+
<input class="form-control" ng-model="promethee.inspected.attributes.video.value"></summernote>
|
21
21
|
</div>
|
22
22
|
|
23
23
|
<div class="row">
|
24
24
|
<div class="col-xs-12 col-12">
|
25
25
|
<div class="form-group">
|
26
26
|
<label class="label-control">Caption</label>
|
27
|
-
<summernote config="summernoteConfig" ng-model="promethee.inspected.attributes.
|
27
|
+
<summernote config="summernoteConfig" ng-model="promethee.inspected.attributes.caption.value"></summernote>
|
28
28
|
</div>
|
29
29
|
</div>
|
30
30
|
</div>
|
@@ -3,8 +3,8 @@
|
|
3
3
|
<div class="header">Slider Item</div>
|
4
4
|
<div class="row">
|
5
5
|
<div class="col-12 col-xs-12">
|
6
|
-
<img ng-show="component.attributes.media_type == 'image'" ng-if="component.attributes.image.id != undefined" ng-src="/promethee/blob/{{component.attributes.image.id}}" class="img-fluid img-responsive">
|
7
|
-
<div ng-show="component.attributes.media_type == 'video'" ng-controller="SliderItemVideoController">
|
6
|
+
<img ng-show="component.attributes.media_type.value == 'image'" ng-if="component.attributes.image.value.id != undefined" ng-src="/promethee/blob/{{component.attributes.image.value.id}}" class="img-fluid img-responsive">
|
7
|
+
<div ng-show="component.attributes.media_type.value == 'video'" ng-controller="SliderItemVideoController">
|
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,7 +13,7 @@
|
|
13
13
|
</div>
|
14
14
|
</div>
|
15
15
|
<div class="row">
|
16
|
-
<div class="col-12 col-xs-12 slider-item-caption" ng-show="component.attributes.
|
16
|
+
<div class="col-12 col-xs-12 slider-item-caption" ng-show="component.attributes.caption.value !== ''" ng-bind-html="component.attributes.caption.value | htmlSafe"></div>
|
17
17
|
</div>
|
18
18
|
</div>
|
19
19
|
</div>
|
@@ -24,13 +24,13 @@
|
|
24
24
|
Object.defineProperty($scope, 'embed', {
|
25
25
|
get: function() {
|
26
26
|
var embed = null;
|
27
|
-
var url = this.component.attributes.video.
|
27
|
+
var url = this.component.attributes.video.value + '';
|
28
28
|
|
29
|
-
if(url.includes('vimeo')) {
|
29
|
+
if (url.includes('vimeo')) {
|
30
30
|
var id = url.replace(/^(?:https?:)?\/\/(?:(?:www|player)\.)?vimeo\.com\/(?:video\/)?(\d+).*?$/, '$1');
|
31
31
|
embed = 'https://player.vimeo.com/video/' + id + '?color=ffffff&title=0&byline=0&portrait=0';
|
32
32
|
}
|
33
|
-
else if(url.includes('youtube')) {
|
33
|
+
else if (url.includes('youtube')) {
|
34
34
|
var parts = url.split('watch?v=');
|
35
35
|
var id = parts[parts.length - 1];
|
36
36
|
embed = 'https://www.youtube.com/embed/' + id;
|
@@ -43,4 +43,4 @@
|
|
43
43
|
}
|
44
44
|
})
|
45
45
|
}]);
|
46
|
-
</script>
|
46
|
+
</script>
|