j1-template 2022.0.7 → 2022.0.8
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/_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;
|