infopark_fiona7 1.2.0.1.1 → 1.2.0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|