scrivito_sdk 0.50.1 → 0.60.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- 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)
|