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.
@@ -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.cokkies.settings %}
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
- // update cookies if browser window get closed
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 before browser page|tab
326
- // get closed
327
- if (user_state) {
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
- if (!user_consent.analysis || !user_consent.personalization) {
332
- // rewrite consent|state cookies to session
333
- logger.debug('\n' + 'write to cookie : ' + cookie_names.user_consent);
334
- cookie_written = j1.writeCookie({
335
- name: cookie_names.user_consent,
336
- data: user_consent,
337
- secure: secure,
338
- expires: 0
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
- // jadams, 2021-07-11: on beforeunload, a user state cookie is expected
367
- logger.error('\n' + 'missing cookie detected: ' + cookie_names.user_state);
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-07-11: Found situation that user_state NOT initialized
403
- // correctly (user_state == false).
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
- j1Cookies.forEach(item => console.log('j1.core.switcher: ' + item));
410
- logger.debug('\n' + 'ga cookies found:' + gaCookies.length);
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
- // rewrite consent|state cookies to session
418
- logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
419
- cookie_written = j1.writeCookie({
420
- name: cookie_names.user_state,
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
- // save last page access
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
- // show|hide translator icon (currently NOT supported)
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 = new Date();
1749
- var timestamp_now = date.toISOString();
1750
- var cookie_data = {};
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: '{{cookie_options.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;