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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fedae453568a7c76951d9a5f5afac39107887fa1
|
4
|
+
data.tar.gz: d9999169433575cee9b82bb574241d4265d68c3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9a7e5e765d5f8a2d770a2cba25e3c26b0dc2219e0e3936b9c25911934a0e6bb908b8b20d563f0cdd629e15d6299c77ebb200db1d2ebb098a217521a7309d1fb
|
7
|
+
data.tar.gz: 66d57d9ef3e5c6699aa773db250d6a233ad2ed5dbed2286bc44cc483d27ba54f848b25e22ced61c9c51b20a52a8a17f2c30fac013aab1f6c6ce6fa5b26b37c79
|
@@ -3,9 +3,9 @@ $promethee-transparent-grey: transparentize($promethee-grey, .8)
|
|
3
3
|
$promethee-light-grey: #eee
|
4
4
|
$promethee-color: #ff9900 !default
|
5
5
|
|
6
|
-
@import 'promethee-editor/
|
6
|
+
@import 'promethee-editor/write'
|
7
|
+
@import 'promethee-editor/move'
|
7
8
|
@import 'promethee-editor/preview'
|
8
|
-
@import 'promethee-editor/component'
|
9
9
|
|
10
10
|
.promethee-editor
|
11
11
|
background: white
|
@@ -15,73 +15,42 @@ $promethee-color: #ff9900 !default
|
|
15
15
|
left: 0
|
16
16
|
right: 0
|
17
17
|
bottom: 0
|
18
|
-
top:
|
18
|
+
top: 50px
|
19
19
|
z-index: 10000
|
20
20
|
overflow: auto
|
21
|
-
|
22
|
-
|
21
|
+
.promethee-editor__write
|
22
|
+
padding-right: 300px
|
23
|
+
padding-top: 15px
|
24
|
+
.promethee-editor__inspector
|
25
|
+
top: 65px
|
23
26
|
|
24
27
|
&__navbar
|
25
28
|
border-radius: 0
|
26
29
|
border: none
|
27
|
-
|
28
|
-
|
30
|
+
background: #232323
|
31
|
+
margin-bottom: 0
|
32
|
+
ul.nav li a
|
33
|
+
color: white
|
34
|
+
&:hover
|
35
|
+
color: #eee
|
36
|
+
.dropdown-menu
|
37
|
+
background: #232323
|
38
|
+
min-width: 20px
|
29
39
|
|
30
40
|
&__icon
|
31
41
|
svg path
|
32
|
-
fill:
|
42
|
+
fill: white
|
33
43
|
|
34
44
|
&__button
|
35
|
-
color:
|
36
|
-
margin-left: 10px
|
37
|
-
|
38
|
-
&__toolbar
|
39
|
-
background: #eee
|
40
|
-
padding: 10px
|
41
|
-
font-size: 11px
|
42
|
-
text-transform: uppercase
|
43
|
-
font-weight: bold
|
44
|
-
color: $promethee-color
|
45
|
-
&, *
|
46
|
-
user-select: none
|
45
|
+
color: white
|
47
46
|
|
48
47
|
&__wrapper
|
49
48
|
padding: 10px
|
50
49
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
background: #fff
|
59
|
-
border: 1px solid rgba(0, 0, 0, .1)
|
60
|
-
width: 300px
|
61
|
-
height: calc(100vh - 30px)
|
62
|
-
top: 15px
|
63
|
-
left: 100%
|
64
|
-
margin-left: -15px
|
65
|
-
transform: translateX(-100%)
|
66
|
-
z-index: 1000
|
67
|
-
display: none
|
68
|
-
position: fixed
|
69
|
-
|
70
|
-
&--open
|
71
|
-
display: block
|
72
|
-
|
73
|
-
&__inspector-header
|
74
|
-
padding: 15px
|
75
|
-
border-bottom: 1px solid rgba(0, 0, 0, .1)
|
76
|
-
|
77
|
-
&, h5
|
78
|
-
font-size: 11px
|
79
|
-
|
80
|
-
h5
|
81
|
-
margin: 0
|
82
|
-
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif
|
83
|
-
font-weight: bold
|
84
|
-
text-transform: uppercase
|
85
|
-
|
86
|
-
.promethee-editor__inspector-content
|
87
|
-
padding: 15px
|
50
|
+
.video-neutralizing-overlay
|
51
|
+
background: transparent
|
52
|
+
position: absolute
|
53
|
+
top: 0
|
54
|
+
left: 0
|
55
|
+
right: 0
|
56
|
+
bottom: 0
|
@@ -0,0 +1,102 @@
|
|
1
|
+
.promethee-editor__move
|
2
|
+
width: 432px
|
3
|
+
margin: 0 auto
|
4
|
+
padding-bottom: 200px
|
5
|
+
*
|
6
|
+
font-size: 100%
|
7
|
+
line-height: 100%
|
8
|
+
margin: 0
|
9
|
+
.header
|
10
|
+
padding: 5px 0
|
11
|
+
font-size: 9px
|
12
|
+
text-transform: uppercase
|
13
|
+
border-bottom: 1px solid #ccc
|
14
|
+
&__component
|
15
|
+
user-select: none
|
16
|
+
|
17
|
+
.row
|
18
|
+
margin-left: -5px
|
19
|
+
margin-right: -5px
|
20
|
+
.col
|
21
|
+
padding-left: 5px
|
22
|
+
padding-right: 5px
|
23
|
+
|
24
|
+
&__droppable
|
25
|
+
visibility: hidden
|
26
|
+
margin: 10px 0
|
27
|
+
position: relative
|
28
|
+
background: #253742
|
29
|
+
width: 100%
|
30
|
+
height: 10px
|
31
|
+
transition: width .2s, height .2s
|
32
|
+
&.ui-droppable-active
|
33
|
+
visibility: visible
|
34
|
+
height: 10px
|
35
|
+
&.ui-droppable-hover
|
36
|
+
height: 20px
|
37
|
+
&--row
|
38
|
+
position: absolute
|
39
|
+
display: none
|
40
|
+
width: 10px
|
41
|
+
height: 100%
|
42
|
+
&.ui-droppable-active
|
43
|
+
width: 10px
|
44
|
+
height: 100%
|
45
|
+
&.ui-droppable-hover
|
46
|
+
width: 20px
|
47
|
+
height: 100%
|
48
|
+
&--first
|
49
|
+
display: block
|
50
|
+
left: -10px
|
51
|
+
top: 9px
|
52
|
+
&--inside-column
|
53
|
+
display: block
|
54
|
+
right: -10px
|
55
|
+
top: -11px
|
56
|
+
|
57
|
+
// All this is done to mask droppable that would put the draggable at the same position
|
58
|
+
// &--hidden
|
59
|
+
// visibility: hidden
|
60
|
+
// pointer-events: none
|
61
|
+
// &--row
|
62
|
+
// &:not(&--first)
|
63
|
+
// visibility: hidden
|
64
|
+
// pointer-events: none
|
65
|
+
|
66
|
+
// &--first
|
67
|
+
// position: absolute
|
68
|
+
// top: 0
|
69
|
+
// left: -25px
|
70
|
+
// width: 40px
|
71
|
+
// height: 400px
|
72
|
+
|
73
|
+
// &--inside-column
|
74
|
+
// position: absolute
|
75
|
+
// top: 0
|
76
|
+
// right: -25px
|
77
|
+
// width: 40px
|
78
|
+
// height: 400px
|
79
|
+
|
80
|
+
|
81
|
+
.ui-draggable-dragging
|
82
|
+
z-index: 1000
|
83
|
+
opacity: 0.5
|
84
|
+
// Nothing is droppable inside components being dragged
|
85
|
+
.promethee-editor__move__droppable
|
86
|
+
visibility: hidden !important
|
87
|
+
|
88
|
+
// By default, nothing is dropped in rows
|
89
|
+
&--dragging
|
90
|
+
.promethee-editor__move__droppable--row
|
91
|
+
display: none
|
92
|
+
|
93
|
+
// Except for columns, which can be dropped only on rows
|
94
|
+
&--dragging.promethee-editor__move--dragging--column
|
95
|
+
.promethee-editor__move__droppable
|
96
|
+
display: none
|
97
|
+
// It's a little specific, columns can be dropped on rows "first droppable", or on columns "inside droppables"
|
98
|
+
&.promethee-editor__move__droppable--row--inside-column,
|
99
|
+
&.promethee-editor__move__droppable--row--first
|
100
|
+
display: block
|
101
|
+
|
102
|
+
|
@@ -0,0 +1,58 @@
|
|
1
|
+
.promethee-editor__write
|
2
|
+
|
3
|
+
.promethee-editor__toolbar
|
4
|
+
background: #253742
|
5
|
+
padding: 10px
|
6
|
+
font-size: 11px
|
7
|
+
text-transform: uppercase
|
8
|
+
color: white
|
9
|
+
text-align: center
|
10
|
+
&, *
|
11
|
+
user-select: none
|
12
|
+
|
13
|
+
.promethee-editor__inspector
|
14
|
+
background: #fff
|
15
|
+
width: 300px
|
16
|
+
top: 15px
|
17
|
+
right: 0
|
18
|
+
bottom: 15px
|
19
|
+
z-index: 1000
|
20
|
+
position: fixed
|
21
|
+
border-left: 1px solid #253742
|
22
|
+
border-bottom: 1px solid #253742
|
23
|
+
&-header
|
24
|
+
background: #253742
|
25
|
+
padding: 15px
|
26
|
+
color: white
|
27
|
+
&, h5
|
28
|
+
font-size: 11px
|
29
|
+
margin: 0
|
30
|
+
text-transform: uppercase
|
31
|
+
&-content
|
32
|
+
padding: 15px
|
33
|
+
|
34
|
+
.promethee-editor__adder__button
|
35
|
+
display: block
|
36
|
+
text-align: center
|
37
|
+
margin: 50px 0
|
38
|
+
|
39
|
+
.promethee-editor__component
|
40
|
+
margin-bottom: 5px
|
41
|
+
&--cover
|
42
|
+
.promethee-editor__cover-content
|
43
|
+
padding: 150px 30px
|
44
|
+
background-repeat: no-repeat
|
45
|
+
background-position: center center
|
46
|
+
background-size: cover
|
47
|
+
&--row > div > .promethee-editor__toolbar
|
48
|
+
margin-bottom: 5px
|
49
|
+
&--column > div > .promethee-editor__toolbar
|
50
|
+
margin-bottom: 5px
|
51
|
+
&--slider
|
52
|
+
.fontawesome-carousel-control .fa
|
53
|
+
top: 50%
|
54
|
+
position: absolute
|
55
|
+
transform: translateY(-50%)
|
56
|
+
font-size: 30px
|
57
|
+
&-selected--visible
|
58
|
+
border: 2px solid #253742
|
@@ -4,53 +4,11 @@ promethee_data = Promethee::Data.new master_data
|
|
4
4
|
%>
|
5
5
|
|
6
6
|
<script>
|
7
|
-
var State = function(value) {
|
8
|
-
this.default = this.current = value;
|
9
|
-
};
|
10
|
-
|
11
|
-
State.prototype = {
|
12
|
-
get enabled() {
|
13
|
-
return !!this.current;
|
14
|
-
},
|
15
|
-
|
16
|
-
get disabled() {
|
17
|
-
return !this.enabled;
|
18
|
-
},
|
19
|
-
|
20
|
-
enable: function() {
|
21
|
-
this.set(true);
|
22
|
-
},
|
23
|
-
|
24
|
-
disable: function() {
|
25
|
-
this.set(false);
|
26
|
-
},
|
27
|
-
|
28
|
-
is: function(state) {
|
29
|
-
return this.current === state;
|
30
|
-
},
|
31
|
-
|
32
|
-
set: function(state) {
|
33
|
-
this.current = state
|
34
|
-
},
|
35
|
-
|
36
|
-
exit: function(state) {
|
37
|
-
if(this.is(state)) this.current = this.default;
|
38
|
-
},
|
39
|
-
|
40
|
-
toggle: function(state) {
|
41
|
-
if(arguments.length === 0) state = true;
|
42
|
-
this.is(state) ? this.exit(state) : this.set(state)
|
43
|
-
}
|
44
|
-
};
|
45
7
|
|
46
8
|
var promethee = angular
|
47
9
|
.module('Promethee', ['summernote', 'ngAnimate'])
|
48
10
|
.value('data', <%= promethee_data.to_json.html_safe %>)
|
49
11
|
.value('definitions', [])
|
50
|
-
.value('inspected', {component: null})
|
51
|
-
.value('action', new State('write'))
|
52
|
-
.value('preview', new State('desktop'))
|
53
|
-
.value('fullscreen', new State(false))
|
54
12
|
.config(function($rootScopeProvider) {
|
55
13
|
$rootScopeProvider.digestTtl(20);
|
56
14
|
})
|
@@ -102,7 +60,8 @@ promethee_data = Promethee::Data.new master_data
|
|
102
60
|
};
|
103
61
|
});
|
104
62
|
|
105
|
-
promethee.controller('PrometheeController', ['data', '$scope', 'definitions', '$http',
|
63
|
+
promethee.controller('PrometheeController', ['data', '$scope', 'definitions', '$http',
|
64
|
+
function(data, $scope, definitions, $http) {
|
106
65
|
|
107
66
|
// Data (TODO use Adder and probably page definition to init)
|
108
67
|
if(data === null || data === '') {
|
@@ -114,43 +73,35 @@ promethee_data = Promethee::Data.new master_data
|
|
114
73
|
};
|
115
74
|
}
|
116
75
|
|
76
|
+
$scope.promethee = { inspected: null };
|
117
77
|
$scope.data = $scope.component = data;
|
118
|
-
$scope.
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
$scope.
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
// }
|
146
|
-
|
147
|
-
// $scope.enableFullscreen = function() {
|
148
|
-
// this.fullscreen = true;
|
149
|
-
// }
|
150
|
-
|
151
|
-
// $scope.disableFullscreen = function() {
|
152
|
-
// this.fullscreen = false;
|
153
|
-
// }
|
78
|
+
$scope.mode = 'write';
|
79
|
+
$scope.preview = 'desktop';
|
80
|
+
$scope.fullscreen = false;
|
81
|
+
|
82
|
+
$scope.inspect = function(component, event) {
|
83
|
+
$scope.promethee.inspected = component;
|
84
|
+
event.stopPropagation();
|
85
|
+
}
|
86
|
+
|
87
|
+
$scope.enablePreview = function() {
|
88
|
+
if (this.mode === 'preview') return;
|
89
|
+
this.mode = 'preview';
|
90
|
+
|
91
|
+
var form = document.createElement('form');
|
92
|
+
document.body.appendChild(form);
|
93
|
+
form.method = 'POST';
|
94
|
+
form.action = <%= promethee_preview_path.to_json.html_safe %>;
|
95
|
+
form.target = 'preview';
|
96
|
+
|
97
|
+
var input = document.createElement('input');
|
98
|
+
input.type = 'text';
|
99
|
+
input.value = JSON.stringify(data);
|
100
|
+
input.name = 'data';
|
101
|
+
form.appendChild(input);
|
102
|
+
form.submit();
|
103
|
+
document.body.removeChild(form);
|
104
|
+
}
|
154
105
|
|
155
106
|
$scope.remove = function(component, components) {
|
156
107
|
var index = components.indexOf(component);
|
@@ -163,31 +114,15 @@ promethee_data = Promethee::Data.new master_data
|
|
163
114
|
|
164
115
|
<div
|
165
116
|
id="promethee"
|
166
|
-
|
167
|
-
|
168
|
-
'promethee-editor--fullscreen': fullscreen.enabled
|
169
|
-
}"
|
117
|
+
class="promethee-editor"
|
118
|
+
ng-class="{ 'promethee-editor--fullscreen': fullscreen }"
|
170
119
|
ng-app="Promethee"
|
171
120
|
ng-controller="PrometheeController as prometheeController"
|
172
|
-
>
|
121
|
+
>
|
122
|
+
<%= render 'promethee/edit/shared/data' %>
|
173
123
|
<%= render 'promethee/edit/shared/navbar' %>
|
174
|
-
|
175
124
|
<%= render 'promethee/edit/write' %>
|
176
125
|
<%= render 'promethee/edit/move' %>
|
177
126
|
<%= render 'promethee/edit/preview' %>
|
178
|
-
|
179
|
-
<input type="hidden" name="page[data]" id="page_data" value="{{data}}" />
|
180
|
-
|
181
|
-
<div ng-show="action.is('write')" class="promethee__write">
|
182
|
-
<ng-include src="'promethee/write'"></ng-include>
|
183
|
-
</div>
|
184
|
-
|
185
|
-
<div ng-show="action.is('move')" class="promethee__move">
|
186
|
-
<ng-include src="'promethee/move'"></ng-include>
|
187
|
-
</div>
|
188
|
-
|
189
|
-
<div ng-show="action.is('preview')" class="promethee__preview">
|
190
|
-
<ng-include src="'promethee/preview'"></ng-include>
|
191
|
-
</div>
|
192
127
|
</div>
|
193
128
|
|