j1-template 2021.2.7 → 2021.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 87d867024ead1fca54419d33aa8e4694472191b46b85c8ce150515fd6c1465f1
4
- data.tar.gz: ce65ba375dc07e618cae3cfcd747d70f309c161f49ad2b7f9a26c937d7ce7f8e
3
+ metadata.gz: 38798bfdd94fe5814b0219fc7a5f7ea954dc58d8c119f7bead89ffafacf17aca
4
+ data.tar.gz: ab5ea5633b81a0b40eb6580348fd517d1cb0d0662ec2550aee1704af46a872f0
5
5
  SHA512:
6
- metadata.gz: 5a262a21fa884f5525c78c0e07886efa4933b7883432d9260491ec8ca9291ad591b0dc5e955fa2488ff15d3e9424463b2055ffbfee210d3dbd3557d12cbe8324
7
- data.tar.gz: d1829145757d93e6acdbc0fae8309ccbc332201974628e8963adf92bbd9d1d71ca3f7b23ff015d7f8ea2e0125bd23482352b3a9bb93cf3d611165a35398d2e80
6
+ metadata.gz: 6de432f844dc08b37180ecc5335f8738a9a00de5f7691e133029b67b8b9aef64bcf69801e2fb31d56cf6ac702f43ce7b0c72233429b3e4f653fef487962acdc6
7
+ data.tar.gz: b9e7d4ec2d40e8792df712a50e225fde6386c60475ff8742b6878f4044ec68161e4e47f99b201d94d291bdcaca051556a06fe373b92872e0b793bdee06199f76
@@ -28,10 +28,11 @@
28
28
  <!-- [INFO ] [j1.modules.connectors.translation ] [ place callback for the Google Translator API ] -->
29
29
  <script>
30
30
  function googleTranslateElementInit() {
31
- new google.translate.TranslateElement({
31
+ var gtAPI = new google.translate.TranslateElement({
32
32
  pageLanguage: 'en',
33
33
  layout: google.translate.TranslateElement.FloatPosition.TOP_LEFT
34
34
  },
35
35
  'google_translate_element');
36
+ j1.adapter.translator.postTranslateElementInit(gtAPI);
36
37
  }
37
38
  </script>
@@ -0,0 +1,525 @@
1
+ ---
2
+ regenerate: true
3
+ ---
4
+
5
+ {% capture cache %}
6
+
7
+ {% comment %}
8
+ # -----------------------------------------------------------------------------
9
+ # ~/assets/themes/j1/adapter/js/translator.js
10
+ # Liquid template to create the Template Adapter for J1 Translator
11
+ #
12
+ # Product/Info:
13
+ # http://jekyll.one
14
+ #
15
+ # Copyright (C) 2021 Juergen Adams
16
+ #
17
+ # J1 Template is licensed under the MIT License.
18
+ # For details, see https://jekyll.one
19
+ # -----------------------------------------------------------------------------
20
+ # Test data:
21
+ # {{ liquid_var | debug }}
22
+ # -----------------------------------------------------------------------------
23
+ {% endcomment %}
24
+
25
+ {% comment %} Liquid var initialization
26
+ -------------------------------------------------------------------------------- {% endcomment %}
27
+
28
+ {% comment %} Set config files
29
+ -------------------------------------------------------------------------------- {% endcomment %}
30
+ {% assign environment = site.environment %}
31
+ {% assign blocks = site.data.blocks %}
32
+ {% assign modules = site.data.modules %}
33
+ {% assign template_config = site.data.j1_config %}
34
+
35
+ {% comment %} Set config data
36
+ -------------------------------------------------------------------------------- {% endcomment %}
37
+ {% assign translator_defaults = modules.defaults.translator.defaults %}
38
+ {% assign translator_settings = modules.translator.settings %}
39
+ {% assign tracking_enabled = template_config.analytics.enabled %}
40
+
41
+
42
+ {% comment %} Set config options
43
+ -------------------------------------------------------------------------------- {% endcomment %}
44
+ {% assign translator_options = translator_defaults | merge: translator_settings %}
45
+
46
+ {% assign production = false %}
47
+ {% if environment == 'prod' or environment == 'production' %}
48
+ {% assign production = true %}
49
+ {% endif %}
50
+
51
+ /*
52
+ # -----------------------------------------------------------------------------
53
+ # ~/assets/themes/j1/adapter/js/translator.js
54
+ # JS Adapter for J1 Translate
55
+ #
56
+ # Product/Info:
57
+ # http://jekyll.one
58
+ #
59
+ # Copyright (C) 2021 Juergen Adams
60
+ #
61
+ # J1 Template is licensed under MIT License.
62
+ # See: https://github.com/jekyll-one/J1 Template/blob/master/LICENSE
63
+ # -----------------------------------------------------------------------------
64
+ # Adapter generated: {{site.time}}
65
+ # -----------------------------------------------------------------------------
66
+ */
67
+
68
+ // -----------------------------------------------------------------------------
69
+ // ESLint shimming
70
+ // -----------------------------------------------------------------------------
71
+ /* eslint indent: "off" */
72
+ /* eslint quotes: "off" */
73
+ // -----------------------------------------------------------------------------
74
+ // https://github.com/EdwardBalaj/Simple-DeepL-API-Integration
75
+ // https://github.com/marghoobsuleman/ms-Dropdown
76
+ // https://www.marghoobsuleman.com/image-dropdown/help
77
+ // https://www.marghoobsuleman.com/image-dropdown/advanced-help
78
+ 'use strict';
79
+
80
+ {% comment %} Main
81
+ -------------------------------------------------------------------------------- {% endcomment %}
82
+ j1.adapter['translator'] = (function (j1, window) {
83
+
84
+ var environment = '{{environment}}';
85
+ var tracking_enabled = ('{{tracking_enabled}}' === 'true') ? true: false; // Analytics/GA enabled?
86
+ var moduleOptions = {};
87
+ var user_translate = {};
88
+ var _this;
89
+ var $modal;
90
+ var domain;
91
+ var cookie_names;
92
+ var user_consent;
93
+ var logger;
94
+ var url;
95
+ var baseUrl;
96
+ var hostname;
97
+ var domain;
98
+ var cookie_sub_domains;
99
+ var secure;
100
+ var logText;
101
+ var cookie_written;
102
+ var modal_language;
103
+ var navigator_language;
104
+ var translation_language;
105
+ var ddSourceLanguage;
106
+ var head;
107
+ var script;
108
+ var languageList;
109
+
110
+ // ---------------------------------------------------------------------------
111
+ // helper functions
112
+ // ---------------------------------------------------------------------------
113
+
114
+ // ---------------------------------------------------------------------------
115
+ // setCookie()
116
+ // writes a flat cookie (not using an encoded JSON string)
117
+ // ---------------------------------------------------------------------------
118
+ function setCookie(options /*cName, cValue, expDays*/) {
119
+ var defaults = {};
120
+ var settings;
121
+ var document_cookie;
122
+ var stringifiedAttributes = '';
123
+
124
+ defaults = {
125
+ name: '',
126
+ path: '/',
127
+ expires: 0,
128
+ domain: 'localhost',
129
+ samesite: 'Strict',
130
+ http_only: false,
131
+ secure: false
132
+ };
133
+ settings = $.extend(defaults, options);
134
+
135
+ stringifiedAttributes += '; ' + 'path=' + settings.path;
136
+
137
+ if (settings.expires > 0) {
138
+ date.setTime(date.getTime() + (settings.expires * 24 * 60 * 60 * 1000));
139
+ stringifiedAttributes += '; ' + 'expires=' + date.toUTCString();
140
+ }
141
+
142
+ stringifiedAttributes += '; ' + 'SameSite=' + settings.samesite;
143
+
144
+ if (settings.secure) {
145
+ stringifiedAttributes += '; ' + 'secure=' + settings.secure;
146
+ }
147
+
148
+ // document_cookie = settings.name + '=' + settings.data + '; path=' + settings.path + '; ' + 'domain=' + settings.domain + '; ' + 'SameSite=' + settings.samesite + ';';
149
+ document_cookie = settings.name + '=' + settings.data + stringifiedAttributes;
150
+
151
+ document.cookie = document_cookie;
152
+ };
153
+
154
+ // ---------------------------------------------------------------------------
155
+ // Main object
156
+ // ---------------------------------------------------------------------------
157
+ return {
158
+
159
+ // -------------------------------------------------------------------------
160
+ // Initializer
161
+ // -------------------------------------------------------------------------
162
+ init: function (options) {
163
+
164
+ // -----------------------------------------------------------------------
165
+ // globals
166
+ // -----------------------------------------------------------------------
167
+ _this = j1.adapter.translator;
168
+ logger = log4javascript.getLogger('j1.adapter.translator');
169
+ url = new liteURL(window.location.href);
170
+ baseUrl = url.origin;
171
+ hostname = url.hostname;
172
+ domain = hostname.substring(hostname.lastIndexOf('.', hostname.lastIndexOf('.') - 1) + 1);
173
+ secure = (url.protocol.includes('https')) ? true : false;
174
+ modal_language = "{{site.language}}";
175
+ navigator_language = navigator.language || navigator.userLanguage; // userLanguage for MS IE compatibility
176
+ translation_language = navigator_language.split('-')[0];
177
+ cookie_names = j1.getCookieNames();
178
+ head = document.getElementsByTagName('head')[0];
179
+ script = document.createElement('script');
180
+ script.id = 'google-translate';
181
+ script.src = '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit';
182
+
183
+ user_translate = {
184
+ 'translatorName': 'google',
185
+ 'translationEnabled': false,
186
+ 'analysis': true,
187
+ 'personalization': true,
188
+ 'translateAllPages': true,
189
+ 'useLanguageFromBrowser': true,
190
+ 'translationLanguage': translation_language,
191
+ };
192
+
193
+ // set domain used by cookies
194
+ if(domain !== 'localhost') {
195
+ cookie_sub_domains = '.' + hostname;
196
+ } else {
197
+ cookie_sub_domains = hostname;
198
+ }
199
+
200
+ if (j1.existsCookie(cookie_names.user_translate)) {
201
+ user_translate = j1.readCookie(cookie_names.user_translate);
202
+ } else {
203
+ logger.debug('\n' + 'write to cookie : ' + cookie_names.user_translate);
204
+ cookie_written = j1.writeCookie({
205
+ name: cookie_names.user_translate,
206
+ data: user_translate,
207
+ samesite: 'Strict',
208
+ expires: 365
209
+ });
210
+ }
211
+
212
+ // set domain used by cookies
213
+ if(domain !== 'localhost') {
214
+ cookie_sub_domains = '.' + hostname;
215
+ } else {
216
+ cookie_sub_domains = hostname;
217
+ }
218
+
219
+ // initialize state flag
220
+ _this.state = 'pending';
221
+ // _this.settings.languageList = '/assets/data/ms_select.json';
222
+
223
+ // -----------------------------------------------------------------------
224
+ // Default module settings
225
+ // -----------------------------------------------------------------------
226
+ var settings = $.extend({
227
+ module_name: 'j1.adapter.translator',
228
+ generated: '{{site.time}}'
229
+ }, options);
230
+
231
+ {% comment %} Load module config from yml data
232
+ -------------------------------------------------------------------------- {% endcomment %}
233
+ // Load module DEFAULTS|CONFIG
234
+ /* eslint-disable */
235
+ moduleOptions = $.extend({}, {{translator_options | replace: '=>', ':' | replace: 'nil', '""'}});
236
+ /* eslint-enable */
237
+
238
+ if (typeof settings !== 'undefined') {
239
+ moduleOptions = j1.mergeData(moduleOptions, settings);
240
+ }
241
+
242
+ // -----------------------------------------------------------------------
243
+ // initializer
244
+ // -----------------------------------------------------------------------
245
+ var dependencies_met_page_ready = setInterval (function (options) {
246
+ user_consent = j1.readCookie(cookie_names.user_consent);
247
+
248
+ if ( j1.getState() === 'finished' ) {
249
+ _this.setState('started');
250
+ logger.info('\n' + 'state: ' + _this.getState());
251
+ logger.info('\n' + 'module is being initialized');
252
+
253
+ if ($('google_translate_element')) {
254
+ $('google_translate_element').hide();
255
+ }
256
+
257
+ // show|hide translate button if enabled
258
+ if (moduleOptions.hideTranslatorIcon) {
259
+ if (!user_consent.analysis || !user_consent.personalization) {
260
+ // disable google translate button if visible
261
+ if ($('#quickLinksTranslateButton').css('display') === 'block') {
262
+ $('#quickLinksTranslateButton').css('display', 'none');
263
+ }
264
+ }
265
+ if (user_consent.analysis && user_consent.personalization) {
266
+ // enable google translate button if not visible
267
+ if ($('#quickLinksTranslateButton').css('display') === 'none') {
268
+ $('#quickLinksTranslateButton').css('display', 'block');
269
+ }
270
+ }
271
+ }
272
+
273
+ // update user_translate cookie
274
+ user_translate.analysis = user_consent.analysis;
275
+ user_translate.personalization = user_consent.personalization;
276
+ cookie_written = j1.writeCookie({
277
+ name: cookie_names.user_translate,
278
+ data: user_translate,
279
+ samesite: 'Strict',
280
+ secure: secure
281
+ });
282
+
283
+ j1.translator = new Translator({
284
+ contentURL: moduleOptions.contentURL, // dialog content (modals) for all supported languages
285
+ cookieName: moduleOptions.cookieName, // the name of the User State Cookie (primary data)
286
+ cookieConsentName: moduleOptions.cookieConsentName, // the name of the Cookie Consent Cookie (secondary data)
287
+ disableLanguageSelector: moduleOptions.disableLanguageSelector, // disable language dropdown for translation in dialog (modal)
288
+ dialogContainerID: moduleOptions.dialogContainerID, // dest container, the dialog modal is loaded (dynamically)
289
+ dialogLanguage: moduleOptions.dialogLanguage, // language for the dialog (modal)
290
+ translationLanguage: moduleOptions.translationLanguage, // default language for translation
291
+ translationLanguages: moduleOptions.google.translationLanguages,// supported languages for translation
292
+ translationEnabled: moduleOptions.translationEnabled, // run translation enabled|disabled
293
+ translatorName: moduleOptions.translatorName, // translator used for translation
294
+ xhrDataElement: moduleOptions.xhrDataElement, // container for all language-specific dialogs (modals)
295
+ postSelectionCallback: moduleOptions.google.postSelectionCallback
296
+ });
297
+
298
+ if (user_consent.analysis && user_consent.personalization && user_translate.translationEnabled) {
299
+ if (moduleOptions.translatorName === 'google') {
300
+ head.appendChild(script);
301
+ if ($('google_translate_element')) {
302
+ $('google_translate_element').hide();
303
+ }
304
+ }
305
+ } else {
306
+ if (moduleOptions.translatorName === 'google') {
307
+ j1.removeCookie({name: 'googtrans', domain: domain});
308
+ }
309
+ }
310
+
311
+ _this.setState('finished');
312
+ logger.info('\n' + 'state: ' + _this.getState());
313
+ logger.debug('\n' + 'module initialized successfully');
314
+ clearInterval(dependencies_met_page_ready);
315
+ }
316
+ });
317
+ }, // END init
318
+
319
+ // -------------------------------------------------------------------------
320
+ // messageHandler: MessageHandler for J1 google_translate module
321
+ // Manage messages send from other J1 modules
322
+ // -------------------------------------------------------------------------
323
+ messageHandler: function (sender, message) {
324
+ var json_message = JSON.stringify(message, undefined, 2);
325
+
326
+ logText = '\n' + 'received message from ' + sender + ': ' + json_message;
327
+ logger.debug(logText);
328
+
329
+ // -----------------------------------------------------------------------
330
+ // Process commands|actions
331
+ // -----------------------------------------------------------------------
332
+ if (message.type === 'command' && message.action === 'module_initialized') {
333
+ //
334
+ // Place handling of command|action here
335
+ //
336
+ logger.info('\n' + message.text);
337
+ }
338
+
339
+ //
340
+ // Place handling of other command|action here
341
+ //
342
+
343
+ return true;
344
+ }, // END messageHandler
345
+
346
+ // -------------------------------------------------------------------------
347
+ // setState()
348
+ // Sets the current (processing) state of the module
349
+ // -------------------------------------------------------------------------
350
+ setState: function (stat) {
351
+ _this.state = stat;
352
+ }, // END setState
353
+
354
+ // -------------------------------------------------------------------------
355
+ // getState()
356
+ // Returns the current (processing) state of the module
357
+ // -------------------------------------------------------------------------
358
+ getState: function () {
359
+ return _this.state;
360
+ }, // END getState
361
+
362
+ // -------------------------------------------------------------------------
363
+ // postTranslateElementInit()
364
+ // ???
365
+ // -------------------------------------------------------------------------
366
+ postTranslateElementInit: function () {
367
+ // var transCode = '/en/de';
368
+ //
369
+ // // set the transCode cookie (googtrans)
370
+ // setCookie({
371
+ // name: 'googtrans',
372
+ // data: transCode
373
+ // });
374
+ // j1.removeCookie({name: 'googtrans', domain: domain});
375
+ return;
376
+ }, // END postTranslateElementInit
377
+
378
+ // -------------------------------------------------------------------------
379
+ // cbGoogle()
380
+ // Called by the translator CORE module after the user
381
+ // has made the lanuage selection for translation (callback)
382
+ // -------------------------------------------------------------------------
383
+ cbGoogle: function () {
384
+ var cookie_names = j1.getCookieNames();
385
+ var user_state = j1.readCookie(cookie_names.user_state);
386
+ var user_consent = j1.readCookie(cookie_names.user_consent);
387
+ var user_translate = j1.readCookie(cookie_names.user_translate);
388
+ var msDropdownLang = document.getElementById('dropdownJSON').msDropdown;
389
+ var msDropdown = document.getElementById('dropdownJSON').msDropdown;
390
+ var head;
391
+ var script;
392
+ var srcLang;
393
+ var destLang;
394
+ var transCode;
395
+ var cookie_written;
396
+ var htmlScriptElement;
397
+ var selectedTranslationLanguage;
398
+
399
+ logger.info('\n' + 'entered post selection callback from google_translate');
400
+ logger.debug('\n' + 'current values from cookie consent: ' + JSON.stringify(user_consent));
401
+ logger.debug('\n' + 'current values from user state: ' + JSON.stringify(user_state));
402
+
403
+ selectedTranslationLanguage = msDropdownLang.value;
404
+ logger.info('\n' + 'selected translation language: ' + selectedTranslationLanguage);
405
+
406
+ // update cookie consent settings
407
+ user_consent.analysis = user_translate.analysis;
408
+ user_consent.personalization = user_translate.personalization;
409
+
410
+ cookie_written = j1.writeCookie({
411
+ name: cookie_names.user_consent,
412
+ data: user_consent,
413
+ samesite: 'Strict',
414
+ secure: secure,
415
+ expires: 0
416
+ });
417
+
418
+ // translation allowed
419
+ if (user_consent.analysis && user_consent.personalization) {
420
+ head = document.getElementsByTagName('head')[0];
421
+ script = document.createElement('script');
422
+ script.id = 'google-translate';
423
+ script.src = '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit';
424
+ htmlScriptElement = document.getElementById(script.id);
425
+
426
+ if (user_translate.translationEnabled && moduleOptions.translatorName === 'google') {
427
+ // head.appendChild(script);
428
+
429
+ if ($('google_translate_element')) {
430
+ $('google_translate_element').hide();
431
+ }
432
+
433
+ // set transCode settings
434
+ srcLang = "{{site.language}}";
435
+ destLang = translation_language;
436
+ transCode = '/' + srcLang + '/' + selectedTranslationLanguage;
437
+
438
+ // set the transCode cookie (googtrans)
439
+ setCookie({
440
+ name: 'googtrans',
441
+ data: transCode
442
+ });
443
+
444
+ // enable google transalate button if not visible
445
+ if ($('#quickLinksTranslateButton').css('display') === 'none') {
446
+ $('#quickLinksTranslateButton').css('display', 'block');
447
+ }
448
+ } else { // translation NOT allowed
449
+
450
+ // update cookie user translate settings
451
+ user_translate.translationEnabled = false;
452
+ cookie_written = j1.writeCookie({
453
+ name: cookie_names.user_translate,
454
+ data: user_translate,
455
+ samesite: 'Strict',
456
+ secure: secure
457
+ });
458
+
459
+ // stop translation for all pages
460
+ if (htmlScriptElement) { htmlScriptElement.remove(); }
461
+ j1.removeCookie({name: 'googtrans', domain: domain});
462
+ }
463
+ }
464
+
465
+ // translation NOT allowed
466
+ if (!user_translate.analysis || !user_translate.personalization) {
467
+ head = document.getElementsByTagName('head')[0];
468
+ script = document.createElement('script');
469
+ script.id = 'google-translate';
470
+
471
+ // update cookie consent settings
472
+ user_consent.analysis = user_translate.analysis;
473
+ user_consent.personalization = user_translate.personalization;
474
+ cookie_written = j1.writeCookie({
475
+ name: cookie_names.user_consent,
476
+ data: user_consent,
477
+ samesite: 'Strict',
478
+ secure: secure,
479
+ expires: 0
480
+ });
481
+
482
+ // update cookie user translate settings
483
+ user_translate.translationEnabled = false;
484
+ cookie_written = j1.writeCookie({
485
+ name: cookie_names.user_translate,
486
+ data: user_consent,
487
+ samesite: 'Strict',
488
+ secure: secure,
489
+ expires: 0
490
+ });
491
+
492
+ // stop translation for all pages
493
+ if (htmlScriptElement) { htmlScriptElement.remove(); }
494
+ j1.removeCookie({name: 'googtrans', domain: domain});
495
+ }
496
+
497
+ if (moduleOptions.reloadPageOnChange) {
498
+ // reload current page (skip cache)
499
+ location.reload(true);
500
+ }
501
+
502
+ // disable google translate button if visible
503
+ if ($('#quickLinksTranslateButton').css('display') === 'block') {
504
+ $('#quickLinksTranslateButton').css('display', 'none');
505
+ }
506
+
507
+ }, // END cbGoogle
508
+
509
+ // -------------------------------------------------------------------------
510
+ // cbDeepl()
511
+ // Called by the translator CORE module after the user
512
+ // has made the lanuage selection for translation (callback)
513
+ // -------------------------------------------------------------------------
514
+ cbDeepl: function () {
515
+
516
+ // code for post procession on Deepl translations
517
+
518
+ } // END cbDeepl
519
+
520
+ }; // END return
521
+ })(j1, window);
522
+
523
+ {% endcapture %}
524
+ {{ cache | strip_empty_lines }}
525
+ {% assign cache = nil %}
@@ -95,7 +95,7 @@ j1.adapter['translator'] = (function (j1, window) {
95
95
  var baseUrl;
96
96
  var hostname;
97
97
  var domain;
98
- var cookie_domain;
98
+ var cookie_sub_domains;
99
99
  var secure;
100
100
  var logText;
101
101
  var cookie_written;
@@ -118,16 +118,37 @@ j1.adapter['translator'] = (function (j1, window) {
118
118
  function setCookie(options /*cName, cValue, expDays*/) {
119
119
  var defaults = {};
120
120
  var settings;
121
+ var document_cookie;
122
+ var stringifiedAttributes = '';
121
123
 
122
124
  defaults = {
123
125
  name: '',
124
126
  path: '/',
125
127
  expires: 0,
126
- domain: 'localhost'
128
+ domain: 'localhost',
129
+ samesite: 'Strict',
130
+ http_only: false,
131
+ secure: false
127
132
  };
128
133
  settings = $.extend(defaults, options);
129
134
 
130
- document.cookie = settings.name + "=" + settings.data + "; path=/";
135
+ stringifiedAttributes += '; ' + 'path=' + settings.path;
136
+
137
+ if (settings.expires > 0) {
138
+ date.setTime(date.getTime() + (settings.expires * 24 * 60 * 60 * 1000));
139
+ stringifiedAttributes += '; ' + 'expires=' + date.toUTCString();
140
+ }
141
+
142
+ stringifiedAttributes += '; ' + 'SameSite=' + settings.samesite;
143
+
144
+ if (settings.secure) {
145
+ stringifiedAttributes += '; ' + 'secure=' + settings.secure;
146
+ }
147
+
148
+ // document_cookie = settings.name + '=' + settings.data + '; path=' + settings.path + '; ' + 'domain=' + settings.domain + '; ' + 'SameSite=' + settings.samesite + ';';
149
+ document_cookie = settings.name + '=' + settings.data + stringifiedAttributes;
150
+
151
+ document.cookie = document_cookie;
131
152
  };
132
153
 
133
154
  // ---------------------------------------------------------------------------
@@ -169,13 +190,14 @@ j1.adapter['translator'] = (function (j1, window) {
169
190
  'translationLanguage': translation_language,
170
191
  };
171
192
 
172
- // set domain used by cookies
193
+ // set sub domain settings for cookies
173
194
  if(domain !== 'localhost') {
174
- cookie_domain = '.' + hostname;
195
+ cookie_sub_domains = '.' + hostname;
175
196
  } else {
176
- cookie_domain = hostname;
197
+ cookie_sub_domains = hostname;
177
198
  }
178
199
 
200
+ // load|initialize user translate cookie
179
201
  if (j1.existsCookie(cookie_names.user_translate)) {
180
202
  user_translate = j1.readCookie(cookie_names.user_translate);
181
203
  } else {
@@ -188,13 +210,6 @@ j1.adapter['translator'] = (function (j1, window) {
188
210
  });
189
211
  }
190
212
 
191
- // set domain used by cookies
192
- if(domain !== 'localhost') {
193
- cookie_domain = '.' + hostname;
194
- } else {
195
- cookie_domain = hostname;
196
- }
197
-
198
213
  // initialize state flag
199
214
  _this.state = 'pending';
200
215
  // _this.settings.languageList = '/assets/data/ms_select.json';
@@ -229,6 +244,7 @@ j1.adapter['translator'] = (function (j1, window) {
229
244
  logger.info('\n' + 'state: ' + _this.getState());
230
245
  logger.info('\n' + 'module is being initialized');
231
246
 
247
+ // hide the google translate element if exists
232
248
  if ($('google_translate_element')) {
233
249
  $('google_translate_element').hide();
234
250
  }
@@ -274,15 +290,18 @@ j1.adapter['translator'] = (function (j1, window) {
274
290
  postSelectionCallback: moduleOptions.google.postSelectionCallback
275
291
  });
276
292
 
293
+ // enable|disable translation (after callback)
277
294
  if (user_consent.analysis && user_consent.personalization && user_translate.translationEnabled) {
278
295
  if (moduleOptions.translatorName === 'google') {
279
296
  head.appendChild(script);
280
- $('google_translate_element').hide();
297
+ if ($('google_translate_element')) {
298
+ $('google_translate_element').hide();
299
+ }
281
300
  }
282
301
  } else {
283
302
  if (moduleOptions.translatorName === 'google') {
284
- j1.removeCookie({name: 'googtrans', domain: cookie_domain});
285
- }
303
+ j1.removeCookie({name: 'googtrans', domain: domain});
304
+ }
286
305
  }
287
306
 
288
307
  _this.setState('finished');
@@ -336,146 +355,56 @@ j1.adapter['translator'] = (function (j1, window) {
336
355
  return _this.state;
337
356
  }, // END getState
338
357
 
358
+ // -------------------------------------------------------------------------
359
+ // postTranslateElementInit()
360
+ // ???
361
+ // -------------------------------------------------------------------------
362
+ postTranslateElementInit: function (response) {
363
+ // code for post processing
364
+ logger.info('\n' + 'postTranslateElementInit entered');
365
+ logger.info('\n' + response.T.Dh);
366
+ return;
367
+ }, // END postTranslateElementInit
368
+
339
369
  // -------------------------------------------------------------------------
340
370
  // cbGoogle()
341
- // Called by the translator CORE module after the user
342
- // has made the lanuage selection for translation (callback)
371
+ // Called by the translator CORE module after the user made the
372
+ // selection for a translation|language
343
373
  // -------------------------------------------------------------------------
344
374
  cbGoogle: function () {
345
- var cookie_names = j1.getCookieNames();
346
- var user_state = j1.readCookie(cookie_names.user_state);
347
- var user_consent = j1.readCookie(cookie_names.user_consent);
348
- var user_translate = j1.readCookie(cookie_names.user_translate);
349
- var msDropdownLang = document.getElementById('dropdownJSON').msDropdown;
350
- var msDropdown = document.getElementById('dropdownJSON').msDropdown;
351
- var head;
352
- var script;
375
+ var logger = log4javascript.getLogger('j1.adapter.translator.cbGoogle');
376
+ var msDropdown = document.getElementById('dropdownJSON').msDropdown;
377
+ var selectedTranslationLanguage;
353
378
  var srcLang;
354
379
  var destLang;
355
380
  var transCode;
356
- var cookie_written;
357
- var htmlScriptElement;
358
- var selectedTranslationLanguage;
359
381
 
360
- logger.info('\n' + 'entered post selection callback from google_translate');
361
- logger.debug('\n' + 'current values from cookie consent: ' + JSON.stringify(user_consent));
362
- logger.debug('\n' + 'current values from user state: ' + JSON.stringify(user_state));
363
-
364
- selectedTranslationLanguage = msDropdownLang.value;
382
+ selectedTranslationLanguage = msDropdown.value;
365
383
  logger.info('\n' + 'selected translation language: ' + selectedTranslationLanguage);
366
384
 
367
- // update cookie consent settings
368
- user_consent.analysis = user_translate.analysis;
369
- user_consent.personalization = user_translate.personalization;
385
+ // set transCode settings
386
+ srcLang = "{{site.language}}";
387
+ destLang = translation_language;
388
+ transCode = '/' + srcLang + '/' + selectedTranslationLanguage;
370
389
 
371
- cookie_written = j1.writeCookie({
372
- name: cookie_names.user_consent,
373
- data: user_consent,
374
- samesite: 'Strict',
375
- secure: secure,
376
- expires: 0
390
+ // write the googtrans cookie
391
+ setCookie({
392
+ name: 'googtrans',
393
+ data: transCode
377
394
  });
378
395
 
379
- // translation allowed
380
- if (user_consent.analysis && user_consent.personalization) {
381
- head = document.getElementsByTagName('head')[0];
382
- script = document.createElement('script');
383
- script.id = 'google-translate';
384
- script.src = '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit';
385
- htmlScriptElement = document.getElementById(script.id);
386
-
387
- if (user_translate.translationEnabled && moduleOptions.translatorName === 'google') {
388
- head.appendChild(script);
389
-
390
- if ($('google_translate_element')) {
391
- $('google_translate_element').hide();
392
- }
393
-
394
- // set transCode settings
395
- srcLang = "{{site.language}}";
396
- destLang = translation_language;
397
- transCode = '/' + srcLang + '/' + selectedTranslationLanguage;
398
-
399
- // set the transCode cookie (googtrans)
400
- setCookie({
401
- name: 'googtrans',
402
- data: transCode
403
- });
404
-
405
- // enable google transalate button if not visible
406
- if ($('#quickLinksTranslateButton').css('display') === 'none') {
407
- $('#quickLinksTranslateButton').css('display', 'block');
408
- }
409
- } else { // translation NOT allowed
410
-
411
- // update cookie user translate settings
412
- user_translate.translationEnabled = false;
413
- cookie_written = j1.writeCookie({
414
- name: cookie_names.user_translate,
415
- data: user_translate,
416
- samesite: 'Strict',
417
- secure: secure
418
- });
419
-
420
- // stop translation for all pages
421
- if (htmlScriptElement) { htmlScriptElement.remove(); }
422
- j1.removeCookie({name: 'googtrans', domain: cookie_domain});
423
- }
424
- }
425
-
426
- // translation NOT allowed
427
- if (!user_translate.analysis || !user_translate.personalization) {
428
- head = document.getElementsByTagName('head')[0];
429
- script = document.createElement('script');
430
- script.id = 'google-translate';
431
-
432
- // update cookie consent settings
433
- user_consent.analysis = user_translate.analysis;
434
- user_consent.personalization = user_translate.personalization;
435
- cookie_written = j1.writeCookie({
436
- name: cookie_names.user_consent,
437
- data: user_consent,
438
- samesite: 'Strict',
439
- secure: secure,
440
- expires: 0
441
- });
442
-
443
- // update cookie user translate settings
444
- user_translate.translationEnabled = false;
445
- cookie_written = j1.writeCookie({
446
- name: cookie_names.user_translate,
447
- data: user_consent,
448
- samesite: 'Strict',
449
- secure: secure,
450
- expires: 0
451
- });
452
-
453
- // stop translation for all pages
454
- if (htmlScriptElement) { htmlScriptElement.remove(); }
455
- j1.removeCookie({name: 'googtrans', domain: cookie_domain});
456
- }
457
-
458
- if (moduleOptions.reloadPageOnChange) {
459
- // reload current page (skip cache)
460
- location.reload(true);
461
- }
462
-
463
- // disable google translate button if visible
464
- if ($('#quickLinksTranslateButton').css('display') === 'block') {
465
- $('#quickLinksTranslateButton').css('display', 'none');
466
- }
467
-
396
+ // reload current page (skip cache)
397
+ location.reload(true);
468
398
  }, // END cbGoogle
469
399
 
470
400
  // -------------------------------------------------------------------------
471
401
  // cbDeepl()
472
- // Called by the translator CORE module after the user
473
- // has made the lanuage selection for translation (callback)
402
+ // Called by the translator CORE module after the user made the
403
+ // selection for a translation language
474
404
  // -------------------------------------------------------------------------
475
405
  cbDeepl: function () {
476
-
477
- // code for post procession on Deepl translations
478
-
406
+ var logger = log4javascript.getLogger('j1.adapter.translator.cbDeepl');
407
+ // code for post processing
479
408
  } // END cbDeepl
480
409
 
481
410
  }; // END return
data/lib/j1/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module J1
2
- VERSION = '2021.2.7'
2
+ VERSION = '2021.2.8'
3
3
  end
@@ -53,7 +53,7 @@ gem 'jekyll', '~> 4.2'
53
53
 
54
54
  # Theme Rubies, default: J1 Template (NOT used for the development system)
55
55
  #
56
- gem 'j1-template', '~> 2021.2.7'
56
+ gem 'j1-template', '~> 2021.2.8'
57
57
 
58
58
  # ------------------------------------------------------------------------------
59
59
  # PRODUCTION: Gem needed for the Jekyll and J1 prod environment
@@ -53,7 +53,7 @@ environment: development
53
53
  # ------------------------------------------------------------------------------
54
54
  # Sets the build version of J1 Template Gem
55
55
  #
56
- version: 2021.2.7
56
+ version: 2021.2.8
57
57
 
58
58
  # version
59
59
  # ------------------------------------------------------------------------------
@@ -433,7 +433,7 @@ end::tables[]
433
433
  // -----------------------------------------------------------------------------
434
434
  tag::products[]
435
435
  :j1--license: MIT License
436
- :j1--version: 2021.2.7
436
+ :j1--version: 2021.2.8
437
437
  :j1--site-name: Jekyll One
438
438
  end::products[]
439
439
 
@@ -364,6 +364,6 @@ end
364
364
 
365
365
  module Jekyll
366
366
  module J1LunrSearch
367
- VERSION = '2021.2.7'
367
+ VERSION = '2021.2.8'
368
368
  end
369
369
  end
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": true,
3
3
  "name": "j1_starter",
4
- "version": "2021.2.7",
4
+ "version": "2021.2.8",
5
5
  "description": "J1 Template Starter Web",
6
6
  "homepage": "https://your.site",
7
7
  "author": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": true,
3
3
  "name": "utls",
4
- "version": "2021.2.7",
4
+ "version": "2021.2.8",
5
5
  "description": "J1 Template Utility Server",
6
6
  "homepage": "https://jekyll.one",
7
7
  "author": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": true,
3
3
  "name": "utls",
4
- "version": "2021.2.7",
4
+ "version": "2021.2.8",
5
5
  "description": "J1 Template Utility Server",
6
6
  "homepage": "https://jekyll.one",
7
7
  "author": {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: j1-template
3
3
  version: !ruby/object:Gem::Version
4
- version: 2021.2.7
4
+ version: 2021.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - juergen_jekyll_one
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-30 00:00:00.000000000 Z
11
+ date: 2021-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -400,6 +400,7 @@ files:
400
400
  - assets/themes/j1/adapter/js/rtextResizer.js
401
401
  - assets/themes/j1/adapter/js/themer.js
402
402
  - assets/themes/j1/adapter/js/toccer.js
403
+ - assets/themes/j1/adapter/js/translator.1.js
403
404
  - assets/themes/j1/adapter/js/translator.js
404
405
  - assets/themes/j1/core/country-flags/1x1/ad.svg
405
406
  - assets/themes/j1/core/country-flags/1x1/ae.svg