j1-template 2022.0.7 → 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 +0 -56
- 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 -24
- data/assets/themes/j1/adapter/js/j1.js +70 -176
- data/assets/themes/j1/adapter/js/translator.js +106 -52
- 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/translator/js/translator.js +97 -62
- 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 +1 -1
- data/lib/starter_web/_data/modules/defaults/cookieconsent.yml +3 -3
- data/lib/starter_web/_data/modules/defaults/cookies.yml +70 -6
- 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 +3 -2
@@ -55,7 +55,7 @@ regenerate: true
|
|
55
55
|
{% assign toccer_defaults = modules.defaults.toccer.defaults %}
|
56
56
|
|
57
57
|
{% assign cookie_defaults = modules.defaults.cookies.defaults %}
|
58
|
-
{% assign cookie_settings = modules.
|
58
|
+
{% assign cookie_settings = modules.cookies.settings %}
|
59
59
|
|
60
60
|
{% assign themer_defaults = modules.defaults.themer.defaults %}
|
61
61
|
{% assign themer_settings = modules.themer.settings %}
|
@@ -175,9 +175,6 @@ var j1 = (function () {
|
|
175
175
|
var comment_provider = '{{comment_provider}}';
|
176
176
|
var site_id = '{{site_id}}';
|
177
177
|
|
178
|
-
// Default translator settings (currently NOT supported)
|
179
|
-
// var translation_enabled = {{template_config.translation.enabled}};
|
180
|
-
|
181
178
|
var current_user_data;
|
182
179
|
var current_page;
|
183
180
|
var previous_page;
|
@@ -309,7 +306,7 @@ var j1 = (function () {
|
|
309
306
|
j1['xhrDOMState'] = {};
|
310
307
|
|
311
308
|
// -----------------------------------------------------------------------
|
312
|
-
//
|
309
|
+
// final updates before browser page|tab
|
313
310
|
// see: https://stackoverflow.com/questions/3888902/detect-browser-or-tab-closing
|
314
311
|
// -----------------------------------------------------------------------
|
315
312
|
window.addEventListener('beforeunload', function (event) {
|
@@ -322,49 +319,27 @@ var j1 = (function () {
|
|
322
319
|
var url;
|
323
320
|
var baseUrl;
|
324
321
|
|
325
|
-
// final update of the user state cookie
|
326
|
-
|
327
|
-
|
328
|
-
user_state.session_active = false;
|
329
|
-
user_state.last_session_ts = timestamp_now;
|
322
|
+
// final update of the user state cookie
|
323
|
+
user_state.session_active = false;
|
324
|
+
user_state.last_session_ts = timestamp_now;
|
330
325
|
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
if (!cookie_written) {
|
341
|
-
logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_consent);
|
342
|
-
}
|
343
|
-
logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
|
344
|
-
cookie_written = j1.writeCookie({
|
345
|
-
name: cookie_names.user_state,
|
346
|
-
data: user_state,
|
347
|
-
secure: secure,
|
348
|
-
expires: 0
|
349
|
-
});
|
350
|
-
if (!cookie_written) {
|
351
|
-
logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_consent);
|
352
|
-
}
|
353
|
-
} else {
|
354
|
-
logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
|
355
|
-
cookie_written = j1.writeCookie({
|
356
|
-
name: cookie_names.user_state,
|
357
|
-
data: user_state,
|
358
|
-
secure: secure,
|
359
|
-
expires: 365
|
360
|
-
});
|
361
|
-
if (!cookie_written) {
|
362
|
-
logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_state);
|
363
|
-
}
|
364
|
-
}
|
326
|
+
if (!user_consent.analysis || !user_consent.personalization) {
|
327
|
+
logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
|
328
|
+
|
329
|
+
cookie_written = j1.writeCookie({
|
330
|
+
name: cookie_names.user_state,
|
331
|
+
data: user_state,
|
332
|
+
secure: secure,
|
333
|
+
expires: 0
|
334
|
+
});
|
365
335
|
} else {
|
366
|
-
|
367
|
-
|
336
|
+
logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
|
337
|
+
cookie_written = j1.writeCookie({
|
338
|
+
name: cookie_names.user_state,
|
339
|
+
data: user_state,
|
340
|
+
secure: secure,
|
341
|
+
expires: 365
|
342
|
+
});
|
368
343
|
}
|
369
344
|
}); // END beforeunload
|
370
345
|
|
@@ -383,9 +358,6 @@ var j1 = (function () {
|
|
383
358
|
secure: secure,
|
384
359
|
expires: 0
|
385
360
|
});
|
386
|
-
if (!cookie_written) {
|
387
|
-
logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
|
388
|
-
}
|
389
361
|
|
390
362
|
user_state = j1.existsCookie(cookie_names.user_state)
|
391
363
|
? j1.readCookie(cookie_names.user_state)
|
@@ -395,96 +367,23 @@ var j1 = (function () {
|
|
395
367
|
secure: secure,
|
396
368
|
expires: 365
|
397
369
|
});
|
398
|
-
if (!cookie_written) {
|
399
|
-
logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_state);
|
400
|
-
}
|
401
370
|
|
402
|
-
// jadams, 2021-
|
403
|
-
//
|
404
|
-
// TODO: Check if/why user state (cookie NOT created?) NOT initialized
|
405
|
-
// for what reason.
|
371
|
+
// jadams, 2021-12-06: Access to cookies for this site failed.
|
372
|
+
// Possibly, a third-party domain or an attacker tries to access it.
|
406
373
|
if (!user_state) {
|
407
|
-
logger.error('\n' + 'cookie not found: ' + cookie_names.user_state);
|
374
|
+
logger.error('\n' + 'Access to cookie failed or cookie not found: ' + cookie_names.user_state);
|
408
375
|
logger.debug('\n' + 'j1 cookies found:' + j1Cookies.length);
|
409
|
-
|
410
|
-
|
411
|
-
gaCookies.forEach(item => console.log('j1.core.switcher: ' + item));
|
412
|
-
user_state = j1.readCookie(cookie_names.user_state);
|
413
|
-
user_state.session_active = true;
|
376
|
+
// redirect to error page: blocked content
|
377
|
+
window.location.href = '/446.html';
|
414
378
|
}
|
415
379
|
|
416
380
|
if (!user_consent.analysis || !user_consent.personalization) {
|
417
|
-
//
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
data: user_state,
|
422
|
-
secure: secure,
|
423
|
-
expires: 0
|
424
|
-
});
|
425
|
-
if (!cookie_written) {
|
426
|
-
logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_state);
|
427
|
-
}
|
428
|
-
} else {
|
429
|
-
logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
|
430
|
-
cookie_written = j1.writeCookie({
|
431
|
-
name: cookie_names.user_state,
|
432
|
-
data: user_state,
|
433
|
-
secure: secure,
|
434
|
-
expires: 365
|
435
|
-
});
|
436
|
-
if (!cookie_written) {
|
437
|
-
logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_state);
|
438
|
-
}
|
381
|
+
// expire permanent cookies to session
|
382
|
+
j1.expireCookie({ name: cookie_names.user_state });
|
383
|
+
j1.expireCookie({ name: cookie_names.user_consent });
|
384
|
+
j1.expireCookie({ name: cookie_names.user_translate });
|
439
385
|
}
|
440
386
|
|
441
|
-
// jadams, 2021-11-10: anchor links of type #void are used/managed
|
442
|
-
// by the FAB module. No geneneraL use for NOW.
|
443
|
-
// -----------------------------------------------------------------------
|
444
|
-
// initialize event handler for smooth scroll on in-page anchors
|
445
|
-
// $('a[href*=\\#]').on('click', function (event) {
|
446
|
-
// // ignore void links
|
447
|
-
// if (window.location.href.includes('#void')||this.href.includes('#void')) {
|
448
|
-
// return false;
|
449
|
-
// }
|
450
|
-
// // for external links, redirect to this page
|
451
|
-
// if (window.location.pathname !== this.pathname) {
|
452
|
-
// window.location.href = this.href;
|
453
|
-
// } else {
|
454
|
-
// // continue on in-page anchor
|
455
|
-
// var toccerScrollDuration = 300;
|
456
|
-
// var toccerScrollOffset = 10;
|
457
|
-
//
|
458
|
-
// // calculate offset value for correct (smooth) scroll position
|
459
|
-
// //
|
460
|
-
// var $pagehead = $('.attic');
|
461
|
-
// var $navbar = $('nav.navbar');
|
462
|
-
// var $adblock = $('#adblock');
|
463
|
-
// var navbarType = $navbar.hasClass('navbar-fixed') ? 'fixed' : 'scrolled';
|
464
|
-
// var fontSize = $('body').css('font-size').replace('px','');
|
465
|
-
// var start = window.pageYOffset;
|
466
|
-
// var l = parseInt(fontSize);
|
467
|
-
// var h = $pagehead.length ? $pagehead.height() : 0;
|
468
|
-
// var n = $navbar.length ? $navbar.height() : 0;
|
469
|
-
// var a = $adblock.length ? $adblock.height() : 0;
|
470
|
-
// var scrollOffset = navbarType == 'fixed' ? -1*(n + a + l) : -1*(h + n + a + l);
|
471
|
-
//
|
472
|
-
// // TODO: to be checked why this static offset (toccerScrollOffset)
|
473
|
-
// // is needed
|
474
|
-
// scrollOffset = scrollOffset + toccerScrollOffset;
|
475
|
-
//
|
476
|
-
// logger.debug('\n' + 'scroll to anchor: ' + this.hash);
|
477
|
-
// $("html, body").animate({
|
478
|
-
// scrollTop: $($(this).attr("href")).offset().top + scrollOffset + "px"
|
479
|
-
// }, {
|
480
|
-
// duration: toccerScrollDuration,
|
481
|
-
// easing: "swing"
|
482
|
-
// });
|
483
|
-
// // disable bubble up the event
|
484
|
-
// return false;
|
485
|
-
// } // End in-page link
|
486
|
-
// }); // END click event on anchors
|
487
|
-
|
488
387
|
// initialize event handler for window/history/back on <ESC>
|
489
388
|
// -----------------------------------------------------------------------
|
490
389
|
window.onkeyup = function (event) {
|
@@ -523,10 +422,6 @@ var j1 = (function () {
|
|
523
422
|
expires: 0
|
524
423
|
});
|
525
424
|
|
526
|
-
if (!cookie_written) {
|
527
|
-
logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
|
528
|
-
}
|
529
|
-
|
530
425
|
j1.setState(curr_state);
|
531
426
|
logger.info('\n' + 'state: ' + j1.getState());
|
532
427
|
|
@@ -570,9 +465,6 @@ var j1 = (function () {
|
|
570
465
|
secure: secure,
|
571
466
|
expires: 0
|
572
467
|
});
|
573
|
-
if (!cookie_written) {
|
574
|
-
logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
|
575
|
-
}
|
576
468
|
|
577
469
|
j1.setState(curr_state);
|
578
470
|
logger.info('\n' + 'state: ' + j1.getState());
|
@@ -601,7 +493,8 @@ var j1 = (function () {
|
|
601
493
|
themeName = user_session.theme_name;
|
602
494
|
themeCss = user_session.theme_css;
|
603
495
|
|
604
|
-
//
|
496
|
+
// -----------------------------------------------------------------------
|
497
|
+
// Save last page access
|
605
498
|
// see: https://stackoverflow.com/questions/3528324/how-to-get-the-previous-url-in-javascript
|
606
499
|
// see: https://developer.mozilla.org/de/docs/Web/API/Window/history
|
607
500
|
//
|
@@ -633,10 +526,6 @@ var j1 = (function () {
|
|
633
526
|
expires: 0
|
634
527
|
});
|
635
528
|
|
636
|
-
if (!cookie_written) {
|
637
|
-
logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
|
638
|
-
}
|
639
|
-
|
640
529
|
// NOTE: asynchronous calls should be rewitten to xhrData
|
641
530
|
// initialize page resources for blocks
|
642
531
|
j1.initBanner(settings);
|
@@ -645,7 +534,6 @@ var j1 = (function () {
|
|
645
534
|
|
646
535
|
state = 'running';
|
647
536
|
logger.info('\n' + 'state: ' + state);
|
648
|
-
// logger.info(logText);
|
649
537
|
|
650
538
|
user_session.timestamp = timestamp_now;
|
651
539
|
logger.debug('\n' + 'write to cookie : ' + cookie_names.user_session);
|
@@ -655,9 +543,6 @@ var j1 = (function () {
|
|
655
543
|
secure: secure,
|
656
544
|
expires: 0
|
657
545
|
});
|
658
|
-
if (!cookie_written) {
|
659
|
-
logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
|
660
|
-
}
|
661
546
|
|
662
547
|
// -----------------------------------------------------------------------
|
663
548
|
// additional BS helpers from j1.core
|
@@ -779,7 +664,6 @@ var j1 = (function () {
|
|
779
664
|
// initPanel()
|
780
665
|
// AJAX fetcher to load and place all panel used for a page
|
781
666
|
// -------------------------------------------------------------------------
|
782
|
-
// ToDo:
|
783
667
|
initPanel: function ( options ) {
|
784
668
|
var logger = log4javascript.getLogger('j1.initPanel');
|
785
669
|
var panel = [];
|
@@ -1003,16 +887,14 @@ var j1 = (function () {
|
|
1003
887
|
secure: secure,
|
1004
888
|
expires: 0
|
1005
889
|
});
|
1006
|
-
if (!cookie_written) {
|
1007
|
-
logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
|
1008
|
-
}
|
1009
890
|
|
1010
891
|
providerPermissions = user_session.provider_permissions;
|
1011
892
|
categoryAllowed = providerPermissions.includes(user_session.page_permission);
|
1012
893
|
|
894
|
+
// -------------------------------------------------------------------
|
1013
895
|
// check protected pages (applies for APP only)
|
1014
896
|
// make sure that protected pages are ALWAYS checked for permissions
|
1015
|
-
//
|
897
|
+
//
|
1016
898
|
if (
|
1017
899
|
j1.authEnabled() &&
|
1018
900
|
user_session.page_permission !== 'public' &&
|
@@ -1115,13 +997,7 @@ var j1 = (function () {
|
|
1115
997
|
$('#quickLinksCookieButton').css('display', 'none');
|
1116
998
|
}
|
1117
999
|
|
1118
|
-
//
|
1119
|
-
// if (translation_enabled) {
|
1120
|
-
// logger.info('\n' + 'translator detected: google');
|
1121
|
-
// logger.info('\n' + 'initialize language selector');
|
1122
|
-
// $('.goog-te-combo').addClass('form-control');
|
1123
|
-
// }
|
1124
|
-
|
1000
|
+
// -----------------------------------------------------------------
|
1125
1001
|
// show cc icon (currently NOT supported)
|
1126
1002
|
// $('#quickLinksControlCenterButton').css('display', 'block');
|
1127
1003
|
|
@@ -1296,16 +1172,6 @@ var j1 = (function () {
|
|
1296
1172
|
secure: secure,
|
1297
1173
|
expires: 0
|
1298
1174
|
});
|
1299
|
-
if (!cookie_written) {
|
1300
|
-
logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
|
1301
|
-
}
|
1302
|
-
|
1303
|
-
// show|hide translator icon (currently NOT supported)
|
1304
|
-
// if (translation_enabled) {
|
1305
|
-
// logger.info('\n' + 'translator detected: google');
|
1306
|
-
// logger.info('\n' + 'initialize language selector');
|
1307
|
-
// $('.goog-te-combo').addClass('form-control');
|
1308
|
-
// }
|
1309
1175
|
|
1310
1176
|
// show cc icon (currently NOT supported)
|
1311
1177
|
// $('#quickLinksControlCenterButton').css('display', 'block');
|
@@ -1441,6 +1307,7 @@ var j1 = (function () {
|
|
1441
1307
|
|
1442
1308
|
return scrollOffset;
|
1443
1309
|
},
|
1310
|
+
|
1444
1311
|
// -------------------------------------------------------------------------
|
1445
1312
|
// scrollTo()
|
1446
1313
|
// Scrolls smooth to any anchor referenced by an page URL on
|
@@ -1745,9 +1612,14 @@ var j1 = (function () {
|
|
1745
1612
|
// context/HTTPS).
|
1746
1613
|
// -------------------------------------------------------------------------
|
1747
1614
|
writeCookie: function (options /*name, data, [path, expires, domain, samesite, http_only, secure]*/) {
|
1748
|
-
var date
|
1749
|
-
var timestamp_now
|
1750
|
-
var
|
1615
|
+
var date = new Date();
|
1616
|
+
var timestamp_now = date.toISOString()
|
1617
|
+
var url = new liteURL(window.location.href);
|
1618
|
+
var baseUrl = url.origin;;
|
1619
|
+
var hostname = url.hostname;
|
1620
|
+
var domain = hostname.substring(hostname.lastIndexOf('.', hostname.lastIndexOf('.') - 1) + 1);
|
1621
|
+
var domain_enabled = '{{cookie_options.domain}}';
|
1622
|
+
var cookie_data = {};
|
1751
1623
|
var data_json;
|
1752
1624
|
var data_encoded;
|
1753
1625
|
var expires;
|
@@ -1758,12 +1630,11 @@ var j1 = (function () {
|
|
1758
1630
|
name: '',
|
1759
1631
|
path: '{{cookie_options.path}}',
|
1760
1632
|
expires: '{{cookie_options.expires}}',
|
1761
|
-
domain: '
|
1633
|
+
domain: 'localhost',
|
1762
1634
|
samesite: '{{cookie_options.same_site}}',
|
1763
1635
|
http_only: '{{cookie_options.http_only}}',
|
1764
1636
|
secure: '{{cookie_options.secure}}'
|
1765
1637
|
};
|
1766
|
-
|
1767
1638
|
var settings = $.extend(defaults, options);
|
1768
1639
|
|
1769
1640
|
cookie_data.timestamp = timestamp_now;
|
@@ -1788,6 +1659,16 @@ var j1 = (function () {
|
|
1788
1659
|
|
1789
1660
|
stringifiedAttributes += '; ' + 'SameSite=' + settings.samesite;
|
1790
1661
|
|
1662
|
+
// settings.domain = settings.domain ? '.' + domain : hostname;
|
1663
|
+
|
1664
|
+
if (domain != hostname) {
|
1665
|
+
settings.domain = domain_enabled ? '.' + domain : hostname;
|
1666
|
+
} else {
|
1667
|
+
settings.domain = hostname;
|
1668
|
+
}
|
1669
|
+
|
1670
|
+
stringifiedAttributes += '; ' + 'domain=' + settings.domain;
|
1671
|
+
|
1791
1672
|
if (settings.secure) {
|
1792
1673
|
stringifiedAttributes += '; ' + 'secure=' + settings.secure;
|
1793
1674
|
}
|
@@ -1859,13 +1740,26 @@ var j1 = (function () {
|
|
1859
1740
|
// to JavaScript. For that reason, attributes needs to be set explicitly.
|
1860
1741
|
// -------------------------------------------------------------------------
|
1861
1742
|
expireCookie: function (options /*name [,path, samesite, secure]*/) {
|
1743
|
+
var url = new liteURL(window.location.href);
|
1744
|
+
var baseUrl = url.origin;;
|
1745
|
+
var hostname = url.hostname;
|
1746
|
+
var domain = hostname.substring(hostname.lastIndexOf('.', hostname.lastIndexOf('.') - 1) + 1);
|
1747
|
+
var domain_enabled = '{{cookie_options.domain}}';
|
1748
|
+
|
1862
1749
|
var defaults = {
|
1863
1750
|
path: '/',
|
1864
1751
|
samesite: 'Lax',
|
1865
1752
|
secure: false
|
1866
1753
|
};
|
1754
|
+
|
1867
1755
|
var settings = $.extend(defaults, options);
|
1868
1756
|
|
1757
|
+
if (domain != hostname) {
|
1758
|
+
settings.domain = domain_enabled ? '.' + domain : hostname;
|
1759
|
+
} else {
|
1760
|
+
settings.domain = hostname;
|
1761
|
+
}
|
1762
|
+
|
1869
1763
|
var dc = document.cookie; // all cookies in page
|
1870
1764
|
var end = dc.length; // default to end of the string
|
1871
1765
|
var prefix = settings.name + '='; // search string for the cookie name given
|
@@ -1894,9 +1788,9 @@ var j1 = (function () {
|
|
1894
1788
|
// expire cookie to session
|
1895
1789
|
content = decodeURI(dc.substring(begin + prefix.length, end) ).replace(/"/g, '');
|
1896
1790
|
if (settings.secure) {
|
1897
|
-
document.cookie = settings.name + '=' + content +'; path=' + settings.path + '; ' + 'SameSite=' + settings.samesite + '; secure';
|
1791
|
+
document.cookie = settings.name + '=' + content +'; path=' + settings.path + '; ' + 'SameSite=' + settings.samesite + '; ' + 'Domain=' + settings.domain + '; secure' + '; ';
|
1898
1792
|
} else {
|
1899
|
-
document.cookie = settings.name + '=' + content +'; path=' + settings.path + '; ' + 'SameSite=' + settings.samesite;
|
1793
|
+
document.cookie = settings.name + '=' + content +'; path=' + settings.path + '; ' + 'SameSite=' + settings.samesite + '; ' + 'Domain=' + settings.domain + '; ';
|
1900
1794
|
}
|
1901
1795
|
|
1902
1796
|
return true;
|