promethee 1.3.7 → 1.3.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +7 -1
- data/app/views/promethee/_edit.html.erb +9 -5
- data/app/views/promethee/_localize.html.erb +1 -1
- data/app/views/promethee/components/cover/_localize.html.erb +4 -4
- data/app/views/promethee/components/image/_localize.html.erb +5 -5
- data/app/views/promethee/components/page/_edit.inspect.html.erb +11 -0
- data/app/views/promethee/components/page/_edit.move.html.erb +19 -0
- data/app/views/promethee/components/page/_localize.html.erb +3 -0
- data/app/views/promethee/components/page/_show.html.erb +1 -0
- data/app/views/promethee/components/text/_localize.html.erb +4 -4
- data/app/views/promethee/edit/_move.html.erb +24 -31
- data/lib/promethee/core_ext/tags.rb +7 -1
- data/lib/promethee/data.rb +10 -11
- data/lib/promethee/rails/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df76ca52499900498a2ff40350dae10ceadb8727
|
4
|
+
data.tar.gz: 983fdb405ee1e2cb7de785b6246f5d2b32f77320
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd489fa650db088fb8c99deb76b9021697cc04f2d9df416bb4b6ebac9a529f55371ecb3bf1437f7f8246aa33aa1853b994a50af6f17c82270d940a3e95226cf4
|
7
|
+
data.tar.gz: e7bd37fb63c2df0fa1503e44f0f4fb399c1f4f17268bb70cad4c75e7d6233cfb1b453cae3123fbccabf84e148119642f3343141e644a9bc0a444ce46f6b10611
|
data/README.md
CHANGED
@@ -129,7 +129,6 @@ With javascript set:
|
|
129
129
|
//= require summernote
|
130
130
|
//= require angular
|
131
131
|
//= require angular-animate
|
132
|
-
//= require angular-ui-bootstrap
|
133
132
|
//= require angular-summernote
|
134
133
|
//= require ui-sortable
|
135
134
|
```
|
@@ -284,6 +283,13 @@ class CreateLocalizations < ActiveRecord::Migration[5.1]
|
|
284
283
|
end
|
285
284
|
```
|
286
285
|
|
286
|
+
In the controllers, don't forget to change the params to convert the data from json to a hash:
|
287
|
+
```
|
288
|
+
def page_params
|
289
|
+
params.require(:page).permit(:name, :metier, :position, :parent_id, :data).tap { |permitted| permitted[:data] = JSON.parse(params[:page][:data]) }
|
290
|
+
end
|
291
|
+
```
|
292
|
+
|
287
293
|
### SQLite (or other not native json storage)
|
288
294
|
|
289
295
|
Prométhée takes a ruby hash.
|
@@ -5,7 +5,9 @@ logo = File.read "#{__dir__}/../../assets/images/icon-promethee.svg"
|
|
5
5
|
|
6
6
|
<script type="text/javascript">
|
7
7
|
var promethee = angular
|
8
|
-
.module('Promethee', ['summernote', 'ngAnimate', 'ui.sortable'])
|
8
|
+
.module('Promethee', ['summernote', 'ngAnimate', 'ui.sortable'], ['$rootScopeProvider', function($rootScopeProvider) {
|
9
|
+
$rootScopeProvider.digestTtl(15);
|
10
|
+
}])
|
9
11
|
.value('definitions', [])
|
10
12
|
.value('presets', []);
|
11
13
|
</script>
|
@@ -20,13 +22,18 @@ var promethee = angular
|
|
20
22
|
|
21
23
|
<script type="text/javascript">
|
22
24
|
promethee.controller('PrometheeController', ['$scope', 'summernoteConfig', 'presets', 'identifier', function($scope, summernoteConfig, presets, identifier) {
|
25
|
+
$scope.data = <%= promethee_data.to_json.html_safe %>;
|
23
26
|
|
24
27
|
// Data (TODO use Adder and probably page definition to init)
|
25
|
-
if ($scope.data === null || $scope.data
|
28
|
+
if (typeof $scope.data !== 'object' || $scope.data === null || $scope.data.type !== 'page') {
|
26
29
|
$scope.data = {
|
27
30
|
id: '',
|
28
31
|
type: 'page',
|
29
32
|
version: 1,
|
33
|
+
attributes: {
|
34
|
+
title: 'New page',
|
35
|
+
description: ''
|
36
|
+
},
|
30
37
|
children: []
|
31
38
|
};
|
32
39
|
}
|
@@ -83,9 +90,6 @@ promethee.controller('PrometheeController', ['$scope', 'summernoteConfig', 'pres
|
|
83
90
|
};
|
84
91
|
|
85
92
|
$scope.summernoteConfig = summernoteConfig;
|
86
|
-
|
87
|
-
$scope.promethee.data = <%= promethee_data.to_json.html_safe %>;
|
88
|
-
|
89
93
|
$scope.sendPreviewData('thumb-preview');
|
90
94
|
}]);
|
91
95
|
</script>
|
@@ -39,7 +39,7 @@ promethee_data = Promethee::Data.new master_data, localization_data: localizatio
|
|
39
39
|
<ng-include src="'promethee/components/' + component.type + '/localize'"></ng-include>
|
40
40
|
</script>
|
41
41
|
|
42
|
-
<input type="hidden" name="
|
42
|
+
<input type="hidden" name="<%= object_name %>[<%= method_name %>]" id="page_data" value="{{data}}" />
|
43
43
|
|
44
44
|
<% Dir["#{__dir__}/components/*/_localize.html.erb"].map do |file| %>
|
45
45
|
<% partial = file.split('app/views/').last.gsub('.html.erb', '').gsub('/_', '/') %>
|
@@ -1,13 +1,13 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/components/cover/localize">
|
2
2
|
<div class="row">
|
3
|
-
<div class="col-md-6">
|
4
|
-
<b>Local</b>
|
5
|
-
<summernote config="options" ng-model="component.attributes.body"></summernote>
|
6
|
-
</div>
|
7
3
|
<div class="col-md-6">
|
8
4
|
<b>Master</b>
|
9
5
|
<div class="promethee-edit__wrapper" ng-bind-html="component.master.attributes.body | htmlSafe"></div>
|
10
6
|
</div>
|
7
|
+
<div class="col-md-6">
|
8
|
+
<b>Local</b>
|
9
|
+
<summernote config="options" ng-model="component.attributes.body"></summernote>
|
10
|
+
</div>
|
11
11
|
</div>
|
12
12
|
<hr>
|
13
13
|
</script>
|
@@ -1,16 +1,16 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/components/image/localize">
|
2
2
|
<div class="row">
|
3
|
-
<div class="col-md-6">
|
4
|
-
<b>Local</b>
|
5
|
-
<input ng-model="component.attributes.alt" type="text" class="form-control">
|
6
|
-
<summernote config="options" ng-model="component.attributes.caption"></summernote>
|
7
|
-
</div>
|
8
3
|
<div class="col-md-6">
|
9
4
|
<b>Master</b>
|
10
5
|
<img ng-src="{{component.master.attributes.src}}" class="img-responsive" />
|
11
6
|
<input ng-model="component.master.attributes.alt" type="text" class="form-control" disabled/>
|
12
7
|
<div class="promethee-edit__wrapper" ng-bind-html="component.master.attributes.caption | htmlSafe"></div>
|
13
8
|
</div>
|
9
|
+
<div class="col-md-6">
|
10
|
+
<b>Local</b>
|
11
|
+
<input ng-model="component.attributes.alt" type="text" class="form-control">
|
12
|
+
<summernote config="options" ng-model="component.attributes.caption"></summernote>
|
13
|
+
</div>
|
14
14
|
</div>
|
15
15
|
<hr>
|
16
16
|
</script>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<script type="text/ng-template" id="promethee/components/page/edit/inspect">
|
2
|
+
<div class="form-group">
|
3
|
+
<label class="label-control">Title</label>
|
4
|
+
<input class="form-control" ng-model="promethee.inspected.attributes.title">
|
5
|
+
</div>
|
6
|
+
|
7
|
+
<div class="form-group">
|
8
|
+
<label class="label-control">Description</label>
|
9
|
+
<input class="form-control" ng-model="promethee.inspected.attributes.description">
|
10
|
+
</div>
|
11
|
+
</script>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<script type="text/ng-template" id="promethee/components/page/edit/move">
|
2
|
+
<div ng-click="inspect(component, $event)"
|
3
|
+
ng-class="{'promethee-edit__component--selected': promethee.inspected === component}"
|
4
|
+
class="<%= promethee_bem_classes 'promethee-edit__component', "--page" %>">
|
5
|
+
<div class="promethee-edit__component__inner">
|
6
|
+
<div class="header">Page</div>
|
7
|
+
|
8
|
+
<div class="promethee-edit__move__columns">
|
9
|
+
<div class="row">
|
10
|
+
<% 12.times do %>
|
11
|
+
<div class="col col-md-1"><div class="color"></div></div>
|
12
|
+
<% end %>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
|
16
|
+
<ng-include src="'promethee/move/components'"></ng-include>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
</script>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render 'promethee/show/components', components: component[:children] %>
|
@@ -1,13 +1,13 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/components/text/localize">
|
2
2
|
<div class="row">
|
3
|
-
<div class="col-md-6">
|
4
|
-
<b>Local</b>
|
5
|
-
<summernote config="options" ng-model="component.attributes.body"></summernote>
|
6
|
-
</div>
|
7
3
|
<div class="col-md-6">
|
8
4
|
<b>Master</b>
|
9
5
|
<div class="promethee-edit__wrapper" ng-bind-html="component.master.attributes.body | htmlSafe"></div>
|
10
6
|
</div>
|
7
|
+
<div class="col-md-6">
|
8
|
+
<b>Local</b>
|
9
|
+
<summernote config="options" ng-model="component.attributes.body"></summernote>
|
10
|
+
</div>
|
11
11
|
</div>
|
12
12
|
<hr>
|
13
13
|
</script>
|
@@ -9,7 +9,7 @@ promethee
|
|
9
9
|
revertDuration: 0,
|
10
10
|
scroll: true,
|
11
11
|
refreshPositions: true,
|
12
|
-
cursor: 'move',
|
12
|
+
cursor: 'move',
|
13
13
|
cursorAt: { top: 50, left: 50 },
|
14
14
|
helper: 'clone',
|
15
15
|
appendTo: '.promethee-edit__move',
|
@@ -123,32 +123,32 @@ promethee
|
|
123
123
|
}
|
124
124
|
}]);
|
125
125
|
|
126
|
-
promethee.controller('AdderController',
|
127
|
-
|
128
|
-
|
126
|
+
// promethee.controller('AdderController',
|
127
|
+
// ['$scope', '$rootScope', 'definitions', 'identifier',
|
128
|
+
// function($scope, $rootScope, definitions, identifier) {
|
129
129
|
|
130
|
-
|
131
|
-
|
132
|
-
|
130
|
+
// $scope.adding = false;
|
131
|
+
// $scope.childrenToAddTo = null;
|
132
|
+
// $scope.definitions = definitions;
|
133
133
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
134
|
+
// $scope.close = function() {
|
135
|
+
// $scope.adding = false;
|
136
|
+
// $scope.addingToChildren = null;
|
137
|
+
// };
|
138
138
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
139
|
+
// $scope.pushComponent = function(definition) {
|
140
|
+
// var definition = angular.copy(definition.data);
|
141
|
+
// definition.id = identifier.generate();
|
142
|
+
// $scope.childrenToAddTo.push(definition);
|
143
|
+
// $scope.close();
|
144
|
+
// };
|
145
145
|
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
146
|
+
// $rootScope.addComponentTo = function(components) {
|
147
|
+
// $scope.adding = true;
|
148
|
+
// $scope.childrenToAddTo = components;
|
149
|
+
// };
|
150
150
|
|
151
|
-
}])
|
151
|
+
// }])
|
152
152
|
</script>
|
153
153
|
|
154
154
|
<div class="promethee-edit__move" ng-show="promethee.mode == 'move'">
|
@@ -180,16 +180,8 @@ promethee.controller('AdderController',
|
|
180
180
|
</div>
|
181
181
|
</div>
|
182
182
|
|
183
|
-
<div class="promethee-edit__move__columns">
|
184
|
-
<div class="row">
|
185
|
-
<% 12.times do %>
|
186
|
-
<div class="col col-md-1"><div class="color"></div></div>
|
187
|
-
<% end %>
|
188
|
-
</div>
|
189
|
-
</div>
|
190
|
-
|
191
183
|
<div class="promethee-edit__move__page">
|
192
|
-
<ng-include src="'promethee/move/
|
184
|
+
<ng-include src="'promethee/move/component'"></ng-include>
|
193
185
|
</div>
|
194
186
|
|
195
187
|
<div class="promethee-edit__inspect" ng-show="promethee.inspected.type">
|
@@ -200,6 +192,7 @@ promethee.controller('AdderController',
|
|
200
192
|
{{promethee.inspected.type}}
|
201
193
|
</div>
|
202
194
|
<div class="promethee-edit__inspect-content">
|
195
|
+
<ng-include src="'promethee/components/page/edit/inspect'" ng-show="promethee.inspected.type == 'page'"></ng-include>
|
203
196
|
<div ng-repeat="definition in promethee.definitions">
|
204
197
|
<ng-include src="'promethee/components/' + definition.data.type + '/edit/inspect'"
|
205
198
|
ng-show="promethee.inspected.type == definition.data.type"></ng-include>
|
@@ -17,7 +17,13 @@ module ActionView
|
|
17
17
|
localization_data = object.send @method_name unless object.nil?
|
18
18
|
localization_data = @options[:value] if @options.include? :value
|
19
19
|
master_data = @options[:master]
|
20
|
-
ApplicationController.renderer.render partial: 'promethee/localize',
|
20
|
+
ApplicationController.renderer.render partial: 'promethee/localize',
|
21
|
+
locals: {
|
22
|
+
object_name: @object_name,
|
23
|
+
method_name: @method_name,
|
24
|
+
localization_data: localization_data,
|
25
|
+
master_data: master_data
|
26
|
+
}
|
21
27
|
end
|
22
28
|
end
|
23
29
|
end
|
data/lib/promethee/data.rb
CHANGED
@@ -20,25 +20,24 @@ module Promethee
|
|
20
20
|
# The data acts as a hash
|
21
21
|
def [](value)
|
22
22
|
@master_data[value]
|
23
|
-
end
|
23
|
+
end
|
24
24
|
|
25
25
|
protected
|
26
26
|
|
27
27
|
def hashify(data)
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
end
|
28
|
+
# https://github.com/bbatsov/ruby-style-guide#indent-conditional-assignment
|
29
|
+
h = case data.class.to_s
|
30
|
+
when 'Hash', 'ActiveSupport::HashWithIndifferentAccess' then data
|
31
|
+
when 'String' then JSON.parse data
|
32
|
+
else {}
|
33
|
+
end
|
34
|
+
|
36
35
|
h.deep_symbolize_keys
|
37
36
|
end
|
38
37
|
|
39
38
|
def check_master_integrity
|
40
39
|
@master_data[:version] = 1 unless @master_data.include? :version
|
41
|
-
@master_data[:children] = [] unless @master_data.include? :children
|
40
|
+
@master_data[:children] = [] unless @master_data.include? :children
|
42
41
|
end
|
43
42
|
|
44
43
|
# We merge the localization data in the components from the master data.
|
@@ -103,4 +102,4 @@ module Promethee
|
|
103
102
|
end
|
104
103
|
end
|
105
104
|
end
|
106
|
-
end
|
105
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: promethee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julien Dargelos
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2018-03-
|
16
|
+
date: 2018-03-29 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: rails
|
@@ -183,6 +183,10 @@ files:
|
|
183
183
|
- app/views/promethee/components/image/_icon.svg
|
184
184
|
- app/views/promethee/components/image/_localize.html.erb
|
185
185
|
- app/views/promethee/components/image/_show.html.erb
|
186
|
+
- app/views/promethee/components/page/_edit.inspect.html.erb
|
187
|
+
- app/views/promethee/components/page/_edit.move.html.erb
|
188
|
+
- app/views/promethee/components/page/_localize.html.erb
|
189
|
+
- app/views/promethee/components/page/_show.html.erb
|
186
190
|
- app/views/promethee/components/row/_edit.define.html.erb
|
187
191
|
- app/views/promethee/components/row/_edit.inspect.html.erb
|
188
192
|
- app/views/promethee/components/row/_edit.move.html.erb
|