infopark_fiona7 1.2.0.0.1 → 1.2.0.1.1
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/assets/javascripts/scrivito_patches/models/obj.js +2 -6
- data/infopark_fiona7.gemspec +1 -1
- data/lib/fiona7/attribute_readers/attribute_reader.rb +17 -0
- data/lib/fiona7/attribute_readers/binary_as_binary.rb +12 -0
- data/lib/fiona7/attribute_readers/binary_as_linklist.rb +26 -0
- data/lib/fiona7/attribute_readers/date_as_date.rb +18 -0
- data/lib/fiona7/attribute_readers/factory.rb +91 -0
- data/lib/fiona7/attribute_readers/helpers/html_deserializer.rb +21 -0
- data/lib/fiona7/attribute_readers/helpers/json_deserializer.rb +11 -0
- data/lib/fiona7/attribute_readers/helpers/link_deserializer.rb +32 -0
- data/lib/fiona7/attribute_readers/html_as_html.rb +14 -0
- data/lib/fiona7/attribute_readers/link_as_linklist.rb +13 -0
- data/lib/fiona7/attribute_readers/linklist_as_linklist.rb +15 -0
- data/lib/fiona7/attribute_readers/multienum_as_multienum.rb +12 -0
- data/lib/fiona7/attribute_readers/multienum_as_text.rb +14 -0
- data/lib/fiona7/attribute_readers/number_as_string.rb +11 -0
- data/lib/fiona7/attribute_readers/reference_as_linklist.rb +14 -0
- data/lib/fiona7/attribute_readers/reference_as_string.rb +11 -0
- data/lib/fiona7/attribute_readers/referencelist_as_linklist.rb +16 -0
- data/lib/fiona7/attribute_readers/referencelist_as_text.rb +14 -0
- data/lib/fiona7/attribute_readers/simple.rb +18 -0
- data/lib/fiona7/attribute_readers/stringlist_as_text.rb +18 -0
- data/lib/fiona7/attribute_readers/widgetlist_as_linklist.rb +33 -0
- data/lib/fiona7/attribute_type_mapper.rb +76 -0
- data/lib/fiona7/attribute_writers/attribute_writer.rb +16 -0
- data/lib/fiona7/attribute_writers/binary_as_binary.rb +74 -0
- data/lib/fiona7/attribute_writers/binary_as_linklist.rb +86 -0
- data/lib/fiona7/attribute_writers/date_as_date.rb +11 -0
- data/lib/fiona7/attribute_writers/factory.rb +90 -0
- data/lib/fiona7/attribute_writers/helpers/html_serializer.rb +21 -0
- data/lib/fiona7/attribute_writers/helpers/json_serializer.rb +11 -0
- data/lib/fiona7/attribute_writers/helpers/link_serializer.rb +37 -0
- data/lib/fiona7/attribute_writers/html_as_html.rb +12 -0
- data/lib/fiona7/attribute_writers/link_as_linklist.rb +18 -0
- data/lib/fiona7/attribute_writers/linklist_as_linklist.rb +16 -0
- data/lib/fiona7/attribute_writers/multienum_as_multienum.rb +11 -0
- data/lib/fiona7/attribute_writers/multienum_as_text.rb +12 -0
- data/lib/fiona7/attribute_writers/number_as_string.rb +11 -0
- data/lib/fiona7/attribute_writers/reference_as_linklist.rb +17 -0
- data/lib/fiona7/attribute_writers/reference_as_string.rb +11 -0
- data/lib/fiona7/attribute_writers/referencelist_as_linklist.rb +19 -0
- data/lib/fiona7/attribute_writers/referencelist_as_text.rb +13 -0
- data/lib/fiona7/attribute_writers/simple.rb +11 -0
- data/lib/fiona7/attribute_writers/stringlist_as_text.rb +16 -0
- data/lib/fiona7/attribute_writers/widgetlist_as_linklist.rb +33 -0
- data/lib/fiona7/builder/obj_builder.rb +12 -201
- data/lib/fiona7/controllers/rest_api/obj_controller.rb +23 -5
- data/lib/fiona7/engine.rb +39 -0
- data/lib/fiona7/json/obj_decorator.rb +29 -121
- data/lib/fiona7/prefetch/obj_prefetch.rb +42 -0
- data/lib/fiona7/prefetch/widget_resolver_prefetch.rb +36 -0
- data/lib/fiona7/scrivito_patches/date_attribute.rb +16 -0
- data/lib/fiona7/tools/attribute_remover.rb +70 -0
- data/lib/fiona7/type_register.rb +9 -1
- data/lib/fiona7/version.rb +1 -1
- data/lib/fiona7/widget_resolver.rb +6 -6
- metadata +51 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a6ec5e35fd0d8751ebef7a921e1041b74b6991f
|
4
|
+
data.tar.gz: 0340bd069fc11e65504711408488f8a6b088a7ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c37220478fa274a9afaff2535af1bdfcf6cdc4d25b14ea6f9f219738fa36a6c4314b633317977c86be20ea3f8d055480141bcd5b9c99f4c0860a5337a4e8127
|
7
|
+
data.tar.gz: 23adf98f303eb22bfe138f66934fc421b9f0dbbdf11619ef99bfdce3f1df1dd897ef5acfa7f66430a242c494f9bd4d986643378743aca3bfc33376864d553c91
|
@@ -232,7 +232,7 @@
|
|
232
232
|
$.each(attrs, function (key, value) {
|
233
233
|
if (value && value.is_uploaded_binary && value.filename) {
|
234
234
|
default_name = value.filename;
|
235
|
-
} else if (
|
235
|
+
} else if (is_file(value)) {
|
236
236
|
default_name = value.name;
|
237
237
|
}
|
238
238
|
});
|
@@ -273,7 +273,7 @@
|
|
273
273
|
$.each(attributes, function (key, value) {
|
274
274
|
if (value && value.is_uploaded_binary) {
|
275
275
|
has_binary=true;
|
276
|
-
} else if (
|
276
|
+
} else if (is_file(value)) {
|
277
277
|
has_binary=true
|
278
278
|
}
|
279
279
|
});
|
@@ -344,10 +344,6 @@
|
|
344
344
|
_.isString(object.name);
|
345
345
|
};
|
346
346
|
|
347
|
-
var instance_of_anywhere = function (object, ctor_name) {
|
348
|
-
return (object && (typeof object === 'object') && object.constructor && object.constructor.name === ctor_name);
|
349
|
-
};
|
350
|
-
|
351
347
|
var format_date_number = function(number) {
|
352
348
|
var string = number.toString();
|
353
349
|
return string.length === 1 ? '0' + string : string;
|
data/infopark_fiona7.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.add_dependency "scrivito_sdk"
|
22
22
|
s.add_dependency "scrivito_editors"
|
23
23
|
s.add_dependency "infopark_fiona_connector", "= 7.0.1.beta2"
|
24
|
-
s.add_dependency "infopark_reactor", ">= 1.22.
|
24
|
+
s.add_dependency "infopark_reactor", ">= 1.22.4"
|
25
25
|
s.add_dependency "mini_magick"
|
26
26
|
#s.add_development_dependency "ruby-prof"
|
27
27
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Fiona7
|
2
|
+
module AttributeReaders
|
3
|
+
class AttributeReader
|
4
|
+
def initialize(obj, attr_name, widget_resolver)
|
5
|
+
self.obj = obj
|
6
|
+
self.attr_name = attr_name
|
7
|
+
self.widget_resolver = widget_resolver
|
8
|
+
end
|
9
|
+
|
10
|
+
def call
|
11
|
+
end
|
12
|
+
|
13
|
+
protected
|
14
|
+
attr_accessor :obj, :attr_name, :widget_resolver
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'fiona7/attribute_readers/attribute_reader'
|
2
|
+
require 'fiona7/blob_id_generator'
|
3
|
+
|
4
|
+
module Fiona7
|
5
|
+
module AttributeReaders
|
6
|
+
class BinaryAsBinary < AttributeReader
|
7
|
+
def call
|
8
|
+
{id: Fiona7::BlobIdGenerator.new(self.obj.id, self.obj.last_changed).call}
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'fiona7/attribute_readers/attribute_reader'
|
2
|
+
require 'fiona7/blob_id_generator'
|
3
|
+
|
4
|
+
module Fiona7
|
5
|
+
module AttributeReaders
|
6
|
+
class BinaryAsLinklist < AttributeReader
|
7
|
+
def call
|
8
|
+
if !Fiona7.mode == :legacy || !self.obj.binary?
|
9
|
+
deserialize_binary(self.obj.attr_values[self.attr_name].try(:first))
|
10
|
+
else
|
11
|
+
{id: Fiona7::BlobIdGenerator.new(self.obj.id, self.obj.last_changed).call}
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
protected
|
16
|
+
def deserialize_binary(link)
|
17
|
+
if link
|
18
|
+
binary_id = link["title"]
|
19
|
+
if binary_id.length == 32
|
20
|
+
{id: binary_id}
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'fiona7/attribute_readers/attribute_reader'
|
2
|
+
|
3
|
+
module Fiona7
|
4
|
+
module AttributeReaders
|
5
|
+
class DateAsDate < AttributeReader
|
6
|
+
def call
|
7
|
+
# NOTE: this is a bug in fiona connector
|
8
|
+
# [valid_(from|until)] returns a raw string
|
9
|
+
if ["valid_from", "valid_until"].include?(self.attr_name.to_s)
|
10
|
+
self.obj[self.attr_name]
|
11
|
+
else
|
12
|
+
self.obj[self.attr_name].try(:utc).try(:to_iso)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'fiona7/attribute_readers/binary_as_binary'
|
2
|
+
require 'fiona7/attribute_readers/binary_as_linklist'
|
3
|
+
require 'fiona7/attribute_readers/date_as_date'
|
4
|
+
require 'fiona7/attribute_readers/html_as_html'
|
5
|
+
require 'fiona7/attribute_readers/link_as_linklist'
|
6
|
+
require 'fiona7/attribute_readers/linklist_as_linklist'
|
7
|
+
require 'fiona7/attribute_readers/multienum_as_multienum'
|
8
|
+
require 'fiona7/attribute_readers/multienum_as_text'
|
9
|
+
require 'fiona7/attribute_readers/number_as_string'
|
10
|
+
require 'fiona7/attribute_readers/reference_as_linklist'
|
11
|
+
require 'fiona7/attribute_readers/reference_as_string'
|
12
|
+
require 'fiona7/attribute_readers/referencelist_as_linklist'
|
13
|
+
require 'fiona7/attribute_readers/referencelist_as_text'
|
14
|
+
require 'fiona7/attribute_readers/simple'
|
15
|
+
require 'fiona7/attribute_readers/stringlist_as_text'
|
16
|
+
require 'fiona7/attribute_readers/widgetlist_as_linklist'
|
17
|
+
|
18
|
+
module Fiona7
|
19
|
+
module AttributeReaders
|
20
|
+
class Factory
|
21
|
+
def initialize(obj, type_def, widget_resolver)
|
22
|
+
self.obj = obj
|
23
|
+
self.type_def = type_def
|
24
|
+
self.widget_resolver = widget_resolver
|
25
|
+
end
|
26
|
+
|
27
|
+
def call(attribute, virtual_type, real_type)
|
28
|
+
virtual = virtual_type.to_sym
|
29
|
+
real = real_type.to_sym
|
30
|
+
|
31
|
+
worker = case [virtual, real]
|
32
|
+
when [:linklist, :linklist]
|
33
|
+
Fiona7::AttributeReaders::LinklistAsLinklist
|
34
|
+
when [:link, :linklist]
|
35
|
+
Fiona7::AttributeReaders::LinkAsLinklist
|
36
|
+
when [:reference, :linklist]
|
37
|
+
Fiona7::AttributeReaders::ReferenceAsLinklist
|
38
|
+
when [:reference, :string], [:reference, :text]
|
39
|
+
Fiona7::AttributeReaders::ReferenceAsString
|
40
|
+
when [:referencelist, :linklist]
|
41
|
+
Fiona7::AttributeReaders::ReferencelistAsLinklist
|
42
|
+
when [:referencelist, :text], [:referencelist, :string]
|
43
|
+
Fiona7::AttributeReaders::ReferencelistAsText
|
44
|
+
when [:widgetlist, :linklist]
|
45
|
+
Fiona7::AttributeReaders::WidgetlistAsLinklist
|
46
|
+
when [:multienum, :text], [:multienum, :string]
|
47
|
+
Fiona7::AttributeReaders::MultienumAsText
|
48
|
+
when [:multienum, :multienum]
|
49
|
+
Fiona7::AttributeReaders::MultienumAsMultienum
|
50
|
+
when [:number, :string], [:number, :text]
|
51
|
+
Fiona7::AttributeReaders::NumberAsString
|
52
|
+
when [:html, :html]
|
53
|
+
Fiona7::AttributeReaders::HtmlAsHtml
|
54
|
+
when [:binary, :linklist]
|
55
|
+
Fiona7::AttributeReaders::BinaryAsLinklist
|
56
|
+
when [:binary, :binary]
|
57
|
+
Fiona7::AttributeReaders::BinaryAsBinary
|
58
|
+
when [:stringlist, :text], [:stringlist, :string]
|
59
|
+
Fiona7::AttributeReaders::StringlistAsText
|
60
|
+
when [:stringlist, :multienum]
|
61
|
+
Fiona7::AttributeReaders::Simple
|
62
|
+
when [:stringlist, :stringlist]
|
63
|
+
# NOTE: this is practically only used for "channels"
|
64
|
+
Fiona7::AttributeReaders::Simple
|
65
|
+
else
|
66
|
+
case virtual
|
67
|
+
when :text, :string, :enum, :markdown
|
68
|
+
Fiona7::AttributeReaders::Simple
|
69
|
+
when :date
|
70
|
+
Fiona7::AttributeReaders::DateAsDate
|
71
|
+
else
|
72
|
+
# It would perhaps be practical to raise this error here
|
73
|
+
# but also risky: broken configurations may surface
|
74
|
+
# (attributes which had their attribute types changed).
|
75
|
+
# This would break some pages
|
76
|
+
#
|
77
|
+
# raise(Fiona7::TypeSystemError.new("Unable to read #{attribute} in #{self.type_def.name} with typing #{virtual}:#{real}"))
|
78
|
+
#
|
79
|
+
# So instead, it is better to "lose" some information.
|
80
|
+
return nil
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
worker.new(self.obj, attribute, self.widget_resolver)
|
85
|
+
end
|
86
|
+
|
87
|
+
protected
|
88
|
+
attr_accessor :obj, :obj_class, :type_def, :widget_resolver
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'fiona7/link_converter/fiona_to_scrivito'
|
2
|
+
|
3
|
+
module Fiona7
|
4
|
+
module AttributeReaders
|
5
|
+
module Helpers
|
6
|
+
class HtmlDeserializer
|
7
|
+
def initialize(obj)
|
8
|
+
self.link_converter = Fiona7::LinkConverter::FionaToScrivito.new(obj)
|
9
|
+
end
|
10
|
+
|
11
|
+
def call(value)
|
12
|
+
self.link_converter.convert(value)
|
13
|
+
end
|
14
|
+
|
15
|
+
protected
|
16
|
+
attr_accessor :link_converter
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Fiona7
|
2
|
+
module AttributeReaders
|
3
|
+
module Helpers
|
4
|
+
class LinkDeserializer
|
5
|
+
def call(link)
|
6
|
+
if link
|
7
|
+
deserialized = {
|
8
|
+
# remove possible external prefix for protcol-less urls
|
9
|
+
url: link["url"].try(:gsub, /\Aexternal:/, ''),
|
10
|
+
title: link["title"],
|
11
|
+
target: link["target"],
|
12
|
+
# content service uses destination
|
13
|
+
destination: link["destination"].to_s,
|
14
|
+
# rest api uses obj_id
|
15
|
+
obj_id: link["destination"].to_s,
|
16
|
+
query: link["search"],
|
17
|
+
fragment: link["fragment"]
|
18
|
+
}
|
19
|
+
|
20
|
+
# TODO: refactor this code
|
21
|
+
if deserialized[:url].present?
|
22
|
+
deserialized.delete(:destination)
|
23
|
+
deserialized.delete(:obj_id)
|
24
|
+
end
|
25
|
+
|
26
|
+
deserialized
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'fiona7/attribute_readers/attribute_reader'
|
2
|
+
require 'fiona7/attribute_readers/helpers/html_deserializer'
|
3
|
+
|
4
|
+
module Fiona7
|
5
|
+
module AttributeReaders
|
6
|
+
class HtmlAsHtml < AttributeReader
|
7
|
+
def call
|
8
|
+
value = self.obj[self.attr_name].to_s
|
9
|
+
Helpers::HtmlDeserializer.new(self.obj).call(value)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'fiona7/attribute_readers/attribute_reader'
|
2
|
+
require 'fiona7/attribute_readers/helpers/link_deserializer'
|
3
|
+
|
4
|
+
module Fiona7
|
5
|
+
module AttributeReaders
|
6
|
+
class LinkAsLinklist < AttributeReader
|
7
|
+
def call
|
8
|
+
link = self.obj.attr_values[self.attr_name].try(:first)
|
9
|
+
Helpers::LinkDeserializer.new.call(link)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'fiona7/attribute_readers/attribute_reader'
|
2
|
+
require 'fiona7/attribute_readers/helpers/link_deserializer'
|
3
|
+
|
4
|
+
module Fiona7
|
5
|
+
module AttributeReaders
|
6
|
+
class LinklistAsLinklist < AttributeReader
|
7
|
+
def call
|
8
|
+
links = self.obj.attr_values[self.attr_name] || []
|
9
|
+
links.map do |link|
|
10
|
+
Helpers::LinkDeserializer.new.call(link)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'fiona7/attribute_readers/attribute_reader'
|
2
|
+
require 'fiona7/attribute_readers/helpers/json_deserializer'
|
3
|
+
|
4
|
+
module Fiona7
|
5
|
+
module AttributeReaders
|
6
|
+
class MultienumAsText < AttributeReader
|
7
|
+
def call
|
8
|
+
value = self.obj[self.attr_name]
|
9
|
+
Helpers::JsonDeserializer.new.call(value).presence || []
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'fiona7/attribute_readers/attribute_reader'
|
2
|
+
|
3
|
+
module Fiona7
|
4
|
+
module AttributeReaders
|
5
|
+
class ReferenceAsLinklist < AttributeReader
|
6
|
+
def call
|
7
|
+
link = self.obj.attr_values[self.attr_name].try(:first)
|
8
|
+
if link && link["type"] == "internal"
|
9
|
+
link["destination"].to_s
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'fiona7/attribute_readers/attribute_reader'
|
2
|
+
|
3
|
+
module Fiona7
|
4
|
+
module AttributeReaders
|
5
|
+
class ReferencelistAsLinklist < AttributeReader
|
6
|
+
def call
|
7
|
+
links = self.obj.attr_values[self.attr_name] || []
|
8
|
+
links.map do |link|
|
9
|
+
if link && link["type"] == "internal"
|
10
|
+
link["destination"].to_s
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'fiona7/attribute_readers/attribute_reader'
|
2
|
+
require 'fiona7/attribute_readers/helpers/json_deserializer'
|
3
|
+
|
4
|
+
module Fiona7
|
5
|
+
module AttributeReaders
|
6
|
+
class ReferencelistAsText < AttributeReader
|
7
|
+
def call
|
8
|
+
value = self.obj[self.attr_name]
|
9
|
+
Helpers::JsonDeserializer.new.call(value).presence || []
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|