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.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/fiona7.js +1 -282
  3. data/app/assets/javascripts/fiona7_ui.js +335 -0
  4. data/app/assets/stylesheets/fiona7.css.scss +4 -36
  5. data/app/assets/stylesheets/fiona7_ui.css.scss +39 -0
  6. data/app/controllers/fiona7/blobs_controller.rb +13 -23
  7. data/app/controllers/fiona7/release_controller.rb +1 -0
  8. data/app/controllers/fiona7/sessions_controller.rb +3 -5
  9. data/app/helpers/fiona7_override_helper.rb +6 -2
  10. data/app/models/fiona7/edited_obj.rb +6 -1
  11. data/app/models/fiona7/released_obj.rb +11 -3
  12. data/app/models/fiona7/write_obj.rb +18 -3
  13. data/app/models/fiona7_login_page.rb +3 -0
  14. data/app/views/scrivito/ui/index.html.erb +16 -0
  15. data/config/routes.rb +2 -0
  16. data/infopark_fiona7.gemspec +6 -4
  17. data/lib/fiona7/builder/batch_widget_writer.rb +7 -3
  18. data/lib/fiona7/builder/obj_builder.rb +130 -42
  19. data/lib/fiona7/builder/obj_class_builder.rb +3 -59
  20. data/lib/fiona7/builder/obj_class_updater.rb +7 -44
  21. data/lib/fiona7/builder/obj_updater.rb +25 -7
  22. data/lib/fiona7/builder/widget_builder.rb +24 -0
  23. data/lib/fiona7/builder/widget_building.rb +2 -7
  24. data/lib/fiona7/builder/widget_updater.rb +21 -0
  25. data/lib/fiona7/controllers/content_service/obj_controller.rb +16 -25
  26. data/lib/fiona7/controllers/rest_api/blob_controller.rb +41 -2
  27. data/lib/fiona7/controllers/rest_api/obj_controller.rb +19 -7
  28. data/lib/fiona7/controllers/rest_api/workspace_controller.rb +1 -1
  29. data/lib/fiona7/engine.rb +58 -7
  30. data/lib/fiona7/fiona_connector_patches/basic_obj.rb +46 -0
  31. data/lib/fiona7/initializer.rb +15 -11
  32. data/lib/fiona7/json/obj_decorator.rb +53 -31
  33. data/lib/fiona7/json/reverse_obj_decorator.rb +36 -0
  34. data/lib/fiona7/json/widget_decorator.rb +3 -1
  35. data/lib/fiona7/link_converter/fiona_to_scrivito.rb +45 -13
  36. data/lib/fiona7/link_converter/scrivito_to_fiona.rb +1 -1
  37. data/lib/fiona7/middleware/server_detection_middleware.rb +27 -0
  38. data/lib/fiona7/middleware/table_switching_middleware.rb +33 -0
  39. data/lib/fiona7/mode_switch/cms_routes/scrivito_sdk.rb +5 -11
  40. data/lib/fiona7/mode_switch/composite.rb +2 -4
  41. data/lib/fiona7/naive_search_engine.rb +66 -16
  42. data/lib/fiona7/routers/rest_api.rb +50 -45
  43. data/lib/fiona7/routing_monkey_patch.rb +5 -3
  44. data/lib/fiona7/scrivito_patches/attribute_content.rb +9 -10
  45. data/lib/fiona7/scrivito_patches/attribute_serializer.rb +15 -0
  46. data/lib/fiona7/scrivito_patches/basic_obj.rb +25 -19
  47. data/lib/fiona7/scrivito_patches/basic_widget.rb +4 -0
  48. data/lib/fiona7/scrivito_patches/binary.rb +452 -33
  49. data/lib/fiona7/scrivito_patches/client_config.rb +0 -19
  50. data/lib/fiona7/scrivito_patches/cms_backend.rb +48 -0
  51. data/lib/fiona7/scrivito_patches/cms_field_tag.rb +19 -0
  52. data/lib/fiona7/scrivito_patches/cms_rest_api.rb +20 -3
  53. data/lib/fiona7/scrivito_patches/cms_routing.rb +20 -34
  54. data/lib/fiona7/scrivito_patches/controller_actions.rb +0 -8
  55. data/lib/fiona7/scrivito_patches/migrator.rb +4 -0
  56. data/lib/fiona7/scrivito_patches/objs_controller.rb +18 -0
  57. data/lib/fiona7/scrivito_patches/type_computer.rb +12 -12
  58. data/lib/fiona7/scrivito_patches/webservice_controller.rb +21 -0
  59. data/lib/fiona7/scrivito_patches/workspace.rb +8 -5
  60. data/lib/fiona7/shadow_classes.rb +74 -0
  61. data/lib/fiona7/table_switcher.rb +39 -0
  62. data/lib/fiona7/type_loader.rb +63 -0
  63. data/lib/fiona7/type_register.rb +170 -89
  64. data/lib/fiona7/type_synchronizer.rb +68 -0
  65. data/lib/fiona7/version.rb +1 -1
  66. data/lib/fiona7/version_helper.rb +35 -54
  67. data/lib/fiona7/widget_resolver.rb +1 -1
  68. data/lib/tasks/fiona7_tasks.rake +0 -8
  69. metadata +57 -18
  70. data/lib/fiona7/controllers/rest_api/obj_class_controller.rb +0 -39
  71. data/lib/fiona7/json/obj_class_decorator.rb +0 -45
  72. data/lib/fiona7/mode_switch/constants.rb +0 -86
  73. data/lib/fiona7/type_register_mixin.rb +0 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 94ce53a1aeb6ad241b8ee188b6b5c4bafd794670
4
- data.tar.gz: 922f2f11f035bc53220297b40c8728c87502d475
3
+ metadata.gz: 1fb73f7dbb42f72a2226f87ebefc5917d783bc43
4
+ data.tar.gz: a44f89e1afabe37ea6b3dac2e090b7ea2e4e1330
5
5
  SHA512:
6
- metadata.gz: 552e781fa8a6919ebc6af66df9741fa53c9a089d4daaeb2cd1dc538fa5ac0f4d32b21f5edeeac9ada273e43f95ded8f8f0fc22746a86b8df5ee77f7b90ff73da
7
- data.tar.gz: 3f6d1c6629622a56842425268a115d80cc21406f358d9b654e3decc5ee456fecf78ac12dfa7c1715d44c9eda00aabebc81def82aeefb5c94cc7db0e7648c045d
6
+ metadata.gz: 08b11f576e6b7250c72fd1d8edd3e4651e5438a09c58c6a4f77815e1d50ad65cd9e117e15681b7ba4017516e3b7910f19dd4e6ecb6acd924f9fe9e90d8cd67de
7
+ data.tar.gz: 0ab455e74160f1d43e325b52d0cf65bf83becddd06fed7c5d1e9c1ede64a709b002055a6a4c310aeb608b71ca927bff3a1148592e33b979db49c9472a48e2fcf
@@ -1,284 +1,3 @@
1
1
  //= require jquery
2
2
  //= require jquery_ujs
3
- //= require scrivito_sdk
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": "&#xcheck;",
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
+ }());