infopark_fiona7 0.30.0.2 → 0.70.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/fiona7.js +1 -282
- data/app/assets/javascripts/fiona7_ui.js +335 -0
- data/app/assets/stylesheets/fiona7.css.scss +4 -36
- data/app/assets/stylesheets/fiona7_ui.css.scss +39 -0
- data/app/controllers/fiona7/blobs_controller.rb +13 -23
- data/app/controllers/fiona7/release_controller.rb +1 -0
- data/app/controllers/fiona7/sessions_controller.rb +3 -5
- data/app/helpers/fiona7_override_helper.rb +6 -2
- data/app/models/fiona7/edited_obj.rb +6 -1
- data/app/models/fiona7/released_obj.rb +11 -3
- data/app/models/fiona7/write_obj.rb +18 -3
- data/app/models/fiona7_login_page.rb +3 -0
- data/app/views/scrivito/ui/index.html.erb +16 -0
- data/config/routes.rb +2 -0
- data/infopark_fiona7.gemspec +6 -4
- data/lib/fiona7/builder/batch_widget_writer.rb +7 -3
- data/lib/fiona7/builder/obj_builder.rb +130 -42
- data/lib/fiona7/builder/obj_class_builder.rb +3 -59
- data/lib/fiona7/builder/obj_class_updater.rb +7 -44
- data/lib/fiona7/builder/obj_updater.rb +25 -7
- data/lib/fiona7/builder/widget_builder.rb +24 -0
- data/lib/fiona7/builder/widget_building.rb +2 -7
- data/lib/fiona7/builder/widget_updater.rb +21 -0
- data/lib/fiona7/controllers/content_service/obj_controller.rb +16 -25
- data/lib/fiona7/controllers/rest_api/blob_controller.rb +41 -2
- data/lib/fiona7/controllers/rest_api/obj_controller.rb +19 -7
- data/lib/fiona7/controllers/rest_api/workspace_controller.rb +1 -1
- data/lib/fiona7/engine.rb +58 -7
- data/lib/fiona7/fiona_connector_patches/basic_obj.rb +46 -0
- data/lib/fiona7/initializer.rb +15 -11
- data/lib/fiona7/json/obj_decorator.rb +53 -31
- data/lib/fiona7/json/reverse_obj_decorator.rb +36 -0
- data/lib/fiona7/json/widget_decorator.rb +3 -1
- data/lib/fiona7/link_converter/fiona_to_scrivito.rb +45 -13
- data/lib/fiona7/link_converter/scrivito_to_fiona.rb +1 -1
- data/lib/fiona7/middleware/server_detection_middleware.rb +27 -0
- data/lib/fiona7/middleware/table_switching_middleware.rb +33 -0
- data/lib/fiona7/mode_switch/cms_routes/scrivito_sdk.rb +5 -11
- data/lib/fiona7/mode_switch/composite.rb +2 -4
- data/lib/fiona7/naive_search_engine.rb +66 -16
- data/lib/fiona7/routers/rest_api.rb +50 -45
- data/lib/fiona7/routing_monkey_patch.rb +5 -3
- data/lib/fiona7/scrivito_patches/attribute_content.rb +9 -10
- data/lib/fiona7/scrivito_patches/attribute_serializer.rb +15 -0
- data/lib/fiona7/scrivito_patches/basic_obj.rb +25 -19
- data/lib/fiona7/scrivito_patches/basic_widget.rb +4 -0
- data/lib/fiona7/scrivito_patches/binary.rb +452 -33
- data/lib/fiona7/scrivito_patches/client_config.rb +0 -19
- data/lib/fiona7/scrivito_patches/cms_backend.rb +48 -0
- data/lib/fiona7/scrivito_patches/cms_field_tag.rb +19 -0
- data/lib/fiona7/scrivito_patches/cms_rest_api.rb +20 -3
- data/lib/fiona7/scrivito_patches/cms_routing.rb +20 -34
- data/lib/fiona7/scrivito_patches/controller_actions.rb +0 -8
- data/lib/fiona7/scrivito_patches/migrator.rb +4 -0
- data/lib/fiona7/scrivito_patches/objs_controller.rb +18 -0
- data/lib/fiona7/scrivito_patches/type_computer.rb +12 -12
- data/lib/fiona7/scrivito_patches/webservice_controller.rb +21 -0
- data/lib/fiona7/scrivito_patches/workspace.rb +8 -5
- data/lib/fiona7/shadow_classes.rb +74 -0
- data/lib/fiona7/table_switcher.rb +39 -0
- data/lib/fiona7/type_loader.rb +63 -0
- data/lib/fiona7/type_register.rb +170 -89
- data/lib/fiona7/type_synchronizer.rb +68 -0
- data/lib/fiona7/version.rb +1 -1
- data/lib/fiona7/version_helper.rb +35 -54
- data/lib/fiona7/widget_resolver.rb +1 -1
- data/lib/tasks/fiona7_tasks.rake +0 -8
- metadata +57 -18
- data/lib/fiona7/controllers/rest_api/obj_class_controller.rb +0 -39
- data/lib/fiona7/json/obj_class_decorator.rb +0 -45
- data/lib/fiona7/mode_switch/constants.rb +0 -86
- data/lib/fiona7/type_register_mixin.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1fb73f7dbb42f72a2226f87ebefc5917d783bc43
|
4
|
+
data.tar.gz: a44f89e1afabe37ea6b3dac2e090b7ea2e4e1330
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 08b11f576e6b7250c72fd1d8edd3e4651e5438a09c58c6a4f77815e1d50ad65cd9e117e15681b7ba4017516e3b7910f19dd4e6ecb6acd924f9fe9e90d8cd67de
|
7
|
+
data.tar.gz: 0ab455e74160f1d43e325b52d0cf65bf83becddd06fed7c5d1e9c1ede64a709b002055a6a4c310aeb608b71ca927bff3a1148592e33b979db49c9472a48e2fcf
|
@@ -1,284 +1,3 @@
|
|
1
1
|
//= require jquery
|
2
2
|
//= require jquery_ujs
|
3
|
-
//= require
|
4
|
-
//= require scrivito_editors
|
5
|
-
|
6
|
-
/* obj.js, patch create & upload */
|
7
|
-
(function() {
|
8
|
-
var format_date = function(date) {
|
9
|
-
return date.getUTCFullYear().toString() +
|
10
|
-
format_date_number(date.getUTCMonth() + 1) + // Month numbers are starting at 0.
|
11
|
-
format_date_number(date.getUTCDate()) +
|
12
|
-
format_date_number(date.getUTCHours()) +
|
13
|
-
format_date_number(date.getUTCMinutes()) +
|
14
|
-
format_date_number(date.getUTCSeconds());
|
15
|
-
};
|
16
|
-
|
17
|
-
var format_date_number = function(number) {
|
18
|
-
var string = number.toString();
|
19
|
-
return string.length === 1 ? '0' + string : string;
|
20
|
-
};
|
21
|
-
|
22
|
-
var convert_attributes = function(data) {
|
23
|
-
var collected_promises = _.map(data, function(value, field_name) {
|
24
|
-
if (value instanceof Date) {
|
25
|
-
return $.Deferred().resolve([field_name, format_date(value)]);
|
26
|
-
} else if (value instanceof window.File) {
|
27
|
-
return $.Deferred().resolve([field_name, value]);
|
28
|
-
return scrivito.blob.create(value).then(function(value) {
|
29
|
-
return [field_name, value];
|
30
|
-
});
|
31
|
-
} else {
|
32
|
-
return $.Deferred().resolve([field_name, value]);
|
33
|
-
}
|
34
|
-
});
|
35
|
-
|
36
|
-
return $.when.apply(this, collected_promises).then(function() {
|
37
|
-
return _.object(arguments);
|
38
|
-
});
|
39
|
-
};
|
40
|
-
|
41
|
-
var convert_widget_pool = function(widget_pool) {
|
42
|
-
if(widget_pool) {
|
43
|
-
var conversion_promises = _.map(widget_pool, function(attributes, widget_id) {
|
44
|
-
return convert_attributes(attributes).then(function(attributes) {
|
45
|
-
return [widget_id, attributes];
|
46
|
-
});
|
47
|
-
});
|
48
|
-
|
49
|
-
return $.when.apply(this, conversion_promises).then(function() {
|
50
|
-
return _.object(arguments);
|
51
|
-
});
|
52
|
-
} else {
|
53
|
-
return $.Deferred().resolve(widget_pool);
|
54
|
-
}
|
55
|
-
};
|
56
|
-
|
57
|
-
var prepare_attributes = function(data) {
|
58
|
-
return convert_widget_pool(data._widget_pool).then(function(widget_pool) {
|
59
|
-
return convert_attributes(data).then(function(attributes) {
|
60
|
-
attributes._widget_pool = widget_pool;
|
61
|
-
return attributes;
|
62
|
-
});
|
63
|
-
});
|
64
|
-
};
|
65
|
-
|
66
|
-
scrivito.obj.create_original = scrivito.obj.create;
|
67
|
-
scrivito.obj.create = function (data) {
|
68
|
-
var blob;
|
69
|
-
|
70
|
-
if (data['blob']) {
|
71
|
-
blob = data['blob'];
|
72
|
-
delete data['blob'];
|
73
|
-
}
|
74
|
-
return prepare_attributes(data).then(function(attributes) {
|
75
|
-
var fd, defer, url, base_url = window.location.protocol + '//' + window.location.host + '/__scrivito/';
|
76
|
-
url = base_url + 'objs';
|
77
|
-
|
78
|
-
fd = new FormData();
|
79
|
-
|
80
|
-
$.each(attributes, function (key, value) {
|
81
|
-
if (typeof value !== 'undefined') {
|
82
|
-
fd.append('obj[' + key + ']', value);
|
83
|
-
}
|
84
|
-
});
|
85
|
-
|
86
|
-
if (typeof blob !== 'undefined') {
|
87
|
-
fd.append('obj[blob]', blob);
|
88
|
-
}
|
89
|
-
|
90
|
-
defer = $.Deferred();
|
91
|
-
|
92
|
-
$.ajax({
|
93
|
-
url: url,
|
94
|
-
type: 'POST',
|
95
|
-
data: fd,
|
96
|
-
processData: false,
|
97
|
-
contentType: false
|
98
|
-
})
|
99
|
-
.error(function (xhr, text, error) {
|
100
|
-
scrivito.alert(text);
|
101
|
-
defer.reject(text);
|
102
|
-
})
|
103
|
-
.success(function (new_data) {
|
104
|
-
defer.resolve(scrivito.obj.create_instance_from_server_data(new_data));
|
105
|
-
});
|
106
|
-
|
107
|
-
return defer.promise();
|
108
|
-
});
|
109
|
-
};
|
110
|
-
|
111
|
-
}());
|
112
|
-
|
113
|
-
(function() {
|
114
|
-
|
115
|
-
}());
|
116
|
-
|
117
|
-
(function() {
|
118
|
-
var original_create_instance = scrivito.child_list_element.create_instance;
|
119
|
-
|
120
|
-
/* patch the create page command to not create incomprehensible paths */
|
121
|
-
scrivito.child_list_element.create_instance = function(cms_element) {
|
122
|
-
var ret = original_create_instance.call(this, cms_element);
|
123
|
-
if (typeof ret === "object") {
|
124
|
-
ret.create_child = function(obj_class) {
|
125
|
-
var path = (cms_element.path() + '/' + obj_class).replace(/\/\//g, "/");
|
126
|
-
|
127
|
-
return scrivito.obj.create({
|
128
|
-
_path: path,
|
129
|
-
_obj_class: obj_class
|
130
|
-
});
|
131
|
-
};
|
132
|
-
}
|
133
|
-
return ret;
|
134
|
-
};
|
135
|
-
|
136
|
-
/* patch the revert command to allow reverts on rtc workspace*/
|
137
|
-
scrivito.revert_obj_command = function(obj, translations_namespace) {
|
138
|
-
if (!translations_namespace) {
|
139
|
-
translations_namespace = 'commands.revert_obj';
|
140
|
-
}
|
141
|
-
|
142
|
-
return scrivito.command.create_instance({
|
143
|
-
id: 'revert_obj',
|
144
|
-
title: scrivito.t(translations_namespace + '.title'),
|
145
|
-
icon: '',
|
146
|
-
|
147
|
-
present: function() {
|
148
|
-
return scrivito.editing_context.selected_workspace.is_editable() && obj && !obj.is_deleted();
|
149
|
-
},
|
150
|
-
|
151
|
-
disabled: function() {
|
152
|
-
/* here patched: */
|
153
|
-
/*
|
154
|
-
if (scrivito.editing_context.selected_workspace.is_rtc()) {
|
155
|
-
return scrivito.t(translations_namespace + '.rtc_workspace');
|
156
|
-
}
|
157
|
-
*/
|
158
|
-
if (!obj.modification()) {
|
159
|
-
return scrivito.t(translations_namespace + '.not_modified_obj');
|
160
|
-
}
|
161
|
-
if (obj.is_new()) {
|
162
|
-
return scrivito.t(translations_namespace + '.new_obj');
|
163
|
-
}
|
164
|
-
},
|
165
|
-
|
166
|
-
update: function() {
|
167
|
-
return obj.update_modification();
|
168
|
-
},
|
169
|
-
|
170
|
-
execute: function() {
|
171
|
-
return scrivito.confirmation_dialog({
|
172
|
-
title: scrivito.t(translations_namespace + '.dialog.title'),
|
173
|
-
description: scrivito.t('commands.revert_obj.dialog.description'),
|
174
|
-
icon: '',
|
175
|
-
color: 'red',
|
176
|
-
confirm_button_text: scrivito.t('commands.revert_obj.dialog.confirm'),
|
177
|
-
confirm_button_color: 'red'
|
178
|
-
}).then(function() {
|
179
|
-
return scrivito.with_saving_overlay(obj.revert().then(function() {
|
180
|
-
scrivito.reload();
|
181
|
-
}));
|
182
|
-
});
|
183
|
-
}
|
184
|
-
});
|
185
|
-
};
|
186
|
-
|
187
|
-
$.i18n().load({
|
188
|
-
'commands.release_obj.title': 'Seite freigeben',
|
189
|
-
'commands.release_obj.not_modified_obj': 'Diese Seite wurde nicht geändert. Daher gibt es nichts zu freigeben.',
|
190
|
-
'commands.release_obj.dialog.title': 'Wirklich Änderungen an dieser Seite veröffentlichen?',
|
191
|
-
'commands.release_obj.dialog.description': 'Eine Arbeitsversion zu veröffentlichen ist endgültig. Dieser Vorgang kann nicht rückgängig gemacht werden.',
|
192
|
-
'commands.release_obj.dialog.confirm': 'Freigeben',
|
193
|
-
'commands.release_obj.failed': 'Freigabe fehlgeschlagen'
|
194
|
-
}, 'de');
|
195
|
-
|
196
|
-
$.i18n().load({
|
197
|
-
'commands.release_obj.title': 'Release page',
|
198
|
-
'commands.release_obj.not_modified_obj': 'This resource has not been modified. Therefore, nothing can be released.',
|
199
|
-
'commands.release_obj.dialog.title': 'Really release this page?',
|
200
|
-
'commands.release_obj.dialog.description': 'Releasing an edited page is final. This operation cannot be reverted.',
|
201
|
-
'commands.release_obj.dialog.confirm': 'Release',
|
202
|
-
'commands.release_obj.failed': 'Release failed'
|
203
|
-
}, 'en');
|
204
|
-
|
205
|
-
var open_confirmation_dialog = function() {
|
206
|
-
return scrivito.confirmation_dialog({
|
207
|
-
title: scrivito.t('commands.release_obj.dialog.title'),
|
208
|
-
description: scrivito.t('commands.release_obj.dialog.description'),
|
209
|
-
icon: '',
|
210
|
-
color: 'green',
|
211
|
-
confirm_button_text: scrivito.t('commands.release_obj.dialog.confirm'),
|
212
|
-
confirm_button_color: 'green'
|
213
|
-
});
|
214
|
-
};
|
215
|
-
|
216
|
-
/* implement release command */
|
217
|
-
scrivito.release_obj_command = function(obj, translations_namespace) {
|
218
|
-
if (!translations_namespace) {
|
219
|
-
translations_namespace = 'commands.release_obj';
|
220
|
-
}
|
221
|
-
|
222
|
-
return scrivito.command.create_instance({
|
223
|
-
id: 'release_obj',
|
224
|
-
title: scrivito.t(translations_namespace + '.title'),
|
225
|
-
icon: '',
|
226
|
-
|
227
|
-
present: function() {
|
228
|
-
return scrivito.editing_context.selected_workspace.is_editable() && obj && !obj.is_deleted();
|
229
|
-
},
|
230
|
-
|
231
|
-
disabled: function() {
|
232
|
-
if (!obj.modification()) {
|
233
|
-
return scrivito.t(translations_namespace + '.not_modified_obj');
|
234
|
-
}
|
235
|
-
},
|
236
|
-
|
237
|
-
execute: function() {
|
238
|
-
/* TODO: implement permission check */
|
239
|
-
open_confirmation_dialog().done(function() {
|
240
|
-
scrivito.with_saving_overlay(scrivito.ajax('PUT', 'objs/' + obj.id() + '/release').then(function() {
|
241
|
-
scrivito.reload();
|
242
|
-
}).fail(function(error) {
|
243
|
-
scrivito.alert_dialog(scrivito.t(translations_namespace + '.failed'));
|
244
|
-
}));
|
245
|
-
});
|
246
|
-
}
|
247
|
-
});
|
248
|
-
};
|
249
|
-
|
250
|
-
/* patch the obj menu */
|
251
|
-
scrivito.current_page_menu.init = function() {
|
252
|
-
if (scrivito.obj.current_page) {
|
253
|
-
scrivito.menu_bar.register_item_renderer(function(menu_bar) {
|
254
|
-
var current_page = scrivito.obj.current_page;
|
255
|
-
scrivito.obj_menu.create(menu_bar.find('#scrivito_current_page_menu'), current_page, [
|
256
|
-
scrivito.obj_details_command(current_page),
|
257
|
-
scrivito.save_obj_to_clipboard_command(current_page),
|
258
|
-
scrivito.release_obj_command(current_page),
|
259
|
-
scrivito.delete_obj_command(current_page),
|
260
|
-
scrivito.revert_obj_command(current_page),
|
261
|
-
//scrivito.restore_obj_command(current_page),
|
262
|
-
//scrivito.mark_resolved_obj_command(current_page),
|
263
|
-
scrivito.duplicate_obj_command(current_page)
|
264
|
-
]);
|
265
|
-
});
|
266
|
-
}
|
267
|
-
};
|
268
|
-
|
269
|
-
/* enforce permissions */
|
270
|
-
var originalGuiStart = scrivito.gui.start;
|
271
|
-
scrivito.gui.start = function () {
|
272
|
-
originalGuiStart.call(this, arguments);
|
273
|
-
if (scrivito.in_editable_view()) {
|
274
|
-
if (!scrivito.user_permissions.can('write_obj')) {
|
275
|
-
$('.switch_to_view_mode').click();
|
276
|
-
}
|
277
|
-
} else {
|
278
|
-
if (!scrivito.user_permissions.can('write_obj')) {
|
279
|
-
$('.scrivito_viewmode_editing').remove();
|
280
|
-
}
|
281
|
-
}
|
282
|
-
};
|
283
|
-
|
284
|
-
}());
|
3
|
+
//= require scrivito
|
@@ -0,0 +1,335 @@
|
|
1
|
+
/* obj.js, patch create & upload */
|
2
|
+
(function() {
|
3
|
+
var scrivito = window.scrivito;
|
4
|
+
var _ = window._;
|
5
|
+
var $ = window.$;
|
6
|
+
|
7
|
+
var format_date = function(date) {
|
8
|
+
return date.getUTCFullYear().toString() +
|
9
|
+
format_date_number(date.getUTCMonth() + 1) + // Month numbers are starting at 0.
|
10
|
+
format_date_number(date.getUTCDate()) +
|
11
|
+
format_date_number(date.getUTCHours()) +
|
12
|
+
format_date_number(date.getUTCMinutes()) +
|
13
|
+
format_date_number(date.getUTCSeconds());
|
14
|
+
};
|
15
|
+
|
16
|
+
var format_date_number = function(number) {
|
17
|
+
var string = number.toString();
|
18
|
+
return string.length === 1 ? '0' + string : string;
|
19
|
+
};
|
20
|
+
|
21
|
+
var convert_attributes = function(data) {
|
22
|
+
var collected_promises = _.map(data, function(value, field_name) {
|
23
|
+
if (value instanceof Date) {
|
24
|
+
return $.Deferred().resolve([field_name, format_date(value)]);
|
25
|
+
} else if (value instanceof window.File) {
|
26
|
+
return $.Deferred().resolve([field_name, value]);
|
27
|
+
return scrivito.blob.create(value).then(function(value) {
|
28
|
+
return [field_name, value];
|
29
|
+
});
|
30
|
+
} else {
|
31
|
+
return $.Deferred().resolve([field_name, value]);
|
32
|
+
}
|
33
|
+
});
|
34
|
+
|
35
|
+
return $.when.apply(this, collected_promises).then(function() {
|
36
|
+
return _.object(arguments);
|
37
|
+
});
|
38
|
+
};
|
39
|
+
|
40
|
+
var convert_widget_pool = function(widget_pool) {
|
41
|
+
if(widget_pool) {
|
42
|
+
var conversion_promises = _.map(widget_pool, function(attributes, widget_id) {
|
43
|
+
return convert_attributes(attributes).then(function(attributes) {
|
44
|
+
return [widget_id, attributes];
|
45
|
+
});
|
46
|
+
});
|
47
|
+
|
48
|
+
return $.when.apply(this, conversion_promises).then(function() {
|
49
|
+
return _.object(arguments);
|
50
|
+
});
|
51
|
+
} else {
|
52
|
+
return $.Deferred().resolve(widget_pool);
|
53
|
+
}
|
54
|
+
};
|
55
|
+
|
56
|
+
var prepare_attributes = function(data) {
|
57
|
+
return convert_widget_pool(data._widget_pool).then(function(widget_pool) {
|
58
|
+
return convert_attributes(data).then(function(attributes) {
|
59
|
+
attributes._widget_pool = widget_pool;
|
60
|
+
return attributes;
|
61
|
+
});
|
62
|
+
});
|
63
|
+
};
|
64
|
+
|
65
|
+
scrivito.obj.create_original = scrivito.obj.create;
|
66
|
+
scrivito.obj.create = function (data) {
|
67
|
+
var blob;
|
68
|
+
|
69
|
+
if (data['blob']) {
|
70
|
+
blob = data['blob'];
|
71
|
+
delete data['blob'];
|
72
|
+
}
|
73
|
+
return prepare_attributes(data).then(function(attributes) {
|
74
|
+
var fd, defer, url, base_url = window.location.protocol + '//' + window.location.host + '/__scrivito/';
|
75
|
+
url = base_url + 'objs';
|
76
|
+
|
77
|
+
fd = new FormData();
|
78
|
+
|
79
|
+
$.each(attributes, function (key, value) {
|
80
|
+
if (typeof value !== 'undefined') {
|
81
|
+
fd.append('obj[' + key + ']', value);
|
82
|
+
}
|
83
|
+
});
|
84
|
+
|
85
|
+
if (typeof blob !== 'undefined') {
|
86
|
+
fd.append('obj[blob]', blob);
|
87
|
+
}
|
88
|
+
|
89
|
+
defer = $.Deferred();
|
90
|
+
|
91
|
+
$.ajax({
|
92
|
+
url: url,
|
93
|
+
type: 'POST',
|
94
|
+
data: fd,
|
95
|
+
processData: false,
|
96
|
+
contentType: false
|
97
|
+
})
|
98
|
+
.error(function (xhr, text, error) {
|
99
|
+
scrivito.alert(text);
|
100
|
+
defer.reject(text);
|
101
|
+
})
|
102
|
+
.success(function (new_data) {
|
103
|
+
defer.resolve(scrivito.obj.create_instance(new_data));
|
104
|
+
});
|
105
|
+
|
106
|
+
return defer.promise();
|
107
|
+
});
|
108
|
+
};
|
109
|
+
|
110
|
+
}());
|
111
|
+
|
112
|
+
|
113
|
+
(function() {
|
114
|
+
var scrivito = window.scrivito;
|
115
|
+
var _ = window._;
|
116
|
+
var $ = window.$;
|
117
|
+
|
118
|
+
var original_create_instance = scrivito.child_list_element.create_instance;
|
119
|
+
|
120
|
+
/* patch the create page command to not create incomprehensible paths */
|
121
|
+
scrivito.child_list_element.create_instance = function(cms_element) {
|
122
|
+
var ret = original_create_instance.call(this, cms_element);
|
123
|
+
if (typeof ret === "object") {
|
124
|
+
ret.create_child = function(obj_class) {
|
125
|
+
var path = (cms_element.path() + '/' + obj_class).replace(/\/\//g, "/");
|
126
|
+
|
127
|
+
return scrivito.obj.create({
|
128
|
+
_path: path,
|
129
|
+
_obj_class: obj_class
|
130
|
+
});
|
131
|
+
};
|
132
|
+
}
|
133
|
+
return ret;
|
134
|
+
};
|
135
|
+
|
136
|
+
var open_confirmation_dialog = function(action,icon) {
|
137
|
+
return scrivito.prompt_dialog({
|
138
|
+
title: scrivito.t('commands.'+action+'_obj.dialog.title'),
|
139
|
+
description: scrivito.t('commands.'+action+'_obj.dialog.description'),
|
140
|
+
placeholder: scrivito.t('commands.'+action+'_obj.dialog.placeholder'),
|
141
|
+
icon: icon,
|
142
|
+
color: 'green',
|
143
|
+
accept_button_text: scrivito.t('commands.'+action+'_obj.dialog.confirm'),
|
144
|
+
accept_button_color: 'green'
|
145
|
+
});
|
146
|
+
};
|
147
|
+
|
148
|
+
$.i18n().load({
|
149
|
+
'commands.release_obj.title': 'Seite freigeben',
|
150
|
+
'commands.release_obj.not_modified_obj': 'Diese Seite wurde nicht geändert. Daher gibt es nichts zu freigeben.',
|
151
|
+
'commands.release_obj.dialog.title': 'Änderungen an dieser Seite veröffentlichen?',
|
152
|
+
'commands.release_obj.dialog.description': 'Eine Arbeitsversion zu veröffentlichen ist endgültig. Dieser Vorgang kann nicht rückgängig gemacht werden.',
|
153
|
+
'commands.release_obj.dialog.placeholder': 'Kommentar',
|
154
|
+
'commands.release_obj.dialog.confirm': 'Freigeben',
|
155
|
+
'commands.release_obj.failed': 'Freigabe fehlgeschlagen',
|
156
|
+
|
157
|
+
'commands.forward_obj.title': 'Seite weiterleiten',
|
158
|
+
'commands.forward_obj.dialog.title': 'Seite weiterleiten?',
|
159
|
+
'commands.forward_obj.dialog.description': 'Die Arbeitsversion wird an einen weiteren Bearbeiter weitergeleitet. Dieser Vorgang kann nicht rückgängig gemacht werden.',
|
160
|
+
'commands.forward_obj.dialog.placeholder': 'Kommentar',
|
161
|
+
'commands.forward_obj.dialog.confirm': 'Weiterleiten',
|
162
|
+
'commands.forward_obj.failed': 'Weiterleitung fehlgeschlagen',
|
163
|
+
|
164
|
+
'commands.reject_obj.title': 'Seite ablehnen',
|
165
|
+
'commands.reject_obj.dialog.title': 'Seite ablehnen?',
|
166
|
+
'commands.reject_obj.dialog.description': 'Die Arbeitsversion wird abgelehnt. Dieser Vorgang kann nicht rückgängig gemacht werden.',
|
167
|
+
'commands.reject_obj.dialog.placeholder': 'Kommentar',
|
168
|
+
'commands.reject_obj.dialog.confirm': 'Ablehnen',
|
169
|
+
'commands.reject_obj.failed': 'Ablehnung fehlgeschlagen',
|
170
|
+
|
171
|
+
'commands.sign_obj.title': 'Seite abzeichnen',
|
172
|
+
'commands.sign_obj.dialog.title': 'Seite abzeichnen?',
|
173
|
+
'commands.sign_obj.dialog.description': 'Die eingereichte Version wird abgezeichnet. Dieser Vorgang kann nicht rückgängig gemacht werden.',
|
174
|
+
'commands.sign_obj.dialog.placeholder': 'Kommentar',
|
175
|
+
'commands.sign_obj.dialog.confirm': 'Abzeichnen',
|
176
|
+
'commands.sign_obj.failed': 'Abzeichnung fehlgeschlagen',
|
177
|
+
|
178
|
+
'commands.commit_obj.title': 'Seite einreichen',
|
179
|
+
'commands.commit_obj.dialog.title': 'Seite einreichen?',
|
180
|
+
'commands.commit_obj.dialog.description': 'Die Arbeitsversion wird eingereicht. Dieser Vorgang kann nicht rückgängig gemacht werden.',
|
181
|
+
'commands.commit_obj.dialog.placeholder': 'Kommentar',
|
182
|
+
'commands.commit_obj.dialog.confirm': 'Einreichen',
|
183
|
+
'commands.commit_obj.failed': 'Einreichung fehlgeschlagen',
|
184
|
+
|
185
|
+
'commands.take_obj.title': 'Seite übernehmen',
|
186
|
+
'commands.take_obj.dialog.title': 'Seite übernehmen?',
|
187
|
+
'commands.take_obj.dialog.description': 'Die Arbeitsversion wird übernommen. Dieser Vorgang kann nicht rückgängig gemacht werden.',
|
188
|
+
'commands.take_obj.dialog.placeholder': 'Kommentar',
|
189
|
+
'commands.take_obj.dialog.confirm': 'Übernehmen',
|
190
|
+
'commands.take_obj.failed': 'Übernahme fehlgeschlagen'
|
191
|
+
}, 'de');
|
192
|
+
|
193
|
+
$.i18n().load({
|
194
|
+
'commands.release_obj.title': 'Release page',
|
195
|
+
'commands.release_obj.not_modified_obj': 'This resource has not been modified. Therefore, nothing can be released.',
|
196
|
+
'commands.release_obj.dialog.title': 'Release this page?',
|
197
|
+
'commands.release_obj.dialog.description': 'Releasing an edited page is final. This operation cannot be reverted.',
|
198
|
+
'commands.release_obj.dialog.placeholder': 'Comment',
|
199
|
+
'commands.release_obj.dialog.confirm': 'Release',
|
200
|
+
'commands.release_obj.failed': 'Release failed',
|
201
|
+
|
202
|
+
'commands.forward_obj.title': 'Forward page',
|
203
|
+
'commands.forward_obj.dialog.title': 'Forward this page?',
|
204
|
+
'commands.forward_obj.dialog.description': 'Forward and edited page is final. This operation cannot be reverted.',
|
205
|
+
'commands.forward_obj.dialog.placeholder': 'Comment',
|
206
|
+
'commands.forward_obj.dialog.confirm': 'Forward',
|
207
|
+
'commands.forward_obj.failed': 'Forward failed',
|
208
|
+
|
209
|
+
'commands.reject_obj.title': 'Reject page',
|
210
|
+
'commands.reject_obj.dialog.title': 'Reject this page?',
|
211
|
+
'commands.reject_obj.dialog.description': 'Die Arbeitsversion wird abgelehnt. Dieser Vorgang kann nicht rückgängig gemacht werden.',
|
212
|
+
'commands.reject_obj.dialog.placeholder': 'Comment',
|
213
|
+
'commands.reject_obj.dialog.confirm': 'Reject',
|
214
|
+
'commands.reject_obj.failed': 'Reject failed',
|
215
|
+
|
216
|
+
'commands.sign_obj.title': 'Sign page',
|
217
|
+
'commands.sign_obj.dialog.title': 'Sign this page?',
|
218
|
+
'commands.sign_obj.dialog.description': 'Die eingereichte Version wird abgezeichnet. Dieser Vorgang kann nicht rückgängig gemacht werden.',
|
219
|
+
'commands.sign_obj.dialog.placeholder': 'Comment',
|
220
|
+
'commands.sign_obj.dialog.confirm': 'Sign',
|
221
|
+
'commands.sign_obj.failed': 'Signing failed',
|
222
|
+
|
223
|
+
'commands.commit_obj.title': 'Commit page',
|
224
|
+
'commands.commit_obj.dialog.title': 'Commit this page?',
|
225
|
+
'commands.commit_obj.dialog.description': 'Die Arbeitsversion wird eingereicht. Dieser Vorgang kann nicht rückgängig gemacht werden.',
|
226
|
+
'commands.commit_obj.dialog.placeholder': 'Comment',
|
227
|
+
'commands.commit_obj.dialog.confirm': 'Commit',
|
228
|
+
'commands.commit_obj.failed': 'Commit failed',
|
229
|
+
|
230
|
+
'commands.take_obj.title': 'Take page',
|
231
|
+
'commands.take_obj.dialog.title': 'Tage this page?',
|
232
|
+
'commands.take_obj.dialog.description': 'Die Arbeitsversion wird übernommen. Dieser Vorgang kann nicht rückgängig gemacht werden.',
|
233
|
+
'commands.take_obj.dialog.placeholder': 'Comment',
|
234
|
+
'commands.take_obj.dialog.confirm': 'Take',
|
235
|
+
'commands.take_obj.failed': 'Take failed'
|
236
|
+
}, 'en');
|
237
|
+
|
238
|
+
var dialog_icons = {
|
239
|
+
"forward": "",
|
240
|
+
"reject": "",
|
241
|
+
"commit": "heck;",
|
242
|
+
"sign": "",
|
243
|
+
"take": "",
|
244
|
+
"release": ""
|
245
|
+
};
|
246
|
+
|
247
|
+
var icons = {
|
248
|
+
"forward": "check",
|
249
|
+
"reject": "cross",
|
250
|
+
"commit": "check",
|
251
|
+
"sign": "circ_pen",
|
252
|
+
"take": "exclamation",
|
253
|
+
"release": "globe"
|
254
|
+
};
|
255
|
+
var actions = ["forward", "reject","commit", "sign", "take", "release"];
|
256
|
+
actions = ["release"];
|
257
|
+
|
258
|
+
scrivito.gui.on('document', function(cms_document) {
|
259
|
+
var obj = cms_document.page();
|
260
|
+
|
261
|
+
_.each(actions, function(action,idx) {
|
262
|
+
scrivito.page_menu(cms_document).add('fiona7.idx'+idx+'.'+action+'_obj', {
|
263
|
+
title: scrivito.t('commands.'+action+'_obj.title'),
|
264
|
+
icon: icons[action],
|
265
|
+
|
266
|
+
present: function() {
|
267
|
+
return scrivito.editing_context.selected_workspace.is_editable() && obj && !obj.is_deleted() && scrivito.user_permissions.can(action + '_obj');
|
268
|
+
},
|
269
|
+
|
270
|
+
disabled: function() {
|
271
|
+
if (action == 'release' && !obj.modification()) {
|
272
|
+
return scrivito.t('commands.release_obj.not_modified_obj');
|
273
|
+
}
|
274
|
+
},
|
275
|
+
|
276
|
+
update: function() {
|
277
|
+
return obj.reload();
|
278
|
+
},
|
279
|
+
|
280
|
+
execute: function() {
|
281
|
+
/* TODO: implement permission check */
|
282
|
+
open_confirmation_dialog(action, dialog_icons[action]).done(function(comment) {
|
283
|
+
scrivito.with_saving_overlay(scrivito.ajax('PUT', 'objs/' + obj.id() + '/release?comment=' + (comment || "")).then(function() {
|
284
|
+
scrivito.reload();
|
285
|
+
}).fail(function(error) {
|
286
|
+
scrivito.alert_dialog(scrivito.t('commnds.'+action+'_obj.failed'));
|
287
|
+
}));
|
288
|
+
});
|
289
|
+
}
|
290
|
+
});
|
291
|
+
});
|
292
|
+
|
293
|
+
|
294
|
+
var menu = cms_document.menu();
|
295
|
+
menu.push(scrivito.command_separator.create_instance({id: 'fiona7.zz_sparator'}));
|
296
|
+
cms_document.set_menu(menu);
|
297
|
+
|
298
|
+
scrivito.configure_menu_order(['fiona7.*', '*']);
|
299
|
+
});
|
300
|
+
|
301
|
+
return;
|
302
|
+
|
303
|
+
/* patch the create page command to not create incomprehensible paths */
|
304
|
+
scrivito.child_list_element.create_instance = function(cms_element) {
|
305
|
+
var ret = original_create_instance.call(this, cms_element);
|
306
|
+
if (typeof ret === "object") {
|
307
|
+
ret.create_child = function(obj_class) {
|
308
|
+
var path = (cms_element.path() + '/' + obj_class).replace(/\/\//g, "/");
|
309
|
+
|
310
|
+
return scrivito.obj.create({
|
311
|
+
_path: path,
|
312
|
+
_obj_class: obj_class
|
313
|
+
});
|
314
|
+
};
|
315
|
+
}
|
316
|
+
return ret;
|
317
|
+
};
|
318
|
+
|
319
|
+
|
320
|
+
/* enforce permissions */
|
321
|
+
var originalGuiStart = scrivito.gui.start;
|
322
|
+
scrivito.gui.start = function () {
|
323
|
+
originalGuiStart.call(this, arguments);
|
324
|
+
if (scrivito.in_editable_view()) {
|
325
|
+
if (!scrivito.user_permissions.can('write_obj')) {
|
326
|
+
$('.switch_to_view_mode').click();
|
327
|
+
}
|
328
|
+
} else {
|
329
|
+
if (!scrivito.user_permissions.can('write_obj')) {
|
330
|
+
$('.scrivito_viewmode_editing').remove();
|
331
|
+
}
|
332
|
+
}
|
333
|
+
};
|
334
|
+
|
335
|
+
}());
|