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,25 @@
|
|
1
|
+
# Text Component
|
2
|
+
# ================
|
3
|
+
#
|
4
|
+
# V3
|
5
|
+
# -----
|
6
|
+
#
|
7
|
+
# {
|
8
|
+
# searchable_body: '<p>Edit me</p>'
|
9
|
+
# }
|
10
|
+
#
|
11
|
+
|
12
|
+
module Promethee::StructureUpgrader::Components
|
13
|
+
class Text < Base
|
14
|
+
def upgraded_attributes
|
15
|
+
{
|
16
|
+
'body' => {
|
17
|
+
'searchable' => true,
|
18
|
+
'translatable' => true,
|
19
|
+
'type' => 'text',
|
20
|
+
'value' => attribute('searchable_body')
|
21
|
+
}
|
22
|
+
}
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# Video Component
|
2
|
+
# ================
|
3
|
+
#
|
4
|
+
# V3
|
5
|
+
# -----
|
6
|
+
#
|
7
|
+
# {
|
8
|
+
# url: 'https://vimeo.com/115082758',
|
9
|
+
# autoplay: false
|
10
|
+
# }
|
11
|
+
#
|
12
|
+
|
13
|
+
module Promethee::StructureUpgrader::Components
|
14
|
+
class Video < Base
|
15
|
+
def upgraded_attributes
|
16
|
+
{
|
17
|
+
'url' => {
|
18
|
+
'searchable' => false,
|
19
|
+
'translatable' => true,
|
20
|
+
'type' => 'string',
|
21
|
+
'value' => string_attribute('url')
|
22
|
+
},
|
23
|
+
'autoplay' => {
|
24
|
+
'searchable' => false,
|
25
|
+
'translatable' => false,
|
26
|
+
'type' => 'boolean',
|
27
|
+
'value' => attribute('autoplay')
|
28
|
+
}
|
29
|
+
}
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
class Promethee::StructureUpgraderService
|
2
|
+
BASE_COMPONENTS = {
|
3
|
+
aside: Promethee::StructureUpgrader::Components::Aside,
|
4
|
+
blockquote: Promethee::StructureUpgrader::Components::Blockquote,
|
5
|
+
collection: Promethee::StructureUpgrader::Components::Collection,
|
6
|
+
collection_item: Promethee::StructureUpgrader::Components::CollectionItem,
|
7
|
+
column: Promethee::StructureUpgrader::Components::Column,
|
8
|
+
cover: Promethee::StructureUpgrader::Components::Cover,
|
9
|
+
faq: Promethee::StructureUpgrader::Components::Faq,
|
10
|
+
faq_item: Promethee::StructureUpgrader::Components::FaqItem,
|
11
|
+
image: Promethee::StructureUpgrader::Components::Image,
|
12
|
+
page: Promethee::StructureUpgrader::Components::Page,
|
13
|
+
row: Promethee::StructureUpgrader::Components::Row,
|
14
|
+
slider: Promethee::StructureUpgrader::Components::Slider,
|
15
|
+
slider_item: Promethee::StructureUpgrader::Components::SliderItem,
|
16
|
+
table: Promethee::StructureUpgrader::Components::Table,
|
17
|
+
table_cell: Promethee::StructureUpgrader::Components::TableCell,
|
18
|
+
text: Promethee::StructureUpgrader::Components::Text,
|
19
|
+
video: Promethee::StructureUpgrader::Components::Video
|
20
|
+
}
|
21
|
+
|
22
|
+
attr_accessor :objects
|
23
|
+
|
24
|
+
def initialize(model_name)
|
25
|
+
begin
|
26
|
+
model_class = model_name.constantize
|
27
|
+
objects = model_class.all
|
28
|
+
rescue
|
29
|
+
puts 'Please provide a valid model name (e.g. `rake promethee:upgrade_structure[Page]`)'
|
30
|
+
exit
|
31
|
+
end
|
32
|
+
@objects = objects
|
33
|
+
end
|
34
|
+
|
35
|
+
def start
|
36
|
+
puts '= START STRUCTURE UPGRADE ='
|
37
|
+
puts "Number of objects: #{objects.count}"
|
38
|
+
i = 0
|
39
|
+
objects.each do |object|
|
40
|
+
next unless can_process?(object.data)
|
41
|
+
i += 1
|
42
|
+
process_object(object)
|
43
|
+
end
|
44
|
+
puts "Number of processed objects: #{i}"
|
45
|
+
puts '====== END UPGRADER ========'
|
46
|
+
end
|
47
|
+
|
48
|
+
def process_object(object)
|
49
|
+
puts "Processing object ##{object.id}"
|
50
|
+
|
51
|
+
object.data = object.data.has_key?('components') ? process_localization(object.data)
|
52
|
+
: process_component(object.data)
|
53
|
+
object.save
|
54
|
+
puts "End processing object ##{object.id}"
|
55
|
+
end
|
56
|
+
|
57
|
+
def process_localization(data)
|
58
|
+
data['components'].map! { |component|
|
59
|
+
process_localization_component(component)
|
60
|
+
}
|
61
|
+
|
62
|
+
# We remove the possible children to concatenate them to the list
|
63
|
+
children = []
|
64
|
+
data['components'].each { |component|
|
65
|
+
children.concat component.delete('children').to_a
|
66
|
+
}
|
67
|
+
data['components'].concat children
|
68
|
+
|
69
|
+
data
|
70
|
+
end
|
71
|
+
|
72
|
+
def process_localization_component(component)
|
73
|
+
upgraded_component = process_component(component)
|
74
|
+
# We only keep the translatable attributes
|
75
|
+
upgraded_component['attributes'].keep_if { |key, object_value| object_value['translatable'] }
|
76
|
+
upgraded_component
|
77
|
+
end
|
78
|
+
|
79
|
+
def process_component(data)
|
80
|
+
component_type = data['type']
|
81
|
+
component_upgrader = search_component(component_type).new(data)
|
82
|
+
|
83
|
+
data = component_upgrader.upgraded_data
|
84
|
+
data['children'].map! { |child| process_component(child) } if data.has_key? 'children'
|
85
|
+
|
86
|
+
data
|
87
|
+
end
|
88
|
+
|
89
|
+
protected
|
90
|
+
|
91
|
+
def can_process?(data)
|
92
|
+
data.is_a?(Hash) && (data.has_key?("components") || data.has_key?("children"))
|
93
|
+
end
|
94
|
+
|
95
|
+
def search_component(type)
|
96
|
+
component = components_library[type.to_sym]
|
97
|
+
|
98
|
+
puts "Component <#{type}> not found." if component.nil?
|
99
|
+
component
|
100
|
+
end
|
101
|
+
|
102
|
+
def components_library
|
103
|
+
@components_library ||= BASE_COMPONENTS.merge(custom_components)
|
104
|
+
end
|
105
|
+
|
106
|
+
def custom_components
|
107
|
+
# Overriden in derivated services
|
108
|
+
{}
|
109
|
+
end
|
110
|
+
end
|
@@ -68,10 +68,39 @@ promethee.controller('PrometheeController', ['$scope', 'summernoteConfig', 'pres
|
|
68
68
|
id: $scope.generateIdentifier(),
|
69
69
|
type: 'page',
|
70
70
|
attributes: {
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
71
|
+
title: {
|
72
|
+
searchable: true,
|
73
|
+
translatable: true,
|
74
|
+
type: 'string',
|
75
|
+
value: 'New page'
|
76
|
+
},
|
77
|
+
description: {
|
78
|
+
searchable: true,
|
79
|
+
translatable: true,
|
80
|
+
type: 'text',
|
81
|
+
value: ''
|
82
|
+
},
|
83
|
+
thumbnail: {
|
84
|
+
searchable: false,
|
85
|
+
translatable: false,
|
86
|
+
type: 'blob',
|
87
|
+
value: {
|
88
|
+
id: undefined,
|
89
|
+
name: ''
|
90
|
+
}
|
91
|
+
},
|
92
|
+
stylesheets: {
|
93
|
+
searchable: false,
|
94
|
+
translatable: false,
|
95
|
+
type: 'string',
|
96
|
+
value: ''
|
97
|
+
},
|
98
|
+
javascripts: {
|
99
|
+
searchable: false,
|
100
|
+
translatable: false,
|
101
|
+
type: 'string',
|
102
|
+
value: ''
|
103
|
+
}
|
75
104
|
},
|
76
105
|
children: []
|
77
106
|
};
|
@@ -93,6 +122,7 @@ promethee.controller('PrometheeController', ['$scope', 'summernoteConfig', 'pres
|
|
93
122
|
|
94
123
|
$scope.addComponentByType = function(type, target, index = -1) {
|
95
124
|
var definition = $scope.findDefinitionByType(type);
|
125
|
+
|
96
126
|
$scope.addComponent(definition, target, index);
|
97
127
|
}
|
98
128
|
|
@@ -58,6 +58,36 @@ promethee_masters_multiple = Promethee::Data::MastersMultiple.new master_data, o
|
|
58
58
|
window.warnBeforeUnload.lock();
|
59
59
|
}
|
60
60
|
}, true);
|
61
|
+
$scope.copyTranslations = function(event) {
|
62
|
+
event.preventDefault();
|
63
|
+
if (confirm('Warning: this will overwrite every translations!')) {
|
64
|
+
// TODO: ne prendre que les objets utiles/clés utiles
|
65
|
+
for (i = 0; i < $scope.masters.current.components.length; i += 1) {
|
66
|
+
var master_component = $scope.masters.current.components[i];
|
67
|
+
var master_component_attributes = master_component['attributes'];
|
68
|
+
var attributes = {};
|
69
|
+
// console.log(master_component_attributes);
|
70
|
+
for (const attribute_key in master_component_attributes) {
|
71
|
+
var attribute = master_component_attributes[attribute_key];
|
72
|
+
if (attribute['translatable']) {
|
73
|
+
attributes[attribute_key] = attribute;
|
74
|
+
}
|
75
|
+
}
|
76
|
+
// console.log(attributes);
|
77
|
+
var target_component = $scope.data.components.filter(function (component) {
|
78
|
+
return component['id'] === master_component['id'];
|
79
|
+
})[0];
|
80
|
+
|
81
|
+
if (!target_component) {
|
82
|
+
console.log('not found');
|
83
|
+
continue;
|
84
|
+
}
|
85
|
+
|
86
|
+
target_component['attributes'] = JSON.parse(JSON.stringify(attributes));
|
87
|
+
}
|
88
|
+
console.log($scope.data.components);
|
89
|
+
}
|
90
|
+
}
|
61
91
|
}]);
|
62
92
|
</script>
|
63
93
|
|
@@ -79,12 +109,13 @@ promethee_masters_multiple = Promethee::Data::MastersMultiple.new master_data, o
|
|
79
109
|
|
80
110
|
<div class="row">
|
81
111
|
<div class="col-md-6">
|
82
|
-
<b ng-hide="masters.multiple()">
|
83
|
-
<select ng-show="masters.multiple()" ng-model="masters.current" class="form-control do-not-warn-before-unload">
|
112
|
+
<b ng-hide="masters.multiple()">{{masters.all[0].title}}</b>
|
113
|
+
<select ng-show="masters.multiple()" ng-model="masters.current" class="float-left pull-left form-control do-not-warn-before-unload reference-choice">
|
84
114
|
<option ng-repeat="master in masters.all" ng-value="master">{{master.title}}</option>
|
85
115
|
</select>
|
116
|
+
<button class="btn btn-sm ml-1 btn-outline-success translation-copy" ng-click="copyTranslations($event)">Copy texts >></button>
|
86
117
|
</div>
|
87
|
-
<div class="col-md-6"><
|
118
|
+
<div class="col-md-6"><h3>Translation</h3></div>
|
88
119
|
</div>
|
89
120
|
<div ng-repeat="component in data.components">
|
90
121
|
<ng-include src="'promethee/localize/component'"></ng-include>
|
@@ -8,10 +8,35 @@
|
|
8
8
|
data: {
|
9
9
|
type: 'aside',
|
10
10
|
attributes: {
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
visible_content: {
|
12
|
+
searchable: true,
|
13
|
+
translatable: true,
|
14
|
+
type: 'text',
|
15
|
+
value: '<p>Edit me</p>'
|
16
|
+
},
|
17
|
+
collapsed_content: {
|
18
|
+
searchable: true,
|
19
|
+
translatable: true,
|
20
|
+
type: 'text',
|
21
|
+
value: ''
|
22
|
+
},
|
23
|
+
open_label: {
|
24
|
+
searchable: true,
|
25
|
+
translatable: true,
|
26
|
+
type: 'string',
|
27
|
+
value: 'See more'
|
28
|
+
},
|
29
|
+
open_label_position: {
|
30
|
+
collection: [
|
31
|
+
{ label: 'Left', value: 'left' },
|
32
|
+
{ label: 'Center', value: 'center' },
|
33
|
+
{ label: 'Right', value: 'right' }
|
34
|
+
],
|
35
|
+
searchable: false,
|
36
|
+
translatable: false,
|
37
|
+
type: 'enum',
|
38
|
+
value: 'left'
|
39
|
+
}
|
15
40
|
},
|
16
41
|
children: []
|
17
42
|
}
|
@@ -1,25 +1,25 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/components/aside/edit/inspect">
|
2
2
|
<div class="form-group">
|
3
3
|
<label class="label-control">Visible content</label>
|
4
|
-
<summernote config="summernoteConfig" ng-model="promethee.inspected.attributes.
|
4
|
+
<summernote config="summernoteConfig" ng-model="promethee.inspected.attributes.visible_content.value"></summernote>
|
5
5
|
</div>
|
6
6
|
|
7
7
|
<div class="form-group">
|
8
8
|
<label class="label-control">Collapsed content</label>
|
9
|
-
<summernote config="summernoteConfig" ng-model="promethee.inspected.attributes.
|
9
|
+
<summernote config="summernoteConfig" ng-model="promethee.inspected.attributes.collapsed_content.value"></summernote>
|
10
10
|
</div>
|
11
11
|
|
12
12
|
<div class="form-group">
|
13
13
|
<label class="label-control">Button label</label>
|
14
|
-
<input ng-model="promethee.inspected.attributes.
|
14
|
+
<input ng-model="promethee.inspected.attributes.open_label.value" class="form-control" type="text"/>
|
15
15
|
</div>
|
16
16
|
|
17
17
|
<div class="form-group">
|
18
18
|
<label class="label-control">Button label position</label>
|
19
19
|
<div>
|
20
|
-
<label class="radio-inline"> <input ng-model="promethee.inspected.attributes.open_label_position" type="radio" value="left" />Left </label>
|
21
|
-
<label class="radio-inline"> <input ng-model="promethee.inspected.attributes.open_label_position" type="radio" value="center" />Center </label>
|
22
|
-
<label class="radio-inline"> <input ng-model="promethee.inspected.attributes.open_label_position" type="radio" value="right" />Right </label>
|
20
|
+
<label class="radio-inline"> <input ng-model="promethee.inspected.attributes.open_label_position.value" type="radio" value="left" />Left </label>
|
21
|
+
<label class="radio-inline"> <input ng-model="promethee.inspected.attributes.open_label_position.value" type="radio" value="center" />Center </label>
|
22
|
+
<label class="radio-inline"> <input ng-model="promethee.inspected.attributes.open_label_position.value" type="radio" value="right" />Right </label>
|
23
23
|
</div>
|
24
24
|
</div>
|
25
25
|
</script>
|
@@ -1,17 +1,17 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/components/aside/edit/move">
|
2
2
|
<%= render 'promethee/edit/move.header', type: 'aside' %>
|
3
|
-
<aside ng-show="component.attributes.
|
3
|
+
<aside ng-show="component.attributes.collapsed_content.value"
|
4
4
|
ng-init="collapsed = true">
|
5
|
-
<div ng-bind-html="component.attributes.
|
5
|
+
<div ng-bind-html="component.attributes.visible_content.value | htmlSafe"></div>
|
6
6
|
<div ng-hide="collapsed"
|
7
|
-
ng-bind-html="component.attributes.
|
7
|
+
ng-bind-html="component.attributes.collapsed_content.value | htmlSafe"></div>
|
8
8
|
<a class="btn btn-default btn-light btn-block"
|
9
|
-
ng-class="component.attributes.open_label_position"
|
9
|
+
ng-class="component.attributes.open_label_position.value"
|
10
10
|
ng-click="collapsed = !collapsed"
|
11
|
-
ng-bind-html="component.attributes.
|
11
|
+
ng-bind-html="component.attributes.open_label.value | htmlSafe"></a>
|
12
12
|
</aside>
|
13
|
-
<aside ng-hide="component.attributes.
|
14
|
-
ng-bind-html="component.attributes.
|
13
|
+
<aside ng-hide="component.attributes.collapsed_content.value"
|
14
|
+
ng-bind-html="component.attributes.visible_content.value | htmlSafe"></aside>
|
15
15
|
</div>
|
16
16
|
</div>
|
17
17
|
</script>
|
@@ -4,38 +4,38 @@
|
|
4
4
|
<div class="row">
|
5
5
|
<div class="col-md-6">
|
6
6
|
<b>Aside visible content</b>
|
7
|
-
<div ng-bind-html="master.attributes.
|
7
|
+
<div ng-bind-html="master.attributes.visible_content.value | htmlSafe"></div>
|
8
8
|
</div>
|
9
9
|
<div class="col-md-6">
|
10
10
|
<div class="form-group">
|
11
|
-
<
|
12
|
-
<summernote config="summernoteConfig" ng-model="component.attributes.
|
11
|
+
<b>Aside visible content</b>
|
12
|
+
<summernote config="summernoteConfig" ng-model="component.attributes.visible_content.value"></summernote>
|
13
13
|
</div>
|
14
14
|
</div>
|
15
15
|
</div>
|
16
16
|
|
17
|
-
<div class="row" ng-show="master.attributes.
|
17
|
+
<div class="row" ng-show="master.attributes.collapsed_content.value">
|
18
18
|
<div class="col-md-6">
|
19
19
|
<b>Aside collapsed content</b>
|
20
|
-
<div ng-bind-html="master.attributes.
|
20
|
+
<div ng-bind-html="master.attributes.collapsed_content.value | htmlSafe"></div>
|
21
21
|
</div>
|
22
22
|
<div class="col-md-6">
|
23
23
|
<div class="form-group">
|
24
|
-
<
|
25
|
-
<summernote config="summernoteConfig" ng-model="component.attributes.
|
24
|
+
<b>Aside collapsed content</b>
|
25
|
+
<summernote config="summernoteConfig" ng-model="component.attributes.collapsed_content.value"></summernote>
|
26
26
|
</div>
|
27
27
|
</div>
|
28
28
|
</div>
|
29
29
|
|
30
|
-
<div class="row" ng-show="master.attributes.
|
30
|
+
<div class="row" ng-show="master.attributes.collapsed_content.value">
|
31
31
|
<div class="col-md-6">
|
32
32
|
<b>Button label</b>
|
33
|
-
<div ng-bind-html="master.attributes.
|
33
|
+
<div ng-bind-html="master.attributes.open_label.value | htmlSafe"></div>
|
34
34
|
</div>
|
35
35
|
<div class="col-md-6">
|
36
36
|
<div class="form-group">
|
37
|
-
<
|
38
|
-
<input class="form-control" ng-model="component.attributes.
|
37
|
+
<b>Button label</b>
|
38
|
+
<input class="form-control" ng-model="component.attributes.open_label.value" type="text">
|
39
39
|
</div>
|
40
40
|
</div>
|
41
41
|
</div>
|
@@ -1,21 +1,21 @@
|
|
1
1
|
<%
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
open_label_position = component[:attributes]
|
2
|
+
visible_content = component[:attributes].dig(:visible_content, :value)&.to_s&.html_safe
|
3
|
+
collapsed_content = component[:attributes].dig(:collapsed_content, :value)&.to_s&.html_safe
|
4
|
+
open_label = component[:attributes].dig(:open_label, :value)&.to_s
|
5
|
+
open_label_position = component[:attributes].dig(:open_label_position, :value)&.to_s
|
6
6
|
%>
|
7
7
|
|
8
8
|
<aside class="<%= promethee_class_for component %> aside">
|
9
|
-
<%=
|
9
|
+
<%= visible_content %>
|
10
10
|
|
11
|
-
<% if
|
11
|
+
<% if collapsed_content.present? %>
|
12
12
|
|
13
13
|
<div class="collapse aside__collapse" id="aside-collapse-<%= component[:id] %>">
|
14
|
-
<%=
|
14
|
+
<%= collapsed_content %>
|
15
15
|
</div>
|
16
16
|
|
17
17
|
<div class="aside__button aside__button--<%= open_label_position %>">
|
18
|
-
<a href="#aside-collapse-<%= component[:id] %>" data-toggle="collapse"><%=
|
18
|
+
<a href="#aside-collapse-<%= component[:id] %>" data-toggle="collapse"><%= open_label %></a>
|
19
19
|
</div>
|
20
20
|
|
21
21
|
<% end %>
|