j1-template 2021.2.9 → 2021.2.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/assets/themes/j1/adapter/js/cookieConsent.js +4 -3
- data/assets/themes/j1/adapter/js/translator.js +17 -17
- data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.js +70 -10
- data/lib/j1/version.rb +1 -1
- data/lib/starter_web/Gemfile +1 -1
- data/lib/starter_web/_config.yml +1 -1
- data/lib/starter_web/_data/modules/cookieconsent.yml +0 -1
- data/lib/starter_web/_data/modules/defaults/cookieconsent.yml +3 -1
- data/lib/starter_web/_data/modules/defaults/translator.yml +1 -1
- data/lib/starter_web/_includes/attributes.asciidoc +1 -1
- data/lib/starter_web/_plugins/lunr_index.rb +1 -1
- data/lib/starter_web/package.json +1 -1
- data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
- data/lib/starter_web/utilsrv/package.json +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91ee0616f0905e55586302ee465112ca879423feebacb51e93e04f92f4978189
|
4
|
+
data.tar.gz: c64b4a5cfab5cef176f43568c76c5ec0c2550fb7cc8a37df5e8ac97f5cbb957f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40b74cefa0cf230f69156a18b42e6df4932187c6b3b05083efdf11f6d84126e0bcc1279c375692a3360f539b183ab7de2b32a89eb584aadf8e039813bde69aba
|
7
|
+
data.tar.gz: 14207a1cd40024aaae0fe3c83a1aa0a72b36e2ba348315e3e2c06b0a8625b38be8405bbce5719c85bb1f00d8f6819e604803575f76a4dbbadb5c5010eca8b09a
|
@@ -174,7 +174,7 @@ j1.adapter['cookieConsent'] = (function (j1, window) {
|
|
174
174
|
logger.info('\n' + 'state: ' + _this.getState());
|
175
175
|
logger.info('\n' + 'module is being initialized');
|
176
176
|
|
177
|
-
j1.cookieConsent = new
|
177
|
+
j1.cookieConsent = new CookieConsent ({
|
178
178
|
contentURL: moduleOptions.contentURL, // dialog content (modals) for all supported languages
|
179
179
|
cookieName: moduleOptions.cookieName, // name of the consent cookie
|
180
180
|
cookieSameSite: moduleOptions.cookieSameSite, // restrict consent cookie
|
@@ -183,7 +183,7 @@ j1.adapter['cookieConsent'] = (function (j1, window) {
|
|
183
183
|
reloadPageOnChange: moduleOptions.reloadPageOnChange, // reload if setzings has changed
|
184
184
|
dialogContainerID: moduleOptions.dialogContainerID, // container, the dialog modal is (dynamically) loaded
|
185
185
|
xhrDataElement: moduleOptions.xhrDataElement, // container for all language-specific dialogs (modals)
|
186
|
-
postSelectionCallback: function
|
186
|
+
postSelectionCallback: moduleOptions.postSelectionCallback, // callback function, called after the user has made his selection
|
187
187
|
});
|
188
188
|
|
189
189
|
_this.setState('finished');
|
@@ -303,7 +303,8 @@ j1.adapter['cookieConsent'] = (function (j1, window) {
|
|
303
303
|
name: cookie_names.user_translate,
|
304
304
|
data: user_translate,
|
305
305
|
samesite: 'Strict',
|
306
|
-
secure: secure
|
306
|
+
secure: secure,
|
307
|
+
expires: 365
|
307
308
|
});
|
308
309
|
|
309
310
|
}
|
@@ -87,7 +87,6 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
87
87
|
var user_translate = {};
|
88
88
|
var _this;
|
89
89
|
var $modal;
|
90
|
-
var domain;
|
91
90
|
var cookie_names;
|
92
91
|
var user_consent;
|
93
92
|
var logger;
|
@@ -95,7 +94,7 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
95
94
|
var baseUrl;
|
96
95
|
var hostname;
|
97
96
|
var domain;
|
98
|
-
var
|
97
|
+
var cookie_domain;
|
99
98
|
var secure;
|
100
99
|
var logText;
|
101
100
|
var cookie_written;
|
@@ -170,6 +169,7 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
170
169
|
baseUrl = url.origin;
|
171
170
|
hostname = url.hostname;
|
172
171
|
domain = hostname.substring(hostname.lastIndexOf('.', hostname.lastIndexOf('.') - 1) + 1);
|
172
|
+
cookie_domain = (domain.includes('.')) ? '.' + domain : domain;
|
173
173
|
secure = (url.protocol.includes('https')) ? true : false;
|
174
174
|
modal_language = "{{site.language}}";
|
175
175
|
navigator_language = navigator.language || navigator.userLanguage; // userLanguage for MS IE compatibility
|
@@ -190,13 +190,6 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
190
190
|
'translationLanguage': translation_language,
|
191
191
|
};
|
192
192
|
|
193
|
-
// set sub domain settings for cookies
|
194
|
-
if(domain !== 'localhost') {
|
195
|
-
cookie_sub_domains = '.' + hostname;
|
196
|
-
} else {
|
197
|
-
cookie_sub_domains = hostname;
|
198
|
-
}
|
199
|
-
|
200
193
|
// load|initialize user translate cookie
|
201
194
|
if (j1.existsCookie(cookie_names.user_translate)) {
|
202
195
|
user_translate = j1.readCookie(cookie_names.user_translate);
|
@@ -206,6 +199,7 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
206
199
|
name: cookie_names.user_translate,
|
207
200
|
data: user_translate,
|
208
201
|
samesite: 'Strict',
|
202
|
+
secure: secure,
|
209
203
|
expires: 365
|
210
204
|
});
|
211
205
|
}
|
@@ -272,7 +266,8 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
272
266
|
name: cookie_names.user_translate,
|
273
267
|
data: user_translate,
|
274
268
|
samesite: 'Strict',
|
275
|
-
secure: secure
|
269
|
+
secure: secure,
|
270
|
+
expires: 365
|
276
271
|
});
|
277
272
|
|
278
273
|
j1.translator = new Translator({
|
@@ -300,7 +295,10 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
300
295
|
}
|
301
296
|
} else {
|
302
297
|
if (moduleOptions.translatorName === 'google') {
|
303
|
-
|
298
|
+
// remove all googtrans cookies that POTENTIALLY exists
|
299
|
+
Cookies.remove('googtrans', { domain: cookie_domain });
|
300
|
+
Cookies.remove('googtrans', { domain: hostname });
|
301
|
+
Cookies.remove('googtrans');
|
304
302
|
}
|
305
303
|
}
|
306
304
|
|
@@ -395,7 +393,7 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
395
393
|
data: user_consent,
|
396
394
|
samesite: 'Strict',
|
397
395
|
secure: secure,
|
398
|
-
expires:
|
396
|
+
expires: 365
|
399
397
|
});
|
400
398
|
|
401
399
|
// set transCode settings
|
@@ -403,11 +401,13 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
403
401
|
destLang = translation_language;
|
404
402
|
transCode = '/' + srcLang + '/' + selectedTranslationLanguage;
|
405
403
|
|
406
|
-
//
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
404
|
+
// remove all googtrans cookies that POTENTIALLY exists
|
405
|
+
Cookies.remove('googtrans', { domain: cookie_domain });
|
406
|
+
Cookies.remove('googtrans', { domain: hostname });
|
407
|
+
Cookies.remove('googtrans');
|
408
|
+
|
409
|
+
// write the googtrans cookie w/o DOMAIN!
|
410
|
+
Cookies.set('googtrans', transCode);
|
411
411
|
|
412
412
|
// reload current page (skip cache)
|
413
413
|
location.reload(true);
|
@@ -37,7 +37,7 @@
|
|
37
37
|
/* eslint JSUnfilteredForInLoop: "off" */
|
38
38
|
// -----------------------------------------------------------------------------
|
39
39
|
|
40
|
-
function
|
40
|
+
function CookieConsent(props) {
|
41
41
|
var logger = log4javascript.getLogger('j1.core.bsCookieConsent');
|
42
42
|
var self = this;
|
43
43
|
var detailedSettingsShown = false;
|
@@ -58,11 +58,12 @@ function BootstrapCookieConsent(props) {
|
|
58
58
|
contentURL: '/assets/data/cookieconsent', // URL contain the consent dialogs (modals) for ALL supported languages
|
59
59
|
cookieName: 'j1.user.translate', // name of the cookie, in which the configuration is stored
|
60
60
|
cookieStorageDays: 365, // duration the configuration cookie is stored on the client
|
61
|
-
postSelectionCallback:
|
61
|
+
postSelectionCallback: '', // callback function, called after the user has made his selection
|
62
62
|
whitelisted: [], // pages NO consent modal dialog is issued
|
63
63
|
xhrDataElement: 'consent-data', // src container for all language-specific consent dialogs (taken from contentURL)
|
64
64
|
dialogContainerID: 'consent-modal', // dest container, the dialog modal is loaded (dynamically)
|
65
65
|
cookieSameSite: 'Strict', // restrict the consent cookie to first-party (do NOT send cookie to other domains)
|
66
|
+
cookieSecure: true
|
66
67
|
};
|
67
68
|
|
68
69
|
// merge property settings
|
@@ -128,6 +129,59 @@ function BootstrapCookieConsent(props) {
|
|
128
129
|
}
|
129
130
|
};
|
130
131
|
|
132
|
+
// ---------------------------------------------------------------------------
|
133
|
+
// extend()
|
134
|
+
// deep merge of two objects
|
135
|
+
// ---------------------------------------------------------------------------
|
136
|
+
function extend () {
|
137
|
+
var extended = {};
|
138
|
+
var deep = false;
|
139
|
+
var i = 0;
|
140
|
+
var length = arguments.length;
|
141
|
+
|
142
|
+
// Check if a deep merge
|
143
|
+
if ( Object.prototype.toString.call( arguments[0] ) === '[object Boolean]' ) {
|
144
|
+
deep = arguments[0];
|
145
|
+
i++;
|
146
|
+
}
|
147
|
+
|
148
|
+
// Merge the object into the extended object
|
149
|
+
var merge = function (obj) {
|
150
|
+
for ( var prop in obj ) {
|
151
|
+
if ( Object.prototype.hasOwnProperty.call( obj, prop ) ) {
|
152
|
+
// If deep merge and property is an object, merge properties
|
153
|
+
if ( deep && Object.prototype.toString.call(obj[prop]) === '[object Object]' ) {
|
154
|
+
extended[prop] = extend( true, extended[prop], obj[prop] );
|
155
|
+
} else {
|
156
|
+
extended[prop] = obj[prop];
|
157
|
+
}
|
158
|
+
}
|
159
|
+
}
|
160
|
+
};
|
161
|
+
|
162
|
+
// Loop through each object and conduct a merge
|
163
|
+
for ( ; i < length; i++ ) {
|
164
|
+
var obj = arguments[i];
|
165
|
+
merge(obj);
|
166
|
+
}
|
167
|
+
return extended;
|
168
|
+
}
|
169
|
+
|
170
|
+
// ---------------------------------------------------------------------------
|
171
|
+
// executeFunctionByName()
|
172
|
+
// execute a function by NAME (functionName) in a browser context
|
173
|
+
// (e.g. window) the function is published
|
174
|
+
// ---------------------------------------------------------------------------
|
175
|
+
function executeFunctionByName (functionName, context /*, args */) {
|
176
|
+
var args = Array.prototype.slice.call(arguments, 2);
|
177
|
+
var namespaces = functionName.split('.');
|
178
|
+
var func = namespaces.pop();
|
179
|
+
for(var i = 0; i < namespaces.length; i++) {
|
180
|
+
context = context[namespaces[i]];
|
181
|
+
}
|
182
|
+
return context[func].apply(context, args);
|
183
|
+
}
|
184
|
+
|
131
185
|
function showDialog(options) {
|
132
186
|
Events.documentReady(function () {
|
133
187
|
|
@@ -143,11 +197,17 @@ function BootstrapCookieConsent(props) {
|
|
143
197
|
document.body.append(self.modal);
|
144
198
|
self.$modal = $(self.modal);
|
145
199
|
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
200
|
+
// ---------------------------------------------------------------------
|
201
|
+
// register events for the dialog (modal)
|
202
|
+
// ---------------------------------------------------------------------
|
203
|
+
|
204
|
+
// ---------------------------------------------------------------------
|
205
|
+
// on 'hidden'
|
206
|
+
// ---------------------------------------------------------------------
|
207
|
+
self.$modal.on('hidden.bs.modal', function () {
|
208
|
+
// process settings after the user has made his selections
|
209
|
+
executeFunctionByName (self.props.postSelectionCallback, window);
|
210
|
+
}); // END modal on 'hidden'
|
151
211
|
|
152
212
|
// load modal content
|
153
213
|
//
|
@@ -253,12 +313,12 @@ function BootstrapCookieConsent(props) {
|
|
253
313
|
}
|
254
314
|
|
255
315
|
function agreeAll() {
|
256
|
-
Cookie.set(self.props.cookieName, JSON.stringify(gatherOptions(true)), self.props.cookieStorageDays, self.props.cookieSameSite,
|
316
|
+
Cookie.set(self.props.cookieName, JSON.stringify(gatherOptions(true)), self.props.cookieStorageDays, self.props.cookieSameSite, cookieSecure);
|
257
317
|
self.$modal.modal('hide');
|
258
318
|
}
|
259
319
|
|
260
320
|
function doNotAgree() {
|
261
|
-
Cookie.set(self.props.cookieName, JSON.stringify(gatherOptions(false)), self.props.cookieStorageDays, self.props.cookieSameSite,
|
321
|
+
Cookie.set(self.props.cookieName, JSON.stringify(gatherOptions(false)), self.props.cookieStorageDays, self.props.cookieSameSite, cookieSecure);
|
262
322
|
|
263
323
|
// jadams, 2021-07-15: all cookies NOT longer supported by j1.expireCookie
|
264
324
|
// TODO: Create loop over all cookies found in page
|
@@ -271,7 +331,7 @@ function BootstrapCookieConsent(props) {
|
|
271
331
|
}
|
272
332
|
|
273
333
|
function saveSettings() {
|
274
|
-
Cookie.set(self.props.cookieName, JSON.stringify(gatherOptions()), self.props.cookieStorageDays, self.props.cookieSameSite,
|
334
|
+
Cookie.set(self.props.cookieName, JSON.stringify(gatherOptions()), self.props.cookieStorageDays, self.props.cookieSameSite, cookieSecure);
|
275
335
|
self.$modal.modal('hide');
|
276
336
|
}
|
277
337
|
|
data/lib/j1/version.rb
CHANGED
data/lib/starter_web/Gemfile
CHANGED
@@ -53,7 +53,7 @@ gem 'jekyll', '~> 4.2'
|
|
53
53
|
|
54
54
|
# Theme Rubies, default: J1 Template (NOT used for the development system)
|
55
55
|
#
|
56
|
-
gem 'j1-template', '~> 2021.2.
|
56
|
+
gem 'j1-template', '~> 2021.2.10'
|
57
57
|
|
58
58
|
# ------------------------------------------------------------------------------
|
59
59
|
# PRODUCTION: Gem needed for the Jekyll and J1 prod environment
|
data/lib/starter_web/_config.yml
CHANGED
@@ -53,7 +53,7 @@ environment: development
|
|
53
53
|
# ------------------------------------------------------------------------------
|
54
54
|
# Sets the build version of J1 Template Gem
|
55
55
|
#
|
56
|
-
version: 2021.2.
|
56
|
+
version: 2021.2.10
|
57
57
|
|
58
58
|
# version
|
59
59
|
# ------------------------------------------------------------------------------
|
@@ -25,6 +25,8 @@ about_config:
|
|
25
25
|
defaults:
|
26
26
|
|
27
27
|
enabled: false
|
28
|
+
|
29
|
+
reloadPageOnChange: true
|
28
30
|
autoShowDialog: true # show consent dialog if NO consent cookie found
|
29
31
|
dialogLanguage: content # auto|content|one of dialogLanguages
|
30
32
|
dialogLanguages: [en, de] # supported dialog (modal) languages, defaults to FIRST language defined by languages
|
@@ -36,7 +38,7 @@ defaults:
|
|
36
38
|
whitelisted: [ '/pages/public/legal/en/privacy' ] # pages NO consent issued, currently NOT supported
|
37
39
|
xhrDataElement: consent-data # container for all language-specific consent modals (taken from contentURL)
|
38
40
|
dialogContainerID: consent-dialog # container, the dialog modal is (dynamically) loaded
|
39
|
-
postSelectionCallback: j1.adapter.cookieConsent.cbCookie #
|
41
|
+
postSelectionCallback: j1.adapter.cookieConsent.cbCookie # called after the user has made his selection
|
40
42
|
|
41
43
|
modal_settings:
|
42
44
|
|
@@ -46,7 +46,7 @@ defaults:
|
|
46
46
|
#
|
47
47
|
google:
|
48
48
|
|
49
|
-
postSelectionCallback:
|
49
|
+
postSelectionCallback: j1.adapter.translator.cbGoogle # callback to run the translation
|
50
50
|
hideSuggestionBox: true # disable suggestions on translated text
|
51
51
|
hidePoweredBy: true # disable label "Powered by Google"
|
52
52
|
hideTopFrame: true # disable the (google) translator frame
|
@@ -433,7 +433,7 @@ end::tables[]
|
|
433
433
|
// -----------------------------------------------------------------------------
|
434
434
|
tag::products[]
|
435
435
|
:j1--license: MIT License
|
436
|
-
:j1--version: 2021.2.
|
436
|
+
:j1--version: 2021.2.10
|
437
437
|
:j1--site-name: Jekyll One
|
438
438
|
end::products[]
|
439
439
|
|