scrivito_sdk 1.6.0.rc1 → 1.6.0.rc2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/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
|
})();
|