scrivito_sdk 1.6.0.rc1 → 1.6.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/app/controllers/scrivito/objs_controller.rb +0 -34
- data/app/controllers/scrivito/users_controller.rb +5 -1
- data/config/ca-bundle.crt +38 -8
- data/config/precedence_routes.rb +1 -5
- data/lib/assets/javascripts/scrivito_sdk.js +1500 -129
- data/lib/assets/stylesheets/scrivito.css +1 -1
- data/lib/scrivito/attribute_deserializer.rb +10 -1
- data/lib/scrivito/basic_obj.rb +2 -2
- data/lib/scrivito/binary.rb +5 -9
- data/lib/scrivito/binary_param_verifier.rb +21 -7
- data/lib/scrivito/cms_backend.rb +1 -8
- data/lib/scrivito/cms_data_cache.rb +9 -12
- data/lib/scrivito/link.rb +1 -0
- data/lib/scrivito/link_parser.rb +67 -40
- data/lib/scrivito/obj_facet_value.rb +8 -13
- data/lib/scrivito/obj_search_enumerator.rb +23 -18
- data/lib/scrivito/page_config.rb +3 -1
- data/lib/scrivito/publish_ability.rb +2 -2
- metadata +2 -6
- data/app/views/scrivito/objs/binary_no_cache.json.jbuilder +0 -1
- data/app/views/scrivito/objs/destroy.json.jbuilder +0 -1
- data/lib/assets/javascripts/scrivito_ui.js +0 -57736
- data/lib/assets/stylesheets/scrivito_ui.css +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a07db261fd27ce4542a3d20b26f3f595d9c6d5cd
|
4
|
+
data.tar.gz: f0fc7c93e359eb47f33f615dfe7b367647947be0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c987515511317e614303106d47f6043850a884d5089d22661d8dbbe9f341c6a0817c4956c38fa5ffe4a82a62f9d81b497c989dcd22b4af73e2c6bf94a2414e8
|
7
|
+
data.tar.gz: 07959bf736757a1533661e6185695c2bb33dd45146acad7645143b7d236d37e53ba27a23e7f16761c5488bd8228597146ade57d4d9a218c6013897779c272e13
|
data/README.md
CHANGED
@@ -8,7 +8,7 @@ searches, etc. For more information about Scrivito, please visit https://scrivit
|
|
8
8
|
|
9
9
|
## License
|
10
10
|
|
11
|
-
Copyright (c) 2009 -
|
11
|
+
Copyright (c) 2009 - 2016 Infopark AG (http://www.infopark.com)
|
12
12
|
|
13
13
|
This software can be used and modified under the LGPL-3.0. Please refer to
|
14
14
|
http://www.gnu.org/licenses/lgpl-3.0.html for the license text.
|
@@ -1,11 +1,7 @@
|
|
1
1
|
module Scrivito
|
2
2
|
class ObjsController < WebserviceController
|
3
3
|
around_action :require_selected_workspace_write_authorization, only: [
|
4
|
-
:destroy,
|
5
4
|
:restore,
|
6
|
-
:restore_widget,
|
7
|
-
:revert,
|
8
|
-
:revert_widget,
|
9
5
|
]
|
10
6
|
|
11
7
|
before_filter :require_identical_selected_and_visible_workspace, only: [
|
@@ -26,41 +22,11 @@ module Scrivito
|
|
26
22
|
render current_obj.details_view_path, layout: 'scrivito_dialog', formats: :html
|
27
23
|
end
|
28
24
|
|
29
|
-
def destroy
|
30
|
-
in_selected_workspace do
|
31
|
-
parent = current_obj.parent
|
32
|
-
@redirect_to = parent ? scrivito_path(parent) : "/"
|
33
|
-
current_obj.destroy
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def revert
|
38
|
-
in_selected_workspace { current_obj.revert }
|
39
|
-
render_empty_json
|
40
|
-
end
|
41
|
-
|
42
|
-
def revert_widget
|
43
|
-
in_selected_workspace { current_widget.revert }
|
44
|
-
render_empty_json
|
45
|
-
end
|
46
|
-
|
47
25
|
def restore
|
48
26
|
in_selected_workspace { Obj.restore(params[:id]) }
|
49
27
|
render_empty_json
|
50
28
|
end
|
51
29
|
|
52
|
-
def restore_widget
|
53
|
-
in_selected_workspace { current_obj.restore_widget(params[:widget_id]) }
|
54
|
-
render_empty_json
|
55
|
-
end
|
56
|
-
|
57
|
-
def binary_no_cache
|
58
|
-
in_selected_workspace do
|
59
|
-
binary = current_obj[params[:attribute_name]]
|
60
|
-
@no_cache_url = binary.no_cache_url
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
30
|
def transfer_modifications
|
65
31
|
in_selected_workspace do
|
66
32
|
begin
|
@@ -11,7 +11,11 @@ module Scrivito
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def publish_ability
|
14
|
-
@publish_ability = Scrivito::PublishAbility.new(
|
14
|
+
@publish_ability = Scrivito::PublishAbility.new(
|
15
|
+
scrivito_user,
|
16
|
+
editing_context.selected_workspace,
|
17
|
+
params[:obj_id],
|
18
|
+
)
|
15
19
|
end
|
16
20
|
end
|
17
21
|
end
|
data/config/ca-bundle.crt
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
##
|
2
2
|
## Bundle of CA Root Certificates
|
3
3
|
##
|
4
|
-
## Certificate data from Mozilla as of: Wed
|
4
|
+
## Certificate data from Mozilla as of: Wed Nov 9 15:47:06 2016 GMT
|
5
5
|
##
|
6
6
|
## This is a bundle of X.509 certificates of public Certificate Authorities
|
7
7
|
## (CA). These were automatically extracted from Mozilla's root certificates
|
8
8
|
## file (certdata.txt). This file can be found in the mozilla source tree:
|
9
|
-
##
|
9
|
+
## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
|
10
10
|
##
|
11
11
|
## It contains the certificates in PEM format and therefore
|
12
12
|
## can be directly used with curl / libcurl / php_curl, or with
|
13
13
|
## an Apache+mod_ssl webserver for SSL client authentication.
|
14
14
|
## Just configure this file as the SSLCACertificateFile.
|
15
15
|
##
|
16
|
-
## Conversion done with mk-ca-bundle.pl version 1.
|
17
|
-
##
|
16
|
+
## Conversion done with mk-ca-bundle.pl version 1.27.
|
17
|
+
## SHA256: 17e2a90c8a5cfd6a675b3475d3d467e1ab1fe0d5397e907b08206182389caa08
|
18
18
|
##
|
19
19
|
|
20
20
|
|
@@ -1764,7 +1764,7 @@ AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
|
|
1764
1764
|
-----END CERTIFICATE-----
|
1765
1765
|
|
1766
1766
|
NetLock Arany (Class Gold) Főtanúsítvány
|
1767
|
-
|
1767
|
+
========================================
|
1768
1768
|
-----BEGIN CERTIFICATE-----
|
1769
1769
|
MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
|
1770
1770
|
A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
|
@@ -2280,7 +2280,7 @@ Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
|
|
2280
2280
|
-----END CERTIFICATE-----
|
2281
2281
|
|
2282
2282
|
Certinomis - Autorité Racine
|
2283
|
-
|
2283
|
+
============================
|
2284
2284
|
-----BEGIN CERTIFICATE-----
|
2285
2285
|
MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK
|
2286
2286
|
Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg
|
@@ -3675,7 +3675,7 @@ ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su
|
|
3675
3675
|
-----END CERTIFICATE-----
|
3676
3676
|
|
3677
3677
|
TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5
|
3678
|
-
|
3678
|
+
====================================================
|
3679
3679
|
-----BEGIN CERTIFICATE-----
|
3680
3680
|
MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UEBhMCVFIxDzAN
|
3681
3681
|
BgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp
|
@@ -3699,7 +3699,7 @@ B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW+qtB4Uu2NQvAmxU=
|
|
3699
3699
|
-----END CERTIFICATE-----
|
3700
3700
|
|
3701
3701
|
TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6
|
3702
|
-
|
3702
|
+
====================================================
|
3703
3703
|
-----BEGIN CERTIFICATE-----
|
3704
3704
|
MIIEJjCCAw6gAwIBAgIGfaHyZeyKMA0GCSqGSIb3DQEBCwUAMIGxMQswCQYDVQQGEwJUUjEPMA0G
|
3705
3705
|
A1UEBwwGQW5rYXJhMU0wSwYDVQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
|
@@ -4034,3 +4034,33 @@ BgNVHSMEGDAWgBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAKBggqhkjOPQQDAwNpADBmAjEAj6jcnboM
|
|
4034
4034
|
BBf6Fek9LykBl7+BFjNAk2z8+e2AcG+qj9uEwov1NcoG3GRvaBbhj5G5AjEA2Euly8LQCGzpGPta
|
4035
4035
|
3U1fJAuwACEl74+nBCZx4nxp5V2a+EEfOzmTk51V6s2N8fvB
|
4036
4036
|
-----END CERTIFICATE-----
|
4037
|
+
|
4038
|
+
ISRG Root X1
|
4039
|
+
============
|
4040
|
+
-----BEGIN CERTIFICATE-----
|
4041
|
+
MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAwTzELMAkGA1UE
|
4042
|
+
BhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQD
|
4043
|
+
EwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQG
|
4044
|
+
EwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMT
|
4045
|
+
DElTUkcgUm9vdCBYMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54r
|
4046
|
+
Vygch77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+0TM8ukj1
|
4047
|
+
3Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6UA5/TR5d8mUgjU+g4rk8K
|
4048
|
+
b4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sWT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCN
|
4049
|
+
Aymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyHB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ
|
4050
|
+
4Q7e2RCOFvu396j3x+UCB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf
|
4051
|
+
1b0SHzUvKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWnOlFu
|
4052
|
+
hjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTnjh8BCNAw1FtxNrQH
|
4053
|
+
usEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbwqHyGO0aoSCqI3Haadr8faqU9GY/r
|
4054
|
+
OPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CIrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4G
|
4055
|
+
A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY
|
4056
|
+
9umbbjANBgkqhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
|
4057
|
+
ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ3BebYhtF8GaV
|
4058
|
+
0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KKNFtY2PwByVS5uCbMiogziUwt
|
4059
|
+
hDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJw
|
4060
|
+
TdwJx4nLCgdNbOhdjsnvzqvHu7UrTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nx
|
4061
|
+
e5AW0wdeRlN8NwdCjNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZA
|
4062
|
+
JzVcoyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq4RgqsahD
|
4063
|
+
YVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPAmRGunUHBcnWEvgJBQl9n
|
4064
|
+
JEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57demyPxgcYxn/eR44/KJ4EBs+lVDR3veyJ
|
4065
|
+
m+kXQ99b21/+jh5Xos1AnX5iItreGCc=
|
4066
|
+
-----END CERTIFICATE-----
|
data/config/precedence_routes.rb
CHANGED
@@ -9,7 +9,7 @@ Scrivito::SdkEngine.routes.draw do
|
|
9
9
|
scope '__scrivito', module: 'scrivito' do
|
10
10
|
get ':id', to: 'cms_dispatch#index', as: :base_id, constraints: {id: /\h{16}/}
|
11
11
|
|
12
|
-
resources :objs, controller: 'objs', only: [:show
|
12
|
+
resources :objs, controller: 'objs', only: [:show], defaults: {format: :json} do
|
13
13
|
collection do
|
14
14
|
get :page_class_selection
|
15
15
|
get :search
|
@@ -19,12 +19,8 @@ Scrivito::SdkEngine.routes.draw do
|
|
19
19
|
get :widget
|
20
20
|
get :widget_class_selection
|
21
21
|
get :widget_modification
|
22
|
-
get :binary_no_cache
|
23
22
|
|
24
|
-
put :revert
|
25
23
|
put :restore
|
26
|
-
put :revert_widget
|
27
|
-
put :restore_widget
|
28
24
|
put :transfer_modifications
|
29
25
|
end
|
30
26
|
end
|
@@ -11985,6 +11985,8 @@ module.exports = ret;
|
|
11985
11985
|
}.call(this));
|
11986
11986
|
|
11987
11987
|
|
11988
|
+
//
|
11989
|
+
|
11988
11990
|
//
|
11989
11991
|
|
11990
11992
|
"use strict";
|
@@ -12137,10 +12139,10 @@ if (!window.scrivito) {
|
|
12137
12139
|
"use strict";
|
12138
12140
|
|
12139
12141
|
(function () {
|
12140
|
-
var CONVERT_TO_CAMELCASE = /_(\w)/g;
|
12142
|
+
var CONVERT_TO_CAMELCASE = /(_+)(\w)/g;
|
12141
12143
|
var CONVERT_TO_UNDERSCORE = /([A-Z])/g;
|
12142
12144
|
|
12143
|
-
var TEST_CAMEL_CASE = /^_?[^_]+$/;
|
12145
|
+
var TEST_CAMEL_CASE = /^_?(_+[A-Z0-9]|[^_])+$/;
|
12144
12146
|
var TEST_UNDERSCORE = /^[a-z0-9_]+$/;
|
12145
12147
|
|
12146
12148
|
scrivito.attributeInflection = {
|
@@ -12159,11 +12161,305 @@ if (!window.scrivito) {
|
|
12159
12161
|
},
|
12160
12162
|
|
12161
12163
|
camelCase: function camelCase(name) {
|
12162
|
-
return name.replace(CONVERT_TO_CAMELCASE, function (match,
|
12163
|
-
|
12164
|
+
return name.replace(CONVERT_TO_CAMELCASE, function (match, underscores, nextChar, index) {
|
12165
|
+
if (!index) {
|
12166
|
+
return match;
|
12167
|
+
}
|
12168
|
+
if (nextChar.toUpperCase() === nextChar) {
|
12169
|
+
return match;
|
12170
|
+
}
|
12171
|
+
|
12172
|
+
return "" + underscores.substr(1) + nextChar.toUpperCase();
|
12173
|
+
});
|
12174
|
+
}
|
12175
|
+
};
|
12176
|
+
})();
|
12177
|
+
'use strict';
|
12178
|
+
|
12179
|
+
var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();
|
12180
|
+
|
12181
|
+
(function () {
|
12182
|
+
scrivito.AttributeSerializer = {
|
12183
|
+
serialize: function serialize(attributes) {
|
12184
|
+
var serializedAttributes = {};
|
12185
|
+
_.each(attributes, function (_ref, name) {
|
12186
|
+
var _ref2 = _slicedToArray(_ref, 2);
|
12187
|
+
|
12188
|
+
var value = _ref2[0];
|
12189
|
+
var attrInfo = _ref2[1];
|
12190
|
+
|
12191
|
+
var serializedName = convertCamelCasedAttributeName(name);
|
12192
|
+
if (scrivito.Attribute.isSystemAttribute(serializedName)) {
|
12193
|
+
serializedAttributes[serializedName] = value;
|
12194
|
+
} else {
|
12195
|
+
var _attrInfo = _slicedToArray(attrInfo, 2);
|
12196
|
+
|
12197
|
+
var attrType = _attrInfo[0];
|
12198
|
+
var attrOptions = _attrInfo[1];
|
12199
|
+
|
12200
|
+
serializedAttributes[serializedName] = [serializeAttributeType(attrType, name), valueOrNull(serializeAttributeValue(attrType, attrOptions, value, name))];
|
12201
|
+
}
|
12164
12202
|
});
|
12203
|
+
|
12204
|
+
return serializedAttributes;
|
12165
12205
|
}
|
12166
12206
|
};
|
12207
|
+
|
12208
|
+
function convertCamelCasedAttributeName(name) {
|
12209
|
+
if (!scrivito.attributeInflection.isCamelCase(name)) {
|
12210
|
+
throw new scrivito.ArgumentError('Attribute names have to be in camel case.');
|
12211
|
+
}
|
12212
|
+
|
12213
|
+
return scrivito.attributeInflection.underscore(name);
|
12214
|
+
}
|
12215
|
+
|
12216
|
+
function serializeAttributeType(type, name) {
|
12217
|
+
switch (type) {
|
12218
|
+
case 'enum':
|
12219
|
+
return 'string';
|
12220
|
+
case 'float':
|
12221
|
+
case 'integer':
|
12222
|
+
return 'number';
|
12223
|
+
case 'multienum':
|
12224
|
+
return 'stringlist';
|
12225
|
+
case 'binary':
|
12226
|
+
case 'date':
|
12227
|
+
case 'html':
|
12228
|
+
case 'link':
|
12229
|
+
case 'linklist':
|
12230
|
+
case 'reference':
|
12231
|
+
case 'referencelist':
|
12232
|
+
case 'string':
|
12233
|
+
case 'stringlist':
|
12234
|
+
case 'widgetlist':
|
12235
|
+
return type;
|
12236
|
+
default:
|
12237
|
+
throw new scrivito.ArgumentError('Attribute "' + name + '" is of unsupported type "' + type + '".');
|
12238
|
+
}
|
12239
|
+
}
|
12240
|
+
|
12241
|
+
function serializeAttributeValue(type, options, value, name) {
|
12242
|
+
if (value === null) {
|
12243
|
+
return value;
|
12244
|
+
}
|
12245
|
+
|
12246
|
+
switch (type) {
|
12247
|
+
case 'binary':
|
12248
|
+
return serializeBinaryAttributeValue(value, name);
|
12249
|
+
case 'date':
|
12250
|
+
return serializeDateAttributeValue(value, name);
|
12251
|
+
case 'enum':
|
12252
|
+
return serializeEnumAttributeValue(options, value, name);
|
12253
|
+
case 'float':
|
12254
|
+
return serializeFloatAttributeValue(value, name);
|
12255
|
+
case 'html':
|
12256
|
+
return serializeHtmlAttributeValue(value, name);
|
12257
|
+
case 'integer':
|
12258
|
+
return serializeIntegerAttributeValue(value, name);
|
12259
|
+
case 'link':
|
12260
|
+
return serializeLinkAttributeValue(value, name);
|
12261
|
+
case 'linklist':
|
12262
|
+
return serializeLinklistAttributeValue(value, name);
|
12263
|
+
case 'multienum':
|
12264
|
+
return serializeMultienumAttributeValue(options, value, name);
|
12265
|
+
case 'reference':
|
12266
|
+
return serializeReferenceAttributeValue(value, name);
|
12267
|
+
case 'referencelist':
|
12268
|
+
return serializeReferencelistAttributeValue(value, name);
|
12269
|
+
case 'string':
|
12270
|
+
return serializeStringAttributeValue(value, name);
|
12271
|
+
case 'stringlist':
|
12272
|
+
return serializeStringlistAttributeValue(value, name);
|
12273
|
+
case 'widgetlist':
|
12274
|
+
return serializeWidgetlistAttributeValue(value, name);
|
12275
|
+
default:
|
12276
|
+
throw new scrivito.InternalError('serializeAttributeValue is not implemented for "' + type + '".');
|
12277
|
+
}
|
12278
|
+
}
|
12279
|
+
|
12280
|
+
function valueOrNull(value) {
|
12281
|
+
if ((_.isString(value) || _.isArray(value)) && _.isEmpty(value)) {
|
12282
|
+
return null;
|
12283
|
+
}
|
12284
|
+
return value;
|
12285
|
+
}
|
12286
|
+
|
12287
|
+
function throwInvalidAttributeValue(value, name, expected) {
|
12288
|
+
throw new scrivito.ArgumentError('Unexpected value ' + scrivito.prettyPrint(value) + ' for' + (' attribute "' + name + '". Expected: ' + expected));
|
12289
|
+
}
|
12290
|
+
|
12291
|
+
function serializeBinaryAttributeValue(value, name) {
|
12292
|
+
if (value instanceof scrivito.Binary) {
|
12293
|
+
return { id: value.id };
|
12294
|
+
}
|
12295
|
+
throwInvalidAttributeValue(value, name, 'A Binary.');
|
12296
|
+
}
|
12297
|
+
|
12298
|
+
function serializeDateAttributeValue(value, name) {
|
12299
|
+
if (_.isDate(value)) {
|
12300
|
+
return scrivito.types.formatDateToString(value);
|
12301
|
+
}
|
12302
|
+
if (scrivito.types.isValidDateString(value)) {
|
12303
|
+
return value;
|
12304
|
+
}
|
12305
|
+
throwInvalidAttributeValue(value, name, 'A Date.');
|
12306
|
+
}
|
12307
|
+
|
12308
|
+
function serializeEnumAttributeValue(_ref3, value, name) {
|
12309
|
+
var validValues = _ref3.validValues;
|
12310
|
+
|
12311
|
+
if (_.contains(validValues, value)) {
|
12312
|
+
return value;
|
12313
|
+
}
|
12314
|
+
|
12315
|
+
var e = 'Valid attribute values are contained in its "validValues" array [' + validValues + '].';
|
12316
|
+
throwInvalidAttributeValue(value, name, e);
|
12317
|
+
}
|
12318
|
+
|
12319
|
+
function serializeFloatAttributeValue(value, name) {
|
12320
|
+
if (scrivito.types.isValidFloat(value)) {
|
12321
|
+
return value;
|
12322
|
+
}
|
12323
|
+
|
12324
|
+
var invalidValue = value;
|
12325
|
+
if (_.isNumber(value)) {
|
12326
|
+
invalidValue = String(value);
|
12327
|
+
}
|
12328
|
+
throwInvalidAttributeValue(invalidValue, name, 'A Number, that is #isFinite().');
|
12329
|
+
}
|
12330
|
+
|
12331
|
+
function serializeHtmlAttributeValue(value, name) {
|
12332
|
+
if (_.isString(value)) {
|
12333
|
+
return value;
|
12334
|
+
}
|
12335
|
+
throwInvalidAttributeValue(value, name, 'A String.');
|
12336
|
+
}
|
12337
|
+
|
12338
|
+
function serializeIntegerAttributeValue(value, name) {
|
12339
|
+
if (scrivito.types.isValidInteger(value)) {
|
12340
|
+
return value;
|
12341
|
+
}
|
12342
|
+
throwInvalidAttributeValue(value, name, 'A Number, that is #isSafeInteger().');
|
12343
|
+
}
|
12344
|
+
|
12345
|
+
function serializeLinkAttributeValue(value, name) {
|
12346
|
+
if (validLinkObject(value)) {
|
12347
|
+
return convertLinkToCmsApi(value);
|
12348
|
+
}
|
12349
|
+
throwInvalidAttributeValue(value, name, 'A Link instance.');
|
12350
|
+
}
|
12351
|
+
|
12352
|
+
function serializeLinklistAttributeValue(value, name) {
|
12353
|
+
if (_.isArray(value) && _.every(value, validLinkObject)) {
|
12354
|
+
return _.map(value, convertLinkToCmsApi);
|
12355
|
+
}
|
12356
|
+
throwInvalidAttributeValue(value, name, 'An array of Link instances.');
|
12357
|
+
}
|
12358
|
+
|
12359
|
+
function validLinkObject(value) {
|
12360
|
+
if (value instanceof scrivito.BasicLink) {
|
12361
|
+
return true;
|
12362
|
+
}
|
12363
|
+
|
12364
|
+
// check if value is backend compatible
|
12365
|
+
if (!_.isObject(value)) {
|
12366
|
+
return false;
|
12367
|
+
}
|
12368
|
+
var invalidKeys = _.without(_.keys(value), 'fragment', 'obj_id', 'query', 'target', 'title', 'url');
|
12369
|
+
return _.isEmpty(invalidKeys);
|
12370
|
+
}
|
12371
|
+
|
12372
|
+
function convertLinkToCmsApi(value) {
|
12373
|
+
var backendLink = {
|
12374
|
+
fragment: value.fragment,
|
12375
|
+
query: value.query,
|
12376
|
+
target: value.target,
|
12377
|
+
title: value.title,
|
12378
|
+
url: value.url
|
12379
|
+
};
|
12380
|
+
backendLink.obj_id = value.objId || value.obj_id;
|
12381
|
+
|
12382
|
+
return _.mapObject(backendLink, function (v) {
|
12383
|
+
return v || null;
|
12384
|
+
});
|
12385
|
+
}
|
12386
|
+
|
12387
|
+
function serializeMultienumAttributeValue(_ref4, value, name) {
|
12388
|
+
var validValues = _ref4.validValues;
|
12389
|
+
|
12390
|
+
var errorMessage = 'An array with values from ' + scrivito.prettyPrint(validValues) + '.';
|
12391
|
+
|
12392
|
+
if (!_.isArray(value) || !_.every(value, _.isString)) {
|
12393
|
+
throwInvalidAttributeValue(value, name, errorMessage);
|
12394
|
+
}
|
12395
|
+
|
12396
|
+
var forbiddenValues = _.difference(value, validValues);
|
12397
|
+
if (forbiddenValues.length) {
|
12398
|
+
var e = errorMessage + ' Forbidden values: ' + scrivito.prettyPrint(forbiddenValues) + '.';
|
12399
|
+
throwInvalidAttributeValue(value, name, e);
|
12400
|
+
}
|
12401
|
+
return value;
|
12402
|
+
}
|
12403
|
+
|
12404
|
+
function serializeReferenceAttributeValue(value, name) {
|
12405
|
+
if (isValidReference(value)) {
|
12406
|
+
return serializeSingleReferenceValue(value);
|
12407
|
+
}
|
12408
|
+
throwInvalidAttributeValue(value, name, 'A BasicObj or a String ID.');
|
12409
|
+
}
|
12410
|
+
|
12411
|
+
function serializeReferencelistAttributeValue(value, name) {
|
12412
|
+
if (isValidReferencelistValue(value)) {
|
12413
|
+
return _.map(value, serializeSingleReferenceValue);
|
12414
|
+
}
|
12415
|
+
throwInvalidAttributeValue(value, name, 'An array with BasicObjs or String IDs.');
|
12416
|
+
}
|
12417
|
+
|
12418
|
+
function serializeSingleReferenceValue(value) {
|
12419
|
+
if (value instanceof scrivito.BasicObj) {
|
12420
|
+
return value.id;
|
12421
|
+
}
|
12422
|
+
return value;
|
12423
|
+
}
|
12424
|
+
|
12425
|
+
function isValidReference(value) {
|
12426
|
+
return _.isString(value) || value instanceof scrivito.BasicObj;
|
12427
|
+
}
|
12428
|
+
|
12429
|
+
function isValidReferencelistValue(value) {
|
12430
|
+
return _.isArray(value) && _.every(value, function (v) {
|
12431
|
+
return isValidReference(v);
|
12432
|
+
});
|
12433
|
+
}
|
12434
|
+
|
12435
|
+
function serializeStringAttributeValue(value, name) {
|
12436
|
+
if (isValidString(value)) {
|
12437
|
+
return value.toString();
|
12438
|
+
}
|
12439
|
+
throwInvalidAttributeValue(value, name, 'A String.');
|
12440
|
+
}
|
12441
|
+
|
12442
|
+
function serializeStringlistAttributeValue(value, name) {
|
12443
|
+
if (_.isArray(value) && _.every(value, function (v) {
|
12444
|
+
return isValidString(v);
|
12445
|
+
})) {
|
12446
|
+
return _.invoke(value, 'toString');
|
12447
|
+
}
|
12448
|
+
throwInvalidAttributeValue(value, name, 'An array of strings.');
|
12449
|
+
}
|
12450
|
+
|
12451
|
+
function isValidString(value) {
|
12452
|
+
return _.isString(value) || _.isNumber(value);
|
12453
|
+
}
|
12454
|
+
|
12455
|
+
function serializeWidgetlistAttributeValue(value, name) {
|
12456
|
+
if (_.isArray(value) && _.every(value, function (v) {
|
12457
|
+
return v instanceof scrivito.BasicWidget;
|
12458
|
+
})) {
|
12459
|
+
return _.pluck(value, 'id');
|
12460
|
+
}
|
12461
|
+
throwInvalidAttributeValue(value, name, 'An array of scrivito.BasicWidget instances.');
|
12462
|
+
}
|
12167
12463
|
})();
|
12168
12464
|
"use strict";
|
12169
12465
|
|
@@ -12239,6 +12535,43 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
12239
12535
|
})();
|
12240
12536
|
"use strict";
|
12241
12537
|
|
12538
|
+
(function () {
|
12539
|
+
var bufferedUpdates = [];
|
12540
|
+
|
12541
|
+
var isUpdateScheduled = function isUpdateScheduled() {
|
12542
|
+
return bufferedUpdates.length;
|
12543
|
+
};
|
12544
|
+
|
12545
|
+
function add(callback) {
|
12546
|
+
if (!isUpdateScheduled()) {
|
12547
|
+
scrivito.nextTick(function () {
|
12548
|
+
scrivito.modelState.withBatchedUpdates(function () {
|
12549
|
+
return performUpdate(bufferedUpdates);
|
12550
|
+
});
|
12551
|
+
});
|
12552
|
+
}
|
12553
|
+
|
12554
|
+
bufferedUpdates.push(callback);
|
12555
|
+
}
|
12556
|
+
|
12557
|
+
function performUpdate(callbacks) {
|
12558
|
+
bufferedUpdates = [];
|
12559
|
+
|
12560
|
+
try {
|
12561
|
+
callbacks.forEach(function (callback) {
|
12562
|
+
return callback();
|
12563
|
+
});
|
12564
|
+
} finally {
|
12565
|
+
if (isUpdateScheduled()) {
|
12566
|
+
performUpdate(bufferedUpdates);
|
12567
|
+
}
|
12568
|
+
}
|
12569
|
+
}
|
12570
|
+
|
12571
|
+
scrivito.batchedStateUpdater = { add: add };
|
12572
|
+
})();
|
12573
|
+
"use strict";
|
12574
|
+
|
12242
12575
|
(function () {
|
12243
12576
|
scrivito.BinaryUtils = {
|
12244
12577
|
isBlob: function isBlob(obj) {
|
@@ -12713,42 +13046,6 @@ function _inherits(subClass, superClass) { if (typeof superClass !== 'function'
|
|
12713
13046
|
return NetworkError;
|
12714
13047
|
})(scrivito.CommunicationError);
|
12715
13048
|
|
12716
|
-
/**
|
12717
|
-
* A `NotLoadedError` is thrown when data is accessed in a synchronous fashion but is not yet
|
12718
|
-
* available locally. For example {@link scrivito.BasicObj.get} throws a `NotLoadedError`
|
12719
|
-
* whenever a CMS object is accessed that is not yet cached in the browser.
|
12720
|
-
*/
|
12721
|
-
scrivito.NotLoadedError = (function (_scrivito$ScrivitoError5) {
|
12722
|
-
_inherits(NotLoadedError, _scrivito$ScrivitoError5);
|
12723
|
-
|
12724
|
-
/**
|
12725
|
-
* The constructor is not part of the public API and should **not** be used.
|
12726
|
-
*/
|
12727
|
-
|
12728
|
-
function NotLoadedError(loader) {
|
12729
|
-
_classCallCheck(this, NotLoadedError);
|
12730
|
-
|
12731
|
-
_get(Object.getPrototypeOf(NotLoadedError.prototype), 'constructor', this).call(this, 'Data is not yet loaded. Call the instance method "load" to load data.');
|
12732
|
-
this._loader = loader;
|
12733
|
-
}
|
12734
|
-
|
12735
|
-
_createClass(NotLoadedError, [{
|
12736
|
-
key: 'load',
|
12737
|
-
value: function load(onLoadingDone) {
|
12738
|
-
var loadPromise = this._loader();
|
12739
|
-
|
12740
|
-
if (onLoadingDone) {
|
12741
|
-
var done = function done() {
|
12742
|
-
scrivito.nextTick(onLoadingDone);
|
12743
|
-
};
|
12744
|
-
loadPromise.then(done, done);
|
12745
|
-
}
|
12746
|
-
}
|
12747
|
-
}]);
|
12748
|
-
|
12749
|
-
return NotLoadedError;
|
12750
|
-
})(scrivito.ScrivitoError);
|
12751
|
-
|
12752
13049
|
/**
|
12753
13050
|
* An error thrown in case a backend request from the UI
|
12754
13051
|
* exceeds the rate limit of the backend.
|
@@ -12772,8 +13069,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== 'function'
|
|
12772
13069
|
/**
|
12773
13070
|
* An error thrown in case a given Scrivito resource is not found.
|
12774
13071
|
*/
|
12775
|
-
scrivito.ResourceNotFoundError = (function (_scrivito$
|
12776
|
-
_inherits(ResourceNotFoundError, _scrivito$
|
13072
|
+
scrivito.ResourceNotFoundError = (function (_scrivito$ScrivitoError5) {
|
13073
|
+
_inherits(ResourceNotFoundError, _scrivito$ScrivitoError5);
|
12777
13074
|
|
12778
13075
|
/**
|
12779
13076
|
* The constructor is not part of the public API and should **not** be used.
|
@@ -12833,6 +13130,87 @@ function _inherits(subClass, superClass) { if (typeof superClass !== 'function'
|
|
12833
13130
|
})();
|
12834
13131
|
'use strict';
|
12835
13132
|
|
13133
|
+
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
13134
|
+
|
13135
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
13136
|
+
|
13137
|
+
(function () {
|
13138
|
+
var VALID_OPTIONS = ['limit', 'includeObjs'];
|
13139
|
+
|
13140
|
+
var FacetQuery = (function () {
|
13141
|
+
function FacetQuery(attribute, options, searchQuery) {
|
13142
|
+
var _this = this;
|
13143
|
+
|
13144
|
+
_classCallCheck(this, FacetQuery);
|
13145
|
+
|
13146
|
+
assertValidOptions(options);
|
13147
|
+
|
13148
|
+
this._requestParams = buildRequestParams(attribute, options, searchQuery);
|
13149
|
+
|
13150
|
+
var subStateKey = scrivito.computeCacheKey(this._requestParams);
|
13151
|
+
var modelState = scrivito.modelState.subState('facetQuery').subState(subStateKey);
|
13152
|
+
|
13153
|
+
this._loadableData = new scrivito.LoadableData({
|
13154
|
+
state: modelState,
|
13155
|
+
loader: function loader() {
|
13156
|
+
return _this._loadData();
|
13157
|
+
}
|
13158
|
+
});
|
13159
|
+
}
|
13160
|
+
|
13161
|
+
_createClass(FacetQuery, [{
|
13162
|
+
key: 'result',
|
13163
|
+
value: function result() {
|
13164
|
+
var firstFacetResult = _.first(this._loadableData.get().facets);
|
13165
|
+
|
13166
|
+
return _.map(firstFacetResult, function (rawFacetValue) {
|
13167
|
+
var name = rawFacetValue.value;
|
13168
|
+
var count = rawFacetValue.total;
|
13169
|
+
var includedObjs = _.pluck(rawFacetValue.results, 'id');
|
13170
|
+
|
13171
|
+
return new scrivito.BasicObjFacetValue(name, count, includedObjs);
|
13172
|
+
});
|
13173
|
+
}
|
13174
|
+
}, {
|
13175
|
+
key: '_loadData',
|
13176
|
+
value: function _loadData() {
|
13177
|
+
var workspaceId = scrivito.currentWorkspaceId();
|
13178
|
+
return scrivito.CmsRestApi.get('workspaces/' + workspaceId + '/objs/search', this._requestParams);
|
13179
|
+
}
|
13180
|
+
}]);
|
13181
|
+
|
13182
|
+
return FacetQuery;
|
13183
|
+
})();
|
13184
|
+
|
13185
|
+
function assertValidOptions(options) {
|
13186
|
+
var _ref;
|
13187
|
+
|
13188
|
+
var invalidOptions = (_ref = _).without.apply(_ref, [_.keys(options)].concat(VALID_OPTIONS));
|
13189
|
+
if (invalidOptions.length) {
|
13190
|
+
throw new scrivito.ArgumentError('Invalid options: ' + (scrivito.prettyPrint(invalidOptions) + '. Valid options: ' + VALID_OPTIONS));
|
13191
|
+
}
|
13192
|
+
}
|
13193
|
+
|
13194
|
+
function buildRequestParams(attribute, options, searchQuery) {
|
13195
|
+
var requestParams = {
|
13196
|
+
facets: [{
|
13197
|
+
attribute: attribute,
|
13198
|
+
limit: options.limit || 20,
|
13199
|
+
include_objs: options.includeObjs || 0
|
13200
|
+
}],
|
13201
|
+
size: 0
|
13202
|
+
};
|
13203
|
+
if (searchQuery && searchQuery.length) {
|
13204
|
+
requestParams.query = searchQuery;
|
13205
|
+
}
|
13206
|
+
|
13207
|
+
return requestParams;
|
13208
|
+
}
|
13209
|
+
|
13210
|
+
scrivito.FacetQuery = FacetQuery;
|
13211
|
+
})();
|
13212
|
+
'use strict';
|
13213
|
+
|
12836
13214
|
(function () {
|
12837
13215
|
var isDisabled = false;
|
12838
13216
|
var connectionCounter = 0;
|
@@ -12888,7 +13266,14 @@ function _inherits(subClass, superClass) { if (typeof superClass !== 'function'
|
|
12888
13266
|
connectionCounter -= 1;
|
12889
13267
|
|
12890
13268
|
if (request.status >= 200 && request.status < 300) {
|
12891
|
-
|
13269
|
+
var responseJSON = request.response;
|
13270
|
+
|
13271
|
+
if (_.isString(responseJSON)) {
|
13272
|
+
// We can't use #response here as IE11 does not handle it correctly
|
13273
|
+
responseJSON = JSON.parse(request.responseText);
|
13274
|
+
}
|
13275
|
+
|
13276
|
+
return resolve(responseJSON);
|
12892
13277
|
}
|
12893
13278
|
|
12894
13279
|
return reject(request.response);
|
@@ -12957,7 +13342,7 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr
|
|
12957
13342
|
try {
|
12958
13343
|
resolve(loadableFunction());
|
12959
13344
|
} catch (error) {
|
12960
|
-
if (
|
13345
|
+
if (scrivito.isNotLoadedError(error)) {
|
12961
13346
|
error.load(tryToSettle);
|
12962
13347
|
} else {
|
12963
13348
|
reject(error);
|
@@ -13091,7 +13476,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
13091
13476
|
}, {
|
13092
13477
|
key: 'setError',
|
13093
13478
|
value: function setError(error) {
|
13094
|
-
if (
|
13479
|
+
if (scrivito.isNotLoadedError(error)) {
|
13095
13480
|
// prevent setting a NotLoadedError, since that would
|
13096
13481
|
// unravel the space-time continuum and destroy the world.
|
13097
13482
|
var warning = new scrivito.InternalError('tried to set a Loadable to a NotLoadedError');
|
@@ -13168,13 +13553,29 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
13168
13553
|
|
13169
13554
|
var versionWhenLoadingStarted = this._currentVersion();
|
13170
13555
|
|
13171
|
-
|
13556
|
+
var pushCallbacks = [];
|
13557
|
+
var addPushCallback = function addPushCallback(callback) {
|
13558
|
+
return pushCallbacks.push(callback);
|
13559
|
+
};
|
13560
|
+
var runPushCallbacks = function runPushCallbacks() {
|
13561
|
+
return pushCallbacks.forEach(function (callback) {
|
13562
|
+
return callback();
|
13563
|
+
});
|
13564
|
+
};
|
13565
|
+
|
13566
|
+
this._loader(addPushCallback).then(function (result) {
|
13172
13567
|
return ifUnchanged(function () {
|
13173
|
-
return
|
13568
|
+
return scrivito.batchedStateUpdater.add(function () {
|
13569
|
+
_this2._value.transitionTo(AVAILABLE, result, versionWhenLoadingStarted);
|
13570
|
+
runPushCallbacks();
|
13571
|
+
});
|
13174
13572
|
});
|
13175
13573
|
}, function (error) {
|
13176
13574
|
return ifUnchanged(function () {
|
13177
|
-
return
|
13575
|
+
return scrivito.batchedStateUpdater.add(function () {
|
13576
|
+
_this2._value.transitionTo(ERROR, error, versionWhenLoadingStarted);
|
13577
|
+
runPushCallbacks();
|
13578
|
+
});
|
13178
13579
|
});
|
13179
13580
|
});
|
13180
13581
|
|
@@ -13248,6 +13649,8 @@ var _createClass = (function () { function defineProperties(target, props) { for
|
|
13248
13649
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
13249
13650
|
|
13250
13651
|
(function () {
|
13652
|
+
var loadingState = {};
|
13653
|
+
|
13251
13654
|
var EMPTY_STATE = {};
|
13252
13655
|
|
13253
13656
|
// A wrapper around a value that is retrieved asynchronously.
|
@@ -13259,7 +13662,14 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
13259
13662
|
// * it does not use Promises
|
13260
13663
|
|
13261
13664
|
var LoadableValue = (function () {
|
13262
|
-
|
13665
|
+
_createClass(LoadableValue, null, [{
|
13666
|
+
key: 'resetLoadingState',
|
13667
|
+
value: function resetLoadingState() {
|
13668
|
+
loadingState = {};
|
13669
|
+
}
|
13670
|
+
|
13671
|
+
// stateContainer is where the LoadableValue should store its state.
|
13672
|
+
}]);
|
13263
13673
|
|
13264
13674
|
function LoadableValue(stateContainer) {
|
13265
13675
|
_classCallCheck(this, LoadableValue);
|
@@ -13268,6 +13678,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
13268
13678
|
throw new scrivito.InternalError('LoadableValue needs stateContainer');
|
13269
13679
|
}
|
13270
13680
|
this._container = stateContainer;
|
13681
|
+
this._id = stateContainer.id();
|
13271
13682
|
}
|
13272
13683
|
|
13273
13684
|
// export
|
@@ -13280,14 +13691,14 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
13280
13691
|
_createClass(LoadableValue, [{
|
13281
13692
|
key: 'setLoading',
|
13282
13693
|
value: function setLoading(loadId) {
|
13283
|
-
this.
|
13694
|
+
loadingState[this._id] = loadId;
|
13284
13695
|
}
|
13285
13696
|
|
13286
13697
|
// return the current loadId. should only be called if loading.
|
13287
13698
|
}, {
|
13288
13699
|
key: 'getLoading',
|
13289
13700
|
value: function getLoading() {
|
13290
|
-
return this.
|
13701
|
+
return loadingState[this._id];
|
13291
13702
|
}
|
13292
13703
|
}, {
|
13293
13704
|
key: 'subscribe',
|
@@ -13312,6 +13723,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
13312
13723
|
}, {
|
13313
13724
|
key: 'transitionTo',
|
13314
13725
|
value: function transitionTo(status, value, version) {
|
13726
|
+
delete loadingState[this._id];
|
13315
13727
|
this._container.set({ status: status, value: value, version: version });
|
13316
13728
|
}
|
13317
13729
|
}, {
|
@@ -13337,7 +13749,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
13337
13749
|
try {
|
13338
13750
|
results.push(iteratee(item));
|
13339
13751
|
} catch (error) {
|
13340
|
-
if (
|
13752
|
+
if (scrivito.isNotLoadedError(error)) {
|
13341
13753
|
errors.push(error);
|
13342
13754
|
} else {
|
13343
13755
|
throw error;
|
@@ -13367,22 +13779,87 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
13367
13779
|
})();
|
13368
13780
|
'use strict';
|
13369
13781
|
|
13370
|
-
var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
|
13371
|
-
|
13372
13782
|
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
13373
13783
|
|
13374
|
-
function
|
13784
|
+
var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
|
13375
13785
|
|
13376
13786
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
13377
13787
|
|
13378
|
-
(function () {
|
13379
|
-
var VALID_KEYS = ['attributes', 'extend', 'name'];
|
13788
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
13380
13789
|
|
13381
|
-
|
13382
|
-
|
13383
|
-
|
13790
|
+
(function () {
|
13791
|
+
/**
|
13792
|
+
* A `NotLoadedError` is thrown when data is accessed in a synchronous fashion but is not yet
|
13793
|
+
* available locally. For example {@link scrivito.BasicObj.get} throws a `NotLoadedError`
|
13794
|
+
* whenever a CMS object is accessed that is not yet cached in the browser.
|
13795
|
+
*/
|
13384
13796
|
|
13385
|
-
|
13797
|
+
var NotLoadedError = (function (_scrivito$ScrivitoError) {
|
13798
|
+
_inherits(NotLoadedError, _scrivito$ScrivitoError);
|
13799
|
+
|
13800
|
+
/**
|
13801
|
+
* The constructor is not part of the public API and should **not** be used.
|
13802
|
+
*/
|
13803
|
+
|
13804
|
+
function NotLoadedError(loader) {
|
13805
|
+
_classCallCheck(this, NotLoadedError);
|
13806
|
+
|
13807
|
+
_get(Object.getPrototypeOf(NotLoadedError.prototype), 'constructor', this).call(this, 'Data is not yet loaded.');
|
13808
|
+
this._loader = loader;
|
13809
|
+
}
|
13810
|
+
|
13811
|
+
_createClass(NotLoadedError, [{
|
13812
|
+
key: 'load',
|
13813
|
+
value: function load(onLoadingDone) {
|
13814
|
+
var loadPromise = this._loader();
|
13815
|
+
|
13816
|
+
if (onLoadingDone) {
|
13817
|
+
var done = function done() {
|
13818
|
+
scrivito.nextTick(onLoadingDone);
|
13819
|
+
};
|
13820
|
+
loadPromise.then(done, done);
|
13821
|
+
}
|
13822
|
+
}
|
13823
|
+
|
13824
|
+
// this getter has an extravagant name, in order to avoid name clashes
|
13825
|
+
}, {
|
13826
|
+
key: 'scrivitoPrivateIsNotLoadedError',
|
13827
|
+
get: function get() {
|
13828
|
+
return true;
|
13829
|
+
}
|
13830
|
+
}]);
|
13831
|
+
|
13832
|
+
return NotLoadedError;
|
13833
|
+
})(scrivito.ScrivitoError);
|
13834
|
+
|
13835
|
+
function isNotLoadedError(error) {
|
13836
|
+
// using duck-typing instead of "instanceof", so that these errors
|
13837
|
+
// can be recognized across javascript (iframe) boundaries.
|
13838
|
+
return error.scrivitoPrivateIsNotLoadedError;
|
13839
|
+
}
|
13840
|
+
|
13841
|
+
// export
|
13842
|
+
scrivito.NotLoadedError = NotLoadedError;
|
13843
|
+
scrivito.isNotLoadedError = isNotLoadedError;
|
13844
|
+
})();
|
13845
|
+
'use strict';
|
13846
|
+
|
13847
|
+
var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
|
13848
|
+
|
13849
|
+
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
13850
|
+
|
13851
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
13852
|
+
|
13853
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
13854
|
+
|
13855
|
+
(function () {
|
13856
|
+
var VALID_KEYS = ['attributes', 'extend', 'name'];
|
13857
|
+
|
13858
|
+
var Schema = (function () {
|
13859
|
+
function Schema(definition, parent) {
|
13860
|
+
_classCallCheck(this, Schema);
|
13861
|
+
|
13862
|
+
ensureDefinitionIsValid(definition);
|
13386
13863
|
|
13387
13864
|
if (parent._scrivitoPrivateSchema) {
|
13388
13865
|
definition.attributes = _.extend({}, parent._scrivitoPrivateSchema.attributes, definition.attributes);
|
@@ -14154,6 +14631,11 @@ function _inherits(subClass, superClass) { if (typeof superClass !== 'function'
|
|
14154
14631
|
value: function fetch(_id) {
|
14155
14632
|
scrivito.asyncMethodStub();
|
14156
14633
|
}
|
14634
|
+
}, {
|
14635
|
+
key: 'fetchIncludingDeleted',
|
14636
|
+
value: function fetchIncludingDeleted(_id) {
|
14637
|
+
scrivito.asyncMethodStub();
|
14638
|
+
}
|
14157
14639
|
}, {
|
14158
14640
|
key: 'get',
|
14159
14641
|
value: function get(idOrList) {
|
@@ -14479,7 +14961,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== 'function'
|
|
14479
14961
|
key: 'lastChanged',
|
14480
14962
|
get: function get() {
|
14481
14963
|
if (this._current._last_changed) {
|
14482
|
-
return scrivito.
|
14964
|
+
return scrivito.types.parseStringToDate(this._current._last_changed);
|
14483
14965
|
}
|
14484
14966
|
|
14485
14967
|
return null;
|
@@ -14522,8 +15004,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== 'function'
|
|
14522
15004
|
key: 'children',
|
14523
15005
|
get: function get() {
|
14524
15006
|
if (this.path) {
|
14525
|
-
var
|
14526
|
-
return scrivito.iterable.collectValuesFromIterator(iterator);
|
15007
|
+
var iterable = scrivito.BasicObj.all().and('_parent_path', 'equals', this.path);
|
15008
|
+
return scrivito.iterable.collectValuesFromIterator(iterable.iterator());
|
14527
15009
|
}
|
14528
15010
|
|
14529
15011
|
return [];
|
@@ -14583,7 +15065,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== 'function'
|
|
14583
15065
|
})(scrivito.BasicAttributeContent);
|
14584
15066
|
|
14585
15067
|
scrivito.provideAsyncClassMethods(scrivito.BasicObj, {
|
14586
|
-
get: 'fetch'
|
15068
|
+
get: 'fetch',
|
15069
|
+
getIncludingDeleted: 'fetchIncludingDeleted'
|
14587
15070
|
});
|
14588
15071
|
|
14589
15072
|
scrivito.provideAsyncInstanceMethods(scrivito.BasicObj, {
|
@@ -14660,6 +15143,44 @@ function _inherits(subClass, superClass) { if (typeof superClass !== 'function'
|
|
14660
15143
|
throw new scrivito.ResourceNotFoundError('Obj with id "' + id + '" not found.');
|
14661
15144
|
}
|
14662
15145
|
})();
|
15146
|
+
"use strict";
|
15147
|
+
|
15148
|
+
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
15149
|
+
|
15150
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
15151
|
+
|
15152
|
+
(function () {
|
15153
|
+
var BasicObjFacetValue = (function () {
|
15154
|
+
function BasicObjFacetValue(name, count, includedObjs) {
|
15155
|
+
_classCallCheck(this, BasicObjFacetValue);
|
15156
|
+
|
15157
|
+
this._name = name;
|
15158
|
+
this._count = count;
|
15159
|
+
this._includedObjs = includedObjs;
|
15160
|
+
}
|
15161
|
+
|
15162
|
+
_createClass(BasicObjFacetValue, [{
|
15163
|
+
key: "includedObjs",
|
15164
|
+
value: function includedObjs() {
|
15165
|
+
return scrivito.BasicObj.get(this._includedObjs);
|
15166
|
+
}
|
15167
|
+
}, {
|
15168
|
+
key: "name",
|
15169
|
+
get: function get() {
|
15170
|
+
return this._name;
|
15171
|
+
}
|
15172
|
+
}, {
|
15173
|
+
key: "count",
|
15174
|
+
get: function get() {
|
15175
|
+
return this._count;
|
15176
|
+
}
|
15177
|
+
}]);
|
15178
|
+
|
15179
|
+
return BasicObjFacetValue;
|
15180
|
+
})();
|
15181
|
+
|
15182
|
+
scrivito.BasicObjFacetValue = BasicObjFacetValue;
|
15183
|
+
})();
|
14663
15184
|
'use strict';
|
14664
15185
|
|
14665
15186
|
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
@@ -14806,6 +15327,14 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
14806
15327
|
value: function getBatchSize() {
|
14807
15328
|
return this._batchSize;
|
14808
15329
|
}
|
15330
|
+
}, {
|
15331
|
+
key: 'facet',
|
15332
|
+
value: function facet(attribute) {
|
15333
|
+
var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
|
15334
|
+
|
15335
|
+
var facetQuery = new scrivito.FacetQuery(attribute, options, this._query);
|
15336
|
+
return facetQuery.result();
|
15337
|
+
}
|
14809
15338
|
}, {
|
14810
15339
|
key: 'params',
|
14811
15340
|
get: function get() {
|
@@ -15704,6 +16233,77 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
15704
16233
|
});
|
15705
16234
|
}
|
15706
16235
|
})();
|
16236
|
+
"use strict";
|
16237
|
+
|
16238
|
+
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
16239
|
+
|
16240
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
16241
|
+
|
16242
|
+
(function () {
|
16243
|
+
/**
|
16244
|
+
* Instances of this class represent the result of a faceted search.
|
16245
|
+
*/
|
16246
|
+
|
16247
|
+
var ObjFacetValue = (function () {
|
16248
|
+
function ObjFacetValue(registry, basicObjFacetValue) {
|
16249
|
+
_classCallCheck(this, ObjFacetValue);
|
16250
|
+
|
16251
|
+
this._registry = registry;
|
16252
|
+
this._basicObjFacetValue = basicObjFacetValue;
|
16253
|
+
}
|
16254
|
+
|
16255
|
+
/**
|
16256
|
+
* The name of this ObjFacetValue, i.e. the value of the attribute.
|
16257
|
+
*
|
16258
|
+
* Example: If you do faceting using the attribute `color`,
|
16259
|
+
* you might receive an `ObjFacetValue` with the name `yellow`,
|
16260
|
+
* another one with the name `green` and so on.
|
16261
|
+
*
|
16262
|
+
* @type {String}
|
16263
|
+
*/
|
16264
|
+
|
16265
|
+
_createClass(ObjFacetValue, [{
|
16266
|
+
key: "includedObjs",
|
16267
|
+
|
16268
|
+
/**
|
16269
|
+
* The Objs that were included in this search.
|
16270
|
+
*
|
16271
|
+
* If you did not specify `includeObjs` in your facet options, an empty array is returned.
|
16272
|
+
* The Objs are ordered by relevance.
|
16273
|
+
*
|
16274
|
+
* @throws {scrivito.NotLoadedError} If some of the data is not yet loaded.
|
16275
|
+
* @return {Array<Obj>}
|
16276
|
+
*/
|
16277
|
+
value: function includedObjs() {
|
16278
|
+
var response = this._basicObjFacetValue.includedObjs();
|
16279
|
+
return scrivito.wrapInAppClass(this._registry, response);
|
16280
|
+
}
|
16281
|
+
}, {
|
16282
|
+
key: "name",
|
16283
|
+
get: function get() {
|
16284
|
+
return this._basicObjFacetValue.name;
|
16285
|
+
}
|
16286
|
+
|
16287
|
+
/**
|
16288
|
+
* Total number of Objs available that have this value.
|
16289
|
+
*
|
16290
|
+
* Note that this refers to all Objs, not just the Objs included in this search.
|
16291
|
+
* Also note that the count is approximate.
|
16292
|
+
*
|
16293
|
+
* @type {Number}
|
16294
|
+
*/
|
16295
|
+
}, {
|
16296
|
+
key: "count",
|
16297
|
+
get: function get() {
|
16298
|
+
return this._basicObjFacetValue.count;
|
16299
|
+
}
|
16300
|
+
}]);
|
16301
|
+
|
16302
|
+
return ObjFacetValue;
|
16303
|
+
})();
|
16304
|
+
|
16305
|
+
scrivito.ObjFacetValue = ObjFacetValue;
|
16306
|
+
})();
|
15707
16307
|
'use strict';
|
15708
16308
|
|
15709
16309
|
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
@@ -15725,6 +16325,10 @@ function _inherits(subClass, superClass) { if (typeof superClass !== 'function'
|
|
15725
16325
|
return iterable;
|
15726
16326
|
}
|
15727
16327
|
|
16328
|
+
function wrap(response) {
|
16329
|
+
return scrivito.wrapInAppClass(registry, response);
|
16330
|
+
}
|
16331
|
+
|
15728
16332
|
/**
|
15729
16333
|
* The base class for CMS objects.
|
15730
16334
|
*
|
@@ -15749,11 +16353,28 @@ function _inherits(subClass, superClass) { if (typeof superClass !== 'function'
|
|
15749
16353
|
}
|
15750
16354
|
|
15751
16355
|
_createClass(Obj, [{
|
15752
|
-
key: '
|
16356
|
+
key: 'isBinary',
|
16357
|
+
|
16358
|
+
/**
|
16359
|
+
* This method indicates whether the Obj represents binary data. Binaries are
|
16360
|
+
* handled differently in that they are not rendered using the normal layout
|
16361
|
+
* but sent as a file. Examples of binary resources are Images or PDFs.
|
16362
|
+
*
|
16363
|
+
* Every Obj that has a `blob` attribute of the `binary` type is
|
16364
|
+
* considered a binary
|
16365
|
+
*
|
16366
|
+
* @returns {Boolean} `true` if this Obj represents a binary resource.
|
16367
|
+
*/
|
16368
|
+
value: function isBinary() {
|
16369
|
+
var blobTypeInfo = this.constructor._scrivitoPrivateSchema.attributes.blob;
|
16370
|
+
return blobTypeInfo === 'binary';
|
16371
|
+
}
|
15753
16372
|
|
15754
16373
|
/**
|
15755
16374
|
* Destroy this CMS object in the current Workspace.
|
15756
16375
|
*/
|
16376
|
+
}, {
|
16377
|
+
key: 'destroy',
|
15757
16378
|
value: function destroy() {
|
15758
16379
|
this._scrivitoPrivateContent.destroy();
|
15759
16380
|
}
|
@@ -15761,17 +16382,26 @@ function _inherits(subClass, superClass) { if (typeof superClass !== 'function'
|
|
15761
16382
|
/**
|
15762
16383
|
* Access widgets by their ids
|
15763
16384
|
*
|
16385
|
+
* Returns `null` if no matching Widget exists.
|
16386
|
+
*
|
15764
16387
|
* @param {String} id - the widget's id
|
15765
|
-
* @returns {
|
16388
|
+
* @returns {?Widget}
|
15766
16389
|
*/
|
15767
16390
|
}, {
|
15768
16391
|
key: 'widget',
|
15769
16392
|
value: function widget(id) {
|
15770
|
-
|
16393
|
+
return wrap(this._scrivitoPrivateContent.widget(id));
|
16394
|
+
}
|
15771
16395
|
|
15772
|
-
|
15773
|
-
|
15774
|
-
|
16396
|
+
/**
|
16397
|
+
* Returns all {@link Widget widgets} of the given CMS object.
|
16398
|
+
*
|
16399
|
+
* @returns {Widget[]}
|
16400
|
+
*/
|
16401
|
+
}, {
|
16402
|
+
key: 'widgets',
|
16403
|
+
value: function widgets() {
|
16404
|
+
return wrap(this._scrivitoPrivateContent.widgets());
|
15775
16405
|
}
|
15776
16406
|
}, {
|
15777
16407
|
key: 'lastChanged',
|
@@ -15795,6 +16425,65 @@ function _inherits(subClass, superClass) { if (typeof superClass !== 'function'
|
|
15795
16425
|
return this._scrivitoPrivateContent.path;
|
15796
16426
|
}
|
15797
16427
|
|
16428
|
+
/**
|
16429
|
+
* Returns the {@link Obj} that is the parent of this Obj.
|
16430
|
+
* Returns `null` if the obj has no `path` or is the root Obj.
|
16431
|
+
*
|
16432
|
+
* Throws a {@link scrivito.NotLoadedError} if the parent is not yet loaded.
|
16433
|
+
*
|
16434
|
+
* @type {?Obj}
|
16435
|
+
*/
|
16436
|
+
}, {
|
16437
|
+
key: 'parent',
|
16438
|
+
get: function get() {
|
16439
|
+
return wrap(this._scrivitoPrivateContent.parent);
|
16440
|
+
}
|
16441
|
+
|
16442
|
+
/**
|
16443
|
+
* Returns an Array of all the ancestor {@link Obj Objs}, starting at the
|
16444
|
+
* root and ending at the parent of this object.
|
16445
|
+
*
|
16446
|
+
* Throws a {@link scrivito.NotLoadedError} if the ancestors have not yet been loaded.
|
16447
|
+
*
|
16448
|
+
* @type {Obj[]}
|
16449
|
+
*/
|
16450
|
+
}, {
|
16451
|
+
key: 'ancestors',
|
16452
|
+
get: function get() {
|
16453
|
+
return wrap(this._scrivitoPrivateContent.ancestors);
|
16454
|
+
}
|
16455
|
+
|
16456
|
+
/**
|
16457
|
+
* Returns a list of all {@link Obj Objs} that link to this Obj.
|
16458
|
+
*
|
16459
|
+
* This includes all CMS objects in which at least one `html`,
|
16460
|
+
* `link`, `linklist`, `reference` or `referencelist` attribute links to this CMS object.
|
16461
|
+
*
|
16462
|
+
* Attributes inside {@link Widget Widgets} are considered, too.
|
16463
|
+
*
|
16464
|
+
* Throws a {@link scrivito.NotLoadedError} if the backlinks have not yet been loaded.
|
16465
|
+
*
|
16466
|
+
* @type {Obj[]}
|
16467
|
+
*/
|
16468
|
+
}, {
|
16469
|
+
key: 'backlinks',
|
16470
|
+
get: function get() {
|
16471
|
+
return wrap(this._scrivitoPrivateContent.backlinks);
|
16472
|
+
}
|
16473
|
+
|
16474
|
+
/**
|
16475
|
+
* Returns a list of all child {@link Obj Objs}.
|
16476
|
+
*
|
16477
|
+
* Throws a {@link scrivito.NotLoadedError} if the children have not yet been loaded.
|
16478
|
+
*
|
16479
|
+
* @type {Obj[]}
|
16480
|
+
*/
|
16481
|
+
}, {
|
16482
|
+
key: 'children',
|
16483
|
+
get: function get() {
|
16484
|
+
return wrap(this._scrivitoPrivateContent.children);
|
16485
|
+
}
|
16486
|
+
|
15798
16487
|
/**
|
15799
16488
|
* The permalink of the CMS object
|
15800
16489
|
* @type {?String}
|
@@ -15827,6 +16516,34 @@ function _inherits(subClass, superClass) { if (typeof superClass !== 'function'
|
|
15827
16516
|
return scrivito.wrapInAppClass(registry, instance);
|
15828
16517
|
}
|
15829
16518
|
|
16519
|
+
/**
|
16520
|
+
* Get a given Obj by its `path`.
|
16521
|
+
*
|
16522
|
+
* Returns `null` if no matching Obj exists.
|
16523
|
+
*
|
16524
|
+
* @param {String} path - The path of the Obj
|
16525
|
+
* @returns {?Obj}
|
16526
|
+
*/
|
16527
|
+
}, {
|
16528
|
+
key: 'getByPath',
|
16529
|
+
value: function getByPath(path) {
|
16530
|
+
return wrap(scrivito.BasicObj.getByPath(path));
|
16531
|
+
}
|
16532
|
+
|
16533
|
+
/**
|
16534
|
+
* Get a given Obj by its `permalink`.
|
16535
|
+
*
|
16536
|
+
* Returns `null` if no matching Obj exists.
|
16537
|
+
*
|
16538
|
+
* @param {String} permalink - The permalink of the Obj
|
16539
|
+
* @returns {?Obj}
|
16540
|
+
*/
|
16541
|
+
}, {
|
16542
|
+
key: 'getByPermalink',
|
16543
|
+
value: function getByPermalink(permalink) {
|
16544
|
+
return wrap(scrivito.BasicObj.getByPermalink(permalink));
|
16545
|
+
}
|
16546
|
+
|
15830
16547
|
/**
|
15831
16548
|
* Returns an {@link ObjSearchIterable} of all {@link Obj}s.
|
15832
16549
|
* @return {ObjSearchIterable}
|
@@ -15893,9 +16610,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== 'function'
|
|
15893
16610
|
attributes._objClass = appClassName;
|
15894
16611
|
var attributesWithTypeInfo = scrivito.AttributeContentFactory.prepareAttributes(attributes, schema, appClassName);
|
15895
16612
|
|
15896
|
-
|
15897
|
-
|
15898
|
-
return scrivito.wrapInAppClass(registry, basicObj);
|
16613
|
+
return wrap(scrivito.BasicObj.create(attributesWithTypeInfo));
|
15899
16614
|
}
|
15900
16615
|
}]);
|
15901
16616
|
|
@@ -15911,7 +16626,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== 'function'
|
|
15911
16626
|
|
15912
16627
|
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
15913
16628
|
|
15914
|
-
var _get = function get(
|
16629
|
+
var _get = function get(_x3, _x4, _x5) { var _again = true; _function: while (_again) { var object = _x3, property = _x4, receiver = _x5; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x3 = parent; _x4 = property; _x5 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
|
15915
16630
|
|
15916
16631
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
15917
16632
|
|
@@ -15988,7 +16703,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
|
|
15988
16703
|
*
|
15989
16704
|
* **`starts_with`**
|
15990
16705
|
*
|
15991
|
-
* The `starts_with` is intended for programmatic
|
16706
|
+
* The `starts_with` is intended for programmatic comparisons of string values.
|
15992
16707
|
*
|
15993
16708
|
* The `starts_with` operator has a precision limit:
|
15994
16709
|
* Only prefixes of up to 20 characters are guaranteed to be matched.
|
@@ -16234,6 +16949,45 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
|
|
16234
16949
|
var unwrappedValue = scrivito.unwrapAppClassValues(value);
|
16235
16950
|
return _get(Object.getPrototypeOf(ObjSearchIterable.prototype), "andNot", this).call(this, field, operator, unwrappedValue);
|
16236
16951
|
}
|
16952
|
+
|
16953
|
+
/**
|
16954
|
+
* Perform a faceted search over one attribute to retrieve structured results for
|
16955
|
+
* individual values of this attribute.
|
16956
|
+
*
|
16957
|
+
* Applicable to attributes of the following types: `string`, `stringlist`, `enum` and
|
16958
|
+
* `multienum`.
|
16959
|
+
*
|
16960
|
+
* Please note that there is a precision limit for faceting: Only the first 50 characters
|
16961
|
+
* of a string are guaranteed to be considered for faceting. If two string values have the
|
16962
|
+
* same first 50 characters, they may be grouped into the same facet value.
|
16963
|
+
*
|
16964
|
+
* @param {String} attribute The name of an attribute.
|
16965
|
+
* @param {Object} [option={}] - The options to facet a request with.
|
16966
|
+
* @param {Number} option.limit - The maximum number of unique values to return.
|
16967
|
+
* Defaults to `20`.
|
16968
|
+
* @param {Number} option.includeObjs - The number of Objs to fetch for each unique value.
|
16969
|
+
* Defaults to `0`.
|
16970
|
+
*
|
16971
|
+
* @throws {scrivito.ArgumentError} If an invalid option is given.
|
16972
|
+
* @throws {scrivito.NotLoadedError} If some of the data is not yet loaded.
|
16973
|
+
* @throws {scrivito.ClientError} If the maximum number of results has been exceeded.
|
16974
|
+
* The number of results is limited to 100 with respect to the facets themselves
|
16975
|
+
* and the included Objs.
|
16976
|
+
*
|
16977
|
+
* @return {Array<scrivito.ObjFacetValue>} A list of unique values that were found for the
|
16978
|
+
* given attribute name. The list is ordered by frequency, i.e. values occurring more
|
16979
|
+
* frequently come first.
|
16980
|
+
*/
|
16981
|
+
}, {
|
16982
|
+
key: "facet",
|
16983
|
+
value: function facet(attribute) {
|
16984
|
+
var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
|
16985
|
+
|
16986
|
+
var result = _get(Object.getPrototypeOf(ObjSearchIterable.prototype), "facet", this).call(this, attribute, options);
|
16987
|
+
return _.map(result, function (facetValue) {
|
16988
|
+
return new scrivito.ObjFacetValue(registry, facetValue);
|
16989
|
+
});
|
16990
|
+
}
|
16237
16991
|
}]);
|
16238
16992
|
|
16239
16993
|
return ObjSearchIterable;
|
@@ -16246,6 +17000,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
|
|
16246
17000
|
})();
|
16247
17001
|
'use strict';
|
16248
17002
|
|
17003
|
+
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
17004
|
+
|
16249
17005
|
var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
|
16250
17006
|
|
16251
17007
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
@@ -16309,6 +17065,37 @@ function _inherits(subClass, superClass) { if (typeof superClass !== 'function'
|
|
16309
17065
|
this._scrivitoPrivateContent = new scrivito.BasicWidget(attributesWithTypeInfo);
|
16310
17066
|
}
|
16311
17067
|
|
17068
|
+
/**
|
17069
|
+
* The CMS object the widget is contained in
|
17070
|
+
* @type {Obj}
|
17071
|
+
*/
|
17072
|
+
|
17073
|
+
_createClass(Widget, [{
|
17074
|
+
key: 'copy',
|
17075
|
+
|
17076
|
+
/**
|
17077
|
+
* Create a copy of a {@link Widget}.
|
17078
|
+
*
|
17079
|
+
* The copy will have all the attributes of the original widget including its widgets.
|
17080
|
+
* Its attributes can be accessed only after it has been stored in a `widgetlist` field
|
17081
|
+
* of an {@link Obj}, since initially the copy is not stored in such a field.
|
17082
|
+
*
|
17083
|
+
* @return {Widget} a copy of the widget
|
17084
|
+
*/
|
17085
|
+
value: function copy() {
|
17086
|
+
var appClass = registry.widgetClassFor(this.objClass);
|
17087
|
+
var basicWidget = this._scrivitoPrivateContent.copy();
|
17088
|
+
|
17089
|
+
return scrivito.buildAppClassInstance(basicWidget, appClass);
|
17090
|
+
}
|
17091
|
+
}, {
|
17092
|
+
key: 'obj',
|
17093
|
+
get: function get() {
|
17094
|
+
var basicObj = this._scrivitoPrivateContent.obj;
|
17095
|
+
return scrivito.wrapInAppClass(registry, basicObj);
|
17096
|
+
}
|
17097
|
+
}]);
|
17098
|
+
|
16312
17099
|
return Widget;
|
16313
17100
|
})(scrivito.AttributeContentFactory(registry));
|
16314
17101
|
|
@@ -16374,9 +17161,11 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
16374
17161
|
|
16375
17162
|
this._loadableData = new scrivito.LoadableData({
|
16376
17163
|
state: state,
|
16377
|
-
loader: function loader() {
|
17164
|
+
loader: function loader(push) {
|
16378
17165
|
return scrivito.ObjRetrieval.retrieveObj(_this._id).then(function (data) {
|
16379
|
-
|
17166
|
+
push(function () {
|
17167
|
+
return _this._replication().notifyBackendState(data);
|
17168
|
+
});
|
16380
17169
|
return data;
|
16381
17170
|
});
|
16382
17171
|
}
|
@@ -16566,10 +17355,38 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
16566
17355
|
|
16567
17356
|
(function () {
|
16568
17357
|
scrivito.ObjQueryBatch = (function () {
|
17358
|
+
_createClass(ObjQueryBatch, null, [{
|
17359
|
+
key: "firstBatchFor",
|
17360
|
+
value: function firstBatchFor(params, batchSize) {
|
17361
|
+
return new ObjQueryBatch(params, batchSize);
|
17362
|
+
}
|
17363
|
+
|
17364
|
+
// the constructor should only be called internally,
|
17365
|
+
// i.e. by ObjQueryBatch itself
|
17366
|
+
}]);
|
17367
|
+
|
17368
|
+
function ObjQueryBatch(params, batchSize) {
|
17369
|
+
var previousBatch = arguments.length <= 2 || arguments[2] === undefined ? undefined : arguments[2];
|
17370
|
+
|
17371
|
+
_classCallCheck(this, ObjQueryBatch);
|
17372
|
+
|
17373
|
+
this._params = params;
|
17374
|
+
this._batchSize = batchSize;
|
17375
|
+
|
17376
|
+
if (previousBatch) {
|
17377
|
+
this._index = previousBatch.index + 1;
|
17378
|
+
this._continuation = previousBatch.continuationForNextBatch();
|
17379
|
+
this._previousBatch = previousBatch;
|
17380
|
+
} else {
|
17381
|
+
// First batch
|
17382
|
+
this._index = 0;
|
17383
|
+
}
|
17384
|
+
}
|
17385
|
+
|
17386
|
+
// throws NotLoadedError if not available
|
17387
|
+
|
16569
17388
|
_createClass(ObjQueryBatch, [{
|
16570
17389
|
key: "objIds",
|
16571
|
-
|
16572
|
-
// throws NotLoadedError if not available
|
16573
17390
|
value: function objIds() {
|
16574
17391
|
return this._response().results;
|
16575
17392
|
}
|
@@ -16579,31 +17396,16 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
16579
17396
|
}, {
|
16580
17397
|
key: "nextBatch",
|
16581
17398
|
value: function nextBatch() {
|
16582
|
-
|
16583
|
-
|
16584
|
-
if (continuation) {
|
16585
|
-
return new ObjQueryBatch(this._params, this._batchSize, continuation);
|
17399
|
+
if (this.continuationForNextBatch()) {
|
17400
|
+
return new ObjQueryBatch(this._params, this._batchSize, this);
|
16586
17401
|
}
|
16587
17402
|
}
|
16588
|
-
|
16589
|
-
|
16590
|
-
|
16591
|
-
|
16592
|
-
key: "firstBatchFor",
|
16593
|
-
value: function firstBatchFor(params, batchSize) {
|
16594
|
-
return new ObjQueryBatch(params, batchSize);
|
17403
|
+
}, {
|
17404
|
+
key: "continuationForNextBatch",
|
17405
|
+
value: function continuationForNextBatch() {
|
17406
|
+
return this._response().continuation;
|
16595
17407
|
}
|
16596
|
-
}
|
16597
|
-
|
16598
|
-
function ObjQueryBatch(params, batchSize, continuation) {
|
16599
|
-
_classCallCheck(this, ObjQueryBatch);
|
16600
|
-
|
16601
|
-
this._params = params;
|
16602
|
-
this._continuation = continuation;
|
16603
|
-
this._batchSize = batchSize;
|
16604
|
-
}
|
16605
|
-
|
16606
|
-
_createClass(ObjQueryBatch, [{
|
17408
|
+
}, {
|
16607
17409
|
key: "_response",
|
16608
17410
|
value: function _response() {
|
16609
17411
|
return this._data().get();
|
@@ -16613,9 +17415,8 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
16613
17415
|
value: function _data() {
|
16614
17416
|
var _this = this;
|
16615
17417
|
|
16616
|
-
var
|
16617
|
-
|
16618
|
-
var key = scrivito.ObjQueryStore.computeCacheKey(paramsWithContinuation);
|
17418
|
+
var paramsWithIndex = _.extend({}, this._params, { index: this._index });
|
17419
|
+
var key = scrivito.ObjQueryStore.computeCacheKey(paramsWithIndex);
|
16619
17420
|
|
16620
17421
|
return new scrivito.LoadableData({
|
16621
17422
|
state: scrivito.ObjQueryStore.stateContainer().subState(key),
|
@@ -16623,26 +17424,50 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
16623
17424
|
return _this._load();
|
16624
17425
|
},
|
16625
17426
|
invalidation: function invalidation() {
|
16626
|
-
return
|
17427
|
+
return _this._version();
|
16627
17428
|
}
|
16628
17429
|
});
|
16629
17430
|
}
|
16630
17431
|
}, {
|
16631
17432
|
key: "_load",
|
16632
17433
|
value: function _load() {
|
16633
|
-
var
|
16634
|
-
size: this._batchSize,
|
16635
|
-
continuation: this._continuation
|
16636
|
-
};
|
17434
|
+
var _this2 = this;
|
16637
17435
|
|
16638
|
-
|
17436
|
+
return this._fetchContinuation().then(function (continuation) {
|
17437
|
+
var batchSpecificParams = { size: _this2._batchSize, continuation: continuation };
|
16639
17438
|
|
16640
|
-
|
16641
|
-
preloadObjData(response.results);
|
17439
|
+
var requestParams = _.extend({}, _this2._params, batchSpecificParams);
|
16642
17440
|
|
16643
|
-
return response
|
17441
|
+
return scrivito.ObjQueryRetrieval.retrieve(requestParams).then(function (response) {
|
17442
|
+
preloadObjData(response.results);
|
17443
|
+
|
17444
|
+
return response;
|
17445
|
+
});
|
16644
17446
|
});
|
16645
17447
|
}
|
17448
|
+
}, {
|
17449
|
+
key: "_fetchContinuation",
|
17450
|
+
value: function _fetchContinuation() {
|
17451
|
+
var _this3 = this;
|
17452
|
+
|
17453
|
+
if (this._previousBatch) {
|
17454
|
+
return scrivito.loadAsync(function () {
|
17455
|
+
return _this3._previousBatch.continuationForNextBatch();
|
17456
|
+
});
|
17457
|
+
}
|
17458
|
+
|
17459
|
+
return scrivito.Promise.resolve();
|
17460
|
+
}
|
17461
|
+
}, {
|
17462
|
+
key: "_version",
|
17463
|
+
value: function _version() {
|
17464
|
+
return this._continuation + "|" + scrivito.ObjReplication.getWorkspaceVersion();
|
17465
|
+
}
|
17466
|
+
}, {
|
17467
|
+
key: "index",
|
17468
|
+
get: function get() {
|
17469
|
+
return this._index;
|
17470
|
+
}
|
16646
17471
|
}]);
|
16647
17472
|
|
16648
17473
|
return ObjQueryBatch;
|
@@ -16788,6 +17613,8 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
16788
17613
|
}]);
|
16789
17614
|
|
16790
17615
|
function ObjReplication(id) {
|
17616
|
+
var _this = this;
|
17617
|
+
|
16791
17618
|
_classCallCheck(this, ObjReplication);
|
16792
17619
|
|
16793
17620
|
this._id = id;
|
@@ -16795,6 +17622,9 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
16795
17622
|
this._scheduledReplication = false;
|
16796
17623
|
this._currentRequestDeferred = null;
|
16797
17624
|
this._nextRequestDeferred = null;
|
17625
|
+
this._performThrottledReplication = scrivito.throttle(function () {
|
17626
|
+
return _this._performReplication();
|
17627
|
+
}, 1000);
|
16798
17628
|
}
|
16799
17629
|
|
16800
17630
|
_createClass(ObjReplication, [{
|
@@ -16858,7 +17688,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
16858
17688
|
}, {
|
16859
17689
|
key: '_startReplication',
|
16860
17690
|
value: function _startReplication() {
|
16861
|
-
var
|
17691
|
+
var _this2 = this;
|
16862
17692
|
|
16863
17693
|
if (!_.isEmpty(diff(this._backendState, this._localState))) {
|
16864
17694
|
if (!this._replicationActive) {
|
@@ -16868,7 +17698,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
16868
17698
|
|
16869
17699
|
writeStarted(this._currentRequestDeferred.promise);
|
16870
17700
|
scrivito.nextTick(function () {
|
16871
|
-
return
|
17701
|
+
return _this2._performThrottledReplication();
|
16872
17702
|
});
|
16873
17703
|
}
|
16874
17704
|
} else {
|
@@ -16886,7 +17716,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
16886
17716
|
}, {
|
16887
17717
|
key: '_performReplication',
|
16888
17718
|
value: function _performReplication() {
|
16889
|
-
var
|
17719
|
+
var _this3 = this;
|
16890
17720
|
|
16891
17721
|
var localState = this._localState;
|
16892
17722
|
var patch = diff(this._backendState, this._localState);
|
@@ -16895,16 +17725,16 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
16895
17725
|
this._replicationActive = true;
|
16896
17726
|
|
16897
17727
|
this._replicatePatchToBackend(patch).then(function (backendState) {
|
16898
|
-
|
16899
|
-
|
16900
|
-
|
16901
|
-
|
17728
|
+
_this3._handleBackendUpdate(localState, backendState);
|
17729
|
+
_this3._currentRequestDeferred.resolve(_this3._id);
|
17730
|
+
_this3._currentRequestDeferred = null;
|
17731
|
+
_this3._replicationActive = false;
|
16902
17732
|
|
16903
|
-
|
17733
|
+
_this3._startReplication();
|
16904
17734
|
}, function (error) {
|
16905
|
-
|
16906
|
-
|
16907
|
-
|
17735
|
+
_this3._currentRequestDeferred.reject(error);
|
17736
|
+
_this3._currentRequestDeferred = null;
|
17737
|
+
_this3._replicationActive = false;
|
16908
17738
|
});
|
16909
17739
|
}
|
16910
17740
|
}, {
|
@@ -17532,6 +18362,8 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
17532
18362
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
17533
18363
|
|
17534
18364
|
(function () {
|
18365
|
+
var treeIdCounter = 0;
|
18366
|
+
|
17535
18367
|
// abstract interface for managing state
|
17536
18368
|
|
17537
18369
|
var AbstractStateStore = (function () {
|
@@ -17557,6 +18389,13 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
17557
18389
|
throw scrivito.InternalError('implement in subclass');
|
17558
18390
|
}
|
17559
18391
|
|
18392
|
+
// get a string that uniquely identifies this state
|
18393
|
+
}, {
|
18394
|
+
key: 'id',
|
18395
|
+
value: function id() {
|
18396
|
+
throw scrivito.InternalError('implement in subclass');
|
18397
|
+
}
|
18398
|
+
|
17560
18399
|
// subscribe to changes to state
|
17561
18400
|
// the listener will be called at least once after each state change.
|
17562
18401
|
// returns a function that should be invoked to unsubscribe.
|
@@ -17623,7 +18462,9 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
17623
18462
|
_classCallCheck(this, StateTree);
|
17624
18463
|
|
17625
18464
|
_get(Object.getPrototypeOf(StateTree.prototype), 'constructor', this).call(this);
|
18465
|
+
this._id = (treeIdCounter++).toString();
|
17626
18466
|
this._listeners = Immutable.Set();
|
18467
|
+
this._batchUpdates = false;
|
17627
18468
|
}
|
17628
18469
|
|
17629
18470
|
// a node of a state tree.
|
@@ -17639,9 +18480,17 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
17639
18480
|
key: 'set',
|
17640
18481
|
value: function set(newState) {
|
17641
18482
|
this._state = newState;
|
17642
|
-
|
17643
|
-
|
17644
|
-
|
18483
|
+
|
18484
|
+
if (!this._batchUpdates) {
|
18485
|
+
this._listeners.forEach(function (listener) {
|
18486
|
+
return listener();
|
18487
|
+
});
|
18488
|
+
}
|
18489
|
+
}
|
18490
|
+
}, {
|
18491
|
+
key: 'id',
|
18492
|
+
value: function id() {
|
18493
|
+
return this._id;
|
17645
18494
|
}
|
17646
18495
|
}, {
|
17647
18496
|
key: 'subscribe',
|
@@ -17658,6 +18507,27 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
17658
18507
|
_this._listeners = _this._listeners.remove(listener);
|
17659
18508
|
};
|
17660
18509
|
}
|
18510
|
+
}, {
|
18511
|
+
key: 'withBatchedUpdates',
|
18512
|
+
value: function withBatchedUpdates(fn) {
|
18513
|
+
if (this._batchUpdates) {
|
18514
|
+
throw new scrivito.InternalError('#withBatchedUpdates can not be nested');
|
18515
|
+
}
|
18516
|
+
|
18517
|
+
var stateBeforeBatchUpdate = this._state;
|
18518
|
+
|
18519
|
+
try {
|
18520
|
+
this._batchUpdates = true;
|
18521
|
+
fn();
|
18522
|
+
} finally {
|
18523
|
+
this._batchUpdates = false;
|
18524
|
+
if (stateBeforeBatchUpdate !== this._state) {
|
18525
|
+
this._listeners.forEach(function (listener) {
|
18526
|
+
return listener();
|
18527
|
+
});
|
18528
|
+
}
|
18529
|
+
}
|
18530
|
+
}
|
17661
18531
|
|
17662
18532
|
// For test purpose only.
|
17663
18533
|
}, {
|
@@ -17705,6 +18575,15 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
17705
18575
|
value: function set(newState) {
|
17706
18576
|
this._parentState.setSubState(this._key, newState);
|
17707
18577
|
}
|
18578
|
+
}, {
|
18579
|
+
key: 'id',
|
18580
|
+
value: function id() {
|
18581
|
+
// first convert backslash to double-backslash
|
18582
|
+
// then convert slash to backslash-slash
|
18583
|
+
var escapedKey = this._key.replace(/\\/g, '\\\\').replace(/\//g, '\\/');
|
18584
|
+
|
18585
|
+
return this._parentState.id() + '/' + escapedKey;
|
18586
|
+
}
|
17708
18587
|
}, {
|
17709
18588
|
key: 'subscribe',
|
17710
18589
|
value: function subscribe(listener) {
|
@@ -17735,6 +18614,22 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
17735
18614
|
// singleton instance, to be used by the data layer
|
17736
18615
|
scrivito.modelState = new StateTree();
|
17737
18616
|
})();
|
18617
|
+
"use strict";
|
18618
|
+
|
18619
|
+
(function () {
|
18620
|
+
var shouldBypassThrottle = false;
|
18621
|
+
|
18622
|
+
function throttle(fn, ms, options) {
|
18623
|
+
return shouldBypassThrottle ? fn : _.throttle(fn, ms, options);
|
18624
|
+
}
|
18625
|
+
|
18626
|
+
function bypassThrottle() {
|
18627
|
+
shouldBypassThrottle = true;
|
18628
|
+
}
|
18629
|
+
|
18630
|
+
scrivito.throttle = throttle;
|
18631
|
+
scrivito.bypassThrottle = bypassThrottle;
|
18632
|
+
})();
|
17738
18633
|
'use strict';
|
17739
18634
|
|
17740
18635
|
var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();
|
@@ -17817,7 +18712,7 @@ var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr =
|
|
17817
18712
|
throw new scrivito.InternalError("The value is not a valid ISO date time: \"" + value + "\"");
|
17818
18713
|
}
|
17819
18714
|
|
17820
|
-
return scrivito.
|
18715
|
+
return scrivito.types.parseStringToDate(value);
|
17821
18716
|
},
|
17822
18717
|
|
17823
18718
|
parseStringToDate: function parseStringToDate(dateString) {
|
@@ -17918,4 +18813,480 @@ var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr =
|
|
17918
18813
|
|
17919
18814
|
scrivito.wrapInAppClass = wrapInAppClass;
|
17920
18815
|
scrivito.unwrapAppClassValues = unwrapAppClassValues;
|
18816
|
+
scrivito.buildAppClassInstance = buildAppClassInstance;
|
18817
|
+
})();
|
18818
|
+
"use strict";
|
18819
|
+
|
18820
|
+
(function () {
|
18821
|
+
scrivito.React = {};
|
18822
|
+
})();
|
18823
|
+
'use strict';
|
18824
|
+
|
18825
|
+
(function () {
|
18826
|
+
var PropTypes = {
|
18827
|
+
oneOfRealmType: function oneOfRealmType() {
|
18828
|
+
for (var _len = arguments.length, typeNames = Array(_len), _key = 0; _key < _len; _key++) {
|
18829
|
+
typeNames[_key] = arguments[_key];
|
18830
|
+
}
|
18831
|
+
|
18832
|
+
return function (props, propName, componentName) {
|
18833
|
+
var propValue = props[propName];
|
18834
|
+
var realm = scrivito.currentRealm();
|
18835
|
+
|
18836
|
+
if (!_.any(typeNames, function (name) {
|
18837
|
+
return propValue instanceof (realm[name] || scrivito[name]);
|
18838
|
+
})) {
|
18839
|
+
return new scrivito.ArgumentError('Component "' + componentName + '" received prop "' + propName + '"' + (' with invalid value "' + propValue + '".') + (' Valid are instances of ' + formatRealmTypes(typeNames) + '.'));
|
18840
|
+
}
|
18841
|
+
};
|
18842
|
+
}
|
18843
|
+
};
|
18844
|
+
|
18845
|
+
function formatRealmTypes(typeNames) {
|
18846
|
+
return _.map(typeNames, function (typeName) {
|
18847
|
+
return '"scrivito.' + typeName + '"';
|
18848
|
+
}).join(', ');
|
18849
|
+
}
|
18850
|
+
|
18851
|
+
scrivito.PropTypes = PropTypes;
|
18852
|
+
})();
|
18853
|
+
(function () {
|
18854
|
+
function createReactClass(params) {
|
18855
|
+
var shouldRenderLoader = params.shouldRenderLoader;
|
18856
|
+
var render = params.render;
|
18857
|
+
var componentDidMount = params.componentDidMount;
|
18858
|
+
var componentWillUnmount = params.componentWillUnmount;
|
18859
|
+
|
18860
|
+
var unsubscribeModelState = undefined;
|
18861
|
+
|
18862
|
+
return React.createClass(_.extend(params, {
|
18863
|
+
componentDidMount: function () {
|
18864
|
+
var _this = this;
|
18865
|
+
|
18866
|
+
unsubscribeModelState = scrivito.modelState.subscribe(function () {
|
18867
|
+
if (_this.isMounted()) {
|
18868
|
+
_this.forceUpdate();
|
18869
|
+
}
|
18870
|
+
});
|
18871
|
+
|
18872
|
+
if (componentDidMount) {
|
18873
|
+
componentDidMount.apply(this);
|
18874
|
+
}
|
18875
|
+
},
|
18876
|
+
|
18877
|
+
componentWillUnmount: function () {
|
18878
|
+
unsubscribeModelState();
|
18879
|
+
|
18880
|
+
if (componentWillUnmount) {
|
18881
|
+
componentWillUnmount.apply(this);
|
18882
|
+
}
|
18883
|
+
},
|
18884
|
+
|
18885
|
+
render: function () {
|
18886
|
+
var _this2 = this;
|
18887
|
+
|
18888
|
+
var handleError = function (error) {
|
18889
|
+
scrivito.nextTick(function () {
|
18890
|
+
throw error;
|
18891
|
+
});
|
18892
|
+
return shouldRenderLoader ? React.createElement(scrivito.LoaderError, null) : null;
|
18893
|
+
};
|
18894
|
+
|
18895
|
+
try {
|
18896
|
+
return scrivito.LoadableData.withEventualConsistency(function () {
|
18897
|
+
return render.apply(_this2);
|
18898
|
+
});
|
18899
|
+
} catch (error) {
|
18900
|
+
if (error instanceof scrivito.NotLoadedError) {
|
18901
|
+
try {
|
18902
|
+
error.load();
|
18903
|
+
} catch (error) {
|
18904
|
+
return handleError(error);
|
18905
|
+
}
|
18906
|
+
|
18907
|
+
if (this.renderWhileLoading) {
|
18908
|
+
return this.renderWhileLoading();
|
18909
|
+
}
|
18910
|
+
|
18911
|
+
return shouldRenderLoader ? React.createElement(scrivito.Loader, null) : null;
|
18912
|
+
}
|
18913
|
+
|
18914
|
+
return handleError(error);
|
18915
|
+
}
|
18916
|
+
}
|
18917
|
+
}));
|
18918
|
+
}
|
18919
|
+
|
18920
|
+
scrivito.createReactClass = createReactClass;
|
18921
|
+
})();
|
18922
|
+
"use strict";
|
18923
|
+
|
18924
|
+
(function () {
|
18925
|
+
function changeLocation(newLocation) {
|
18926
|
+
window.location = newLocation;
|
18927
|
+
}
|
18928
|
+
|
18929
|
+
// For test purpose only.
|
18930
|
+
scrivito.changeLocation = changeLocation;
|
18931
|
+
})();
|
18932
|
+
"use strict";
|
18933
|
+
|
18934
|
+
(function () {
|
18935
|
+
var registry = {};
|
18936
|
+
|
18937
|
+
var componentRegistry = {
|
18938
|
+
provideComponentClass: function provideComponentClass(appClass, componentClass) {
|
18939
|
+
registry[appClass._scrivitoPrivateSchema.name] = componentClass;
|
18940
|
+
},
|
18941
|
+
|
18942
|
+
getComponentClass: function getComponentClass(appClass) {
|
18943
|
+
return registry[appClass._scrivitoPrivateSchema.name];
|
18944
|
+
},
|
18945
|
+
|
18946
|
+
// For test purpose only.
|
18947
|
+
clear: function clear() {
|
18948
|
+
registry = {};
|
18949
|
+
}
|
18950
|
+
};
|
18951
|
+
|
18952
|
+
scrivito.componentRegistry = componentRegistry;
|
18953
|
+
})();
|
18954
|
+
(function () {
|
18955
|
+
var Content = scrivito.createReactClass({
|
18956
|
+
displayName: 'scrivito.React.Content',
|
18957
|
+
|
18958
|
+
propTypes: {
|
18959
|
+
content: scrivito.PropTypes.oneOfRealmType('Obj', 'Widget'),
|
18960
|
+
|
18961
|
+
attribute: function (props, propName, componentName) {
|
18962
|
+
var validationError = React.PropTypes.string.isRequired(props, propName, componentName);
|
18963
|
+
|
18964
|
+
if (validationError) {
|
18965
|
+
return validationError;
|
18966
|
+
}
|
18967
|
+
|
18968
|
+
var attributeName = props[propName];
|
18969
|
+
|
18970
|
+
if (/^_/.test(attributeName)) {
|
18971
|
+
return new scrivito.ArgumentError('Component "scrivito.React.Content" received prop "attribute" with invalid value: ' + ('"' + attributeName + '" is a system attribute. Only custom attributes are allowed.'));
|
18972
|
+
}
|
18973
|
+
},
|
18974
|
+
|
18975
|
+
tag: React.PropTypes.string
|
18976
|
+
},
|
18977
|
+
|
18978
|
+
getDefaultProps: function () {
|
18979
|
+
return { tag: 'div' };
|
18980
|
+
},
|
18981
|
+
|
18982
|
+
render: function () {
|
18983
|
+
var schema = this.props.content.constructor._scrivitoPrivateSchema;
|
18984
|
+
|
18985
|
+
var attributeName = this.props.attribute;
|
18986
|
+
var attributeType = schema.attributes[attributeName];
|
18987
|
+
|
18988
|
+
if (!attributeType) {
|
18989
|
+
throw new scrivito.ArgumentError('Component "scrivito.React.Content" received prop "attribute" with invalid value: ' + ('Attribute "' + attributeName + '" is not defined for content specified in prop "content".'));
|
18990
|
+
}
|
18991
|
+
|
18992
|
+
var attributeValue = this.props.content.get(attributeName);
|
18993
|
+
|
18994
|
+
switch (attributeType) {
|
18995
|
+
case 'html':
|
18996
|
+
return this._renderHtml(attributeValue);
|
18997
|
+
case 'string':
|
18998
|
+
return this._renderString(attributeValue);
|
18999
|
+
case 'widgetlist':
|
19000
|
+
return this._renderWidgetlist(attributeValue);
|
19001
|
+
}
|
19002
|
+
|
19003
|
+
return this._renderContent({ children: this.props.children });
|
19004
|
+
},
|
19005
|
+
|
19006
|
+
_renderHtml: function (attributeValue) {
|
19007
|
+
if (this.props.children) {
|
19008
|
+
return this._renderContent({ children: this.props.children });
|
19009
|
+
}
|
19010
|
+
|
19011
|
+
var props = { dangerouslySetInnerHTML: { __html: attributeValue } };
|
19012
|
+
return this._renderContent({ props: props });
|
19013
|
+
},
|
19014
|
+
|
19015
|
+
_renderString: function (attributeValue) {
|
19016
|
+
return this._renderContent({ children: this.props.children || attributeValue });
|
19017
|
+
},
|
19018
|
+
|
19019
|
+
_renderWidgetlist: function (attributeValue) {
|
19020
|
+
var children = attributeValue.map(function (widget) {
|
19021
|
+
return React.createElement(Widget, { key: widget.id, widget: widget });
|
19022
|
+
});
|
19023
|
+
return this._renderContent({ children: children });
|
19024
|
+
},
|
19025
|
+
|
19026
|
+
_renderContent: function (_ref) {
|
19027
|
+
var props = _ref.props;
|
19028
|
+
var children = _ref.children;
|
19029
|
+
|
19030
|
+
return React.createElement(this.props.tag, _.extend(this._customProps(), props), children);
|
19031
|
+
},
|
19032
|
+
|
19033
|
+
_customProps: function () {
|
19034
|
+
return _.omit(this.props, 'content', 'attribute', 'tag');
|
19035
|
+
}
|
19036
|
+
});
|
19037
|
+
|
19038
|
+
var Widget = scrivito.createReactClass({
|
19039
|
+
render: function () {
|
19040
|
+
var widget = this.props.widget;
|
19041
|
+
var componentClass = scrivito.componentRegistry.getComponentClass(widget.constructor);
|
19042
|
+
|
19043
|
+
if (!componentClass) {
|
19044
|
+
throw new scrivito.ArgumentError('No component registered for widget class "' + widget.objClass + '".');
|
19045
|
+
}
|
19046
|
+
|
19047
|
+
return React.createElement(
|
19048
|
+
'div',
|
19049
|
+
null,
|
19050
|
+
React.createElement(componentClass, { widget: this.props.widget })
|
19051
|
+
);
|
19052
|
+
}
|
19053
|
+
});
|
19054
|
+
|
19055
|
+
scrivito.React.Content = Content;
|
19056
|
+
})();
|
19057
|
+
(function () {
|
19058
|
+
var CurrentPage = scrivito.createReactClass({
|
19059
|
+
displayName: 'scrivito.React.CurrentPage',
|
19060
|
+
|
19061
|
+
render: function () {
|
19062
|
+
var currentPage = scrivito.currentPage();
|
19063
|
+
|
19064
|
+
if (!currentPage) {
|
19065
|
+
return null;
|
19066
|
+
}
|
19067
|
+
|
19068
|
+
var appClass = currentPage.constructor;
|
19069
|
+
var componentClass = scrivito.componentRegistry.getComponentClass(appClass);
|
19070
|
+
|
19071
|
+
if (!componentClass) {
|
19072
|
+
return null;
|
19073
|
+
}
|
19074
|
+
|
19075
|
+
return React.createElement(componentClass, { page: currentPage });
|
19076
|
+
}
|
19077
|
+
});
|
19078
|
+
|
19079
|
+
scrivito.React.CurrentPage = CurrentPage;
|
19080
|
+
})();
|
19081
|
+
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
19082
|
+
|
19083
|
+
(function () {
|
19084
|
+
var Image = scrivito.createReactClass({
|
19085
|
+
displayName: 'scrivito.React.Image',
|
19086
|
+
|
19087
|
+
propTypes: {
|
19088
|
+
src: scrivito.PropTypes.oneOfRealmType('Obj', 'Binary'),
|
19089
|
+
attribute: React.PropTypes.string
|
19090
|
+
},
|
19091
|
+
|
19092
|
+
getDefaultProps: function () {
|
19093
|
+
return { attribute: 'blob' };
|
19094
|
+
},
|
19095
|
+
|
19096
|
+
render: function () {
|
19097
|
+
var url = this._binary().url;
|
19098
|
+
var htmlOptions = _.omit(this.props, 'src', 'attribute');
|
19099
|
+
|
19100
|
+
return React.createElement('img', _extends({ src: url }, htmlOptions));
|
19101
|
+
},
|
19102
|
+
|
19103
|
+
_binary: function () {
|
19104
|
+
if (this.props.src instanceof scrivito.Binary) {
|
19105
|
+
return this.props.src;
|
19106
|
+
}
|
19107
|
+
|
19108
|
+
var schema = this.props.src.constructor._scrivitoPrivateSchema;
|
19109
|
+
var attributeType = schema.attributes[this.props.attribute];
|
19110
|
+
|
19111
|
+
if (!attributeType) {
|
19112
|
+
throw new scrivito.ScrivitoError('Component "scrivito.React.Image" received prop "src"' + (' with an instance of "scrivito.Obj" missing attribute "' + this.props.attribute + '".'));
|
19113
|
+
}
|
19114
|
+
|
19115
|
+
if (attributeType === 'reference') {
|
19116
|
+
var target = this.props.src.get(this.props.attribute);
|
19117
|
+
|
19118
|
+
if (target) {
|
19119
|
+
return target.get('blob');
|
19120
|
+
}
|
19121
|
+
}
|
19122
|
+
|
19123
|
+
if (attributeType === 'binary') {
|
19124
|
+
return this.props.src.get(this.props.attribute);
|
19125
|
+
}
|
19126
|
+
|
19127
|
+
throw new scrivito.ScrivitoError('Component "scrivito.React.Image" received prop "src"' + (' with an instance of "scrivito.Obj", whose attribute "' + this.props.attribute + '"') + (' is of invalid type "' + attributeType + '".') + ' Valid attribute types are "binary" and "reference".');
|
19128
|
+
}
|
19129
|
+
});
|
19130
|
+
|
19131
|
+
scrivito.React.Image = Image;
|
19132
|
+
})();
|
19133
|
+
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
19134
|
+
|
19135
|
+
(function () {
|
19136
|
+
var Link = scrivito.createReactClass({
|
19137
|
+
displayName: 'scrivito.React.Link',
|
19138
|
+
|
19139
|
+
propTypes: {
|
19140
|
+
to: scrivito.PropTypes.oneOfRealmType('Obj', 'Link')
|
19141
|
+
},
|
19142
|
+
|
19143
|
+
render: function () {
|
19144
|
+
var htmlOptions = _.omit(this.props, 'to');
|
19145
|
+
|
19146
|
+
return React.createElement(
|
19147
|
+
'a',
|
19148
|
+
_extends({ href: '#', onClick: this._onClick }, htmlOptions),
|
19149
|
+
this.props.children
|
19150
|
+
);
|
19151
|
+
},
|
19152
|
+
|
19153
|
+
_onClick: function (e) {
|
19154
|
+
e.preventDefault();
|
19155
|
+
scrivito.navigateTo(this.props.to);
|
19156
|
+
}
|
19157
|
+
});
|
19158
|
+
|
19159
|
+
scrivito.React.Link = Link;
|
19160
|
+
})();
|
19161
|
+
'use strict';
|
19162
|
+
|
19163
|
+
(function () {
|
19164
|
+
var state = scrivito.modelState.subState('currentPage');
|
19165
|
+
|
19166
|
+
function currentPage() {
|
19167
|
+
var objId = state.get();
|
19168
|
+
|
19169
|
+
if (objId) {
|
19170
|
+
try {
|
19171
|
+
return scrivito.currentRealm().Obj.get(objId);
|
19172
|
+
} catch (error) {
|
19173
|
+
if (error instanceof scrivito.NotLoadedError) {
|
19174
|
+
error.load();
|
19175
|
+
return null;
|
19176
|
+
}
|
19177
|
+
|
19178
|
+
throw error;
|
19179
|
+
}
|
19180
|
+
}
|
19181
|
+
|
19182
|
+
return null;
|
19183
|
+
}
|
19184
|
+
|
19185
|
+
function navigateTo(target) {
|
19186
|
+
if (!target) {
|
19187
|
+
throw new scrivito.ArgumentError('Missing target.');
|
19188
|
+
}
|
19189
|
+
|
19190
|
+
if (target instanceof scrivito.currentRealm().Obj) {
|
19191
|
+
if (target.isBinary()) {
|
19192
|
+
scrivito.changeLocation(target.get('blob').url);
|
19193
|
+
} else {
|
19194
|
+
state.set(target.id);
|
19195
|
+
}
|
19196
|
+
|
19197
|
+
return;
|
19198
|
+
}
|
19199
|
+
|
19200
|
+
if (target instanceof scrivito.currentRealm().Link) {
|
19201
|
+
if (target.isExternal()) {
|
19202
|
+
scrivito.changeLocation(target.url);
|
19203
|
+
} else {
|
19204
|
+
state.set(target.obj.id);
|
19205
|
+
}
|
19206
|
+
|
19207
|
+
return;
|
19208
|
+
}
|
19209
|
+
|
19210
|
+
throw new scrivito.ArgumentError('Target is invalid. Valid targets are instances of "scrivito.Obj" or "scrivito.Link".');
|
19211
|
+
}
|
19212
|
+
|
19213
|
+
scrivito.currentPage = currentPage;
|
19214
|
+
scrivito.navigateTo = navigateTo;
|
19215
|
+
})();
|
19216
|
+
"use strict";
|
19217
|
+
|
19218
|
+
(function () {
|
19219
|
+
var currentRealm = undefined;
|
19220
|
+
|
19221
|
+
function getCurrentRealm() {
|
19222
|
+
return currentRealm || window.scrivito;
|
19223
|
+
}
|
19224
|
+
|
19225
|
+
function setCurrentRealm(realm) {
|
19226
|
+
currentRealm = realm;
|
19227
|
+
}
|
19228
|
+
|
19229
|
+
scrivito.currentRealm = getCurrentRealm;
|
19230
|
+
scrivito.setCurrentRealm = setCurrentRealm;
|
19231
|
+
})();
|
19232
|
+
'use strict';
|
19233
|
+
|
19234
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
19235
|
+
|
19236
|
+
(function () {
|
19237
|
+
function createComponent(componentSpec) {
|
19238
|
+
if (typeof componentSpec === 'function') {
|
19239
|
+
return scrivito.createReactClass({
|
19240
|
+
render: function render() {
|
19241
|
+
return componentSpec(this.props);
|
19242
|
+
}
|
19243
|
+
});
|
19244
|
+
}
|
19245
|
+
|
19246
|
+
return scrivito.createReactClass(componentSpec);
|
19247
|
+
}
|
19248
|
+
|
19249
|
+
function provideComponent(appClass, componentSpec) {
|
19250
|
+
if (componentSpec.propTypes) {
|
19251
|
+
throw new scrivito.ArgumentError('Custom props is not allowed when providing a component.');
|
19252
|
+
}
|
19253
|
+
|
19254
|
+
var componentClass = createComponentForAppClass(appClass, componentSpec);
|
19255
|
+
scrivito.componentRegistry.provideComponentClass(appClass, componentClass);
|
19256
|
+
}
|
19257
|
+
|
19258
|
+
function createComponentForAppClass(appClass, componentSpec) {
|
19259
|
+
var Obj = scrivito.currentRealm().Obj;
|
19260
|
+
var Widget = scrivito.currentRealm().Widget;
|
19261
|
+
|
19262
|
+
var propName = undefined;
|
19263
|
+
var propType = undefined;
|
19264
|
+
|
19265
|
+
if (appClass.prototype instanceof Obj) {
|
19266
|
+
propName = 'page';
|
19267
|
+
propType = Obj;
|
19268
|
+
} else if (appClass.prototype instanceof Widget) {
|
19269
|
+
propName = 'widget';
|
19270
|
+
propType = Widget;
|
19271
|
+
} else {
|
19272
|
+
throw new scrivito.ArgumentError(appClass + ' is not a valid application class.');
|
19273
|
+
}
|
19274
|
+
|
19275
|
+
var propTypes = _defineProperty({}, propName, React.PropTypes.instanceOf(propType).isRequired);
|
19276
|
+
|
19277
|
+
if (typeof componentSpec === 'function') {
|
19278
|
+
return scrivito.createReactClass({
|
19279
|
+
propTypes: propTypes,
|
19280
|
+
|
19281
|
+
render: function render() {
|
19282
|
+
return componentSpec(this.props[propName]);
|
19283
|
+
}
|
19284
|
+
});
|
19285
|
+
}
|
19286
|
+
|
19287
|
+
return scrivito.createReactClass(_.extend(componentSpec, { propTypes: propTypes }));
|
19288
|
+
}
|
19289
|
+
|
19290
|
+
scrivito.createComponent = createComponent;
|
19291
|
+
scrivito.provideComponent = provideComponent;
|
17921
19292
|
})();
|