j1-template 2021.1.5 → 2021.1.6

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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/assets/data/themes.json +6 -6
  3. data/assets/themes/j1/adapter/js/cookieConsent.js +54 -28
  4. data/assets/themes/j1/adapter/js/j1.js +119 -150
  5. data/assets/themes/j1/adapter/js/themer.js +37 -29
  6. data/assets/themes/j1/adapter/js/toccer.js +4 -45
  7. data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.js +286 -286
  8. data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.min.js +3 -3
  9. data/assets/themes/j1/modules/fam/css/{uno → theme/uno}/fam.css +0 -0
  10. data/assets/themes/j1/modules/fam/css/theme/uno/fam.min.css +15 -0
  11. data/assets/themes/j1/modules/fam/js/fam.js +1 -6
  12. data/assets/themes/j1/modules/mmenuLight/css/{mmenu.css → mmenu-light.css} +0 -0
  13. data/assets/themes/j1/modules/mmenuLight/css/{mmenu.min.css → mmenu-light.min.css} +0 -0
  14. data/assets/themes/j1/modules/mmenuLight/css/theme/{uno.css → uno/mmenu.css} +0 -0
  15. data/assets/themes/j1/modules/mmenuLight/css/theme/{uno.min.css → uno/mmenu.min.css} +0 -0
  16. data/assets/themes/j1/modules/rtable/css/theme/{uno.css → uno/rtable.css} +0 -0
  17. data/assets/themes/j1/modules/rtable/css/theme/{uno.min.css → uno/rtable.min.css} +0 -0
  18. data/assets/themes/j1/modules/themeSwitcher/js/switcher.js +33 -47
  19. data/assets/themes/j1/modules/themeSwitcher/js/switcher.min.js +410 -2
  20. data/lib/j1/version.rb +1 -1
  21. data/lib/j1_app/j1_auth_manager/auth_manager.rb +2 -3
  22. data/lib/starter_web/Gemfile +1 -1
  23. data/lib/starter_web/_config.yml +1 -1
  24. data/lib/starter_web/_data/j1_config.yml +20 -17
  25. data/lib/starter_web/_data/modules/defaults/themer.yml +2 -1
  26. data/lib/starter_web/_data/private.default.yml +119 -0
  27. data/lib/starter_web/_data/resources.yml +6 -7
  28. data/lib/starter_web/_includes/attributes.asciidoc +1 -1
  29. data/lib/starter_web/_plugins/lunr_index.rb +1 -1
  30. data/lib/starter_web/dot.gitignore +1 -1
  31. data/lib/starter_web/package.json +1 -1
  32. data/lib/starter_web/pages/public/blog/navigator/archive.html +3 -2
  33. data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +3 -2
  34. data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +3 -2
  35. data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +3 -2
  36. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  37. data/lib/starter_web/utilsrv/package.json +1 -1
  38. metadata +11 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0e93fb15ef56819b92a0d748c7e809c7381ac50e69868be5777ce21f01acf066
4
- data.tar.gz: 2b710cb4d00181ee1b027fd6ea406a3e2c293a27cae544c3e72d5de055c43833
3
+ metadata.gz: a5ceecb6b421d85c3db86a44fba73d25650012ace9626b1a53ff082d16a61e9e
4
+ data.tar.gz: 7093783266335d7524f406c452bff71b8a9979f0b9d172c7025c01f9559ffc36
5
5
  SHA512:
6
- metadata.gz: 88e8c900a10010e9bc600663c22fb7b0f0b292ea71e3bc700022519c3929cdec359b5af9d07bdfafd970fafd70933548fcc819e808a34acfe0b97ddd9ee8485a
7
- data.tar.gz: 4edee51b60f67d1066729ef1fce3e1106cd957e9f06fbfbcfbd232aa7bcedb7d173af6955a516f76b52724f22f4d194227826b59083cfe15c752c0ea86f6a624
6
+ metadata.gz: a63666eeb929986759194324a01d601aec108c9f5f1716326668786779d84db989d97adfe02c40ef065faf54fb13743f900dca24e6934c4988e0c8110802ba3f
7
+ data.tar.gz: f702196b47569beb2d080ddcc75db8c4d4e7a3512a03d6bd291937d5a88167e7343dff4ac2a984978d269c42685b6766cb08ebca40aa74c0cbd35b3e63aa4183
@@ -47,18 +47,18 @@ regenerate: true
47
47
  {
48
48
  "themes":
49
49
  [
50
- {"name": "Uno (light)", "css": "{{asset_path}}/core/css/themes/uno-light/bootstrap.css"},
51
- {"name": "Uno (dark)", "css": "{{asset_path}}/core/css/themes/uno-dark/bootstrap.css"},
52
- {"name": "Bootstrap", "css": "{{asset_path}}/core/css/themes/bootstrap/bootstrap.css"}
50
+ {"name": "Uno light", "css": "{{asset_path}}/core/css/themes/uno-light/bootstrap.css"},
51
+ {"name": "Uno dark", "css": "{{asset_path}}/core/css/themes/uno-dark/bootstrap.css"},
52
+ {"name": "Bootstrap", "css": "{{asset_path}}/core/css/themes/bootstrap/bootstrap.css"}
53
53
  ]
54
54
  }
55
55
  {% else %}
56
56
  {
57
57
  "themes":
58
58
  [
59
- {"name": "Uno (light)", "css": "{{asset_path}}/core/css/themes/uno-light/bootstrap.min.css"},
60
- {"name": "Uno (dark)", "css": "{{asset_path}}/core/css/themes/uno-dark/bootstrap.min.css"},
61
- {"name": "Bootstrap", "css": "{{asset_path}}/core/css/themes/bootstrap/bootstrap.min.css"}
59
+ {"name": "Uno light", "css": "{{asset_path}}/core/css/themes/uno-light/bootstrap.min.css"},
60
+ {"name": "Uno dark", "css": "{{asset_path}}/core/css/themes/uno-dark/bootstrap.min.css"},
61
+ {"name": "Bootstrap", "css": "{{asset_path}}/core/css/themes/bootstrap/bootstrap.min.css"}
62
62
  ]
63
63
  }
64
64
  {% endif %}
@@ -34,6 +34,7 @@ regenerate: true
34
34
  -------------------------------------------------------------------------------- {% endcomment %}
35
35
  {% assign consent_defaults = modules.defaults.cookieconsent.defaults %}
36
36
  {% assign consent_settings = modules.cookieconsent.settings %}
37
+ {% assign tracking_enabled = site.data.j1_config.analytics.enabled %}
37
38
  {% assign tracking_id = site.data.j1_config.analytics.google.tracking_id %}
38
39
 
39
40
  {% comment %} Set config options
@@ -78,13 +79,20 @@ regenerate: true
78
79
  --------------------------------------------------------------- {% endcomment %}
79
80
  j1.adapter['cookieConsent'] = (function (j1, window) {
80
81
 
81
- var environment = '{{environment}}';
82
- var moduleOptions = {};
82
+ var environment = '{{environment}}';
83
+ var tracking_enabled = ('{{tracking_enabled}}' === 'true') ? true: false;
84
+ var tracking_id = '{{tracking_id}}';
85
+ var tracking_id_valid = (tracking_id.includes('tracking-id')) ? false : true;
86
+ var moduleOptions = {};
83
87
  var _this;
84
88
  var $modal;
85
89
  var user_cookie;
86
90
  var logger;
87
91
  var logText;
92
+
93
+ // NOTE: RegEx for tracking_id: ^(G|UA|YT|MO)-[a-zA-Z0-9-]+$
94
+ // See: https://stackoverflow.com/questions/20411767/how-to-validate-google-analytics-tracking-id-using-a-javascript-function/20412153
95
+
88
96
  // ---------------------------------------------------------------------------
89
97
  // Helper functions
90
98
  // ---------------------------------------------------------------------------
@@ -202,52 +210,70 @@ j1.adapter['cookieConsent'] = (function (j1, window) {
202
210
 
203
211
  // -------------------------------------------------------------------------
204
212
  // cbCookie()
205
- // Callback function called by CookieConsent module after the user has
206
- // made his selection
207
- // -------------------------------------------------------------------------
208
- // TODO:
209
- // If ONLY required setting selected, make j1.user.consent
210
- // a SESSION cookie!!!
213
+ // Called by CookieConsent module after the user has
214
+ // made his selection (callback)
211
215
  // -------------------------------------------------------------------------
212
216
  cbCookie: function () {
213
217
  var gaCookies = j1.findCookie('_ga');
214
- var user_cookie = j1.readCookie('j1.user.consent');
215
- var json = JSON.stringify(user_cookie);
218
+ var user_state = j1.readCookie('j1.user.state');
219
+ var user_consent = j1.readCookie('j1.user.consent');
220
+ var json = JSON.stringify(user_consent);
216
221
 
217
222
  logger.info('Entered post selection callback from CookieConsent');
218
223
  logger.info('Current values from CookieConsent: ' + json);
219
224
 
225
+ // NOTE: Warning needs to be moved to another module
226
+ // because page is reloaded after selection
227
+ //
228
+ if (tracking_enabled && !tracking_id_valid) {
229
+ logger.warn('tracking enabled, but invalid tracking id found: ' + tracking_id);
230
+ }
231
+
232
+ // for debugging
220
233
  // gaCookies.forEach(item => console.log('cookieConsent: ' + item));
221
234
 
222
235
  // Manage Google Analytics OptIn/Out
223
236
  // See: https://github.com/luciomartinez/gtag-opt-in/wiki
224
- //
225
- GTagOptIn.register('{{tracking_id}}');
226
- if (user_cookie.analyses) {
227
- logger.info('Enable: GA');
228
- GTagOptIn.optIn();
229
- } else {
230
- logger.warn('Disable: GA');
231
- GTagOptIn.optOut();
232
- var gaCookies = j1.findCookie('_ga');
233
- gaCookies.forEach(function (item) {
234
- logger.warn('Delete GA cookie: ' + item);
235
- j1.removeCookie({
236
- name: item,
237
- path: '/'
237
+ if (tracking_enabled && tracking_id_valid) {
238
+ GTagOptIn.register(tracking_id);
239
+ if (user_consent.analyses) {
240
+ logger.info('Enable: GA');
241
+ GTagOptIn.optIn();
242
+ } else {
243
+ logger.warn('Disable: GA');
244
+ GTagOptIn.optOut();
245
+ var gaCookies = j1.findCookie('_ga');
246
+ gaCookies.forEach(function (item) {
247
+ logger.warn('Delete GA cookie: ' + item);
248
+ j1.removeCookie({
249
+ name: item,
250
+ path: '/'
251
+ });
238
252
  });
239
- });
253
+ }
240
254
  }
241
255
 
256
+
242
257
  // enable cookie button if not visible
243
- //
244
258
  if ($('#quickLinksCookieButton').css('display') === 'none') {
245
259
  $('#quickLinksCookieButton').css('display', 'block');
246
260
  }
247
261
 
262
+ if (!user_consent.analyses || !user_consent.personalization) {
263
+ // expire consent|state cookies to session
264
+ j1.writeCookie({
265
+ name: 'j1.user.state',
266
+ data: user_state,
267
+ samesite: 'Strict'
268
+ });
269
+ j1.writeCookie({
270
+ name: 'j1.user.consent',
271
+ data: user_consent,
272
+ samesite: 'Strict'
273
+ });
274
+ }
275
+
248
276
  // reload page after selection
249
- //
250
- // $('#no_flicker').css('display', 'none');
251
277
  location.reload();
252
278
 
253
279
  } // END cbCookie
@@ -93,7 +93,6 @@ regenerate: true
93
93
  # For details, see https://jekyll.one
94
94
  # -----------------------------------------------------------------------------
95
95
  # TODO:
96
- # MANAGE themeExtensionCss is to be checked
97
96
  #
98
97
  # -----------------------------------------------------------------------------
99
98
  # Adapter generated: {{site.time}}
@@ -114,14 +113,14 @@ var j1 = (function () {
114
113
  // ---------------------------------------------------------------------------
115
114
  // globals
116
115
  // ---------------------------------------------------------------------------
117
- var rePager = new RegExp('navigator|dateview|tagview|archive');
118
- var environment = '{{environment}}';
119
- var moduleOptions = {};
120
- var j1_runtime_data = {};
116
+ var rePager = new RegExp('navigator|dateview|tagview|archive');
117
+ var environment = '{{environment}}';
118
+ var moduleOptions = {};
119
+ var j1_runtime_data = {};
121
120
 
122
121
  // Status information
123
- var state = 'not_started';
124
- var mode = 'not_detected';
122
+ var state = 'not_started';
123
+ var mode = 'not_detected';
125
124
 
126
125
  var current_user_data;
127
126
  var current_page;
@@ -131,17 +130,17 @@ var j1 = (function () {
131
130
  var app_detected;
132
131
  var user_session_detected;
133
132
 
134
- // Connector settings
135
- var translation_enabled = {{template_config.translation.enabled}};
133
+ // Translatior settings (currently NOT supported)
134
+ // var translation_enabled = {{template_config.translation.enabled}};
136
135
 
137
136
  // Theme information
138
137
  var themeName;
139
138
  var themeCss;
140
- var themeExtensionCss = environment === 'production'
141
- ? '/assets/themes/j1/core/css/themes/theme-extensions.min.css'
142
- : '/assets/themes/j1/core/css/themes/theme-extensions.css';
139
+ var cssExtension = (environment === 'production')
140
+ ? '.min.css'
141
+ : '.css';
143
142
 
144
- // Pathes of J1 data files
143
+ // Pathes of J1 data files
145
144
  var colors_data_path = '{{template_config.colors_data_path}}';
146
145
  var font_size_data_path = '{{template_config.font_size_data_path}}';
147
146
  var runtime_data_path = '{{template_config.runtime_data_path}}';
@@ -158,19 +157,11 @@ var j1 = (function () {
158
157
  var baseUrl;
159
158
  var referrer;
160
159
 
161
- // var default_theme_css = environment === 'production' ? '/assets/themes/j1/core/css/themes/uno-light/bootstrap.min.css' : '/assets/themes/j1/core/css/themes/uno-light/bootstrap.css';
162
- // // TODO: check what property is used default_theme|default_theme_name ?
163
- // var default_theme_display_name = 'Uno (light)';
164
- // var default_theme_name = 'uno-light';
165
- // var default_theme_author = 'J1 Team';
166
- // var default_theme_link = 'https://jekyll.one/';
167
- // var default_white_listed_pages = [];
168
-
169
160
  var cookie_names = {
170
161
  'app_session': '{{template_config.cookies.app_session}}',
171
162
  'user_session': '{{template_config.cookies.user_session}}',
172
163
  'user_state': '{{template_config.cookies.user_state}}',
173
- 'user_consent': 'j1.user.consent'
164
+ 'user_consent': '{{template_config.cookies.user_consent}}'
174
165
  };
175
166
 
176
167
  // user SESSION cookie (initial values)
@@ -192,39 +183,24 @@ var j1 = (function () {
192
183
  'last_pager': '/pages/public/blog/navigator/'
193
184
  };
194
185
 
195
- // user STATE cookie (initial values)
196
- // var user_state = {
197
- // 'theme_css': "",
198
- // 'theme_name': "",
199
- // 'theme_author': "",
200
- // 'theme_version': '{{site.version}}',
201
- // 'cookies_accepted': 'pending',
202
- // 'whitelistedPages': default_white_listed_pages,
203
- // 'deleteOnDecline': false,
204
- // 'showConsentOnPending': false,
205
- // 'stopScrolling': true,
206
- // 'session_active': false,
207
- // 'last_session_ts': '',
208
- // 'cc_authenticated': false
209
- // };
210
-
211
186
  var user_state = {
212
- 'theme_css': "",
213
- 'theme_name': "",
214
- 'theme_author': "",
187
+ 'theme_css': '',
188
+ 'theme_name': '',
189
+ 'theme_author': '',
215
190
  'theme_version': '{{site.version}}',
216
- 'stopScrolling': true,
217
191
  'session_active': false,
218
192
  'last_session_ts': ''
219
193
  };
220
194
 
195
+ var user_consent;
196
+
221
197
  // ---------------------------------------------------------------------------
222
198
  // helper functions
223
199
  // ---------------------------------------------------------------------------
224
200
 
201
+ // See: https://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string
202
+ //
225
203
  function executeFunctionByName(functionName, context /*, args */) {
226
- // See: https://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string
227
- //
228
204
  var args = Array.prototype.slice.call(arguments, 2);
229
205
  var namespaces = functionName.split('.');
230
206
  var func = namespaces.pop();
@@ -241,7 +217,6 @@ var j1 = (function () {
241
217
 
242
218
  // -------------------------------------------------------------------------
243
219
  // init()
244
- // initializer
245
220
  // -------------------------------------------------------------------------
246
221
  init: function (options) {
247
222
 
@@ -251,15 +226,9 @@ var j1 = (function () {
251
226
  var logger = log4javascript.getLogger('j1.init');
252
227
  var url = new liteURL(window.location.href);
253
228
  var baseUrl = url.origin;
254
- // moment not used anymore
255
- // var epoch = Math.floor(Date.now()/1000);
256
- // var timestamp_now = moment.unix(epoch).format('YYYY-MM-DD HH:mm:ss');
257
229
  var date = new Date();
258
230
  var timestamp_now = date.toISOString();
259
231
  var curr_state = 'started';
260
- // var date = new Date();
261
- // var my_timestamp = date.toISOString();
262
-
263
232
 
264
233
  // -----------------------------------------------------------------------
265
234
  // options loader
@@ -280,51 +249,58 @@ var j1 = (function () {
280
249
  j1['xhrDOMState'] = {};
281
250
 
282
251
  // -----------------------------------------------------------------------
283
- // session ON_CLOSE event
284
- // wrapup if ALL browser windows get closed. Update user STATE
285
- // cookie on window CLOSE.
252
+ // update cookies if browser window get closed
286
253
  // see: https://stackoverflow.com/questions/3888902/detect-browser-or-tab-closing
287
254
  // -----------------------------------------------------------------------
288
255
  window.addEventListener('beforeunload', function (event) {
289
256
  var cookie_names = j1.getCookieNames();
290
- var cookie_user_state_name = cookie_names.user_state;
291
- var cookie_user_session_name = cookie_names.user_session;
292
- // moment not used anymore
293
- // var epoch = Math.floor(Date.now()/1000);
294
- // var timestamp_now = moment.unix(epoch).format('YYYY-MM-DD HH:mm:ss');
295
257
  var date = new Date();
296
258
  var timestamp_now = date.toISOString();
297
- var user_state = j1.readCookie(cookie_user_state_name);
259
+ var user_state = j1.readCookie(cookie_names.user_state);
260
+ var user_consent = j1.readCookie(cookie_names.user_consent);
298
261
  var ep_status;
299
262
  var url;
300
263
  var baseUrl;
301
264
 
302
- // update cookie only, if (already) exists
303
- //
304
- if (user_state) {
305
- user_state.session_active = false;
306
- user_state.last_session_ts = timestamp_now;
265
+ user_state.session_active = false;
266
+ user_state.last_session_ts = timestamp_now;
307
267
 
268
+ if (!user_consent.analyses || !user_consent.personalization) {
269
+ // expire consent|state cookies to session
270
+ j1.writeCookie({
271
+ name: cookie_names.user_consent,
272
+ data: user_state,
273
+ samesite: 'Strict'
274
+ });
275
+ j1.writeCookie({
276
+ name: cookie_names.user_state,
277
+ data: user_state,
278
+ samesite: 'Strict'
279
+ });
280
+ } else {
308
281
  j1.writeCookie({
309
- name: cookie_user_state_name,
310
- data: user_state,
311
- expires: 365
282
+ name: cookie_names.user_state,
283
+ data: user_state,
284
+ samesite: 'Strict',
285
+ expires: 365
312
286
  });
313
287
  }
314
288
 
315
- });
289
+ }); // END beforeunload
316
290
 
317
291
  // -----------------------------------------------------------------------
318
- // initialize|load (existing) user cookies
292
+ // initialize|load user cookies
319
293
  // -----------------------------------------------------------------------
320
294
  user_session.created = timestamp_now;
321
295
  user_session.timestamp = timestamp_now;
322
296
 
297
+ user_consent = j1.readCookie(cookie_names.user_consent);
323
298
  user_session = j1.existsCookie(cookie_names.user_session)
324
299
  ? j1.readCookie(cookie_names.user_session)
325
300
  : j1.writeCookie({
326
301
  name: cookie_names.user_session,
327
302
  data: user_session,
303
+ samesite: 'Strict'
328
304
  });
329
305
 
330
306
  user_state = j1.existsCookie(cookie_names.user_state)
@@ -332,27 +308,38 @@ var j1 = (function () {
332
308
  : j1.writeCookie({
333
309
  name: cookie_names.user_state,
334
310
  data: user_state,
311
+ samesite: 'Strict',
335
312
  expires: 365
336
313
  });
337
314
 
338
315
  user_state.session_active = true;
339
- j1.writeCookie({
340
- name: cookie_names.user_state,
341
- data: user_state,
342
- expires: 365
343
- });
316
+
317
+ if (!user_consent.analyses || !user_consent.personalization) {
318
+ // expire consent|state cookies to session
319
+ j1.writeCookie({
320
+ name: cookie_names.user_state,
321
+ data: user_state,
322
+ samesite: 'Strict'
323
+ });
324
+ } else {
325
+ j1.writeCookie({
326
+ name: cookie_names.user_state,
327
+ data: user_state,
328
+ samesite: 'Strict',
329
+ expires: 365
330
+ });
331
+ }
344
332
 
345
333
  // detect middleware (mode 'app') and update user session cookie
346
334
  // -----------------------------------------------------------------------
347
- // if (user_session.mode === 'na' || user_session.mode === 'app') {
348
335
  if (user_session.mode === 'app') {
349
336
  var url = new liteURL(window.location.href);
350
337
  var ep_status = baseUrl + '/status' + '?page=' + window.location.pathname;
351
338
  var detectTimeout = 50;
352
339
 
353
- baseUrl = url.origin;
340
+ baseUrl = url.origin;
354
341
 
355
- // see: https://stackoverflow.com/questions/3709597/wait-until-all-jquery-ajax-requests-are-done
342
+ // See: https://stackoverflow.com/questions/3709597/wait-until-all-jquery-ajax-requests-are-done
356
343
  $.when (
357
344
  $.ajax(ep_status)
358
345
  )
@@ -369,14 +356,12 @@ var j1 = (function () {
369
356
  logger.info('update user session cookie');
370
357
  j1.writeCookie({
371
358
  name: cookie_names.user_session,
372
- data: user_session
359
+ data: user_session,
360
+ samesite: 'Strict'
373
361
  });
374
362
  j1.setState(curr_state);
375
363
  logger.info('state: ' + j1.getState());
376
364
 
377
-
378
-
379
-
380
365
  var dependencies_met_page_displayed = setInterval (function () {
381
366
  if (j1.getState() == 'finished') {
382
367
  if (j1.authEnabled()) {
@@ -411,8 +396,9 @@ var j1 = (function () {
411
396
 
412
397
  logger.info(logText);
413
398
  j1.writeCookie({
414
- name: cookie_names.user_session,
415
- data: user_session
399
+ name: cookie_names.user_session,
400
+ data: user_session,
401
+ samesite: 'Strict'
416
402
  });
417
403
  j1.setState(curr_state);
418
404
  logger.info('state: ' + j1.getState());
@@ -424,10 +410,6 @@ var j1 = (function () {
424
410
  logger.info('page is being initialized');
425
411
  }
426
412
 
427
- // jadams: for testing only
428
- // display page
429
- // $('#no_flicker').css('display', 'block');
430
-
431
413
  state = 'started';
432
414
  logger.info('state: ' + state);
433
415
  logger.info('page is being initialized');
@@ -443,7 +425,6 @@ var j1 = (function () {
443
425
  // process|update user state cookie
444
426
  themeName = user_session.theme_name;
445
427
  themeCss = user_session.theme_css;
446
- themeExtensionCss = user_session.theme_extension_css;
447
428
 
448
429
  // save last page access
449
430
  // see: https://stackoverflow.com/questions/3528324/how-to-get-the-previous-url-in-javascript
@@ -468,18 +449,15 @@ var j1 = (function () {
468
449
  last_pager = user_session.last_pager;
469
450
  }
470
451
 
471
- // jadams: for testing only
472
- // display page
473
- //$('#no_flicker').css('display', 'block');
474
-
475
452
  logger.info('update user session cookie');
476
453
  j1.writeCookie({
477
- name: cookie_names.user_session,
478
- data: user_session
454
+ name: cookie_names.user_session,
455
+ data: user_session,
456
+ samesite: 'Strict'
479
457
  });
480
458
 
459
+ // NOTE: asynchronous calls should be rewitten to xhrData
481
460
  // initialize page resources for blocks
482
- // (asynchronous, should be rewitten to xhrData)
483
461
  j1.initBanner(settings);
484
462
  j1.initPanel(settings);
485
463
  j1.initFooter(settings);
@@ -490,8 +468,9 @@ var j1 = (function () {
490
468
 
491
469
  user_session.timestamp = timestamp_now;
492
470
  j1.writeCookie({
493
- name: cookie_names.user_session,
494
- data: user_session
471
+ name: cookie_names.user_session,
472
+ data: user_session,
473
+ samesite: 'Strict'
495
474
  });
496
475
 
497
476
  // -----------------------------------------------------------------------
@@ -599,7 +578,6 @@ var j1 = (function () {
599
578
  if (selector.length) {
600
579
  logText = 'loading banner on id: ' +banner[i];
601
580
  logger.info(logText);
602
- // var banner_data_path = '{{banner_data_path}} ' + id + ' > *';
603
581
  var banner_data_path = '{{banner_data_path}} ' + id;
604
582
  selector.load(banner_data_path, cb_load_closure(id));
605
583
  }
@@ -703,7 +681,6 @@ var j1 = (function () {
703
681
  if ( selector.length ) {
704
682
  logText = 'loading panel on id: ' +panel[i];
705
683
  logger.info(logText);
706
- // var panel_data_path = '{{panel_data_path}} ' + id + ' > *';
707
684
  var panel_data_path = '{{panel_data_path}} ' + id;
708
685
  selector.load(panel_data_path, cb_load_closure(id));
709
686
  }
@@ -737,12 +714,6 @@ var j1 = (function () {
737
714
  j1.setXhrDataState(footer_id, statusTxt);
738
715
  j1.setXhrDomState(footer_id, statusTxt);
739
716
  logger.info('XHR data loaded in the DOM: ' + footer_id);
740
-
741
- // jadams, 2020-07-21: intermediate state DISABLED
742
- // state = 'footer_loaded';
743
- // logger.info('set state for module ' + mod + ': ' + state);
744
- // executeFunctionByName(mod + '.setState', window, state);
745
-
746
717
  logText = 'initialization finished';
747
718
  logger.info(logText);
748
719
  }
@@ -764,7 +735,6 @@ var j1 = (function () {
764
735
  var id = '#' + '{{footer_id}}';
765
736
  var selector = $(id);
766
737
  if ( selector.length ) {
767
- // var footer_data_path = '{{footer_data_path}} ' + id + ' > *';
768
738
  var footer_data_path = '{{footer_data_path}} ' + id;
769
739
  selector.load(footer_data_path, cb_load_closure(id));
770
740
  } else {
@@ -820,7 +790,8 @@ var j1 = (function () {
820
790
  user_session.current_page = current_url.pathname;
821
791
  j1.writeCookie({
822
792
  name: cookie_names.user_session,
823
- data: user_session
793
+ data: user_session,
794
+ samesite: 'Strict'
824
795
  });
825
796
 
826
797
  providerPermissions = user_session.provider_permissions;
@@ -863,14 +834,14 @@ var j1 = (function () {
863
834
  $('#quickLinksCookieButton').css('display', 'none');
864
835
  }
865
836
 
866
- // show|hide translator icon
867
- if (translation_enabled) {
868
- logger.info('translator detected: google');
869
- logger.info('initialize language selector');
870
- $('.goog-te-combo').addClass('form-control');
871
- }
837
+ // show|hide translator icon (currently NOT supported)
838
+ // if (translation_enabled) {
839
+ // logger.info('translator detected: google');
840
+ // logger.info('initialize language selector');
841
+ // $('.goog-te-combo').addClass('form-control');
842
+ // }
872
843
 
873
- // show cc icon
844
+ // show cc icon (currently NOT supported)
874
845
  // $('#quickLinksControlCenterButton').css('display', 'block');
875
846
 
876
847
  if (j1.authEnabled()) {
@@ -934,17 +905,21 @@ var j1 = (function () {
934
905
  user_session.current_page = current_url.pathname;
935
906
  j1.writeCookie({
936
907
  name: cookie_names.user_session,
937
- data: user_session
908
+ data: user_session,
909
+ samesite: 'Strict'
938
910
  });
939
911
 
940
- // show|hide translator icon
941
- if (translation_enabled) {
942
- logger.info('translator detected: google');
943
- logger.info('initialize language selector');
944
- $('.goog-te-combo').addClass('form-control');
945
- }
912
+ // show|hide translator icon (currently NOT supported)
913
+ // if (translation_enabled) {
914
+ // logger.info('translator detected: google');
915
+ // logger.info('initialize language selector');
916
+ // $('.goog-te-combo').addClass('form-control');
917
+ // }
918
+
919
+ // show cc icon (currently NOT supported)
920
+ // $('#quickLinksControlCenterButton').css('display', 'block');
946
921
 
947
- // show|hide cookie icon (should MOVED to Cookiebar ???)
922
+ // show|hide cookie icon
948
923
  if (j1.existsCookie(cookie_names.user_consent)) {
949
924
  // Display cookie icon
950
925
  logText = 'show cookie icon';
@@ -958,7 +933,7 @@ var j1 = (function () {
958
933
  }
959
934
 
960
935
  // If the page requested contains an anchor element,
961
- // do a smooth scroll to
936
+ // do a smooth scroll
962
937
  j1.scrollTo();
963
938
 
964
939
  if (user_session.previous_page !== user_session.current_page) {
@@ -1051,7 +1026,6 @@ var j1 = (function () {
1051
1026
  var toccerScrollOffset = {{toccer_options.scrollSmoothOffset}};
1052
1027
 
1053
1028
  // calculate offset for correct (smooth) scroll position
1054
- //
1055
1029
  var $pagehead = $('.attic');
1056
1030
  var $navbar = $('nav.navbar');
1057
1031
  var $adblock = $('#adblock');
@@ -1069,7 +1043,6 @@ var j1 = (function () {
1069
1043
  var scrollOffset = navbarType == 'fixed' ? -1*(n + a + l) : -1*(h + n + a + l);
1070
1044
 
1071
1045
  // static offset, to be checked why this is needed
1072
- //
1073
1046
  scrollOffset = scrollOffset + toccerScrollOffset;
1074
1047
 
1075
1048
  if (anchor_id && anchor_id !== '#') {
@@ -1149,11 +1122,6 @@ var j1 = (function () {
1149
1122
  return function (responseTxt, statusTxt, xhr) {
1150
1123
  var logger = log4javascript.getLogger('j1.adapter.xhrData');
1151
1124
  if ( statusTxt === 'success' ) {
1152
- // jadams, 2020-07-21: intermediate state should DISABLED
1153
- // if (state) {
1154
- // logger.info('set state for ' +mod+ ' to: ' + state);
1155
- // executeFunctionByName(mod + '.setState', window, state);
1156
- // }
1157
1125
  j1.setXhrDataState(id, statusTxt);
1158
1126
  j1.setXhrDomState(id, 'pending');
1159
1127
 
@@ -1295,21 +1263,17 @@ var j1 = (function () {
1295
1263
  // context/HTTPS).
1296
1264
  // -------------------------------------------------------------------------
1297
1265
  //
1298
- writeCookie: function (options /*name, data, [path, expires, SameSite, secure]*/) {
1266
+ writeCookie: function (options /*name, data, [path, expires, samesite, http_only, secure]*/) {
1299
1267
  var defaults = {
1300
1268
  data: {},
1301
1269
  name: '',
1302
- expires: 0,
1303
1270
  path: '/',
1304
- // SameSite: 'Strict',
1305
- // SameSite: 'Lax',
1271
+ expires: 0,
1272
+ samesite: 'Lax',
1306
1273
  http_only: false,
1307
1274
  secure: false
1308
1275
  };
1309
1276
  var settings = $.extend(defaults, options);
1310
- // moment not used anymore
1311
- // var epoch = Math.floor(Date.now()/1000);
1312
- // var timestamp_now = moment.unix(epoch).format('YYYY-MM-DD HH:mm:ss');
1313
1277
  var date = new Date();
1314
1278
  var timestamp_now = date.toISOString();
1315
1279
  var cookie_data = {};
@@ -1326,25 +1290,26 @@ var j1 = (function () {
1326
1290
  if (settings.expires > 0) {
1327
1291
  Cookies.set(settings.name, data_encoded, {
1328
1292
  expires: settings.expires,
1329
- SameSite: settings.SameSite
1293
+ SameSite: settings.samesite
1330
1294
  });
1331
1295
  } else {
1332
1296
  Cookies.set(settings.name, data_encoded, {
1333
- SameSite: settings.SameSite
1297
+ SameSite: settings.samesite
1334
1298
  });
1335
1299
  }
1336
1300
  } else {
1337
1301
  cookie_data = settings.data;
1338
1302
  data_json = JSON.stringify(settings.data);
1339
1303
  data_encoded = window.btoa(data_json);
1304
+
1340
1305
  if (settings.expires > 0) {
1341
1306
  Cookies.set(settings.name, data_encoded, {
1342
1307
  expires: settings.expires,
1343
- SameSite: settings.SameSite
1308
+ SameSite: settings.samesite
1344
1309
  });
1345
1310
  } else {
1346
1311
  Cookies.set(settings.name, data_encoded, {
1347
- SameSite: settings.SameSite
1312
+ SameSite: settings.samesite
1348
1313
  });
1349
1314
  }
1350
1315
  }
@@ -1705,12 +1670,6 @@ var j1 = (function () {
1705
1670
  // -----------------------------------------------------------------------
1706
1671
  $('head').append('<style>.g-bg-primary { background-color: ' +bg_primary+ ' !important; }</style>');
1707
1672
 
1708
- // Set color of timeline bullet
1709
- // -----------------------------------------------------------------------
1710
- // $('head').append('<style>.tmicon { background: ' +bg_primary+ ' !important; }</style>');
1711
- // $('head').append('<style>.timeline-panel:after { border-left-color: ' +bg_primary+ ' !important; }</style>');
1712
- // $('head').append('<style>.timeline-panel:after { border-right-color: ' +bg_primary+ ' !important; }</style>');
1713
-
1714
1673
  // mdi icons
1715
1674
  // -----------------------------------------------------------------------
1716
1675
  $('head').append('<style>.iconify-md-bg-primary { color: ' +bg_primary+ ' !important; }</style>');
@@ -1851,7 +1810,7 @@ var j1 = (function () {
1851
1810
  for ( var i = 0; i < length; i++ ) {
1852
1811
  result += characters.charAt(Math.floor(Math.random() * charactersLength));
1853
1812
  }
1854
- return result;
1813
+ return result;
1855
1814
  }, // END generateId
1856
1815
 
1857
1816
  // -------------------------------------------------------------------------
@@ -1898,10 +1857,20 @@ var j1 = (function () {
1898
1857
  }; // END j1 (return)
1899
1858
  }) (j1, window);
1900
1859
 
1901
- {% endcapture %}
1860
+ {% comment %} NOTE: Unexpected token: punc (;) errors if compressed
1861
+ --------------------------------------------------------------------------------
1902
1862
  {% if production %}
1903
1863
  {{ cache | minifyJS }}
1904
1864
  {% else %}
1905
1865
  {{ cache | strip_empty_lines }}
1906
1866
  {% endif %}
1907
1867
  {% assign cache = nil %}
1868
+ -------------------------------------------------------------------------------- {% endcomment %}
1869
+
1870
+ {% endcapture %}
1871
+ {% if production %}
1872
+ {{ cache | strip_empty_lines }}
1873
+ {% else %}
1874
+ {{ cache | strip_empty_lines }}
1875
+ {% endif %}
1876
+ {% assign cache = nil %}