infopark_fiona7 1.5.5.5.1 → 1.6.1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +17 -0
  3. data/app/assets/javascripts/fiona7/task_list_dialog.js +2 -2
  4. data/app/assets/javascripts/fiona7/templates.js +1 -16
  5. data/app/assets/javascripts/fiona7/translations.js +22 -23
  6. data/app/assets/javascripts/fiona7_ui.js +56 -59
  7. data/app/assets/javascripts/scrivito_patches/base_obj_path.js +11 -5
  8. data/app/assets/javascripts/scrivito_patches/binary_request.js +53 -0
  9. data/app/assets/javascripts/scrivito_patches/client/ajax.js +122 -0
  10. data/app/assets/javascripts/scrivito_patches/{models/api → client}/basic_obj.js +150 -243
  11. data/app/assets/javascripts/scrivito_patches/client/cms_rest_api.js +209 -0
  12. data/app/assets/javascripts/scrivito_patches/components/sidebar/workspaces_panel.js +325 -0
  13. data/app/assets/javascripts/scrivito_patches/components/sidebar/workspaces_panel.js.jsx +294 -0
  14. data/app/assets/javascripts/scrivito_patches/models/{obj.js → legacy_obj.js} +27 -54
  15. data/app/assets/stylesheets/fiona7_ui.css.scss +2 -0
  16. data/app/controllers/fiona7/release_controller.rb +7 -6
  17. data/app/controllers/fiona7/sessions_controller.rb +10 -2
  18. data/app/controllers/fiona7/uploads_controller.rb +22 -0
  19. data/app/controllers/fiona7_login_page_controller.rb +3 -0
  20. data/app/controllers/scrivito/obj_class_controller.rb +28 -5
  21. data/app/views/fiona7/release/preview.html.erb +5 -38
  22. data/app/views/fiona7_login_page/index.html.erb +6 -0
  23. data/config/precedence_routes.rb +7 -7
  24. data/infopark_fiona7.gemspec +2 -2
  25. data/lib/fiona7/attribute_readers/number_as_string.rb +6 -1
  26. data/lib/fiona7/attribute_writers/binary_as_binary.rb +4 -2
  27. data/lib/fiona7/attribute_writers/binary_as_linklist.rb +4 -2
  28. data/lib/fiona7/builder/container_chain_builder.rb +50 -0
  29. data/lib/fiona7/builder/indirect_blob_builder.rb +7 -47
  30. data/lib/fiona7/builder/indirect_blob_builder_for_obj.rb +14 -0
  31. data/lib/fiona7/builder/lazy_blob_copier.rb +68 -14
  32. data/lib/fiona7/builder/obj_builder.rb +6 -32
  33. data/lib/fiona7/builder/obj_updater.rb +12 -4
  34. data/lib/fiona7/builder/widget_builder.rb +1 -1
  35. data/lib/fiona7/controllers/rest_api/blob_controller.rb +8 -2
  36. data/lib/fiona7/controllers/rest_api/obj_controller.rb +12 -8
  37. data/lib/fiona7/controllers/rest_api/workspace_controller.rb +6 -0
  38. data/lib/fiona7/engine.rb +49 -3
  39. data/lib/fiona7/forbidden_obj_classes.rb +14 -3
  40. data/lib/fiona7/linked_id_finder.rb +44 -0
  41. data/lib/fiona7/name_and_parent_from_path.rb +11 -0
  42. data/lib/fiona7/referenced_id_finder.rb +24 -0
  43. data/lib/fiona7/release_collector.rb +85 -0
  44. data/lib/fiona7/routers/rest_api.rb +2 -0
  45. data/lib/fiona7/scrivito_patches/cms_field_tag.rb +1 -0
  46. data/lib/fiona7/scrivito_patches/cms_rest_api.rb +16 -16
  47. data/lib/fiona7/scrivito_patches/cms_routing.rb +1 -0
  48. data/lib/fiona7/scrivito_patches/link_parser.rb +10 -7
  49. data/lib/fiona7/scrivito_patches/workspace.rb +0 -5
  50. data/lib/fiona7/super_id_finder.rb +68 -0
  51. data/lib/fiona7/super_object_finder.rb +5 -20
  52. data/lib/fiona7/temporary_uploader.rb +33 -0
  53. data/lib/fiona7/upload_path_selector.rb +17 -0
  54. data/lib/fiona7/verity_search_engine.rb +25 -12
  55. data/lib/fiona7/version.rb +1 -1
  56. metadata +23 -19
  57. data/app/assets/javascripts/fiona7/task_list_command.js +0 -15
  58. data/app/assets/javascripts/fiona7/task_list_menu_item.js +0 -30
  59. data/app/assets/javascripts/scrivito_patches/ajax.js +0 -225
  60. data/app/assets/javascripts/scrivito_patches/attribute_serializer.js +0 -259
  61. data/app/assets/javascripts/scrivito_patches/binary_utils.js +0 -33
  62. data/app/assets/javascripts/scrivito_patches/cms_rest_api.js +0 -371
  63. data/app/assets/javascripts/scrivito_patches/models/binary_field_element.js +0 -53
  64. data/app/assets/javascripts/scrivito_patches/obj_serializer.js +0 -91
  65. data/lib/fiona7/scrivito_patches/attribute_serializer.rb +0 -37
  66. data/lib/fiona7/scrivito_patches/model_library.rb +0 -19
  67. data/lib/fiona7/scrivito_patches/obj_params_parser.rb +0 -20
@@ -5,6 +5,9 @@ require "fiona7/custom_verity_accessor"
5
5
  require "fiona7/attribute_names_from_queries"
6
6
  require "fiona7/attribute_names_from_cms"
7
7
 
8
+ require 'fiona7/referenced_id_finder'
9
+ require 'fiona7/linked_id_finder'
10
+
8
11
  module Fiona7
9
12
  class VeritySearchEngine < SearchEngine
10
13
  def initialize(*args)
@@ -35,7 +38,7 @@ module Fiona7
35
38
  options[:sort_order] = [["score", "desc"], ["lastChanged", "desc"]]
36
39
  options[:limit] = @limit.to_i if @limit
37
40
  options[:offset] = @offset.to_i if @offset.to_i > 0
38
- VeritySearchRequest.new(@query, options, @klass == Fiona7::ReleasedObj)
41
+ VeritySearchRequest.new(@query, options, @klass == Fiona7::ReleasedObj, @klass)
39
42
  end
40
43
 
41
44
  def fetch_results
@@ -51,12 +54,13 @@ module Fiona7
51
54
  end
52
55
 
53
56
  class VeritySearchRequest < ::RailsConnector::VeritySearchRequest
54
- def initialize(query, options={}, use_released=false)
55
- @query = query
57
+ def initialize(query, options={}, use_released=false, klass)
58
+ @klass = klass
59
+ @query = query
56
60
  @query_string = build_query_string(query)
61
+ @options = default_search_options.merge(options)
62
+ @use_released = !!use_released
57
63
  Rails.logger.debug "VERITY QUERY:\n#{@query_string}"
58
- @options = default_search_options.merge(options)
59
- @use_released ||= use_released
60
64
  end
61
65
 
62
66
  def fetch_hits
@@ -118,6 +122,18 @@ module Fiona7
118
122
  values = values.map {|v| "#{v}*" }
119
123
  search_in(field, values)
120
124
  end
125
+ when :refers_to
126
+ fields = q[:field] == '*' ? [] : Array(q[:field])
127
+ values = Array(q[:value])
128
+ referring = Fiona7::ReferencedIdFinder.new(fields).find(@klass, values).map(&:to_s)
129
+ referring = referring.presence || ["1"]
130
+ search_in(:objId, referring)
131
+ when :links_to
132
+ fields = q[:field] == '*' ? [] : Array(q[:field])
133
+ values = Array(q[:value])
134
+ linking = Fiona7::LinkedIdFinder.new(fields).find(@klass, values).map(&:to_s)
135
+ linking = linking.presence || ["1"]
136
+ search_in(:objId, linking)
121
137
  when :__in__
122
138
  search_in(field, q[:value])
123
139
  when :__not_in__
@@ -142,7 +158,7 @@ module Fiona7
142
158
 
143
159
  def search_in(field, values)
144
160
  values = [values] unless values.kind_of?(Array)
145
- if [:objClass, :obj_id, :permalink, :lastChanged, :name].include?(field)
161
+ if [:objClass, :objId, :permalink, :lastChanged, :name].include?(field)
146
162
  fields = [field.to_s]
147
163
  else
148
164
  fields = (Fiona7::AttributeNamesFromQueries.new(field.to_s, @query).attributes || Fiona7::AttributeNamesFromCms.new(field.to_s).attributes).presence || [field.to_s]
@@ -198,12 +214,9 @@ module Fiona7
198
214
  end
199
215
 
200
216
  def normalize_query(query)
201
- query = query.map do |q|
202
- q.symbolize_keys
203
- q[:operator] = q[:operator].to_sym
204
- q[:field] = q[:field].to_sym
205
- q
206
- end
217
+ # TODO: remove
218
+ # NOTE: already normalized in the controller
219
+ query
207
220
  end
208
221
 
209
222
  def as_values_array(values)
@@ -1,3 +1,3 @@
1
1
  module Fiona7
2
- VERSION = "1.5.5.5.1"
2
+ VERSION = "1.6.1.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: infopark_fiona7
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.5.5.1
4
+ version: 1.6.1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomasz Przedmojski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-03 00:00:00.000000000 Z
11
+ date: 2017-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 1.5.4
33
+ version: 1.6.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 1.5.4
40
+ version: 1.6.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: scrivito_sdk
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -84,14 +84,14 @@ dependencies:
84
84
  name: infopark_reactor
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: 1.25.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: 1.25.0
97
97
  - !ruby/object:Gem::Dependency
@@ -134,22 +134,19 @@ files:
134
134
  - app/assets/images/fiona7-logo.png
135
135
  - app/assets/images/fiona7-marker.png
136
136
  - app/assets/javascripts/fiona7.js
137
- - app/assets/javascripts/fiona7/task_list_command.js
138
137
  - app/assets/javascripts/fiona7/task_list_dialog.js
139
- - app/assets/javascripts/fiona7/task_list_menu_item.js
140
138
  - app/assets/javascripts/fiona7/templates.js
141
139
  - app/assets/javascripts/fiona7/translations.js
142
140
  - app/assets/javascripts/fiona7_ui.js
143
- - app/assets/javascripts/scrivito_patches/ajax.js
144
141
  - app/assets/javascripts/scrivito_patches/ajax_error_handling.js
145
- - app/assets/javascripts/scrivito_patches/attribute_serializer.js
146
142
  - app/assets/javascripts/scrivito_patches/base_obj_path.js
147
- - app/assets/javascripts/scrivito_patches/binary_utils.js
148
- - app/assets/javascripts/scrivito_patches/cms_rest_api.js
149
- - app/assets/javascripts/scrivito_patches/models/api/basic_obj.js
150
- - app/assets/javascripts/scrivito_patches/models/binary_field_element.js
151
- - app/assets/javascripts/scrivito_patches/models/obj.js
152
- - app/assets/javascripts/scrivito_patches/obj_serializer.js
143
+ - app/assets/javascripts/scrivito_patches/binary_request.js
144
+ - app/assets/javascripts/scrivito_patches/client/ajax.js
145
+ - app/assets/javascripts/scrivito_patches/client/basic_obj.js
146
+ - app/assets/javascripts/scrivito_patches/client/cms_rest_api.js
147
+ - app/assets/javascripts/scrivito_patches/components/sidebar/workspaces_panel.js
148
+ - app/assets/javascripts/scrivito_patches/components/sidebar/workspaces_panel.js.jsx
149
+ - app/assets/javascripts/scrivito_patches/models/legacy_obj.js
153
150
  - app/assets/stylesheets/fiona7-login.css.scss
154
151
  - app/assets/stylesheets/fiona7.css.scss
155
152
  - app/assets/stylesheets/fiona7_ui.css.scss
@@ -159,6 +156,7 @@ files:
159
156
  - app/controllers/fiona7/release_controller.rb
160
157
  - app/controllers/fiona7/sessions_controller.rb
161
158
  - app/controllers/fiona7/tasks_controller.rb
159
+ - app/controllers/fiona7/uploads_controller.rb
162
160
  - app/controllers/fiona7/workflow_controller.rb
163
161
  - app/controllers/fiona7_login_page_controller.rb
164
162
  - app/controllers/scrivito/cms_dispatch_controller.rb
@@ -242,7 +240,9 @@ files:
242
240
  - lib/fiona7/attribute_writers/widgetlist_as_linklist.rb
243
241
  - lib/fiona7/blob_id_generator.rb
244
242
  - lib/fiona7/builder/batch_widget_writer.rb
243
+ - lib/fiona7/builder/container_chain_builder.rb
245
244
  - lib/fiona7/builder/indirect_blob_builder.rb
245
+ - lib/fiona7/builder/indirect_blob_builder_for_obj.rb
246
246
  - lib/fiona7/builder/lazy_blob_copier.rb
247
247
  - lib/fiona7/builder/obj_builder.rb
248
248
  - lib/fiona7/builder/obj_class_builder.rb
@@ -274,6 +274,7 @@ files:
274
274
  - lib/fiona7/json/widget_decorator.rb
275
275
  - lib/fiona7/link_converter/fiona_to_scrivito.rb
276
276
  - lib/fiona7/link_converter/scrivito_to_fiona.rb
277
+ - lib/fiona7/linked_id_finder.rb
277
278
  - lib/fiona7/middleware/server_detection_middleware.rb
278
279
  - lib/fiona7/middleware/table_switching_middleware.rb
279
280
  - lib/fiona7/mode_switch.rb
@@ -285,6 +286,7 @@ files:
285
286
  - lib/fiona7/mode_switch/composite.rb
286
287
  - lib/fiona7/mode_switch/views.rb
287
288
  - lib/fiona7/naive_search_engine.rb
289
+ - lib/fiona7/name_and_parent_from_path.rb
288
290
  - lib/fiona7/obj_class_name_demangler.rb
289
291
  - lib/fiona7/obj_class_name_mangler.rb
290
292
  - lib/fiona7/obj_classes_from_cms.rb
@@ -294,10 +296,11 @@ files:
294
296
  - lib/fiona7/prefetch/obj_prefetch.rb
295
297
  - lib/fiona7/prefetch/widget_resolver_prefetch.rb
296
298
  - lib/fiona7/recursive_object_finder.rb
299
+ - lib/fiona7/referenced_id_finder.rb
300
+ - lib/fiona7/release_collector.rb
297
301
  - lib/fiona7/routers/rest_api.rb
298
302
  - lib/fiona7/routing_monkey_patch.rb
299
303
  - lib/fiona7/scrivito_patches/attribute_content.rb
300
- - lib/fiona7/scrivito_patches/attribute_serializer.rb
301
304
  - lib/fiona7/scrivito_patches/basic_obj.rb
302
305
  - lib/fiona7/scrivito_patches/basic_widget.rb
303
306
  - lib/fiona7/scrivito_patches/binary.rb
@@ -310,8 +313,6 @@ files:
310
313
  - lib/fiona7/scrivito_patches/link_parser.rb
311
314
  - lib/fiona7/scrivito_patches/log_subscriber.rb
312
315
  - lib/fiona7/scrivito_patches/migrator.rb
313
- - lib/fiona7/scrivito_patches/model_library.rb
314
- - lib/fiona7/scrivito_patches/obj_params_parser.rb
315
316
  - lib/fiona7/scrivito_patches/page_config.rb
316
317
  - lib/fiona7/scrivito_patches/preset_routes.rb
317
318
  - lib/fiona7/scrivito_patches/routing_extensions.rb
@@ -320,14 +321,17 @@ files:
320
321
  - lib/fiona7/scrivito_user.rb
321
322
  - lib/fiona7/search_engine.rb
322
323
  - lib/fiona7/shadow_classes.rb
324
+ - lib/fiona7/super_id_finder.rb
323
325
  - lib/fiona7/super_object_finder.rb
324
326
  - lib/fiona7/table_switcher.rb
325
327
  - lib/fiona7/tasks/loader.rb
326
328
  - lib/fiona7/tasks/task.rb
329
+ - lib/fiona7/temporary_uploader.rb
327
330
  - lib/fiona7/tools/attribute_remover.rb
328
331
  - lib/fiona7/type_loader.rb
329
332
  - lib/fiona7/type_register.rb
330
333
  - lib/fiona7/type_synchronizer.rb
334
+ - lib/fiona7/upload_path_selector.rb
331
335
  - lib/fiona7/verity_search_engine.rb
332
336
  - lib/fiona7/version.rb
333
337
  - lib/fiona7/version_helper.rb
@@ -1,15 +0,0 @@
1
- (function() {
2
- _.extend(scrivito, {
3
- task_list_command: function() {
4
- return scrivito.command.create_instance({
5
- id: 'fiona7.task_list',
6
- title: scrivito.t('commands.task_list.title'),
7
- icon: '&#xf06f;',
8
-
9
- execute: function() {
10
- scrivito.task_list_dialog.open();
11
- }
12
- });
13
- }
14
- });
15
- }());
@@ -1,30 +0,0 @@
1
- (function() {
2
- /*
3
- var template = function() {
4
- return '<li id="fiona7_task_list" class="scrivito_menu_item fiona7_task_list"><span title="' + scrivito.t('commands.task_list.title') + '"><i class="scrivito_icon">&#xf06f;</i> ' + scrivito.t('commands.task_list.title') + '</span></li>';
5
- };
6
- */
7
-
8
- _.extend(scrivito, {
9
- task_list_menu_item: {
10
- init: function() {
11
- scrivito.menu_bar.register_item_renderer(function(menu_bar) {
12
- var workspace_select = menu_bar.find('#scrivito_workspace_select');
13
- var changes = menu_bar.find('#scrivito_sdk_workspace_changes');
14
- var command = scrivito.task_list_command();
15
-
16
- changes.after(scrivito.template.render('task_list_menu_item', {
17
- title: command.title,
18
- icon: command.icon
19
- }));
20
- workspace_select.on('click', '#fiona7_task_list', function() {
21
- command.execute();
22
- });
23
-
24
-
25
- });
26
-
27
- }
28
- }
29
- })
30
- }());
@@ -1,225 +0,0 @@
1
- (function() {
2
- var handle_task = function(task) {
3
- switch (task.status) {
4
- case 'success':
5
- return $.Deferred().resolve(task.result);
6
- case 'error':
7
- return $.Deferred().reject({
8
- message: task.message,
9
- code: task.code
10
- });
11
- case 'open':
12
- return scrivito.wait(2).then(function() {
13
- return single_ajax('GET', 'tasks/' + task.id).then(function(data) {
14
- return handle_task(data);
15
- });
16
- });
17
- default:
18
- throw { message: "Invalid task (unknown status)", task: task };
19
- }
20
- };
21
-
22
- // -- PATCH BEGINS HERE --
23
- var ajax_with_form_data_required = function(params) {
24
- var objParams = params && params.obj;
25
- var result = false;
26
- var k;
27
-
28
- if (!objParams) {
29
- return result;
30
- }
31
-
32
- for (k in objParams) {
33
- if (objParams.hasOwnProperty(k)) {
34
- result = objParams[k] && (scrivito.BinaryUtils.isFile(objParams[k]) ||
35
- scrivito.BinaryUtils.isBlob(objParams[k]) ||
36
- scrivito.BinaryUtils.isBlobWithName(objParams[k])
37
- );
38
- if (result) {
39
- return result;
40
- }
41
- }
42
- }
43
- return result;
44
- };
45
-
46
- var params_to_form_data = function(params) {
47
- var objParams = params && params.obj || {};
48
- var fd = new FormData();
49
-
50
- var k, attr, value, widgetId, widgetValue, widgetAttr, i, l, t;
51
-
52
- for (k in objParams) {
53
- if (objParams.hasOwnProperty(k)) {
54
-
55
- attr = k;
56
- value = objParams[k];
57
-
58
- if (attr === '_widget_pool') {
59
- for (w in value) {
60
- if (value.hasOwnProperty(w)) {
61
- for (widgetAttr in value[w]) {
62
- if (value[w].hasOwnProperty(widgetAttr)) {
63
- widgetValue = value[w][widgetAttr];
64
-
65
- if (widgetValue.pop) {
66
- // value is an array
67
- for (i=0; i < widgetValue.length; ++i) {
68
- fd.append("obj[" + attr + "][" + w + "][" + widgetAttr + "][]", widgetValue[i]);
69
- }
70
- } else if (scrivito.BinaryUtils.isFile(widgetValue) || scrivito.BinaryUtils.isBlob(widgetValue)) {
71
- // upload
72
- fd.append("obj[" + attr + "][" + w + "][" + widgetAttr + "]", widgetValue);
73
- } else if (scrivito.BinaryUtils.isBlobWithName(widgetValue)) {
74
- fd.append("obj[" + attr + "][" + w + "][" + widgetAttr + "]", widgetValue.blob_to_upload, widgetValue.filename);
75
- } else if (value && typeof value === 'object') {
76
- // blob/copy rename
77
- for (l in widgetValue) {
78
- if (widgetValue.hasOwnProperty(l)) {
79
- fd.append("obj[" + attr + "][" + w + "][" + widgetAttr + "][" + l + "]", widgetValue[l]);
80
- }
81
- }
82
- } else if (typeof value !== 'undefined') {
83
- fd.append("obj[" + attr + "][" + w + "][" + widgetAttr + "]", widgetValue);
84
- }
85
- }
86
- }
87
- }
88
- }
89
- } else if (value.pop) {
90
- // value is an array
91
- for (i=0; i < value.length; ++i) {
92
- fd.append("obj[" + attr + "][]", value[i]);
93
- }
94
- } else if (scrivito.BinaryUtils.isFile(value) || scrivito.BinaryUtils.isBlob(value)) {
95
- // upload
96
- fd.append("obj[" + attr + "]", value);
97
- } else if (scrivito.BinaryUtils.isBlobWithName(value)) {
98
- fd.append("obj[" + attr + "]", value.blob_to_upload, value.filename);
99
- } else if (value && typeof value === 'object') {
100
- // blob/copy rename
101
- for (l in value) {
102
- if (value.hasOwnProperty(l)) {
103
- fd.append("obj[" + attr + "][" + l + "]", value[l]);
104
- }
105
- }
106
- } else if (typeof value !== 'undefined') {
107
- fd.append("obj[" + attr + "]", value);
108
- }
109
- }
110
- }
111
-
112
- return fd;
113
- };
114
-
115
- var single_ajax_with_form_data = function(type, path, options) {
116
- var base_url = window.location.protocol + '//' + window.location.host + '/__scrivito/';
117
- if (options && options.data) {
118
- options.data = params_to_form_data(options.data);
119
- }
120
- return $.ajax(base_url + path, _.extend({
121
- type: type,
122
- contentType: false,
123
- processData: false,
124
- cache: false // Don't cache GET requests.
125
- }, options || {})).then(
126
- function(result, text_status, xhr) {
127
- return $.Deferred().resolve(result);
128
- }, function(xhr, text_status, xhr_error) {
129
- try {
130
- return $.Deferred().reject(JSON.parse(xhr.responseText));
131
- } catch (SyntaxError) {
132
- return $.Deferred().reject(xhr_error);
133
- }
134
- }
135
- );
136
- };
137
- // -- PATCH ENDS HERE --
138
-
139
- var single_ajax = function(type, path, options) {
140
- // -- PATCH BEGINS HERE --
141
- if (ajax_with_form_data_required(options && options.data || {})) {
142
- return single_ajax_with_form_data(type, path, options);
143
- }
144
- // -- PATCH ENDS HERE --
145
- var base_url = window.location.protocol + '//' + window.location.host + '/__scrivito/';
146
- if (options && options.data) {
147
- options.data = JSON.stringify(options.data);
148
- }
149
- return $.ajax(base_url + path, _.extend({
150
- type: type,
151
- dataType: 'json',
152
- contentType: 'application/json; charset=utf-8',
153
- cache: false // Don't cache GET requests.
154
- }, options || {})).then(
155
- function(result, text_status, xhr) {
156
- return $.Deferred().resolve(result);
157
- }, function(xhr, text_status, xhr_error) {
158
- try {
159
- return $.Deferred().reject(JSON.parse(xhr.responseText));
160
- } catch (SyntaxError) {
161
- return $.Deferred().reject(xhr_error);
162
- }
163
- }
164
- );
165
- };
166
-
167
- _.extend(scrivito, {
168
- silent_ajax: function(type, path, options) {
169
- var is_write_request = type === 'PUT' || type === 'POST' || type === 'DELETE';
170
- var skip_write_monitor = options && options.skip_write_monitor;
171
-
172
- if (is_write_request) {
173
- options = options || {};
174
- options.timeout = 120000; // miliseconds // <-- PATCH HERE
175
-
176
- if (!skip_write_monitor) {
177
- scrivito.write_monitor.start_write();
178
- }
179
- }
180
-
181
- var ajax_promise = single_ajax(type, path, options).then(function(result) {
182
- if (result && result.task && _.size(result) === 1) {
183
- return handle_task(result.task);
184
- } else {
185
- return $.Deferred().resolve(result);
186
- }
187
- });
188
-
189
- if (is_write_request && !skip_write_monitor) {
190
- ajax_promise.always(function() {
191
- scrivito.write_monitor.end_write();
192
- });
193
- }
194
-
195
- return ajax_promise;
196
- },
197
-
198
- ajax: function(type, path, options) {
199
- return scrivito.silent_ajax(type, path, options).fail(function(error) {
200
- scrivito.display_ajax_error(error);
201
- });
202
- },
203
-
204
- display_ajax_error: function(error) {
205
- var message, message_for_editor;
206
-
207
- // -- PATCH BEGINS HERE --
208
- if (_.isObject(error)) {
209
- if (error.message) {
210
- return scrivito.alertDialog(error.message);
211
- } else {
212
- return scrivito.alertDialog(scrivito.t('ajax_error.communication'));
213
- }
214
- } else if (_.contains(['abort', 'parsererror', 'timeout'], error)) {
215
- message = scrivito.t('ajax_error.communication');
216
- } else {
217
- message = scrivito.t('ajax_error', error);
218
- }
219
- scrivito.logError(message);
220
- scrivito.errorDialog(message_for_editor || scrivito.t('ajax_error.message_for_editor'),
221
- [error.timestamp, message]);
222
- // -- PATCH ENDS HERE --
223
- }
224
- });
225
- }());