promethee 3.0.2 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 %>
|