infopark_fiona7 0.30.0.2 → 0.70.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+ }());