j1-template 2022.0.4 → 2022.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/_layouts/default.html +34 -75
- data/assets/error_pages/HTTP444.html +4 -4
- data/assets/error_pages/HTTP445.html +3 -3
- data/assets/error_pages/HTTP446.html +110 -0
- data/assets/themes/j1/adapter/js/cookieConsent.js +53 -25
- data/assets/themes/j1/adapter/js/j1.js +81 -196
- data/assets/themes/j1/adapter/js/themer.js +0 -1
- data/assets/themes/j1/adapter/js/translator.js +107 -56
- data/assets/themes/j1/core/css/themes/unodark/bootstrap.css +6 -0
- data/assets/themes/j1/core/css/themes/unodark/bootstrap.min.css +1 -1
- data/assets/themes/j1/core/js/template.js +5 -6
- data/assets/themes/j1/core/js/template.min.js +1 -1
- data/assets/themes/j1/core/js/template.min.js.map +1 -1
- data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.js +29 -13
- data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.min.js +1 -1
- data/assets/themes/j1/modules/themeSwitcher/js/switcher.js +0 -1
- data/assets/themes/j1/modules/themeSwitcher/js/switcher.min.js +1 -1
- data/assets/themes/j1/modules/translator/js/translator.js +98 -63
- data/assets/themes/j1/modules/translator/js/translator.min.js +1 -1
- data/lib/j1/version.rb +1 -1
- data/lib/starter_web/Gemfile +1 -1
- data/lib/starter_web/_config.yml +2 -3
- data/lib/starter_web/_data/modules/cookies.yml +30 -0
- data/lib/starter_web/_data/modules/defaults/cookieconsent.yml +3 -3
- data/lib/starter_web/_data/modules/defaults/cookies.yml +103 -0
- data/lib/starter_web/_data/modules/navigator_menu.yml +10 -1
- data/lib/starter_web/_includes/attributes.asciidoc +6 -1
- data/lib/starter_web/_plugins/lunr_index.rb +1 -1
- data/lib/starter_web/package.json +1 -1
- data/lib/starter_web/pages/_test_pages/google-translate-tester.1.adoc +0 -2
- data/lib/starter_web/pages/_test_pages/google-translate-tester.4.adoc +0 -2
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/100_converter.adoc +1 -1
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/200_themes.adoc +1 -1
- data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +1 -1
- data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +1 -1
- data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +1 -1
- data/lib/starter_web/pages/public/blog/navigator/archive.html +1 -1
- data/lib/starter_web/pages/public/blog/navigator/index.html +1 -1
- data/lib/starter_web/pages/public/learn/quickstart.adoc +1 -1
- data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +1 -1
- data/lib/starter_web/pages/public/learn/roundtrip/100_present_videos.adoc +2 -2
- data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +1 -1
- data/lib/starter_web/pages/public/learn/roundtrip/300_icon_fonts.adoc +1 -1
- data/lib/starter_web/pages/public/learn/roundtrip/400_asciidoc_extensions.adoc +1 -1
- data/lib/starter_web/pages/public/learn/roundtrip/410_bs_modals_extentions.adoc +1 -1
- data/lib/starter_web/pages/public/learn/roundtrip/420_responsive_tables_extensions.adoc +1 -1
- data/lib/starter_web/pages/public/learn/roundtrip/500_themes.adoc +1 -1
- data/lib/starter_web/pages/public/learn/roundtrip/600_quicksearch.adoc +1 -1
- data/lib/starter_web/pages/public/legal/de/300_privacy.adoc +2 -12
- data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +2 -12
- data/lib/starter_web/pages/public/manuals/dropdown-help.adoc +1 -1
- data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +1 -1
- data/lib/starter_web/pages/public/previewer/preview_bootstrap_theme.adoc +1 -1
- data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
- data/lib/starter_web/utilsrv/package.json +1 -1
- metadata +5 -2
@@ -35,6 +35,9 @@ regenerate: true
|
|
35
35
|
|
36
36
|
{% comment %} Set config data
|
37
37
|
-------------------------------------------------------------------------------- {% endcomment %}
|
38
|
+
{% assign cookie_defaults = modules.defaults.cookies.defaults %}
|
39
|
+
{% assign cookie_settings = modules.cookies.settings %}
|
40
|
+
|
38
41
|
{% assign translator_defaults = modules.defaults.translator.defaults %}
|
39
42
|
{% assign translator_settings = modules.translator.settings %}
|
40
43
|
{% assign tracking_enabled = template_config.analytics.enabled %}
|
@@ -42,6 +45,7 @@ regenerate: true
|
|
42
45
|
{% comment %} Set config options
|
43
46
|
-------------------------------------------------------------------------------- {% endcomment %}
|
44
47
|
{% assign translator_options = translator_defaults | merge: translator_settings %}
|
48
|
+
{% assign cookie_options = cookie_defaults | merge: cookie_settings %}
|
45
49
|
|
46
50
|
{% assign production = false %}
|
47
51
|
{% if environment == 'prod' or environment == 'production' %}
|
@@ -95,6 +99,7 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
95
99
|
var hostname;
|
96
100
|
var domain;
|
97
101
|
var cookie_domain;
|
102
|
+
var domain_enabled;
|
98
103
|
var secure;
|
99
104
|
var logText;
|
100
105
|
var cookie_written;
|
@@ -111,10 +116,17 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
111
116
|
|
112
117
|
// ---------------------------------------------------------------------------
|
113
118
|
// setCookie()
|
114
|
-
// writes a
|
119
|
+
// writes a FLAT cookie (not using an encoded JSON string)
|
115
120
|
// ---------------------------------------------------------------------------
|
116
121
|
function setCookie(options /*cName, cValue, expDays*/) {
|
117
|
-
var
|
122
|
+
var date = new Date();
|
123
|
+
var timestamp_now = date.toISOString()
|
124
|
+
var url = new liteURL(window.location.href);
|
125
|
+
var baseUrl = url.origin;;
|
126
|
+
var hostname = url.hostname;
|
127
|
+
var domain = hostname.substring(hostname.lastIndexOf('.', hostname.lastIndexOf('.') - 1) + 1);
|
128
|
+
var domain_enabled = '{{cookie_options.domain}}';
|
129
|
+
var defaults = {};
|
118
130
|
var settings;
|
119
131
|
var document_cookie;
|
120
132
|
var stringifiedAttributes = '';
|
@@ -123,8 +135,8 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
123
135
|
name: '',
|
124
136
|
path: '/',
|
125
137
|
expires: 0,
|
126
|
-
domain:
|
127
|
-
samesite: '
|
138
|
+
domain: true,
|
139
|
+
samesite: 'Lax',
|
128
140
|
http_only: false,
|
129
141
|
secure: false
|
130
142
|
};
|
@@ -137,6 +149,13 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
137
149
|
stringifiedAttributes += '; ' + 'expires=' + date.toUTCString();
|
138
150
|
}
|
139
151
|
|
152
|
+
if (domain != hostname) {
|
153
|
+
settings.domain = domain_enabled ? '.' + domain : hostname;
|
154
|
+
} else {
|
155
|
+
settings.domain = hostname;
|
156
|
+
}
|
157
|
+
stringifiedAttributes += '; ' + 'domain=' + settings.domain;
|
158
|
+
|
140
159
|
stringifiedAttributes += '; ' + 'SameSite=' + settings.samesite;
|
141
160
|
|
142
161
|
if (settings.secure) {
|
@@ -168,7 +187,7 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
168
187
|
baseUrl = url.origin;
|
169
188
|
hostname = url.hostname;
|
170
189
|
domain = hostname.substring(hostname.lastIndexOf('.', hostname.lastIndexOf('.') - 1) + 1);
|
171
|
-
|
190
|
+
domain_enabled = '{{cookie_options.domain}}';
|
172
191
|
secure = (url.protocol.includes('https')) ? true : false;
|
173
192
|
navigator_language = navigator.language || navigator.userLanguage; // userLanguage for MS IE compatibility
|
174
193
|
translation_language = navigator_language.split('-')[0];
|
@@ -188,23 +207,8 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
188
207
|
'translationLanguage': translation_language,
|
189
208
|
};
|
190
209
|
|
191
|
-
// load|initialize user translate cookie
|
192
|
-
if (j1.existsCookie(cookie_names.user_translate)) {
|
193
|
-
user_translate = j1.readCookie(cookie_names.user_translate);
|
194
|
-
} else {
|
195
|
-
logger.debug('\n' + 'write to cookie : ' + cookie_names.user_translate);
|
196
|
-
cookie_written = j1.writeCookie({
|
197
|
-
name: cookie_names.user_translate,
|
198
|
-
data: user_translate,
|
199
|
-
samesite: 'Strict',
|
200
|
-
secure: secure,
|
201
|
-
expires: 365
|
202
|
-
});
|
203
|
-
}
|
204
|
-
|
205
210
|
// initialize state flag
|
206
211
|
_this.state = 'pending';
|
207
|
-
// _this.settings.languageList = '/assets/data/ms_select.json';
|
208
212
|
|
209
213
|
// -----------------------------------------------------------------------
|
210
214
|
// Default module settings
|
@@ -229,7 +233,30 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
229
233
|
// initializer
|
230
234
|
// -----------------------------------------------------------------------
|
231
235
|
var dependencies_met_page_ready = setInterval (function (options) {
|
232
|
-
|
236
|
+
var expires = '{{cookie_options.expires}}';
|
237
|
+
var same_site = '{{cookie_options.same_site}}';
|
238
|
+
user_consent = j1.readCookie(cookie_names.user_consent);
|
239
|
+
|
240
|
+
// set domain used by cookies
|
241
|
+
if (domain != hostname) {
|
242
|
+
cookie_domain = domain_enabled ? '.' + domain : hostname;
|
243
|
+
} else {
|
244
|
+
cookie_domain = hostname;
|
245
|
+
}
|
246
|
+
|
247
|
+
// load|initialize user translate cookie
|
248
|
+
if (j1.existsCookie(cookie_names.user_translate)) {
|
249
|
+
user_translate = j1.readCookie(cookie_names.user_translate);
|
250
|
+
} else {
|
251
|
+
logger.debug('\n' + 'write to cookie : ' + cookie_names.user_translate);
|
252
|
+
cookie_written = j1.writeCookie({
|
253
|
+
name: cookie_names.user_translate,
|
254
|
+
data: user_translate,
|
255
|
+
samesite: 'Strict',
|
256
|
+
secure: secure,
|
257
|
+
expires: 365
|
258
|
+
});
|
259
|
+
}
|
233
260
|
|
234
261
|
if ( j1.getState() === 'finished' ) {
|
235
262
|
_this.setState('started');
|
@@ -257,16 +284,28 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
257
284
|
}
|
258
285
|
}
|
259
286
|
|
260
|
-
//
|
261
|
-
user_translate
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
287
|
+
// load|set user translate cookie
|
288
|
+
user_translate = j1.readCookie(cookie_names.user_translate);
|
289
|
+
if (!user_consent.analysis || !user_consent.personalization) {
|
290
|
+
// disable translation service
|
291
|
+
user_translate.translationEnabled = false;
|
292
|
+
cookie_written = j1.writeCookie({
|
293
|
+
name: cookie_names.user_translate,
|
294
|
+
data: user_translate,
|
295
|
+
secure: secure
|
296
|
+
});
|
297
|
+
|
298
|
+
// expire permanent cookie to session
|
299
|
+
j1.expireCookie({ name: cookie_names.user_translate });
|
300
|
+
} else {
|
301
|
+
logger.debug('\n' + 'write to cookie : ' + cookie_names.user_translate);
|
302
|
+
cookie_written = j1.writeCookie({
|
303
|
+
name: cookie_names.user_translate,
|
304
|
+
data: user_translate,
|
305
|
+
secure: secure,
|
306
|
+
expires: 365
|
307
|
+
});
|
308
|
+
}
|
270
309
|
|
271
310
|
if (moduleOptions.dialogLanguage === 'auto') {
|
272
311
|
moduleOptions.dialogLanguage = '{{contentLanguage}}';
|
@@ -274,7 +313,11 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
274
313
|
|
275
314
|
j1.translator = new Translator({
|
276
315
|
contentURL: moduleOptions.contentURL, // dialog content (modals) for all supported languages
|
277
|
-
cookieName:
|
316
|
+
cookieName: cookie_names.user_translate, // name of the translator cookie
|
317
|
+
cookieStorageDays: expires, // lifetime of a cookie [0..365], 0: session cookie
|
318
|
+
cookieSameSite: same_site, // restrict consent cookie
|
319
|
+
cookieDomain: cookie_domain, // set domain (hostname|domain)
|
320
|
+
cookieSecure: secure, // set
|
278
321
|
cookieConsentName: moduleOptions.cookieConsentName, // the name of the Cookie Consent Cookie (secondary data)
|
279
322
|
disableLanguageSelector: moduleOptions.disableLanguageSelector, // disable language dropdown for translation in dialog (modal)
|
280
323
|
dialogContainerID: moduleOptions.dialogContainerID, // dest container, the dialog modal is loaded (dynamically)
|
@@ -288,7 +331,7 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
288
331
|
});
|
289
332
|
|
290
333
|
// enable|disable translation (after callback)
|
291
|
-
if (
|
334
|
+
if (user_translate.analysis && user_translate.personalization && user_translate.translationEnabled) {
|
292
335
|
if (moduleOptions.translatorName === 'google') {
|
293
336
|
head.appendChild(script);
|
294
337
|
if ($('google_translate_element')) {
|
@@ -304,12 +347,9 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
304
347
|
}
|
305
348
|
}
|
306
349
|
|
307
|
-
//
|
308
|
-
//
|
309
|
-
//
|
310
|
-
// logger.info('\n' + 'call default action');
|
311
|
-
// j1.translator.showDialog();
|
312
|
-
// });
|
350
|
+
// -------------------------------------------------------------------
|
351
|
+
// NOTE: Click events moved to Navigator (core)
|
352
|
+
// -------------------------------------------------------------------
|
313
353
|
|
314
354
|
_this.setState('finished');
|
315
355
|
logger.info('\n' + 'state: ' + _this.getState());
|
@@ -376,35 +416,37 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
376
416
|
|
377
417
|
// -------------------------------------------------------------------------
|
378
418
|
// cbGoogle()
|
379
|
-
// Called by the translator CORE module after the user made
|
380
|
-
// selection for a translation|language
|
419
|
+
// Called by the translator CORE module after the user has made
|
420
|
+
// the selection for a translation|language
|
381
421
|
// -------------------------------------------------------------------------
|
382
422
|
cbGoogle: function () {
|
383
423
|
var logger = log4javascript.getLogger('j1.adapter.translator.cbGoogle');
|
384
424
|
var cookie_names = j1.getCookieNames();
|
385
|
-
var user_state = j1.readCookie(cookie_names.user_state);
|
386
425
|
var user_consent = j1.readCookie(cookie_names.user_consent);
|
387
426
|
var user_translate = j1.readCookie(cookie_names.user_translate);
|
388
427
|
var msDropdown = document.getElementById('dropdownJSON').msDropdown;
|
428
|
+
var url = new liteURL(window.location.href);
|
429
|
+
var baseUrl = url.origin;;
|
430
|
+
var hostname = url.hostname;
|
431
|
+
var domain = hostname.substring(hostname.lastIndexOf('.', hostname.lastIndexOf('.') - 1) + 1);
|
432
|
+
var domain_enabled = '{{cookie_options.domain}}';
|
433
|
+
var same_site = '{{cookie_options.same_site}}';
|
434
|
+
|
389
435
|
var selectedTranslationLanguage;
|
390
436
|
var srcLang;
|
391
437
|
var destLang;
|
392
438
|
var transCode;
|
393
439
|
|
394
|
-
selectedTranslationLanguage = msDropdown.value;
|
395
|
-
logger.info('\n' + 'selected translation language: ' + selectedTranslationLanguage);
|
396
440
|
|
397
|
-
//
|
398
|
-
|
399
|
-
|
441
|
+
// set domain used by cookies
|
442
|
+
if (domain != hostname) {
|
443
|
+
cookie_domain = domain_enabled ? '.' + domain : hostname;
|
444
|
+
} else {
|
445
|
+
cookie_domain = hostname;
|
446
|
+
}
|
400
447
|
|
401
|
-
|
402
|
-
|
403
|
-
data: user_consent,
|
404
|
-
samesite: 'Strict',
|
405
|
-
secure: secure,
|
406
|
-
expires: 365
|
407
|
-
});
|
448
|
+
selectedTranslationLanguage = msDropdown.value;
|
449
|
+
logger.info('\n' + 'selected translation language: ' + selectedTranslationLanguage);
|
408
450
|
|
409
451
|
// set content language
|
410
452
|
if (moduleOptions.contentLanguage === 'auto') {
|
@@ -430,8 +472,17 @@ j1.adapter['translator'] = (function (j1, window) {
|
|
430
472
|
Cookies.remove('googtrans', { domain: hostname });
|
431
473
|
Cookies.remove('googtrans');
|
432
474
|
|
433
|
-
//
|
434
|
-
|
475
|
+
// -----------------------------------------------------------------------
|
476
|
+
// NOTE: googtrans cookie will be rewritten (by Google!?) for
|
477
|
+
// attributes 'SameSite' and potentially 'Domain'. This results
|
478
|
+
// for 'SameSite' in an empty field!
|
479
|
+
// -----------------------------------------------------------------------
|
480
|
+
|
481
|
+
// write the googtrans cookie (w/o DOMAIN?!)
|
482
|
+
Cookies.set('googtrans', transCode, {
|
483
|
+
Domain: cookie_domain,
|
484
|
+
sameSite: 'Lax'
|
485
|
+
});
|
435
486
|
|
436
487
|
// reload current page (skip cache)
|
437
488
|
location.reload(true);
|
@@ -8557,6 +8557,12 @@ table tr.even, table tr.alt, table tr:nth-of-type(even) {
|
|
8557
8557
|
color: #bdbdbd;
|
8558
8558
|
border-bottom: 1px dotted #424242 !important; }
|
8559
8559
|
|
8560
|
+
.series-exerpt {
|
8561
|
+
color: #e0e0e0; }
|
8562
|
+
|
8563
|
+
.series-navigation ul li a {
|
8564
|
+
background-color: #e0e0e0; }
|
8565
|
+
|
8560
8566
|
/*
|
8561
8567
|
# -----------------------------------------------------------------------------
|
8562
8568
|
# ~/100_template_css/scss/theme_uno_dark/extentions/_tags.scss
|