promethee 1.0.20 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/promethee-editor.sass +26 -57
- data/app/assets/stylesheets/promethee-editor/_move.sass +102 -0
- data/app/assets/stylesheets/promethee-editor/_preview.sass +2 -3
- data/app/assets/stylesheets/promethee-editor/_write.sass +58 -0
- data/app/views/promethee/_edit.html.erb +34 -99
- data/app/views/promethee/_localize.html.erb +1 -1
- data/app/views/promethee/_show.html.erb +1 -2
- data/app/views/promethee/edit/_move.html.erb +17 -38
- data/app/views/promethee/edit/_preview.html.erb +4 -36
- data/app/views/promethee/edit/_write.html.erb +9 -25
- data/app/views/promethee/edit/inspector/_inspector.html.erb +11 -0
- data/app/views/promethee/edit/inspector/component/_column.html.erb +2 -2
- data/app/views/promethee/edit/inspector/component/_cover.html.erb +1 -1
- data/app/views/promethee/edit/inspector/component/_details.html.erb +1 -1
- data/app/views/promethee/edit/inspector/component/_image.html.erb +3 -3
- data/app/views/promethee/edit/inspector/component/_text.html.erb +2 -11
- data/app/views/promethee/edit/inspector/component/_video.html.erb +1 -1
- data/app/views/promethee/edit/move/_component.html.erb +3 -1
- data/app/views/promethee/edit/move/_components.html.erb +10 -4
- data/app/views/promethee/edit/move/component/_column.html.erb +11 -9
- data/app/views/promethee/edit/move/component/_cover.html.erb +1 -1
- data/app/views/promethee/edit/move/component/_details.html.erb +1 -1
- data/app/views/promethee/edit/move/component/_row.html.erb +2 -2
- data/app/views/promethee/edit/shared/_data.html.erb +1 -0
- data/app/views/promethee/edit/shared/_navbar.html.erb +13 -19
- data/app/views/promethee/edit/write/_add_button.html.erb +23 -31
- data/app/views/promethee/edit/write/_toolbar.html.erb +1 -1
- data/app/views/promethee/edit/write/component/_column.html.erb +5 -37
- data/app/views/promethee/edit/write/component/_cover.html.erb +3 -22
- data/app/views/promethee/edit/write/component/_details.html.erb +3 -22
- data/app/views/promethee/edit/write/component/_image.html.erb +4 -23
- data/app/views/promethee/edit/write/component/_row.html.erb +4 -25
- data/app/views/promethee/edit/write/component/_slider.html.erb +3 -20
- data/app/views/promethee/edit/write/component/_text.html.erb +5 -24
- data/app/views/promethee/edit/write/component/_video.html.erb +7 -6
- data/lib/promethee/data.rb +56 -100
- data/lib/promethee/rails/version.rb +1 -1
- metadata +6 -4
- data/app/assets/stylesheets/promethee-editor/_component.sass +0 -27
- data/app/assets/stylesheets/promethee-editor/_mover.sass +0 -85
@@ -37,7 +37,7 @@ promethee_data = Promethee::Data.new master_data, localization_data: localizatio
|
|
37
37
|
class="promethee-localizer"
|
38
38
|
ng-app="PrometheeLocalizer"
|
39
39
|
ng-controller="PrometheeLocalizerController as prometheeLocalizerController">
|
40
|
-
<input type="hidden" name="
|
40
|
+
<input type="hidden" name="localization[data]" id="page_data" value="{{data}}" />
|
41
41
|
|
42
42
|
<%= render 'promethee/localize/component' %>
|
43
43
|
<% Dir[__dir__ + '/localize/component/*.html.erb'].map do |file| %>
|
@@ -1,7 +1,6 @@
|
|
1
1
|
<%
|
2
|
-
promethee_data = Promethee::Data.new
|
2
|
+
promethee_data = Promethee::Data.new master_data, localization_data: localization_data
|
3
3
|
%>
|
4
|
-
|
5
4
|
<div class="promethee">
|
6
5
|
<%= render 'promethee/show/components', components: promethee_data[:children] %>
|
7
6
|
</div>
|
@@ -4,30 +4,9 @@
|
|
4
4
|
<%= render "promethee/edit/move/component/#{File.basename(file, '.html.erb').sub(/\A_/, '')}" %>
|
5
5
|
<% end %>
|
6
6
|
|
7
|
-
<
|
8
|
-
<
|
9
|
-
|
10
|
-
<div class="promethee__move--droppable promethee__move--droppable--{{type}} promethee__move--droppable--{{type}}--first"
|
11
|
-
droppable
|
12
|
-
data-index="0"
|
13
|
-
>
|
14
|
-
</div>
|
15
|
-
<div ng-repeat="component in components"
|
16
|
-
class="promethee__move--draggable promethee__move--draggable--{{type}}"
|
17
|
-
draggable
|
18
|
-
data-index="{{$index}}"
|
19
|
-
data-type="{{component.type}}"
|
20
|
-
>
|
21
|
-
<ng-include src="'promethee/move/component/' + component.type"></ng-include>
|
22
|
-
<div class="promethee__move--droppable promethee__move--droppable--{{type}}"
|
23
|
-
droppable
|
24
|
-
data-index="{{$index+1}}"
|
25
|
-
data-type="{{type}}"
|
26
|
-
>
|
27
|
-
</div>
|
28
|
-
</div>
|
29
|
-
</div>
|
30
|
-
</script>
|
7
|
+
<div class="promethee-editor__move" ng-show="mode == 'move'">
|
8
|
+
<ng-include src="'promethee/move/components'"></ng-include>
|
9
|
+
</div>
|
31
10
|
|
32
11
|
<script type="text/javascript">
|
33
12
|
promethee
|
@@ -36,34 +15,31 @@
|
|
36
15
|
restrict:'A',
|
37
16
|
link: function(scope, element, attrs) {
|
38
17
|
element.draggable({
|
18
|
+
revert: true,
|
19
|
+
revertDuration: 0,
|
39
20
|
scroll: true,
|
40
|
-
cursor: "pointer",
|
41
|
-
cursorAt: { top: 0, left: 0 },
|
42
21
|
refreshPositions: true,
|
43
22
|
start: function() {
|
44
23
|
var $elementDragged = $(element[0]);
|
45
|
-
$elementDragged.addClass('promethee__move--dragged');
|
46
24
|
var type = $elementDragged.data('type');
|
47
|
-
$('.
|
25
|
+
$('.promethee-editor__move').addClass('promethee-editor__move--dragging promethee-editor__move--dragging--' + type);
|
48
26
|
|
49
27
|
// The droppable zone immediately before has no use, it would put the object at the same position
|
50
|
-
|
28
|
+
// FIXME the selector is not correct
|
29
|
+
/*
|
30
|
+
var $droppableBefore = $elementDragged.prev('.promethee-editor__move__draggable').find('.promethee-editor__move__droppable').last();
|
51
31
|
if ($droppableBefore.length === 0) {
|
52
32
|
// For the first child, we look for the previous droppable zone
|
53
|
-
$droppableBefore = $elementDragged.prev('.
|
33
|
+
$droppableBefore = $elementDragged.prev('.promethee-editor__move__droppable');
|
54
34
|
}
|
55
|
-
$droppableBefore.addClass('
|
35
|
+
$droppableBefore.addClass('promethee-editor__move__droppable--hidden');
|
36
|
+
*/
|
56
37
|
},
|
57
38
|
stop: function() {
|
58
39
|
var $elementDragged = $(element[0]);
|
59
|
-
$elementDragged.removeClass('promethee__move--dragged');
|
60
40
|
var type = $elementDragged.data('type');
|
61
|
-
$('.
|
62
|
-
|
63
|
-
$('.promethee__move--droppable').removeClass('promethee__move--droppable--hidden');
|
64
|
-
},
|
65
|
-
helper: function( event ) {
|
66
|
-
return $( '<div></div>' );
|
41
|
+
$('.promethee-editor__move').removeClass('promethee-editor__move--dragging promethee-editor__move--dragging--' + type);
|
42
|
+
// $('.promethee-editor__move__droppable').removeClass('promethee-editor__move__droppable--hidden');
|
67
43
|
}
|
68
44
|
});
|
69
45
|
}
|
@@ -74,9 +50,11 @@
|
|
74
50
|
restrict: 'A',
|
75
51
|
link: function(scope, element, attrs) {
|
76
52
|
element.droppable({
|
53
|
+
tolerance: 'pointer',
|
77
54
|
drop: function(event, ui) {
|
78
55
|
var draggedFromList = angular.element(ui.draggable).parent().scope().components;
|
79
56
|
var draggedFromIndex = parseInt(ui.draggable[0].getAttribute('data-index'));
|
57
|
+
// console.log('dragged', draggedFromList, draggedFromIndex);
|
80
58
|
draggedFromList.splice(draggedFromIndex, 1);
|
81
59
|
|
82
60
|
var component = angular.element(ui.draggable).scope().component;
|
@@ -89,6 +67,7 @@
|
|
89
67
|
droppedToIndex -= 1;
|
90
68
|
}
|
91
69
|
}
|
70
|
+
// console.log('dropped', component, droppedToList, droppedToIndex);
|
92
71
|
droppedToList.splice(droppedToIndex, 0, component);
|
93
72
|
|
94
73
|
scope.$apply();
|
@@ -1,36 +1,4 @@
|
|
1
|
-
<
|
2
|
-
<
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
<iframe
|
7
|
-
class="promethee-editor__preview-frame"
|
8
|
-
name="preview"
|
9
|
-
sandbox="allow-scripts"
|
10
|
-
frameBorder="0"
|
11
|
-
>
|
12
|
-
</iframe>
|
13
|
-
</div>
|
14
|
-
</script>
|
15
|
-
|
16
|
-
<script>
|
17
|
-
promethee.controller('PreviewController', ['data', '$scope', function(data, $scope) {
|
18
|
-
var update = function() {
|
19
|
-
var form = document.createElement('form');
|
20
|
-
form.method = 'post';
|
21
|
-
form.action = <%= promethee_preview_path.to_json.html_safe %>;
|
22
|
-
form.target = 'preview';
|
23
|
-
|
24
|
-
var input = document.createElement('input');
|
25
|
-
input.name = 'data';
|
26
|
-
input.value = JSON.stringify($scope.data);
|
27
|
-
|
28
|
-
form.appendChild(input);
|
29
|
-
form.submit();
|
30
|
-
};
|
31
|
-
|
32
|
-
$scope.$watch('action.current', function(newValue, oldValue) {
|
33
|
-
if(newValue !== oldValue && newValue == 'preview') update();
|
34
|
-
});
|
35
|
-
}]);
|
36
|
-
</script>
|
1
|
+
<div class="promethee-editor__preview promethee-editor__preview--{{preview}}" ng-show="mode == 'preview'">
|
2
|
+
<i class="fa fa-refresh fa-spin fa-fw promethee-editor__preview-loader"></i>
|
3
|
+
<iframe class="promethee-editor__preview-frame" name="preview" sandbox="allow-scripts" frameBorder="0"></iframe>
|
4
|
+
</div>
|
@@ -8,30 +8,14 @@
|
|
8
8
|
<% Dir[__dir__ + '/inspector/component/_*.html.erb'].map do |file| %>
|
9
9
|
<%= render "promethee/edit/inspector/component/#{File.basename(file, '.html.erb').sub(/\A_/, '')}" %>
|
10
10
|
<% end %>
|
11
|
-
|
12
|
-
<
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
class="promethee-editor__component promethee-editor__component--page"
|
18
|
-
>
|
19
|
-
<ng-include src="'promethee/write/components'"></ng-include>
|
20
|
-
</div>
|
11
|
+
<div class="promethee-editor__write" ng-show="mode == 'write'">
|
12
|
+
<div ng-class="{ 'container-fluid': fullscreen }">
|
13
|
+
<div ng-init="component = component || data"
|
14
|
+
class="promethee-editor__component promethee-editor__component--page"
|
15
|
+
>
|
16
|
+
<ng-include src="'promethee/write/components'"></ng-include>
|
21
17
|
</div>
|
22
|
-
<ng-include src="'promethee/write/add_button'"></ng-include>
|
23
18
|
</div>
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
<div class="pull-right">
|
28
|
-
<span ng-click="inspected.component = null"><%= fa_icon 'window-close' %></span>
|
29
|
-
</div>
|
30
|
-
<h5 ng-if="inspected.component">{{inspected.component.type}}</h5>
|
31
|
-
</div>
|
32
|
-
|
33
|
-
<div ng-if="inspected.component" class="promethee-editor__inspector-content">
|
34
|
-
<ng-include src="'promethee/inspector/component/' + inspected.component.type"></ng-include>
|
35
|
-
</div>
|
36
|
-
</div>
|
37
|
-
</script>
|
19
|
+
<ng-include src="'promethee/write/add_button'"></ng-include>
|
20
|
+
<%= render 'promethee/edit/inspector/inspector' %>
|
21
|
+
</div>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<div class="promethee-editor__inspector" ng-show="promethee.inspected">
|
2
|
+
<div class="promethee-editor__inspector-header">
|
3
|
+
<div class="pull-right">
|
4
|
+
<span ng-click="promethee.inspected = null"><%= fa_icon :times %></span>
|
5
|
+
</div>
|
6
|
+
<h5>{{promethee.inspected.type}}</h5>
|
7
|
+
</div>
|
8
|
+
<div class="promethee-editor__inspector-content">
|
9
|
+
<ng-include ng-if="promethee.inspected" src="'promethee/inspector/component/' + promethee.inspected.type"></ng-include>
|
10
|
+
</div>
|
11
|
+
</div>
|
@@ -1,10 +1,10 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/inspector/component/column">
|
2
2
|
<div class="form-group">
|
3
3
|
<label class="label-control">Size</label>
|
4
|
-
<input ng-model="inspected.
|
4
|
+
<input ng-model="promethee.inspected.attributes.size" class="form-control" type="number"/>
|
5
5
|
</div>
|
6
6
|
<div class="form-group">
|
7
7
|
<label class="label-control">Offset</label>
|
8
|
-
<input ng-model="inspected.
|
8
|
+
<input ng-model="promethee.inspected.attributes.offset" class="form-control" type="number"/>
|
9
9
|
</div>
|
10
10
|
</script>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/inspector/component/cover">
|
2
2
|
<div class="form-group">
|
3
3
|
<label class="label-control">Image Url</label>
|
4
|
-
<input ng-model="inspected.
|
4
|
+
<input ng-model="promethee.inspected.attributes.src" class="form-control" type="text"/>
|
5
5
|
</div>
|
6
6
|
</script>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/inspector/component/details">
|
2
2
|
<div class="form-group">
|
3
3
|
<label class="label-control">Summary</label>
|
4
|
-
<input ng-model="inspected.
|
4
|
+
<input ng-model="promethee.inspected.attributes.summary" class="form-control" type="text"/>
|
5
5
|
</div>
|
6
6
|
</script>
|
@@ -1,12 +1,12 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/inspector/component/image">
|
2
2
|
<div class="form-group">
|
3
3
|
<label class="label-control">Url</label>
|
4
|
-
<input class="form-control" ng-model="inspected.
|
4
|
+
<input class="form-control" ng-model="promethee.inspected.attributes.src">
|
5
5
|
</div>
|
6
6
|
|
7
7
|
<div class="form-group">
|
8
8
|
<label class="label-control">Alt</label>
|
9
|
-
<input class="form-control" ng-model="inspected.
|
9
|
+
<input class="form-control" ng-model="promethee.inspected.attributes.alt">
|
10
10
|
</div>
|
11
11
|
|
12
12
|
<div class="form-group">
|
@@ -18,6 +18,6 @@
|
|
18
18
|
['alignment', ['ul', 'ol', 'paragraph']],
|
19
19
|
['code', ['codeview']]
|
20
20
|
]
|
21
|
-
}" ng-model="inspected.
|
21
|
+
}" ng-model="promethee.inspected.attributes.caption"></summernote>
|
22
22
|
</div>
|
23
23
|
</script>
|
@@ -1,13 +1,4 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/inspector/component/text">
|
2
|
-
<
|
3
|
-
|
4
|
-
Number of words
|
5
|
-
<span class="badge badge-primary badge-pill">{{inspected.component.attributes.body | textContentFromHTML: 'distinctParagraphs' | numberOfWords}}</span>
|
6
|
-
</li>
|
7
|
-
|
8
|
-
<li class="list-group-item">
|
9
|
-
Number of characters
|
10
|
-
<span class="badge badge-primary badge-pill">{{inspected.component.attributes.body | textContentFromHTML | numberOfCharacters}}</span>
|
11
|
-
</li>
|
12
|
-
</ul>
|
2
|
+
{{promethee.inspected.attributes.body | textContentFromHTML: 'distinctParagraphs' | numberOfWords}} words<br>
|
3
|
+
{{promethee.inspected.attributes.body | textContentFromHTML | numberOfCharacters}} characters
|
13
4
|
</script>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/inspector/component/video">
|
2
2
|
<div class="form-group">
|
3
3
|
<label class="label-control">Url</label>
|
4
|
-
<input ng-model="inspected.
|
4
|
+
<input ng-model="promethee.inspected.attributes.url" class="form-control" type="text"/>
|
5
5
|
</div>
|
6
6
|
</script>
|
@@ -1,3 +1,5 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/move/component">
|
2
|
-
<
|
2
|
+
<div class="promethee-editor__move__component">
|
3
|
+
<ng-include src="'promethee/move/component/' + component.type"></ng-include>
|
4
|
+
</div>
|
3
5
|
</script>
|
@@ -1,19 +1,25 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/move/components">
|
2
2
|
<div ng-init="type = component.type; components = component.children">
|
3
|
+
<div
|
4
|
+
class="promethee-editor__move__droppable promethee-editor__move__droppable--{{type}} promethee-editor__move__droppable--{{type}}--first"
|
5
|
+
droppable
|
6
|
+
data-index="0"
|
7
|
+
>
|
8
|
+
</div>
|
3
9
|
<div
|
4
10
|
ng-repeat="component in components"
|
5
|
-
class="
|
11
|
+
class="promethee-editor__move__draggable promethee-editor__move__draggable--{{type}}"
|
6
12
|
draggable
|
7
13
|
data-index="{{$index}}"
|
8
14
|
data-type="{{component.type}}"
|
9
|
-
|
15
|
+
>
|
10
16
|
<ng-include src="'promethee/move/component'"></ng-include>
|
11
17
|
<div
|
12
|
-
class="
|
18
|
+
class="promethee-editor__move__droppable promethee-editor__move__droppable--{{type}}"
|
13
19
|
droppable
|
14
20
|
data-index="{{$index+1}}"
|
15
21
|
data-type="{{type}}"
|
16
|
-
|
22
|
+
>
|
17
23
|
</div>
|
18
24
|
</div>
|
19
25
|
</div>
|
@@ -1,13 +1,15 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/move/component/column">
|
2
2
|
<div class="col col-md-{{component.attributes.size}} col-md-offset-{{component.attributes.offset}}">
|
3
|
-
<
|
4
|
-
<ng-include src="'promethee/move'"></ng-include>
|
5
|
-
<div
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
3
|
+
<div class="header">Column</div>
|
4
|
+
<ng-include src="'promethee/move/components'"></ng-include>
|
5
|
+
<div
|
6
|
+
class=" promethee-editor__move__droppable
|
7
|
+
promethee-editor__move__droppable--row
|
8
|
+
promethee-editor__move__droppable--row--inside-column"
|
9
|
+
droppable
|
10
|
+
data-index="{{$index+1}}"
|
11
|
+
data-type="{{type}}"
|
12
|
+
>
|
13
|
+
</div>
|
12
14
|
</div>
|
13
15
|
</script>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/move/component/details">
|
2
2
|
<details>
|
3
3
|
<summary>{{component.attributes.summary}}</summary>
|
4
|
-
<ng-include src="'promethee/move'"></ng-include>
|
4
|
+
<ng-include src="'promethee/move/components'"></ng-include>
|
5
5
|
</details>
|
6
6
|
</script>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/move/component/row">
|
2
|
-
<
|
2
|
+
<div class="header">Row</div>
|
3
3
|
<div class="row">
|
4
|
-
<ng-include src="'promethee/move'"></ng-include>
|
4
|
+
<ng-include src="'promethee/move/components'"></ng-include>
|
5
5
|
</div>
|
6
6
|
</script>
|
@@ -0,0 +1 @@
|
|
1
|
+
<input type="hidden" name="page[data]" id="page_data" value="{{data}}" />
|
@@ -1,29 +1,23 @@
|
|
1
|
-
<nav class="navbar navbar-default promethee-editor__navbar">
|
1
|
+
<nav class="navbar navbar-default promethee-editor__navbar" ng-class="{'navbar-fixed-top': fullscreen }">
|
2
2
|
<div class="container-fluid">
|
3
3
|
<div class="navbar-header promethee-editor__icon">
|
4
4
|
<div class="navbar-brand"><%= File.read(__dir__ + '/../../../../assets/images/icon-promethee.svg').html_safe %></div>
|
5
5
|
</div>
|
6
6
|
<div id="navbar">
|
7
7
|
<ul class="nav navbar-nav navbar-right">
|
8
|
-
<li ng-click="
|
9
|
-
|
10
|
-
<li
|
11
|
-
|
12
|
-
ng-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
8
|
+
<li ng-click="mode = 'write'" ng-class="{active: mode == 'write'}"><a><%= fa_icon :pencil %></a></li>
|
9
|
+
<li ng-click="mode = 'move'" ng-class="{active: mode == 'move'}"><a><%= fa_icon :arrows %></a></li>
|
10
|
+
<li ng-click="enablePreview()" ng-class="{active: mode == 'preview'}">
|
11
|
+
<a data-toggle="dropdown"><%= fa_icon :eye %></a>
|
12
|
+
<ul class="dropdown-menu" ng-show="mode == 'preview'">
|
13
|
+
<li ng-click="preview = 'desktop'" ng-class="{active: preview == 'desktop'}"><a><i class="fa fa-desktop"></i></a></li>
|
14
|
+
<li ng-click="preview = 'tablet'" ng-class="{active: preview == 'tablet'}"><a><i class="fa fa-tablet"></i></a></li>
|
15
|
+
<li ng-click="preview = 'mobile'" ng-class="{active: preview == 'mobile'}"><a><i class="fa fa-mobile"></i></a></li>
|
16
|
+
</ul>
|
17
17
|
</li>
|
18
|
-
|
19
|
-
|
20
|
-
<a ng-hide="
|
21
|
-
<a ng-show="action.is('preview')"><%= fa_icon 'eye-slash' %></a>
|
22
|
-
</li>
|
23
|
-
|
24
|
-
<li ng-click="fullscreen.toggle()" ng-class="{active: fullscreen.enabled}">
|
25
|
-
<a ng-show="fullscreen.disabled"><%= fa_icon :expand %></a>
|
26
|
-
<a ng-show="fullscreen.enabled"><%= fa_icon :compress %></a>
|
18
|
+
<li ng-click="fullscreen = !fullscreen">
|
19
|
+
<a ng-show="fullscreen"><%= fa_icon :expand %></a>
|
20
|
+
<a ng-hide="fullscreen"><%= fa_icon :compress %></a>
|
27
21
|
</li>
|
28
22
|
</ul>
|
29
23
|
</div>
|
@@ -1,33 +1,26 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/write/add_button">
|
2
|
-
<
|
3
|
-
|
4
|
-
class="btn btn-default btn-block"
|
5
|
-
ng-click="addComponentTo(data.children)"
|
6
|
-
ng-hide="action.is('preview')"
|
7
|
-
style="margin-bottom: 6px"
|
8
|
-
>
|
9
|
-
Add component
|
10
|
-
</span>
|
2
|
+
<a ng-click="addComponentTo(component.children)" class="promethee-editor__adder__button"><%= fa_icon 'plus-circle', class: "fa-3x" %></a>
|
3
|
+
</script>
|
11
4
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
</
|
5
|
+
<div class="promethee-editor__adder" ng-controller="AdderController">
|
6
|
+
<div class="modal fade in" tabindex="-1" role="dialog" style="display: {{adding ? 'block' : 'none'}}">
|
7
|
+
<div class="modal-dialog modal-lg" role="document">
|
8
|
+
<div class="modal-content">
|
9
|
+
<div class="modal-header">
|
10
|
+
<button type="button" class="close" ng-click="close()"><span aria-hidden="true">×</span></button>
|
11
|
+
<h4 class="modal-title">Select component</h4>
|
12
|
+
</div>
|
13
|
+
<div class="modal-body">
|
14
|
+
<div class="row">
|
15
|
+
<div
|
16
|
+
ng-repeat="definition in definitions"
|
17
|
+
ng-click="pushComponent(definition)"
|
18
|
+
class="col-md-3"
|
19
|
+
>
|
20
|
+
<div class="thumbnail">
|
21
|
+
<img ng-src="{{definition.thumb}}" class="img-responsive">
|
22
|
+
<h4>{{definition.name}}</h4>
|
23
|
+
<p>{{definition.description}}</p>
|
31
24
|
</div>
|
32
25
|
</div>
|
33
26
|
</div>
|
@@ -35,12 +28,11 @@
|
|
35
28
|
</div>
|
36
29
|
</div>
|
37
30
|
</div>
|
38
|
-
</
|
31
|
+
</div>
|
39
32
|
|
40
33
|
<script type="text/javascript">
|
41
|
-
promethee.controller('AdderController', ['$scope', '$rootScope', 'definitions',
|
34
|
+
promethee.controller('AdderController', ['$scope', '$rootScope', 'definitions', function($scope, $rootScope, definitions) {
|
42
35
|
|
43
|
-
$scope.action = action;
|
44
36
|
$scope.adding = false;
|
45
37
|
$scope.childrenToAddTo = null;
|
46
38
|
$scope.definitions = definitions;
|