infopark_fiona7 1.2.0.1.1 → 1.2.0.1.3
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/fiona7/templates.js +106 -0
- data/app/assets/javascripts/scrivito_patches/ajax_error_handling.js +24 -0
- data/app/assets/javascripts/scrivito_patches/attribute_serializer.js +259 -0
- data/app/assets/javascripts/scrivito_patches/binary_utils.js +33 -0
- data/app/assets/javascripts/scrivito_patches/cms_rest_api.js +490 -0
- data/app/assets/javascripts/scrivito_patches/models/api/basic_obj.js +650 -0
- data/app/assets/javascripts/scrivito_patches/models/binary_field_element.js +53 -0
- data/app/assets/javascripts/scrivito_patches/obj_serializer.js +91 -0
- data/infopark_fiona7.gemspec +2 -1
- data/lib/fiona7/builder/obj_class_builder.rb +10 -6
- data/lib/fiona7/engine.rb +10 -5
- data/lib/fiona7/version.rb +1 -1
- metadata +26 -6
- data/lib/fiona7/scrivito_patches/date_attribute.rb +0 -16
@@ -0,0 +1,53 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
(function () {
|
4
|
+
// -- PATCH BEGINS HERE --
|
5
|
+
// remove old scrivito.binaryFieldElement
|
6
|
+
var definitions = scrivito.cms_element.definitions;
|
7
|
+
for (var i = 0; i < definitions.length; ++i) {
|
8
|
+
if (definitions[i] === scrivito.binaryFieldElement) {
|
9
|
+
definitions.splice(i, 1);
|
10
|
+
break;
|
11
|
+
}
|
12
|
+
}
|
13
|
+
// -- PATCH ENDS HERE --
|
14
|
+
|
15
|
+
scrivito.binaryFieldElement = {
|
16
|
+
create_instance: function create_instance(cmsElement) {
|
17
|
+
if (cmsElement.dom_element().attr('data-scrivito-field-type') === 'binary') {
|
18
|
+
var that = scrivito.cms_field_element.create_instance(cmsElement);
|
19
|
+
// -- PATCH BEGINS HERE --
|
20
|
+
/*
|
21
|
+
const bufferedWriter = new scrivito.BufferedWriter((value) => {
|
22
|
+
if (scrivito.BinaryUtils.isFile(value)) {
|
23
|
+
return scrivito.Binary.upload(value).into(that.basic_obj());
|
24
|
+
}
|
25
|
+
if (value instanceof scrivito.FutureBinary) {
|
26
|
+
return value.into(that.basic_obj());
|
27
|
+
}
|
28
|
+
return scrivito.Promise.resolve(value);
|
29
|
+
});
|
30
|
+
_.extend(that, {
|
31
|
+
preprocess(value) {
|
32
|
+
return bufferedWriter.write(value).catch((error) => {
|
33
|
+
scrivito.handleAjaxError(error);
|
34
|
+
throw error;
|
35
|
+
});
|
36
|
+
},
|
37
|
+
});
|
38
|
+
*/
|
39
|
+
|
40
|
+
_.extend(that, {
|
41
|
+
preprocess: function preprocess(value) {
|
42
|
+
return scrivito.Promise.resolve(value);
|
43
|
+
}
|
44
|
+
});
|
45
|
+
// -- PATCH ENDS HERE --
|
46
|
+
|
47
|
+
return that;
|
48
|
+
}
|
49
|
+
}
|
50
|
+
};
|
51
|
+
|
52
|
+
scrivito.cms_element.definitions.push(scrivito.binaryFieldElement);
|
53
|
+
})();
|
@@ -0,0 +1,91 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
(function () {
|
4
|
+
scrivito.ObjSerializer = {
|
5
|
+
serialize: function serialize(objId, attrs) {
|
6
|
+
var promise = serializeWidgetPool(objId, attrs._widget_pool).then(function (widgetPool) {
|
7
|
+
return serializeAttrs(objId, attrs).then(function (serializedAttrs) {
|
8
|
+
if (widgetPool) {
|
9
|
+
serializedAttrs._widget_pool = widgetPool;
|
10
|
+
}
|
11
|
+
return serializedAttrs;
|
12
|
+
});
|
13
|
+
});
|
14
|
+
|
15
|
+
return scrivito.promise.wrapInJqueryDeferred(promise);
|
16
|
+
},
|
17
|
+
|
18
|
+
serializeValue: function serializeValue(value) {
|
19
|
+
if (_.isDate(value)) {
|
20
|
+
return moment.utc(value).toISOString();
|
21
|
+
}
|
22
|
+
|
23
|
+
return value;
|
24
|
+
}
|
25
|
+
};
|
26
|
+
|
27
|
+
function serializeWidgetPool(objId, widgetPool) {
|
28
|
+
if (widgetPool) {
|
29
|
+
var promises = _.map(widgetPool, function (attrs, widgetId) {
|
30
|
+
return serializeAttrs(objId, attrs).then(function (serializedAttrs) {
|
31
|
+
return [widgetId, serializedAttrs];
|
32
|
+
});
|
33
|
+
});
|
34
|
+
|
35
|
+
return scrivito.Promise.all(promises).then(function (serializedWidgetPool) {
|
36
|
+
return _.object(serializedWidgetPool);
|
37
|
+
});
|
38
|
+
}
|
39
|
+
|
40
|
+
return scrivito.Promise.resolve(widgetPool);
|
41
|
+
}
|
42
|
+
|
43
|
+
function serializeAttrs(objId, attrs) {
|
44
|
+
var promises = _.map(attrs, function (attrValue, attrName) {
|
45
|
+
return serializeAttr(objId, attrName, attrValue);
|
46
|
+
});
|
47
|
+
|
48
|
+
return scrivito.Promise.all(promises).then(function (serializedAttrs) {
|
49
|
+
return _.object(serializedAttrs);
|
50
|
+
});
|
51
|
+
}
|
52
|
+
|
53
|
+
function serializeAttr(objId, attrName, attrValue) {
|
54
|
+
if (scrivito.BinaryUtils.isFile(attrValue) || scrivito.BinaryUtils.isBlob(attrValue)) {
|
55
|
+
return serializeFile(objId, attrName, attrValue);
|
56
|
+
}
|
57
|
+
|
58
|
+
if (attrValue instanceof scrivito.UploadedBlob) {
|
59
|
+
return serializeUploadedBlob(objId, attrName, attrValue);
|
60
|
+
}
|
61
|
+
|
62
|
+
if (attrValue instanceof scrivito.FutureBinary) {
|
63
|
+
return serializeFutureBinary(objId, attrName, attrValue);
|
64
|
+
}
|
65
|
+
|
66
|
+
return scrivito.Promise.resolve([attrName, scrivito.ObjSerializer.serializeValue(attrValue)]);
|
67
|
+
}
|
68
|
+
|
69
|
+
function serializeFile(objId, attrName, file) {
|
70
|
+
return scrivito.Promise.resolve([attrName, file]); // <-- PATCH HERE
|
71
|
+
}
|
72
|
+
|
73
|
+
function serializeUploadedBlob(objId, attrName, uploadedBlob) {
|
74
|
+
return serializeFutureBinary(objId, attrName, uploadedBlob.copy());
|
75
|
+
}
|
76
|
+
|
77
|
+
function serializeFutureBinary(objId, attrName, futureBinary) {
|
78
|
+
if (futureBinary.idToCopy) {
|
79
|
+
// blob copy/rename
|
80
|
+
var blob = {
|
81
|
+
id_to_copy: futureBinary.idToCopy
|
82
|
+
};
|
83
|
+
if (futureBinary.filename) blob.filename = futureBinary.filename;
|
84
|
+
if (futureBinary.contentType) blob.content_type = futureBinary.contentType;
|
85
|
+
return scrivito.Promise.resolve([attrName, blob]);
|
86
|
+
} else if (futureBinary.source) {
|
87
|
+
// normal upload
|
88
|
+
return scrivito.Promise.resolve([attrName, { blob_to_upload: futureBinary.source, filename: futureBinary.filename }]);
|
89
|
+
}
|
90
|
+
}
|
91
|
+
})();
|
data/infopark_fiona7.gemspec
CHANGED
@@ -21,7 +21,8 @@ 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.
|
24
|
+
s.add_dependency "infopark_reactor", ">= 1.23.1"
|
25
25
|
s.add_dependency "mini_magick"
|
26
|
+
s.add_dependency "jquery-ui-rails", "< 6.0.0"
|
26
27
|
#s.add_development_dependency "ruby-prof"
|
27
28
|
end
|
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'fiona7/assert'
|
2
|
+
require 'fiona7/attribute_type_mapper'
|
3
|
+
require 'fiona7/obj_class_name_demangler'
|
2
4
|
|
3
5
|
module Fiona7
|
4
6
|
module Builder
|
@@ -41,8 +43,13 @@ module Fiona7
|
|
41
43
|
cms_attribute = RailsConnector::Attribute.find_by_attribute_name(attribute[:real_name])
|
42
44
|
raw_attribute = Reactor::Cm::Attribute.get(attribute[:real_name].to_s)
|
43
45
|
|
46
|
+
expected_real_type = Fiona7::AttributeTypeMapper.new(
|
47
|
+
Fiona7::ObjClassNameDemangler.new(@values[:name]).demangle
|
48
|
+
).call(attribute[:name].to_sym, attribute[:type].to_sym)
|
49
|
+
|
44
50
|
if attribute[:type] == :reference || attribute[:type] == :referencelist || attribute[:type] == :link || attribute[:type] == :widgetlist
|
45
|
-
if cms_attribute.attribute_type ==
|
51
|
+
if cms_attribute.attribute_type == expected_real_type.to_s
|
52
|
+
# FIXME: it is not neccessary to write this information for each sync
|
46
53
|
raw_attribute.set(:helpText, ::ActiveSupport::JSON.encode({type: attribute[:type]}))
|
47
54
|
raw_attribute.save!
|
48
55
|
else
|
@@ -69,6 +76,7 @@ module Fiona7
|
|
69
76
|
# Nothing to do.
|
70
77
|
Rails.logger.warn("TYPE SYNCHRONIZATION: Type #{attribute[:type]} requested for #{attribute[:real_name]}, but is #{cms_attribute.attribute_type}, this may cause errors.")
|
71
78
|
elsif attribute[:type] == :enum || attribute[:type] == :multienum
|
79
|
+
# TODO: AttributeTypeMapper
|
72
80
|
if cms_attribute.attribute_type == "multienum" || cms_attribute.attribute_type == "enum"
|
73
81
|
if attribute[:values]
|
74
82
|
# do not remove values
|
@@ -82,11 +90,7 @@ module Fiona7
|
|
82
90
|
Assert.constraint(false, "Type #{attribute[:type]} requested for #{attribute[:real_name]}, but is #{cms_attribute.attribute_type}")
|
83
91
|
end
|
84
92
|
end
|
85
|
-
elsif
|
86
|
-
if attribute[:type] != :string && attribute[:type] != :stringlist
|
87
|
-
Assert.constraint(false, "Type #{attribute[:type]} requested for #{attribute[:real_name]}, but is #{cms_attribute.attribute_type}")
|
88
|
-
end
|
89
|
-
elsif attribute[:real_type].to_s != cms_attribute.attribute_type
|
93
|
+
elsif attribute[:real_type].to_s != expected_real_type.to_s
|
90
94
|
Assert.constraint(false, "Type #{attribute[:type]} requested for #{attribute[:real_name]}, but is #{cms_attribute.attribute_type}")
|
91
95
|
end
|
92
96
|
end
|
data/lib/fiona7/engine.rb
CHANGED
@@ -157,16 +157,21 @@ module Fiona7
|
|
157
157
|
config.editing_auth do |env|
|
158
158
|
request = ActionDispatch::Request.new(env)
|
159
159
|
session = request.session
|
160
|
-
rsession = session
|
160
|
+
rsession = Reactor::SessionHelper::RsessionHelper.from_session(session)
|
161
161
|
if rsession && rsession.user?
|
162
162
|
Fiona7::ScrivitoUser.define(rsession.user)
|
163
163
|
end
|
164
164
|
end
|
165
165
|
|
166
166
|
config.find_user do |user_id|
|
167
|
-
|
168
|
-
|
169
|
-
|
167
|
+
begin
|
168
|
+
user = Reactor::Cache::User.instance.get(user_id)
|
169
|
+
Fiona7::ScrivitoUser.define(user)
|
170
|
+
rescue Reactor::Cm::XmlSingleRequestError => e
|
171
|
+
# this is the error code for entry (possibly user) not found
|
172
|
+
# other errors we want to pass on (unauthorized, etc)
|
173
|
+
raise e unless e.message =~ /060001/
|
174
|
+
end
|
170
175
|
end
|
171
176
|
end
|
172
177
|
end
|
@@ -237,7 +242,7 @@ module Fiona7
|
|
237
242
|
# for the current user (root most likely), which is not
|
238
243
|
# really a thing that we want - being root by default
|
239
244
|
# should only happen in the root mode
|
240
|
-
if !
|
245
|
+
if !rsession.user?
|
241
246
|
rsession.destroy
|
242
247
|
end
|
243
248
|
end
|
data/lib/fiona7/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: infopark_fiona7
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.0.1.
|
4
|
+
version: 1.2.0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomasz Przedmojski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.
|
89
|
+
version: 1.23.1
|
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.23.1
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: mini_magick
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: jquery-ui-rails
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "<"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 6.0.0
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "<"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 6.0.0
|
111
125
|
description: scrivito-compatible interface for classic Fiona
|
112
126
|
email:
|
113
127
|
- tomasz.przedmojski@infopark.de
|
@@ -120,10 +134,18 @@ files:
|
|
120
134
|
- app/assets/images/fiona7-logo.png
|
121
135
|
- app/assets/images/fiona7-marker.png
|
122
136
|
- app/assets/javascripts/fiona7.js
|
137
|
+
- app/assets/javascripts/fiona7/templates.js
|
123
138
|
- app/assets/javascripts/fiona7_ui.js
|
139
|
+
- app/assets/javascripts/scrivito_patches/ajax_error_handling.js
|
140
|
+
- app/assets/javascripts/scrivito_patches/attribute_serializer.js
|
141
|
+
- app/assets/javascripts/scrivito_patches/binary_utils.js
|
142
|
+
- app/assets/javascripts/scrivito_patches/cms_rest_api.js
|
124
143
|
- app/assets/javascripts/scrivito_patches/models/ajax.js
|
144
|
+
- app/assets/javascripts/scrivito_patches/models/api/basic_obj.js
|
145
|
+
- app/assets/javascripts/scrivito_patches/models/binary_field_element.js
|
125
146
|
- app/assets/javascripts/scrivito_patches/models/blob.js
|
126
147
|
- app/assets/javascripts/scrivito_patches/models/obj.js
|
148
|
+
- app/assets/javascripts/scrivito_patches/obj_serializer.js
|
127
149
|
- app/assets/stylesheets/fiona7-login.css.scss
|
128
150
|
- app/assets/stylesheets/fiona7.css.scss
|
129
151
|
- app/assets/stylesheets/fiona7_ui.css.scss
|
@@ -267,7 +289,6 @@ files:
|
|
267
289
|
- lib/fiona7/scrivito_patches/cms_field_tag.rb
|
268
290
|
- lib/fiona7/scrivito_patches/cms_rest_api.rb
|
269
291
|
- lib/fiona7/scrivito_patches/cms_routing.rb
|
270
|
-
- lib/fiona7/scrivito_patches/date_attribute.rb
|
271
292
|
- lib/fiona7/scrivito_patches/layout_tags.rb
|
272
293
|
- lib/fiona7/scrivito_patches/link_parser.rb
|
273
294
|
- lib/fiona7/scrivito_patches/log_subscriber.rb
|
@@ -319,4 +340,3 @@ signing_key:
|
|
319
340
|
specification_version: 4
|
320
341
|
summary: scrivito-compatible interface for classic Fiona
|
321
342
|
test_files: []
|
322
|
-
has_rdoc:
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'scrivito/date_attribute'
|
2
|
-
|
3
|
-
module Scrivito
|
4
|
-
module DateAttribute
|
5
|
-
def self.deserialize_from_backend(iso_date_time)
|
6
|
-
return nil unless iso_date_time
|
7
|
-
#return nil if iso_date.to_s.blank?
|
8
|
-
|
9
|
-
if iso_date_time.to_s =~ /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/
|
10
|
-
Time.utc($1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i, $6.to_i).in_time_zone
|
11
|
-
else
|
12
|
-
raise "The value is not a valid ISO date time: #{iso_date_time.inspect}"
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|