scrivito_sdk 0.50.1 → 0.60.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/objs_controller.rb +25 -21
- data/app/controllers/scrivito/ui_controller.rb +1 -1
- data/app/controllers/scrivito/webservice_controller.rb +1 -1
- data/app/models/scrivito/content_widget.rb +1 -3
- data/app/views/cms/index.html.erb +3 -0
- data/app/views/scrivito/objs/destroy.json.jbuilder +1 -0
- data/app/views/scrivito/objs/show.json.jbuilder +2 -0
- data/app/views/scrivito/objs/update.json.jbuilder +1 -1
- data/app/views/scrivito/objs/{widget_modification.json.jbuilder → widget.json.jbuilder} +0 -0
- data/config/ca-bundle.crt +24 -219
- data/config/precedence_routes.rb +60 -0
- data/config/routes.rb +13 -46
- data/lib/assets/javascripts/scrivito_ui.js +360 -202
- data/lib/assets/stylesheets/scrivito_sdk.css +1 -1
- data/lib/assets/stylesheets/scrivito_ui.css +1 -1
- data/lib/generators/scrivito/install/templates/app/models/download.rb +1 -3
- data/lib/generators/scrivito/install/templates/app/models/headline_widget.rb +1 -5
- data/lib/generators/scrivito/install/templates/app/models/image.rb +1 -3
- data/lib/generators/scrivito/install/templates/app/models/image_widget.rb +1 -5
- data/lib/generators/scrivito/install/templates/app/models/page.rb +3 -6
- data/lib/generators/scrivito/install/templates/app/models/text_widget.rb +1 -5
- data/lib/generators/scrivito/install/templates/scrivito/migrate/install_scrivito_migration.rb +1 -25
- data/lib/generators/scrivito/migration/templates/migration.erb +2 -26
- data/lib/generators/scrivito/page/page_generator.rb +0 -11
- data/lib/generators/scrivito/page/templates/model.erb +3 -7
- data/lib/generators/scrivito/widget/widget_generator.rb +0 -11
- data/lib/scrivito/attribute.rb +10 -16
- data/lib/scrivito/attribute_collection.rb +4 -0
- data/lib/scrivito/attribute_content.rb +239 -161
- data/lib/scrivito/attribute_definition.rb +16 -10
- data/lib/scrivito/attribute_definition_collection.rb +7 -4
- data/lib/scrivito/attribute_definition_migrator.rb +1 -3
- data/lib/scrivito/attribute_deserializer.rb +111 -0
- data/lib/scrivito/attribute_serializer.rb +189 -0
- data/lib/scrivito/basic_obj.rb +113 -78
- data/lib/scrivito/basic_widget.rb +103 -37
- data/lib/scrivito/binary.rb +3 -3
- data/lib/scrivito/cache/chainable.rb +10 -4
- data/lib/scrivito/cache/file_store.rb +7 -4
- data/lib/scrivito/cache/ram_store.rb +1 -1
- data/lib/scrivito/class_collection.rb +2 -2
- data/lib/scrivito/client_config.rb +7 -6
- data/lib/scrivito/cms_backend.rb +2 -2
- data/lib/scrivito/cms_field_tag.rb +33 -25
- data/lib/scrivito/cms_rest_api/{attribute_serializer.rb → legacy_attribute_serializer.rb} +1 -1
- data/lib/scrivito/cms_routing.rb +20 -14
- data/lib/scrivito/configuration.rb +1 -1
- data/lib/scrivito/controller_actions.rb +12 -4
- data/lib/scrivito/date_attribute.rb +8 -0
- data/lib/scrivito/diff.rb +1 -1
- data/lib/scrivito/editing_context.rb +1 -1
- data/lib/scrivito/editing_context_middleware.rb +1 -1
- data/lib/scrivito/errors.rb +4 -0
- data/lib/scrivito/link_parser.rb +6 -1
- data/lib/scrivito/migrations/cms_backend.rb +17 -60
- data/lib/scrivito/migrations/migration_store.rb +0 -1
- data/lib/scrivito/model_library.rb +6 -6
- data/lib/scrivito/obj_class.rb +34 -48
- data/lib/scrivito/obj_class_collection.rb +21 -3
- data/lib/scrivito/obj_create_params_parser.rb +2 -1
- data/lib/scrivito/obj_data.rb +9 -103
- data/lib/scrivito/obj_data_from_hash.rb +19 -21
- data/lib/scrivito/obj_data_from_service.rb +28 -48
- data/lib/scrivito/obj_params_parser.rb +14 -14
- data/lib/scrivito/obj_search_enumerator.rb +1 -1
- data/lib/scrivito/obj_update_params_parser.rb +2 -2
- data/lib/scrivito/restriction_set.rb +1 -1
- data/lib/scrivito/sdk_engine.rb +2 -2
- data/lib/scrivito/test_request.rb +10 -0
- data/lib/scrivito/type_computer.rb +5 -1
- data/lib/scrivito/widget_collection.rb +15 -0
- data/lib/scrivito/widget_garbage_collection.rb +1 -1
- data/lib/scrivito/widget_tag.rb +2 -0
- data/lib/scrivito/workspace.rb +2 -1
- data/lib/scrivito/workspace_data_from_service.rb +1 -0
- data/lib/scrivito_sdk.rb +17 -1
- metadata +36 -34
- data/app/views/scrivito/objs/modification.json.jbuilder +0 -1
- data/config/cms_routes.rb +0 -22
- data/lib/generators/scrivito/page/templates/migration.erb +0 -9
- data/lib/generators/scrivito/widget/templates/migration.erb +0 -7
data/lib/scrivito/cms_routing.rb
CHANGED
@@ -73,30 +73,36 @@ class CmsRouting < Struct.new(:request, :main_app)
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def path_or_url_for_objs(obj, path_or_url, options = {})
|
76
|
+
if editing_context.display_mode == "editing"
|
77
|
+
return id_path_or_url_for_objs(obj, path_or_url, options)
|
78
|
+
end
|
79
|
+
|
76
80
|
permalink = obj.permalink
|
77
81
|
if permalink
|
78
82
|
main_app.public_send("scrivito_permalink_#{path_or_url}", options.merge(:permalink => permalink))
|
79
83
|
elsif obj.homepage?
|
80
84
|
main_app.public_send("scrivito_root_#{path_or_url}", options)
|
81
|
-
|
82
|
-
if obj.
|
83
|
-
|
84
|
-
obj.binary_url
|
85
|
-
else
|
86
|
-
LINK_TO_EMPTY_BLOB
|
87
|
-
end
|
85
|
+
elsif obj.binary?
|
86
|
+
if obj.binary_url
|
87
|
+
obj.binary_url
|
88
88
|
else
|
89
|
-
|
90
|
-
"cms_id_#{path_or_url}",
|
91
|
-
options.merge(
|
92
|
-
id: obj.id,
|
93
|
-
slug: obj.slug.presence
|
94
|
-
)
|
95
|
-
)
|
89
|
+
LINK_TO_EMPTY_BLOB
|
96
90
|
end
|
91
|
+
else
|
92
|
+
id_path_or_url_for_objs(obj, path_or_url, options)
|
97
93
|
end
|
98
94
|
end
|
99
95
|
|
96
|
+
def id_path_or_url_for_objs(obj, path_or_url, options)
|
97
|
+
main_app.public_send(
|
98
|
+
"cms_id_#{path_or_url}",
|
99
|
+
options.merge(
|
100
|
+
id: obj.id,
|
101
|
+
slug: obj.slug.presence
|
102
|
+
)
|
103
|
+
)
|
104
|
+
end
|
105
|
+
|
100
106
|
def editor_authenticated?
|
101
107
|
editing_context.authenticated_editor?
|
102
108
|
end
|
@@ -65,7 +65,7 @@ module Scrivito
|
|
65
65
|
# @example Return a "dummy" {Scrivito::User}
|
66
66
|
# Scrivito.configure do |config|
|
67
67
|
# config.find_user do |user_id|
|
68
|
-
# Scrivito::User.
|
68
|
+
# Scrivito::User.define(user_id)
|
69
69
|
# end
|
70
70
|
# end
|
71
71
|
# @example Find the user with a custom user model and convert it to a {Scrivito::User}
|
@@ -84,7 +84,7 @@ module ControllerActions
|
|
84
84
|
end
|
85
85
|
|
86
86
|
def editing_context
|
87
|
-
|
87
|
+
EditingContextMiddleware.from_request(request)
|
88
88
|
end
|
89
89
|
|
90
90
|
delegate :comparison, to: :editing_context
|
@@ -97,9 +97,17 @@ module ControllerActions
|
|
97
97
|
end
|
98
98
|
|
99
99
|
def load_widget
|
100
|
-
|
101
|
-
|
102
|
-
|
100
|
+
widget = widget_from_current_revision || widget_from_base_revision
|
101
|
+
raise ResourceNotFound, "Widget with ID #{params[:widget_id]} not found!" unless widget
|
102
|
+
widget
|
103
|
+
end
|
104
|
+
|
105
|
+
def widget_from_current_revision
|
106
|
+
@obj.widget_from_pool(params[:widget_id])
|
107
|
+
end
|
108
|
+
|
109
|
+
def widget_from_base_revision
|
110
|
+
if comparison.active? # The "diff" mode.
|
103
111
|
@obj.in_revision(editing_context.selected_workspace.base_revision)
|
104
112
|
.widget_from_pool(params[:widget_id])
|
105
113
|
end
|
@@ -11,6 +11,14 @@ module Scrivito
|
|
11
11
|
raise "The value is not a valid ISO date time: #{iso_date_time.inspect}"
|
12
12
|
end
|
13
13
|
end
|
14
|
+
|
15
|
+
def self.serialize(attribute_value)
|
16
|
+
attribute_value = case attribute_value
|
17
|
+
when Date then attribute_value.to_time
|
18
|
+
when Time then attribute_value.to_time.utc
|
19
|
+
end
|
20
|
+
attribute_value.strftime('%Y%m%d%H%M%S') if attribute_value
|
21
|
+
end
|
14
22
|
end
|
15
23
|
|
16
24
|
end
|
data/lib/scrivito/diff.rb
CHANGED
@@ -20,7 +20,7 @@ class EditingContext
|
|
20
20
|
if @editor && !@editor.is_a?(Scrivito::User)
|
21
21
|
raise ScrivitoError.new(
|
22
22
|
"The editing auth callback has to return a Scrivito::User or falsy."+
|
23
|
-
" To upgrade please return Scrivito::User.
|
23
|
+
" To upgrade please return Scrivito::User.define(id) and set the permissions" +
|
24
24
|
" of the user. See the documentation for further details."
|
25
25
|
)
|
26
26
|
end
|
data/lib/scrivito/errors.rb
CHANGED
data/lib/scrivito/link_parser.rb
CHANGED
@@ -10,7 +10,7 @@ module Scrivito
|
|
10
10
|
def parse(url)
|
11
11
|
uri = Addressable::URI.parse(url)
|
12
12
|
|
13
|
-
if (params =
|
13
|
+
if (params = sdk_route(uri.to_s)) && params[:controller] == 'scrivito/ui'
|
14
14
|
uri.path = params[:application_path]
|
15
15
|
end
|
16
16
|
|
@@ -69,6 +69,11 @@ module Scrivito
|
|
69
69
|
route_params && route_params[:controller] == 'scrivito/cms_dispatch'
|
70
70
|
end
|
71
71
|
|
72
|
+
def sdk_route(uri)
|
73
|
+
Scrivito::SdkEngine.routes.recognize_path(uri.to_s, method: :get)
|
74
|
+
rescue ActionController::RoutingError
|
75
|
+
end
|
76
|
+
|
72
77
|
def route(uri)
|
73
78
|
Rails.application.routes.recognize_path(uri.to_s, method: :get)
|
74
79
|
rescue ActionController::RoutingError
|
@@ -2,67 +2,36 @@ module Scrivito
|
|
2
2
|
module Migrations
|
3
3
|
class CmsBackend
|
4
4
|
def read
|
5
|
-
obj = find_migration_store_obj
|
6
|
-
|
7
|
-
if obj
|
8
|
-
obj[attribute_name]
|
5
|
+
if obj = find_migration_store_obj
|
6
|
+
obj.data_from_cms.value_of('versions')
|
9
7
|
else
|
10
|
-
|
8
|
+
''
|
11
9
|
end
|
12
10
|
end
|
13
11
|
|
14
12
|
def save(value)
|
15
|
-
|
16
|
-
endpoint("objs/#{migration_store_obj.id}"),
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
13
|
+
if Workspace.current.uses_obj_classes
|
14
|
+
CmsRestApi.put(endpoint("objs/#{migration_store_obj.id}"), obj: {versions: value})
|
15
|
+
else
|
16
|
+
CmsRestApi.put(endpoint("objs/#{migration_store_obj.id}"),
|
17
|
+
obj: {versions: ['string', value]})
|
18
|
+
end
|
21
19
|
end
|
22
20
|
|
23
21
|
private
|
24
22
|
|
25
23
|
def create
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
:
|
32
|
-
|
33
|
-
:name => attribute_name,
|
34
|
-
:type => :text,
|
35
|
-
},
|
36
|
-
],
|
37
|
-
:type => :publication,
|
38
|
-
:title => obj_class_name,
|
39
|
-
}
|
40
|
-
)
|
41
|
-
|
42
|
-
# Create obj
|
43
|
-
CmsRestApi.post(
|
44
|
-
endpoint('objs'),
|
45
|
-
:obj => {
|
46
|
-
:_path => path,
|
47
|
-
:_obj_class => obj_class_name,
|
48
|
-
attribute_name => initial_value,
|
49
|
-
}
|
50
|
-
)
|
51
|
-
|
52
|
-
# Deactivate obj class
|
53
|
-
CmsRestApi.put(
|
54
|
-
endpoint("obj_classes/#{obj_class_name}"),
|
55
|
-
:obj_class => {
|
56
|
-
:is_active => false,
|
57
|
-
}
|
58
|
-
)
|
24
|
+
if Workspace.current.uses_obj_classes
|
25
|
+
CmsRestApi.post(endpoint('objs'),
|
26
|
+
obj: {_path: path, _obj_class: 'MigrationStore', versions: ''})
|
27
|
+
else
|
28
|
+
CmsRestApi.post(endpoint('objs'),
|
29
|
+
obj: {_path: path, _obj_class: 'MigrationStore', versions: ['string', '']})
|
30
|
+
end
|
59
31
|
end
|
60
32
|
|
61
33
|
def migration_store_obj
|
62
|
-
unless find_migration_store_obj
|
63
|
-
create
|
64
|
-
end
|
65
|
-
|
34
|
+
create unless find_migration_store_obj
|
66
35
|
find_migration_store_obj
|
67
36
|
end
|
68
37
|
|
@@ -70,22 +39,10 @@ module Scrivito
|
|
70
39
|
Obj.find_by_path(path)
|
71
40
|
end
|
72
41
|
|
73
|
-
def attribute_name
|
74
|
-
'versions'
|
75
|
-
end
|
76
|
-
|
77
|
-
def obj_class_name
|
78
|
-
'MigrationStore'
|
79
|
-
end
|
80
|
-
|
81
42
|
def path
|
82
43
|
'/_internal/migration-store'
|
83
44
|
end
|
84
45
|
|
85
|
-
def initial_value
|
86
|
-
''
|
87
|
-
end
|
88
|
-
|
89
46
|
def endpoint(path)
|
90
47
|
"workspaces/#{Workspace.current.id}/#{path}"
|
91
48
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Scrivito
|
2
2
|
|
3
3
|
#
|
4
|
-
# @api
|
4
|
+
# @api public
|
5
5
|
#
|
6
6
|
class ModelLibrary
|
7
7
|
attr_reader :custom_pages, :custom_widgets, :custom_paths
|
@@ -13,7 +13,7 @@ class ModelLibrary
|
|
13
13
|
#
|
14
14
|
# Clears model cache.
|
15
15
|
#
|
16
|
-
# @api
|
16
|
+
# @api public
|
17
17
|
# @see Scrivito.models
|
18
18
|
#
|
19
19
|
def clear_cache
|
@@ -25,7 +25,7 @@ class ModelLibrary
|
|
25
25
|
#
|
26
26
|
# Configures which models Scrivito assumes as pages and widgets.
|
27
27
|
#
|
28
|
-
# @api
|
28
|
+
# @api public
|
29
29
|
# @see Scrivito.models
|
30
30
|
#
|
31
31
|
def define(&block)
|
@@ -35,7 +35,7 @@ class ModelLibrary
|
|
35
35
|
#
|
36
36
|
# Lists available page models.
|
37
37
|
#
|
38
|
-
# @api
|
38
|
+
# @api public
|
39
39
|
# @see Scrivito.models
|
40
40
|
# @return [Scrivito::ClassCollection] available page classes
|
41
41
|
#
|
@@ -46,7 +46,7 @@ class ModelLibrary
|
|
46
46
|
#
|
47
47
|
# Lists available widget models.
|
48
48
|
#
|
49
|
-
# @api
|
49
|
+
# @api public
|
50
50
|
# @see Scrivito.models
|
51
51
|
# @return [Scrivito::ClassCollection] available widget classes
|
52
52
|
#
|
@@ -57,7 +57,7 @@ class ModelLibrary
|
|
57
57
|
#
|
58
58
|
# Lists available paths to scan for models.
|
59
59
|
#
|
60
|
-
# @api
|
60
|
+
# @api public
|
61
61
|
# @see Scrivito.models
|
62
62
|
# @return [Array<String>] available paths to scan for models.
|
63
63
|
#
|
data/lib/scrivito/obj_class.rb
CHANGED
@@ -4,13 +4,36 @@ module Scrivito
|
|
4
4
|
# are defined by {Scrivito::Attribute} instances.
|
5
5
|
#
|
6
6
|
# @api public
|
7
|
+
# @deprecated
|
7
8
|
class ObjClass
|
8
9
|
include ModelIdentity
|
9
10
|
|
10
11
|
class << self
|
11
12
|
#
|
13
|
+
# Remove all obj classes.
|
14
|
+
#
|
15
|
+
# This method removes all classes in the corresponding workspace. By doing that it migrates
|
16
|
+
# the contents of the workspace. The migrated workspace will not use {Scrivito::ObjClass},
|
17
|
+
# {Scrivito::Attribute} etc. anymore to determine which attributes an {Obj} has, but will
|
18
|
+
# use attributes defined in model with {Scrivito::AttributeContent::ClassMethods#attribute}.
|
19
|
+
# The +id+ of the current workspace must be +"rtc"+.
|
20
|
+
# For detailed migration instructions please visit https://scrivito.com/obj-class-migration.
|
21
|
+
#
|
22
|
+
# @api public
|
23
|
+
# @see Scrivito::AttributeContent::ClassMethods#attribute
|
24
|
+
# @raise [ScrivitoError] if the +id+ of the corresponding workspace is not +"rtc"+
|
25
|
+
#
|
26
|
+
def remove
|
27
|
+
if Workspace.current.rtc?
|
28
|
+
Workspace.current.api_request(:delete, '/obj_classes')
|
29
|
+
else
|
30
|
+
raise ScrivitoError, 'Scrivito::ObjClass.remove is only allowed in the "rtc" workspace.'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
12
34
|
# Returns all obj classes.
|
13
35
|
# @api public
|
36
|
+
# @deprecated
|
14
37
|
# @return Scrivito::ObjClassCollection
|
15
38
|
#
|
16
39
|
def all
|
@@ -20,6 +43,7 @@ module Scrivito
|
|
20
43
|
# Finds an obj class by its name.
|
21
44
|
#
|
22
45
|
# @api public
|
46
|
+
# @deprecated
|
23
47
|
#
|
24
48
|
# @example Find the obj class named "Homepage" in the current {Scrivito::Workspace}.
|
25
49
|
# ObjClass.find('Homepage')
|
@@ -40,6 +64,7 @@ module Scrivito
|
|
40
64
|
# Creates a new obj class and persists it in the CMS.
|
41
65
|
#
|
42
66
|
# @api public
|
67
|
+
# @deprecated
|
43
68
|
#
|
44
69
|
# This allows you to set the different properties of an obj class by
|
45
70
|
# providing a hash with the property names as keys and the values you want
|
@@ -80,26 +105,7 @@ module Scrivito
|
|
80
105
|
#
|
81
106
|
# @return [Scrivito::ObjClass]
|
82
107
|
def create(properties)
|
83
|
-
|
84
|
-
|
85
|
-
if properties.key?(:is_binary)
|
86
|
-
Scrivito::Deprecation.warn(
|
87
|
-
"`is_binary' is deprecated and should not be used anymore."\
|
88
|
-
"Please remove the parameter and specify all attributes you need "\
|
89
|
-
"including the previously provided attributes 'title', 'body', 'blob'"
|
90
|
-
)
|
91
|
-
end
|
92
|
-
|
93
|
-
if properties[:attributes]
|
94
|
-
properties[:attributes].map! do |attribute|
|
95
|
-
attribute.respond_to?(:to_cms_rest_api) ? attribute : Attribute.new(attribute)
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
workspace = Workspace.current
|
100
|
-
raw_obj_class_data = workspace.api_request(:post, '/obj_classes',
|
101
|
-
obj_class: format_properties_for_cms(properties))
|
102
|
-
new(ObjClassData.new(raw_obj_class_data), workspace)
|
108
|
+
Scrivito.raise_obj_class_deprecated_error
|
103
109
|
end
|
104
110
|
|
105
111
|
private
|
@@ -136,6 +142,7 @@ module Scrivito
|
|
136
142
|
end
|
137
143
|
|
138
144
|
# @api public
|
145
|
+
# @deprecated
|
139
146
|
# Returns true if this ObjClass was created with a +is_binary+ option.
|
140
147
|
# Creating ObjClass with this option is deprecated and will be removed.
|
141
148
|
#
|
@@ -146,16 +153,20 @@ module Scrivito
|
|
146
153
|
|
147
154
|
# @!attribute [r] id
|
148
155
|
# @api public
|
156
|
+
# @deprecated
|
149
157
|
# @return [String] unique identifier of this obj class
|
150
158
|
# @!attribute [r] name
|
151
159
|
# @api public
|
160
|
+
# @deprecated
|
152
161
|
# @return [String] the name of this obj class
|
153
162
|
# @!attribute [r] is_active
|
154
163
|
# @api public
|
164
|
+
# @deprecated
|
155
165
|
# @return [Boolean] whether instances can be created with this obj class
|
156
166
|
delegate :id, :name, :is_active, to: :obj_class_data
|
157
167
|
|
158
168
|
# @api public
|
169
|
+
# @deprecated
|
159
170
|
# @return [Boolean] whether instances of this class are binary, e.g. images or PDFs
|
160
171
|
# @deprecated Please create objects without using the +is_binary+ option
|
161
172
|
# @raise [ScrivitoError] if the method is called on a non-legacy-type ObjClass
|
@@ -172,6 +183,7 @@ module Scrivito
|
|
172
183
|
alias_method :binary?, :is_binary
|
173
184
|
|
174
185
|
# @api public
|
186
|
+
# @deprecated
|
175
187
|
# @return [Scrivito::AttributeCollection] the attributes of this obj class.
|
176
188
|
#
|
177
189
|
# @example Find an attribute named "locale" for the obj class "Homepage".
|
@@ -191,6 +203,7 @@ module Scrivito
|
|
191
203
|
attr_reader :attributes
|
192
204
|
|
193
205
|
# @api public
|
206
|
+
# @deprecated
|
194
207
|
# Updates this obj class and persists the changes in the CMS. It is not possible to
|
195
208
|
# update the +name+.
|
196
209
|
#
|
@@ -221,34 +234,7 @@ module Scrivito
|
|
221
234
|
#
|
222
235
|
# @return [nil]
|
223
236
|
def update(properties)
|
224
|
-
|
225
|
-
|
226
|
-
if params.has_key?(:is_binary)
|
227
|
-
if params[:is_binary].nil?
|
228
|
-
params[:type] = params.delete(:is_binary)
|
229
|
-
else
|
230
|
-
raise ScrivitoError, "#{self.class} only supports removing the `is_binary' property"
|
231
|
-
end
|
232
|
-
end
|
233
|
-
|
234
|
-
if params.has_key?(:name)
|
235
|
-
raise ScrivitoError, "#{self.class} does not support changing 'name'. Please remove" \
|
236
|
-
" the key from the properties."
|
237
|
-
end
|
238
|
-
|
239
|
-
if params.has_key?(:attributes)
|
240
|
-
params[:attributes].map! do |attribute|
|
241
|
-
attribute = Attribute.new(attribute) unless attribute.respond_to?(:to_cms_rest_api)
|
242
|
-
attribute.obj_class = self
|
243
|
-
attribute.to_cms_rest_api
|
244
|
-
end
|
245
|
-
end
|
246
|
-
|
247
|
-
raw_obj_class_data = workspace.api_request(:put, "/obj_classes/#{name}", obj_class: params)
|
248
|
-
update_obj_class_data(ObjClassData.new(raw_obj_class_data))
|
249
|
-
workspace.reload
|
250
|
-
|
251
|
-
nil
|
237
|
+
Scrivito.raise_obj_class_deprecated_error
|
252
238
|
end
|
253
239
|
|
254
240
|
def update_obj_class_data(obj_class_data)
|