scrivito_sdk 1.6.1 → 1.7.0.rc1
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.
- checksums.yaml +4 -4
- data/app/controllers/scrivito/obj_class_controller.rb +1 -0
- data/app/controllers/scrivito/objs_controller.rb +1 -14
- data/app/controllers/scrivito/sessions_controller.rb +21 -1
- data/app/controllers/scrivito/webservice_controller.rb +4 -8
- data/app/views/scrivito/ui/index.html.erb +1 -0
- data/config/ca-bundle.crt +1 -1
- data/config/precedence_routes.rb +0 -1
- data/lib/assets/javascripts/scrivito.js +39 -21
- data/lib/assets/javascripts/{scrivito_sdk.js → scrivito_with_js_sdk.js} +12167 -10298
- data/lib/scrivito/cms_dispatch_controller.rb +7 -6
- data/lib/scrivito/controller_actions.rb +7 -5
- data/lib/scrivito/legacy_switch.rb +7 -0
- data/lib/scrivito/obj_search_enumerator.rb +16 -1
- data/lib/scrivito/sdk_engine.rb +13 -6
- data/lib/scrivito/test_request.rb +22 -4
- data/lib/scrivito/ui_config.rb +0 -5
- data/lib/scrivito/workspace_selection_middleware.rb +0 -6
- metadata +19 -14
- data/app/views/scrivito/webservice/empty.json +0 -1
- data/lib/scrivito/session.rb +0 -23
@@ -6,23 +6,24 @@ module Scrivito
|
|
6
6
|
include Scrivito::ControllerHelper
|
7
7
|
|
8
8
|
def process(action)
|
9
|
-
CmsEnv.new(env).load
|
9
|
+
CmsEnv.new(request.env).load
|
10
10
|
|
11
11
|
if obj_not_found? && editing_context.workspace_changed?
|
12
12
|
redirect_to "/"
|
13
13
|
return self.response
|
14
14
|
end
|
15
15
|
|
16
|
-
controller = target_controller(env)
|
17
|
-
env["action_dispatch.request.path_parameters"]["controller"] =
|
16
|
+
controller = target_controller(request.env)
|
17
|
+
request.env["action_dispatch.request.path_parameters"]["controller"] =
|
18
|
+
controller.controller_path
|
18
19
|
|
19
20
|
if !obj_not_found? && action == 'index'
|
20
21
|
action = loaded_obj.controller_action_name
|
21
22
|
end
|
22
23
|
|
23
|
-
env["action_dispatch.request.path_parameters"]["action"] = action
|
24
|
+
request.env["action_dispatch.request.path_parameters"]["action"] = action
|
24
25
|
|
25
|
-
self.response = controller.action(action).call(env)
|
26
|
+
self.response = controller.action(action).call(request.env)
|
26
27
|
end
|
27
28
|
|
28
29
|
private
|
@@ -53,7 +54,7 @@ module Scrivito
|
|
53
54
|
end
|
54
55
|
|
55
56
|
def loaded_obj
|
56
|
-
env[CmsEnv::OBJ_ENV_KEY]
|
57
|
+
request.env[CmsEnv::OBJ_ENV_KEY]
|
57
58
|
end
|
58
59
|
|
59
60
|
def obj_not_found?
|
@@ -16,15 +16,17 @@ module ControllerActions
|
|
16
16
|
extend ActiveSupport::Concern
|
17
17
|
|
18
18
|
included do
|
19
|
-
|
19
|
+
before_action :require_authenticated_editor, only: [
|
20
20
|
:show_widget,
|
21
21
|
:widget_details,
|
22
22
|
:page_details,
|
23
23
|
]
|
24
24
|
|
25
|
-
|
25
|
+
before_action :load_object
|
26
26
|
|
27
|
-
|
27
|
+
if LegacySwitch.rails4?
|
28
|
+
hide_action :on_scrivito_widget_error
|
29
|
+
end
|
28
30
|
|
29
31
|
helper :scrivito
|
30
32
|
end
|
@@ -44,7 +46,7 @@ module ControllerActions
|
|
44
46
|
widget = load_widget
|
45
47
|
widget_tag = Scrivito::WidgetTag.new(view_context, widget,
|
46
48
|
render_context: params[:template_name], inner_tag: params[:inner_tag])
|
47
|
-
render
|
49
|
+
render plain: widget_tag.render, layout: false
|
48
50
|
end
|
49
51
|
|
50
52
|
def widget_details
|
@@ -168,7 +170,7 @@ module ControllerActions
|
|
168
170
|
binary_routing = BinaryRouting.new(request, scrivito_engine)
|
169
171
|
redirect_to binary_routing.resolved_binary_obj_url(@obj, binary)
|
170
172
|
else
|
171
|
-
render
|
173
|
+
render plain: 'Empty Blob', status: 404
|
172
174
|
end
|
173
175
|
end
|
174
176
|
|
@@ -230,6 +230,21 @@ module Scrivito
|
|
230
230
|
# fields, and boost parameters requested, as well as the number of words in a free text
|
231
231
|
# search.
|
232
232
|
#
|
233
|
+
# == Concurrent changes
|
234
|
+
#
|
235
|
+
# Please be aware that concurrent changes can change the search result and
|
236
|
+
# can yield incomplete results. This is due to the fact, that search results are lazily loaded in
|
237
|
+
# batches. If you want to modify the result of a search, please call +to_a+ first.
|
238
|
+
#
|
239
|
+
# @example Concurrent changes
|
240
|
+
# # bad example
|
241
|
+
# books = Book.where(:price, :equals, 10.99)
|
242
|
+
# books.map { |book| book.update(price: 9.99) }
|
243
|
+
#
|
244
|
+
# # good example
|
245
|
+
# books = Book.where(:price, :equals, 10.99).to_a
|
246
|
+
# books.map { |book| book.update(price: 9.99) }
|
247
|
+
#
|
233
248
|
# @api public
|
234
249
|
class ObjSearchEnumerator
|
235
250
|
INVALID_NEGATED_OPERATORS = [:contains, :contains_prefix].freeze
|
@@ -475,7 +490,7 @@ module Scrivito
|
|
475
490
|
# @param [String] attribute the name of an attribute.
|
476
491
|
# @param [Hash] options the options to facet a request with.
|
477
492
|
# @option options [Integer] :limit maximum number of unique values to return.
|
478
|
-
# Defaults to +
|
493
|
+
# Defaults to +10+.
|
479
494
|
# @option options [Integer] :include_objs maximum number of Objs to fetch for
|
480
495
|
# each unique value. Defaults to +0+.
|
481
496
|
# @return [Array<Scrivito::ObjFacetValue>] A list of unique values that were found for the
|
data/lib/scrivito/sdk_engine.rb
CHANGED
@@ -5,7 +5,7 @@ require 'net/http/post/multipart'
|
|
5
5
|
|
6
6
|
module ::Scrivito
|
7
7
|
class SdkEngine < Rails::Engine
|
8
|
-
|
8
|
+
def self.to_prepare
|
9
9
|
Scrivito::Configuration.to_prepare
|
10
10
|
|
11
11
|
unless Rails.application.config.cache_classes
|
@@ -13,11 +13,17 @@ module ::Scrivito
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
if Scrivito::LegacySwitch.rails4?
|
17
|
+
config.to_prepare { SdkEngine.to_prepare }
|
18
|
+
else
|
19
|
+
ActiveSupport::Reloader.to_prepare { SdkEngine.to_prepare }
|
20
|
+
end
|
21
|
+
|
16
22
|
# make sure our exceptions cause an adequate error page and http status code
|
17
23
|
config.action_dispatch.rescue_responses.merge!("Scrivito::ResourceNotFound" => :not_found)
|
18
24
|
|
19
25
|
initializer "scrivito.add_cms_routing_paths", :after => :add_routing_paths do |app|
|
20
|
-
precedence_route =
|
26
|
+
precedence_route = root.join('config', 'precedence_routes.rb').to_s
|
21
27
|
app.routes_reloader.paths.unshift(precedence_route)
|
22
28
|
end
|
23
29
|
|
@@ -51,17 +57,18 @@ module ::Scrivito
|
|
51
57
|
scrivito_ui_redirect.js
|
52
58
|
scrivito_ui.css
|
53
59
|
scrivito_ui.js
|
54
|
-
|
60
|
+
scrivito_with_js_sdk.js
|
55
61
|
]
|
56
62
|
app.config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)
|
57
63
|
end
|
58
64
|
|
59
65
|
config.autoload_paths += paths['lib'].to_a
|
60
66
|
config.autoload_once_paths += paths['lib'].to_a
|
67
|
+
config.eager_load_paths += [root.join('lib', 'scrivito').to_s]
|
61
68
|
|
62
|
-
config.app_middleware.use
|
63
|
-
config.app_middleware.use
|
64
|
-
config.app_middleware.use
|
69
|
+
config.app_middleware.use Scrivito::EditingContextMiddleware
|
70
|
+
config.app_middleware.use Scrivito::CacheMiddleware
|
71
|
+
config.app_middleware.use Scrivito::WorkspaceSelectionMiddleware
|
65
72
|
end
|
66
73
|
end
|
67
74
|
|
@@ -26,15 +26,33 @@ module Scrivito
|
|
26
26
|
# end
|
27
27
|
# end
|
28
28
|
#
|
29
|
-
def for_scrivito_obj(test_obj = nil)
|
29
|
+
def for_scrivito_obj(test_obj = nil, routes = nil)
|
30
30
|
env[Scrivito::CmsEnv::OBJ_ENV_KEY] = test_obj if test_obj
|
31
31
|
|
32
|
+
unless Scrivito::LegacySwitch.rails4?
|
33
|
+
# If +assign_parameters+ is monkey patched, then +generate_extras+ also needs to
|
34
|
+
# be monkey patched. See [1] for details.
|
35
|
+
#
|
36
|
+
# [1] https://github.com/rails/rails/commit/f6232a518bb7377948f339d2b0b25dc607e1e42a
|
37
|
+
class << (routes || Rails.application.routes)
|
38
|
+
def generate_extras(options, recall={})
|
39
|
+
super options, recall
|
40
|
+
rescue *ROUTING_ERRORS => e
|
41
|
+
begin
|
42
|
+
super options.merge(controller: 'scrivito/cms_dispatch'), recall
|
43
|
+
rescue *ROUTING_ERRORS
|
44
|
+
raise e
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
32
50
|
class << self
|
33
|
-
def assign_parameters(routes, controller_path,
|
34
|
-
super routes, controller_path,
|
51
|
+
def assign_parameters(routes, controller_path, *args)
|
52
|
+
super routes, controller_path, *args
|
35
53
|
rescue *ROUTING_ERRORS => e
|
36
54
|
begin
|
37
|
-
super routes, 'scrivito/cms_dispatch',
|
55
|
+
super routes, 'scrivito/cms_dispatch', *args
|
38
56
|
rescue *ROUTING_ERRORS
|
39
57
|
raise e
|
40
58
|
end
|
data/lib/scrivito/ui_config.rb
CHANGED
@@ -10,7 +10,6 @@ class UiConfig < Struct.new(:editing_context, :resource, :return_to, :app_extens
|
|
10
10
|
{
|
11
11
|
app_extension_tags: app_extension_tags,
|
12
12
|
editing_context: editing_context_config,
|
13
|
-
session: session_config,
|
14
13
|
backend_endpoint: Configuration.endpoint,
|
15
14
|
tenant: Configuration.tenant,
|
16
15
|
i18n: i18n_config,
|
@@ -34,10 +33,6 @@ class UiConfig < Struct.new(:editing_context, :resource, :return_to, :app_extens
|
|
34
33
|
}
|
35
34
|
end
|
36
35
|
|
37
|
-
def session_config
|
38
|
-
Session.renew(SecureRandom.hex(8), editor)
|
39
|
-
end
|
40
|
-
|
41
36
|
def workspace_config(workspace)
|
42
37
|
{
|
43
38
|
id: workspace.id,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scrivito_sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Infopark AG
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-12-
|
11
|
+
date: 2016-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.
|
89
|
+
version: 1.8.3
|
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
|
-
version: 1.
|
96
|
+
version: 1.8.3
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: memoist
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -140,16 +140,22 @@ dependencies:
|
|
140
140
|
name: rails
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- - "
|
143
|
+
- - ">="
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: 4.2
|
145
|
+
version: '4.2'
|
146
|
+
- - "<"
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: '5.1'
|
146
149
|
type: :runtime
|
147
150
|
prerelease: false
|
148
151
|
version_requirements: !ruby/object:Gem::Requirement
|
149
152
|
requirements:
|
150
|
-
- - "
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: '4.2'
|
156
|
+
- - "<"
|
151
157
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
158
|
+
version: '5.1'
|
153
159
|
- !ruby/object:Gem::Dependency
|
154
160
|
name: rake
|
155
161
|
requirement: !ruby/object:Gem::Requirement
|
@@ -214,7 +220,6 @@ files:
|
|
214
220
|
- app/views/scrivito/users/publish_ability.json.jbuilder
|
215
221
|
- app/views/scrivito/users/users.json.jbuilder
|
216
222
|
- app/views/scrivito/webservice/_workspace.json.jbuilder
|
217
|
-
- app/views/scrivito/webservice/empty.json
|
218
223
|
- app/views/scrivito/webservice/error.json.jbuilder
|
219
224
|
- app/views/scrivito/webservice/workspaces.json.jbuilder
|
220
225
|
- app/views/scrivito/workspaces/check.json.jbuilder
|
@@ -235,8 +240,8 @@ files:
|
|
235
240
|
- lib/assets/images/scrivito/source_too_large.png
|
236
241
|
- lib/assets/images/scrivito/source_type_invalid.png
|
237
242
|
- lib/assets/javascripts/scrivito.js
|
238
|
-
- lib/assets/javascripts/scrivito_sdk.js
|
239
243
|
- lib/assets/javascripts/scrivito_ui_redirect.js
|
244
|
+
- lib/assets/javascripts/scrivito_with_js_sdk.js
|
240
245
|
- lib/assets/stylesheets/scrivito.css
|
241
246
|
- lib/generators/scrivito/install/install_generator.rb
|
242
247
|
- lib/generators/scrivito/install/templates/app/controllers/cms_controller.rb
|
@@ -347,6 +352,7 @@ files:
|
|
347
352
|
- lib/scrivito/image_tag.rb
|
348
353
|
- lib/scrivito/integer_conversion.rb
|
349
354
|
- lib/scrivito/layout_tags.rb
|
355
|
+
- lib/scrivito/legacy_switch.rb
|
350
356
|
- lib/scrivito/link.rb
|
351
357
|
- lib/scrivito/link_parser.rb
|
352
358
|
- lib/scrivito/log_subscriber.rb
|
@@ -387,7 +393,6 @@ files:
|
|
387
393
|
- lib/scrivito/route.rb
|
388
394
|
- lib/scrivito/routing_extensions.rb
|
389
395
|
- lib/scrivito/sdk_engine.rb
|
390
|
-
- lib/scrivito/session.rb
|
391
396
|
- lib/scrivito/string_tagging.rb
|
392
397
|
- lib/scrivito/tag_renderer.rb
|
393
398
|
- lib/scrivito/task.rb
|
@@ -423,12 +428,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
423
428
|
version: 2.1.0
|
424
429
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
425
430
|
requirements:
|
426
|
-
- - "
|
431
|
+
- - ">"
|
427
432
|
- !ruby/object:Gem::Version
|
428
|
-
version:
|
433
|
+
version: 1.3.1
|
429
434
|
requirements: []
|
430
435
|
rubyforge_project:
|
431
|
-
rubygems_version: 2.4.
|
436
|
+
rubygems_version: 2.4.8
|
432
437
|
signing_key:
|
433
438
|
specification_version: 4
|
434
439
|
summary: SDK for the Scrivito CMS
|
@@ -1 +0,0 @@
|
|
1
|
-
{}
|
data/lib/scrivito/session.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module Scrivito
|
2
|
-
class Session
|
3
|
-
def self.renew(id, user)
|
4
|
-
payload = {
|
5
|
-
session: {
|
6
|
-
role: 'editor',
|
7
|
-
user_id: user.id,
|
8
|
-
permissions: permissions(user),
|
9
|
-
},
|
10
|
-
}
|
11
|
-
|
12
|
-
CmsRestApi.task_unaware_request(:put, "sessions/#{id}", payload)
|
13
|
-
end
|
14
|
-
|
15
|
-
def self.permissions(user)
|
16
|
-
Hash[user.explicit_rules.map do |permission, verb, _, _|
|
17
|
-
[verb, permission.to_s]
|
18
|
-
end]
|
19
|
-
end
|
20
|
-
|
21
|
-
private_class_method :permissions
|
22
|
-
end
|
23
|
-
end
|