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
@@ -3,6 +3,8 @@ module Scrivito
|
|
3
3
|
# The CMS widget class
|
4
4
|
# @api public
|
5
5
|
class BasicWidget
|
6
|
+
# @!parse extend Scrivito::AttributeContent::ClassMethods
|
7
|
+
|
6
8
|
include AttributeContent
|
7
9
|
|
8
10
|
def self.type_computer
|
@@ -13,11 +15,43 @@ class BasicWidget
|
|
13
15
|
@_type_computer = nil
|
14
16
|
end
|
15
17
|
|
16
|
-
|
17
|
-
|
18
|
+
#
|
19
|
+
# @api public
|
20
|
+
# This method can be overridden in subclasses to control to which pages or
|
21
|
+
# widgets the given widget class can be added. This method can be used
|
22
|
+
# to ensure that only a special type of widget can be added to a specific
|
23
|
+
# container. An example for this is a +TabGroupWidget+ that should
|
24
|
+
# contain widgets of the +TabWidget+ type only, and, vice versa, a +TabWidget+
|
25
|
+
# should only be contained in a +TabGroupWidget+. A value of +nil+ means that
|
26
|
+
# no additional restrictions are applied.
|
27
|
+
#
|
28
|
+
# This method only further restricts the list of valid classes defined
|
29
|
+
# by means of {AttributeContent#valid_widget_classes_for}.
|
30
|
+
#
|
31
|
+
# @return [Array<String, Symbol, Class>, nil]
|
32
|
+
#
|
33
|
+
# @example
|
34
|
+
# class TabGroupWidget < Widget
|
35
|
+
# def valid_widget_classes_for(field_name)
|
36
|
+
# [TabWidget]
|
37
|
+
# end
|
38
|
+
# end
|
39
|
+
#
|
40
|
+
# class TabWidget < Widget
|
41
|
+
# def self.valid_container_classes
|
42
|
+
# [TabGroupWidget]
|
43
|
+
# end
|
44
|
+
# end
|
45
|
+
#
|
46
|
+
def self.valid_container_classes
|
18
47
|
end
|
19
48
|
|
20
|
-
|
49
|
+
def self.valid_inside_container?(container_class)
|
50
|
+
valid_container_classes.nil? ||
|
51
|
+
valid_container_classes.map(&:to_s).include?(container_class.name)
|
52
|
+
end
|
53
|
+
|
54
|
+
attr_accessor :container, :container_attribute_name
|
21
55
|
|
22
56
|
attr_writer :obj, :id
|
23
57
|
|
@@ -46,7 +80,16 @@ class BasicWidget
|
|
46
80
|
# my_obj(my_widget_field: [new_widget])
|
47
81
|
#
|
48
82
|
def initialize(attributes = {})
|
49
|
-
@attributes_to_be_saved = self.class.
|
83
|
+
@attributes_to_be_saved = self.class.prepare_attributes_for_instantiation(attributes)
|
84
|
+
@attribute_cache = {}
|
85
|
+
end
|
86
|
+
|
87
|
+
def self.new(attributes = {})
|
88
|
+
if obj_class = extract_obj_class_from_attributes(attributes)
|
89
|
+
obj_class.new(attributes)
|
90
|
+
else
|
91
|
+
super
|
92
|
+
end
|
50
93
|
end
|
51
94
|
|
52
95
|
def revision
|
@@ -66,8 +109,8 @@ class BasicWidget
|
|
66
109
|
# Destroys the {Scrivito::BasicWidget Widget} in the current {Workspace}
|
67
110
|
# @api public
|
68
111
|
def destroy
|
69
|
-
new_widget_list = container[
|
70
|
-
container.update(
|
112
|
+
new_widget_list = container[container_attribute_name] - [self]
|
113
|
+
container.update(container_attribute_name => new_widget_list)
|
71
114
|
end
|
72
115
|
|
73
116
|
#
|
@@ -83,25 +126,30 @@ class BasicWidget
|
|
83
126
|
# obj.update(my_widgets: obj.my_widgets.push(obj.my_widgets.first.copy))
|
84
127
|
#
|
85
128
|
def copy
|
86
|
-
|
87
|
-
|
88
|
-
|
129
|
+
attributes = {}
|
130
|
+
attribute_definitions.each do |attribute_definition|
|
131
|
+
attribute_name = attribute_definition.name
|
132
|
+
attribute_value = read_attribute(attribute_name)
|
133
|
+
attribute_value = attribute_value.map(&:copy) if attribute_definition.widgetlist?
|
134
|
+
attributes[attribute_name] = attribute_value
|
89
135
|
end
|
90
|
-
self.class.new(
|
136
|
+
self.class.new(attributes)
|
91
137
|
end
|
92
138
|
|
93
139
|
def copy_for_restore(referenced_ids)
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
140
|
+
attributes = {}
|
141
|
+
attribute_definitions.each do |attribute_definition|
|
142
|
+
attribute_name = attribute_definition.name
|
143
|
+
attribute_value = read_attribute(attribute_name)
|
144
|
+
if attribute_definition.widgetlist?
|
145
|
+
attribute_value = attribute_value
|
146
|
+
.reject { |widget| referenced_ids.include?(widget.id) }
|
98
147
|
.map { |widget| widget.copy_for_restore(referenced_ids) }
|
99
|
-
else
|
100
|
-
attr_value
|
101
148
|
end
|
149
|
+
attributes[attribute_name] = attribute_value
|
102
150
|
end
|
103
|
-
|
104
|
-
self.class.new(
|
151
|
+
attributes['_id'] = id
|
152
|
+
self.class.new(attributes)
|
105
153
|
end
|
106
154
|
|
107
155
|
def clone
|
@@ -154,7 +202,7 @@ class BasicWidget
|
|
154
202
|
CmsRestApi.get("revisions/#{workspace.base_revision_id}/objs/#{obj.id}")
|
155
203
|
previous_widget_content = previous_obj_content["_widget_pool"]["#{id}"]
|
156
204
|
previous_widget_content.delete_if do |attribute_name, _|
|
157
|
-
type_of_attribute(attribute_name) ==
|
205
|
+
type_of_attribute(attribute_name) == 'widgetlist'
|
158
206
|
end
|
159
207
|
CmsRestApi.put("workspaces/#{workspace.id}/objs/#{obj.id}",
|
160
208
|
{ obj: {_widget_pool: {id => previous_widget_content}} })
|
@@ -205,17 +253,27 @@ class BasicWidget
|
|
205
253
|
# returns the entity ({Scrivito::BasicObj} or {Scrivito::BasicWidget}) that references this widget
|
206
254
|
# @api public
|
207
255
|
def container
|
208
|
-
@container ||
|
256
|
+
@container || container_and_attribute_name.first
|
257
|
+
end
|
258
|
+
|
259
|
+
# returns the name of the widget attribute that references this widget
|
260
|
+
# @api public
|
261
|
+
def container_attribute_name
|
262
|
+
@container_attribute_name || container_and_attribute_name.second
|
209
263
|
end
|
210
264
|
|
211
265
|
# returns the name of the widget field that references this widget
|
212
266
|
# @api public
|
267
|
+
# @deprecated
|
213
268
|
def container_field_name
|
214
|
-
|
269
|
+
Scrivito::Deprecation.warn('Scrivito::BasicWidget#container_field_name is deprecated'\
|
270
|
+
' and will be removed in a future version.'\
|
271
|
+
' Please use Scrivito::BasicWidget#container_attribute_name instead.')
|
272
|
+
container_attribute_name
|
215
273
|
end
|
216
274
|
|
217
|
-
def
|
218
|
-
container[
|
275
|
+
def container_attribute_index
|
276
|
+
container[container_attribute_name].index(self)
|
219
277
|
end
|
220
278
|
|
221
279
|
def has_attribute?(key)
|
@@ -261,6 +319,14 @@ class BasicWidget
|
|
261
319
|
obj_class_name
|
262
320
|
end
|
263
321
|
|
322
|
+
def data_from_cms
|
323
|
+
if persisted?
|
324
|
+
super
|
325
|
+
else
|
326
|
+
raise_not_persisted_error
|
327
|
+
end
|
328
|
+
end
|
329
|
+
|
264
330
|
private
|
265
331
|
|
266
332
|
def workspace
|
@@ -271,14 +337,6 @@ class BasicWidget
|
|
271
337
|
end
|
272
338
|
end
|
273
339
|
|
274
|
-
def data_from_cms
|
275
|
-
if persisted?
|
276
|
-
super
|
277
|
-
else
|
278
|
-
raise_not_persisted_error
|
279
|
-
end
|
280
|
-
end
|
281
|
-
|
282
340
|
def raise_not_persisted_error
|
283
341
|
raise ScrivitoError.new('Can not access a new widget before it has been saved')
|
284
342
|
end
|
@@ -287,14 +345,22 @@ class BasicWidget
|
|
287
345
|
obj.widget_data_for_revision(id, revision)
|
288
346
|
end
|
289
347
|
|
290
|
-
def
|
291
|
-
@
|
348
|
+
def container_and_attribute_name
|
349
|
+
@container_and_attribute_name ||= obj.find_container_and_attribute_name_for_widget(id)
|
292
350
|
end
|
293
351
|
|
294
|
-
def
|
295
|
-
|
296
|
-
|
297
|
-
|
352
|
+
def has_system_attribute?(attribute_name)
|
353
|
+
attribute_name == '_obj_class'
|
354
|
+
end
|
355
|
+
|
356
|
+
alias_method :has_public_system_attribute?, :has_system_attribute?
|
357
|
+
|
358
|
+
def type_of_system_attribute(attribute_name)
|
359
|
+
'string' if attribute_name == 'obj_class'
|
360
|
+
end
|
361
|
+
|
362
|
+
def value_of_system_attribute(attribute_name)
|
363
|
+
data_from_cms.value_of(attribute_name)
|
298
364
|
end
|
299
365
|
end
|
300
366
|
|
data/lib/scrivito/binary.rb
CHANGED
@@ -4,6 +4,8 @@ module Scrivito
|
|
4
4
|
# The Binary class represents the data stored in a binary attribute of an Obj
|
5
5
|
# or Widget
|
6
6
|
class Binary
|
7
|
+
attr_reader :id
|
8
|
+
|
7
9
|
def initialize(id, public_content)
|
8
10
|
@id = id
|
9
11
|
@public_content = public_content
|
@@ -11,7 +13,7 @@ class Binary
|
|
11
13
|
|
12
14
|
# @api public
|
13
15
|
# Some Scrivito data is considered private, i.e. it is not currently intended
|
14
|
-
# for the general public, for example content in a workspace that has not
|
16
|
+
# for the general public, for example content in a workspace that has not
|
15
17
|
# been published yet.
|
16
18
|
# @return [Boolean]
|
17
19
|
def private?
|
@@ -53,8 +55,6 @@ class Binary
|
|
53
55
|
|
54
56
|
private
|
55
57
|
|
56
|
-
attr_reader :id
|
57
|
-
|
58
58
|
def public_content?
|
59
59
|
!!@public_content
|
60
60
|
end
|
@@ -11,10 +11,12 @@ module Scrivito
|
|
11
11
|
value
|
12
12
|
end
|
13
13
|
|
14
|
-
def write(key, value,
|
14
|
+
def write(key, value, expires_in = nil)
|
15
15
|
transformed_key = transform_key(key)
|
16
|
-
|
17
|
-
|
16
|
+
if forward_write?(key, value, expires_in)
|
17
|
+
next_store.write(transformed_key, value, expires_in)
|
18
|
+
end
|
19
|
+
internal_write(transformed_key, value, expires_in)
|
18
20
|
end
|
19
21
|
|
20
22
|
def fetch(key, &block)
|
@@ -40,13 +42,17 @@ module Scrivito
|
|
40
42
|
raise NotImplementedError
|
41
43
|
end
|
42
44
|
|
43
|
-
def internal_write(key, value,
|
45
|
+
def internal_write(key, value, expires_in = nil)
|
44
46
|
raise NotImplementedError
|
45
47
|
end
|
46
48
|
|
47
49
|
def transform_key(key)
|
48
50
|
key
|
49
51
|
end
|
52
|
+
|
53
|
+
def forward_write?(key, value, expires_in)
|
54
|
+
next_store.present?
|
55
|
+
end
|
50
56
|
end
|
51
57
|
end
|
52
58
|
end
|
@@ -15,11 +15,14 @@ module Cache
|
|
15
15
|
|
16
16
|
private
|
17
17
|
|
18
|
-
delegate :read,
|
18
|
+
delegate :read, to: :internal_store, prefix: :internal
|
19
19
|
|
20
|
-
def
|
21
|
-
|
22
|
-
|
20
|
+
def internal_write(key, value, expires_in = nil)
|
21
|
+
internal_store.write(key, value, expires_in: expires_in)
|
22
|
+
end
|
23
|
+
|
24
|
+
def forward_write?(key, value, expires_in)
|
25
|
+
super && !expires_in
|
23
26
|
end
|
24
27
|
end
|
25
28
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Scrivito
|
2
2
|
|
3
3
|
#
|
4
|
-
# @api
|
4
|
+
# @api public
|
5
5
|
#
|
6
6
|
class ClassCollection
|
7
7
|
include Enumerable
|
@@ -13,7 +13,7 @@ class ClassCollection
|
|
13
13
|
#
|
14
14
|
# @!method each
|
15
15
|
# Iterates over the classes.
|
16
|
-
# @api
|
16
|
+
# @api public
|
17
17
|
# @yieldparam [Class] class if a block is given.
|
18
18
|
# @return [Enumerator] enumerator if no block is given.
|
19
19
|
#
|
@@ -7,12 +7,13 @@ class ClientConfig < Struct.new(:obj, :editing_context, :lookup_context, :resour
|
|
7
7
|
|
8
8
|
def to_json
|
9
9
|
config = {}
|
10
|
-
config[:current_page]
|
11
|
-
config[:editing_context]
|
12
|
-
config[:i18n]
|
13
|
-
config[:resource_dialog]
|
14
|
-
config[:user]
|
15
|
-
config[:user_permissions]
|
10
|
+
config[:current_page] = current_page_config
|
11
|
+
config[:editing_context] = editing_context_config
|
12
|
+
config[:i18n] = i18n_config
|
13
|
+
config[:resource_dialog] = resource_dialog_config
|
14
|
+
config[:user] = user_config
|
15
|
+
config[:user_permissions] = user_permissions_config
|
16
|
+
config[:is_development_mode] = Rails.env.development?
|
16
17
|
config.to_json
|
17
18
|
end
|
18
19
|
|
data/lib/scrivito/cms_backend.rb
CHANGED
@@ -205,7 +205,7 @@ module Scrivito
|
|
205
205
|
%w[get head].each do |verb|
|
206
206
|
blob_data = blob_datas[access][verb]
|
207
207
|
CmsDataCache.cache.write(blob_data_cache_key(id, access, verb),
|
208
|
-
blob_data,
|
208
|
+
blob_data, blob_data['maxage'])
|
209
209
|
end
|
210
210
|
end
|
211
211
|
end
|
@@ -242,7 +242,7 @@ module Scrivito
|
|
242
242
|
def store_blob_metadata_in_cache(id, blob_metadata)
|
243
243
|
max_age = blob_metadata.delete(:cache_control) =~ /max-age=(.*),/ && $1
|
244
244
|
max_age = max_age.to_i if max_age
|
245
|
-
CmsDataCache.cache.write(blob_metadata_cache_key(id), blob_metadata,
|
245
|
+
CmsDataCache.cache.write(blob_metadata_cache_key(id), blob_metadata, max_age)
|
246
246
|
end
|
247
247
|
|
248
248
|
def blob_metadata_cache_key(id)
|
@@ -1,14 +1,24 @@
|
|
1
1
|
module Scrivito
|
2
2
|
|
3
3
|
# this class is the server-side equivalent of the JavaScript class `cms_field_element`
|
4
|
-
class CmsFieldTag < Struct.new(
|
5
|
-
|
4
|
+
class CmsFieldTag < Struct.new(:view, :tag_name, :obj_or_widget, :field_name)
|
5
|
+
FIELD_TYPES_WITH_ORIGINAL_CONTENT = %w[
|
6
|
+
binary
|
7
|
+
date
|
8
|
+
enum
|
9
|
+
html
|
10
|
+
multienum
|
11
|
+
reference
|
12
|
+
referencelist
|
13
|
+
string
|
14
|
+
text
|
15
|
+
]
|
6
16
|
|
7
17
|
include TagRenderer
|
8
18
|
|
9
19
|
def content(&block)
|
10
|
-
if field_type == '
|
11
|
-
raise ArgumentError, 'No block allowed for
|
20
|
+
if field_type == 'widgetlist'
|
21
|
+
raise ArgumentError, 'No block allowed for widgetlist fields' if block_given?
|
12
22
|
modifications = modification_info || []
|
13
23
|
rendered_widgets = default_content.each_with_index.map do |widget, index|
|
14
24
|
WidgetTag.new(view, widget, modifications[index]).render
|
@@ -30,7 +40,7 @@ class CmsFieldTag < Struct.new(
|
|
30
40
|
}
|
31
41
|
|
32
42
|
modification = comparison.modification_for_attribute(obj_or_widget, field_name)
|
33
|
-
if modification == Modification::EDITED && field_type != '
|
43
|
+
if modification == Modification::EDITED && field_type != 'widgetlist'
|
34
44
|
options['field-modification'] = modification
|
35
45
|
end
|
36
46
|
|
@@ -48,11 +58,8 @@ class CmsFieldTag < Struct.new(
|
|
48
58
|
options['private-field-original-content'] = encoded_content
|
49
59
|
end
|
50
60
|
|
51
|
-
if field_type == '
|
52
|
-
|
53
|
-
if valid_widget_classes
|
54
|
-
options['private-field-widget-allowed-classes'] = valid_widget_classes.to_json
|
55
|
-
end
|
61
|
+
if field_type == 'widgetlist'
|
62
|
+
options['private-field-widget-allowed-classes'] = build_valid_widget_classes.to_json
|
56
63
|
end
|
57
64
|
|
58
65
|
options
|
@@ -65,10 +72,23 @@ class CmsFieldTag < Struct.new(
|
|
65
72
|
|
66
73
|
private
|
67
74
|
|
75
|
+
def build_valid_widget_classes
|
76
|
+
obj_or_widget.valid_widget_class_names_for(field_name).map do |widget_class|
|
77
|
+
{
|
78
|
+
name: widget_class,
|
79
|
+
description: description_for_widget_class(widget_class),
|
80
|
+
}
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
68
84
|
def field_type
|
69
85
|
@field_type ||= obj_or_widget.type_of_attribute(field_name)
|
70
86
|
end
|
71
87
|
|
88
|
+
def description_for_widget_class(class_name)
|
89
|
+
class_name.constantize.description_for_editor
|
90
|
+
end
|
91
|
+
|
72
92
|
def default_content
|
73
93
|
calculate_content_and_modification
|
74
94
|
@content_and_modification.first
|
@@ -91,18 +111,6 @@ class CmsFieldTag < Struct.new(
|
|
91
111
|
Workspace.current.id
|
92
112
|
end
|
93
113
|
|
94
|
-
FIELD_TYPES_WITH_ORIGINAL_CONTENT = %w[
|
95
|
-
enum
|
96
|
-
html
|
97
|
-
multienum
|
98
|
-
reference
|
99
|
-
referencelist
|
100
|
-
string
|
101
|
-
text
|
102
|
-
binary
|
103
|
-
date
|
104
|
-
]
|
105
|
-
|
106
114
|
def authenticated_editor?
|
107
115
|
editing_context.authenticated_editor?
|
108
116
|
end
|
@@ -113,10 +121,10 @@ class CmsFieldTag < Struct.new(
|
|
113
121
|
|
114
122
|
def original_content(field_type, field_value, raw_value)
|
115
123
|
case field_type
|
116
|
-
when '
|
124
|
+
when 'binary' then field_value && {}
|
125
|
+
when 'date' then raw_value.try(:utc).try(:iso8601)
|
126
|
+
when 'reference' then field_value.try(:id)
|
117
127
|
when 'referencelist' then field_value.map(&:id)
|
118
|
-
when 'binary' then field_value && {}
|
119
|
-
when 'date' then raw_value.try(:utc).try(:iso8601)
|
120
128
|
else field_value
|
121
129
|
end
|
122
130
|
end
|