j1-template 2021.1.13 → 2021.1.14

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.
@@ -47,16 +47,21 @@
47
47
 
48
48
  var old = $.fn.bootstrapThemeSwitcher;
49
49
 
50
- var cookie_names = j1.getCookieNames();
51
- const user_state_cookie_name = cookie_names.user_state;
50
+ var cookie_names = j1.getCookieNames();
51
+ var gaCookies = j1.findCookie('_ga');
52
+ var j1Cookies = j1.findCookie('j1');
53
+ var url = new liteURL(window.location.href);
54
+ var hostname = url.hostname;
55
+ var domain = hostname.substring(hostname.lastIndexOf('.', hostname.lastIndexOf('.') - 1) + 1);
56
+ var secure = (url.protocol.includes('https')) ? true : false;
52
57
 
53
58
  var logger = log4javascript.getLogger('j1.core.switcher');
54
59
  var logText;
55
60
 
56
61
  var user_state_detected;
57
- var j1_user_state = {};
58
- var j1_user_state_json;
59
- var j1_user_state_cookie;
62
+ var user_state = {};
63
+ var user_state_json;
64
+ var user_state_cookie;
60
65
 
61
66
  // Constructor
62
67
  // ---------------------------------------------------------------------------
@@ -112,27 +117,29 @@
112
117
  // -------------------------------------------------------------------------
113
118
  switchTheme: function (name, cssFile) {
114
119
 
115
- var $this = $(this);
116
- var settings = $.extend({}, $.fn.bootstrapThemeSwitcher.defaults, $this.data('bootstrapThemeSwitcher'));
120
+ var $this = $(this);
121
+ var settings = $.extend({}, $.fn.bootstrapThemeSwitcher.defaults, $this.data('bootstrapThemeSwitcher'));
122
+ var id = settings.cssThemeLink;
123
+ var debug = settings.debug;
124
+ var includeCSS = this.settings.includeBootswatch;
117
125
  var themeName;
118
126
  var theme_css;
119
- var theme_extension_css;
120
-
121
- var id = settings.cssThemeLink;
122
- var debug = settings.debug;
123
- var includeCSS = this.settings.includeBootswatch;
124
127
 
125
128
  // detect|set user state cookie
126
- user_state_detected = j1.existsCookie ( 'j1.user.state' );
129
+ user_state_detected = j1.existsCookie (cookie_names.user_state);
127
130
  if ( user_state_detected ) {
128
- logger.debug('\n' + 'cookie found: j1.user.state');
129
- j1_user_state = j1.readCookie(user_state_cookie_name);
131
+ logger.debug('\n' + 'cookie found: ' + cookie_names.user_state);
132
+ user_state = j1.readCookie(cookie_names.user_state);
130
133
  } else {
131
- logger.error('\n' + 'cookie not found: j1.user.state');
134
+ logger.error('\n' + 'cookie not found: ' + cookie_names.user_state);
135
+ logger.debug('\n' + 'j1 cookies found:' + j1Cookies.length);
136
+ j1Cookies.forEach(item => console.log('j1.core.switcher: ' + item));
137
+ logger.debug('\n' + 'ga cookies found:' + gaCookies.length);
138
+ gaCookies.forEach(item => console.log('j1.core.switcher: ' + item));
132
139
  }
133
140
 
134
- themeName = j1_user_state.theme_name;
135
- theme_css = j1_user_state.theme_css;
141
+ themeName = user_state.theme_name;
142
+ theme_css = user_state.theme_css;
136
143
 
137
144
  if (typeof cssFile === 'undefined') { cssFile = this.settings.defaultCssFile; }
138
145
  if (typeof name === 'undefined') { name = cssFile; }
@@ -146,26 +153,30 @@
146
153
  return false;
147
154
  }
148
155
 
149
- j1_user_state.theme_name = name;
150
- j1_user_state.theme_css = cssFile;
156
+ user_state.theme_name = name;
157
+ user_state.theme_css = cssFile;
151
158
 
152
- if (!(j1_user_state.theme_name.includes('Uno') || j1_user_state.theme_name == 'Bootstrap')) {
153
- j1_user_state.theme_author = 'Bootswatch';
154
- j1_user_state.theme_author_url = 'https://bootswatch.com/';
159
+ if (!(user_state.theme_name.includes('Uno') || user_state.theme_name == 'Bootstrap')) {
160
+ user_state.theme_author = 'Bootswatch';
161
+ user_state.theme_author_url = 'https://bootswatch.com/';
155
162
  } else {
156
- j1_user_state.theme_author = 'J1 Team';
157
- j1_user_state.theme_author_url = 'https://jekyll.one/';
163
+ user_state.theme_author = 'J1 Team';
164
+ user_state.theme_author_url = 'https://jekyll.one/';
158
165
  }
159
166
 
167
+ logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
160
168
  j1.writeCookie({
161
- name: user_state_cookie_name,
162
- data: j1_user_state
169
+ name: cookie_names.user_state,
170
+ data: user_state,
171
+ samesite: 'Strict',
172
+ secure: secure,
173
+ expires: 365
163
174
  });
164
175
 
165
176
  // reload current page (skip cache)
166
177
  location.reload(true);
167
178
  } else {
168
- logger.warn('\n' + 'write to cookie : disabled');
179
+ logger.debug('\n' + 'write to cookie : disabled');
169
180
  logger.warn('\n' + 'selected theme not activated: ' + name);
170
181
  } // END if saveToCookie
171
182
 
@@ -184,17 +195,21 @@
184
195
  var settings = $.extend({}, $.fn.bootstrapThemeSwitcher.defaults, options);
185
196
 
186
197
  // detect|set user state cookie
187
- user_state_detected = j1.existsCookie ( 'j1.user.state' );
198
+ user_state_detected = j1.existsCookie (cookie_names.user_state);
188
199
 
189
200
  if ( user_state_detected ) {
190
- logger.info('\n' + 'cookie found: j1.user.state');
191
- j1_user_state = j1.readCookie(user_state_cookie_name);
201
+ logger.info('\n' + 'cookie found: ' + cookie_names.user_state);
202
+ user_state = j1.readCookie(cookie_names.user_state);
192
203
  } else {
193
- logger.error('\n' + 'cookie not found: j1.user.state');
204
+ logger.error('\n' + 'cookie not found: ' + cookie_names.user_state);
205
+ logger.debug('\n' + 'j1 cookies found:' + j1Cookies.length);
206
+ j1Cookies.forEach(item => console.log('j1.core.switcher: ' + item));
207
+ logger.debug('\n' + 'ga cookies found:' + gaCookies.length);
208
+ gaCookies.forEach(item => console.log('j1.core.switcher: ' + item));
194
209
  }
195
210
 
196
- var themeName = j1_user_state.theme_name;
197
- var themeCss = j1_user_state.theme_css;
211
+ var themeName = user_state.theme_name;
212
+ var themeCss = user_state.theme_css;
198
213
  this.switchTheme(themeName, themeCss);
199
214
 
200
215
  }, // END loadThemeFromCookie
@@ -247,22 +262,26 @@
247
262
  var base = this;
248
263
 
249
264
  if (this.$element.is('ul')) {
250
- var $this = $(this);
251
- var settings = $.extend({}, $.fn.bootstrapThemeSwitcher.defaults, $this.data('bootstrapThemeSwitcher'));
252
- var id = settings.cssThemeLink;
265
+ var $this = $(this);
266
+ var settings = $.extend({}, $.fn.bootstrapThemeSwitcher.defaults, $this.data('bootstrapThemeSwitcher'));
267
+ var id = settings.cssThemeLink;
268
+ var debug = settings.debug;
253
269
  var themeName;
254
- var debug = settings.debug;
255
270
 
256
271
  // detect|set user state cookie
257
- user_state_detected = j1.existsCookie ( 'j1.user.state' );
272
+ user_state_detected = j1.existsCookie (cookie_names.user_state);
258
273
  if ( user_state_detected ) {
259
274
  logger.debug('\n' + 'user state cookie found');
260
- j1_user_state = j1.readCookie(user_state_cookie_name);
275
+ user_state = j1.readCookie(cookie_names.user_state);
261
276
  } else {
262
277
  logger.error('\n' + 'user state NOT cookie found');
278
+ logger.debug('\n' + 'j1 cookies found:' + j1Cookies.length);
279
+ j1Cookies.forEach(item => console.log('j1.core.switcher: ' + item));
280
+ logger.debug('\n' + 'ga cookies found:' + gaCookies.length);
281
+ gaCookies.forEach(item => console.log('j1.core.switcher: ' + item));
263
282
  }
264
283
 
265
- themeName = j1_user_state.theme_name;
284
+ themeName = user_state.theme_name;
266
285
 
267
286
  if ( debug === 'true' ) {
268
287
  logger.debug('\n' + 'bootstrapThemeSelector: UL element selected');
@@ -47,16 +47,21 @@
47
47
 
48
48
  var old = $.fn.bootstrapThemeSwitcher;
49
49
 
50
- var cookie_names = j1.getCookieNames();
51
- const user_state_cookie_name = cookie_names.user_state;
50
+ var cookie_names = j1.getCookieNames();
51
+ var gaCookies = j1.findCookie('_ga');
52
+ var j1Cookies = j1.findCookie('j1');
53
+ var url = new liteURL(window.location.href);
54
+ var hostname = url.hostname;
55
+ var domain = hostname.substring(hostname.lastIndexOf('.', hostname.lastIndexOf('.') - 1) + 1);
56
+ var secure = (url.protocol.includes('https')) ? true : false;
52
57
 
53
58
  var logger = log4javascript.getLogger('j1.core.switcher');
54
59
  var logText;
55
60
 
56
61
  var user_state_detected;
57
- var j1_user_state = {};
58
- var j1_user_state_json;
59
- var j1_user_state_cookie;
62
+ var user_state = {};
63
+ var user_state_json;
64
+ var user_state_cookie;
60
65
 
61
66
  // Constructor
62
67
  // ---------------------------------------------------------------------------
@@ -75,13 +80,13 @@
75
80
  // ---------------------------------------------------------------------------
76
81
  BootstrapThemeSwitcher.prototype = {
77
82
  clear: function () {
78
- logger.debug('bootstrapThemeSwitcher.clear');
83
+ logger.debug('\n' + 'bootstrapThemeSwitcher.clear');
79
84
  return this.$element.each(function () {
80
85
  this.$element.empty();
81
86
  });
82
87
  },
83
88
  update: function () {
84
- logger.debug('bootstrapThemeSwitcher.update');
89
+ logger.debug('\n' + 'bootstrapThemeSwitcher.update');
85
90
  this.getThemes();
86
91
  },
87
92
 
@@ -112,27 +117,29 @@
112
117
  // -------------------------------------------------------------------------
113
118
  switchTheme: function (name, cssFile) {
114
119
 
115
- var $this = $(this);
116
- var settings = $.extend({}, $.fn.bootstrapThemeSwitcher.defaults, $this.data('bootstrapThemeSwitcher'));
120
+ var $this = $(this);
121
+ var settings = $.extend({}, $.fn.bootstrapThemeSwitcher.defaults, $this.data('bootstrapThemeSwitcher'));
122
+ var id = settings.cssThemeLink;
123
+ var debug = settings.debug;
124
+ var includeCSS = this.settings.includeBootswatch;
117
125
  var themeName;
118
126
  var theme_css;
119
- var theme_extension_css;
120
-
121
- var id = settings.cssThemeLink;
122
- var debug = settings.debug;
123
- var includeCSS = this.settings.includeBootswatch;
124
127
 
125
128
  // detect|set user state cookie
126
- user_state_detected = j1.existsCookie ( 'j1.user.state' );
129
+ user_state_detected = j1.existsCookie (cookie_names.user_state);
127
130
  if ( user_state_detected ) {
128
- logger.debug('cookie found: j1.user.state');
129
- j1_user_state = j1.readCookie(user_state_cookie_name);
131
+ logger.debug('\n' + 'cookie found: ' + cookie_names.user_state);
132
+ user_state = j1.readCookie(cookie_names.user_state);
130
133
  } else {
131
- logger.error('cookie not found: j1.user.state');
134
+ logger.error('\n' + 'cookie not found: ' + cookie_names.user_state);
135
+ logger.debug('\n' + 'j1 cookies found:' + j1Cookies.length);
136
+ j1Cookies.forEach(item => console.log('j1.core.switcher: ' + item));
137
+ logger.debug('\n' + 'ga cookies found:' + gaCookies.length);
138
+ gaCookies.forEach(item => console.log('j1.core.switcher: ' + item));
132
139
  }
133
140
 
134
- themeName = j1_user_state.theme_name;
135
- theme_css = j1_user_state.theme_css;
141
+ themeName = user_state.theme_name;
142
+ theme_css = user_state.theme_css;
136
143
 
137
144
  if (typeof cssFile === 'undefined') { cssFile = this.settings.defaultCssFile; }
138
145
  if (typeof name === 'undefined') { name = cssFile; }
@@ -141,33 +148,36 @@
141
148
  if (settings.saveToCookie) {
142
149
  if ( typeof Cookies === 'undefined' ) {
143
150
  if ( debug === 'true' ) {
144
- logger.error('cookies library not present');
151
+ logger.error('\n' + 'cookies library not present');
145
152
  }
146
153
  return false;
147
154
  }
148
155
 
149
- j1_user_state.theme_name = name;
150
- j1_user_state.theme_css = cssFile;
156
+ user_state.theme_name = name;
157
+ user_state.theme_css = cssFile;
151
158
 
152
- if (!(j1_user_state.theme_name.includes('Uno') || j1_user_state.theme_name == 'Bootstrap')) {
153
- j1_user_state.theme_author = 'Bootswatch';
154
- j1_user_state.theme_author_url = 'https://bootswatch.com/';
159
+ if (!(user_state.theme_name.includes('Uno') || user_state.theme_name == 'Bootstrap')) {
160
+ user_state.theme_author = 'Bootswatch';
161
+ user_state.theme_author_url = 'https://bootswatch.com/';
155
162
  } else {
156
- j1_user_state.theme_author = 'J1 Team';
157
- j1_user_state.theme_author_url = 'https://jekyll.one/';
163
+ user_state.theme_author = 'J1 Team';
164
+ user_state.theme_author_url = 'https://jekyll.one/';
158
165
  }
159
166
 
167
+ logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
160
168
  j1.writeCookie({
161
- name: user_state_cookie_name,
162
- data: j1_user_state
169
+ name: cookie_names.user_state,
170
+ data: user_state,
171
+ samesite: 'Strict',
172
+ secure: secure,
173
+ expires: 365
163
174
  });
164
175
 
165
- // force reload the page from the server (skip cache)
166
- // and detect selected theme from cookie
176
+ // reload current page (skip cache)
167
177
  location.reload(true);
168
178
  } else {
169
- logger.warn('write to cookie : disabled');
170
- logger.warn('selected theme not activated: ' + name);
179
+ logger.debug('\n' + 'write to cookie : disabled');
180
+ logger.warn('\n' + 'selected theme not activated: ' + name);
171
181
  } // END if saveToCookie
172
182
 
173
183
  }, // END switchTheme
@@ -178,24 +188,28 @@
178
188
  loadThemeFromCookie: function (options) {
179
189
 
180
190
  if ( typeof Cookies === 'undefined' ) {
181
- logger.error('cookies library not present');
191
+ logger.error('\n' + 'cookies library not present');
182
192
  return false;
183
193
  }
184
194
 
185
195
  var settings = $.extend({}, $.fn.bootstrapThemeSwitcher.defaults, options);
186
196
 
187
197
  // detect|set user state cookie
188
- user_state_detected = j1.existsCookie ( 'j1.user.state' );
198
+ user_state_detected = j1.existsCookie (cookie_names.user_state);
189
199
 
190
200
  if ( user_state_detected ) {
191
- logger.info('cookie found: j1.user.state');
192
- j1_user_state = j1.readCookie(user_state_cookie_name);
201
+ logger.info('\n' + 'cookie found: ' + cookie_names.user_state);
202
+ user_state = j1.readCookie(cookie_names.user_state);
193
203
  } else {
194
- logger.error('cookie not found: j1.user.state');
204
+ logger.error('\n' + 'cookie not found: ' + cookie_names.user_state);
205
+ logger.debug('\n' + 'j1 cookies found:' + j1Cookies.length);
206
+ j1Cookies.forEach(item => console.log('j1.core.switcher: ' + item));
207
+ logger.debug('\n' + 'ga cookies found:' + gaCookies.length);
208
+ gaCookies.forEach(item => console.log('j1.core.switcher: ' + item));
195
209
  }
196
210
 
197
- var themeName = j1_user_state.theme_name;
198
- var themeCss = j1_user_state.theme_css;
211
+ var themeName = user_state.theme_name;
212
+ var themeCss = user_state.theme_css;
199
213
  this.switchTheme(themeName, themeCss);
200
214
 
201
215
  }, // END loadThemeFromCookie
@@ -215,11 +229,11 @@
215
229
  // -------------------------------------------------------------------------
216
230
  addThemesToControl: function() {
217
231
  if (typeof this.$element === 'undefined') {
218
- logger.error('bootstrapThemeSelector|addThemesToControl: Element is undefined');
232
+ logger.error('\n' + 'bootstrapThemeSelector|addThemesToControl: Element is undefined');
219
233
  return false;
220
234
  }
221
235
  if (typeof this.themesList === 'undefined') {
222
- logger.error('bootstrapThemeSelector|addThemesToControl: Themes is undefined');
236
+ logger.error('\n' + 'bootstrapThemeSelector|addThemesToControl: Themes is undefined');
223
237
  return false;
224
238
  }
225
239
 
@@ -248,25 +262,29 @@
248
262
  var base = this;
249
263
 
250
264
  if (this.$element.is('ul')) {
251
- var $this = $(this);
252
- var settings = $.extend({}, $.fn.bootstrapThemeSwitcher.defaults, $this.data('bootstrapThemeSwitcher'));
253
- var id = settings.cssThemeLink;
265
+ var $this = $(this);
266
+ var settings = $.extend({}, $.fn.bootstrapThemeSwitcher.defaults, $this.data('bootstrapThemeSwitcher'));
267
+ var id = settings.cssThemeLink;
268
+ var debug = settings.debug;
254
269
  var themeName;
255
- var debug = settings.debug;
256
270
 
257
271
  // detect|set user state cookie
258
- user_state_detected = j1.existsCookie ( 'j1.user.state' );
272
+ user_state_detected = j1.existsCookie (cookie_names.user_state);
259
273
  if ( user_state_detected ) {
260
- logger.debug('User state cookie found');
261
- j1_user_state = j1.readCookie(user_state_cookie_name);
274
+ logger.debug('\n' + 'user state cookie found');
275
+ user_state = j1.readCookie(cookie_names.user_state);
262
276
  } else {
263
- logger.error('User state NOT cookie found');
277
+ logger.error('\n' + 'user state NOT cookie found');
278
+ logger.debug('\n' + 'j1 cookies found:' + j1Cookies.length);
279
+ j1Cookies.forEach(item => console.log('j1.core.switcher: ' + item));
280
+ logger.debug('\n' + 'ga cookies found:' + gaCookies.length);
281
+ gaCookies.forEach(item => console.log('j1.core.switcher: ' + item));
264
282
  }
265
283
 
266
- themeName = j1_user_state.theme_name;
284
+ themeName = user_state.theme_name;
267
285
 
268
286
  if ( debug === 'true' ) {
269
- logger.debug('bootstrapThemeSelector: UL element selected');
287
+ logger.debug('\n' + 'bootstrapThemeSelector: UL element selected');
270
288
  }
271
289
  this.$element.empty();
272
290
 
@@ -306,7 +324,7 @@
306
324
  });
307
325
 
308
326
  } else if (this.$element.is('select')) {
309
- logger.debug('bootstrapThemeSelector: SELECT element selected');
327
+ logger.debug('\n' + 'bootstrapThemeSelector: SELECT element selected');
310
328
  this.$element.empty();
311
329
 
312
330
  var optionSelectedMarker;
@@ -328,8 +346,8 @@
328
346
 
329
347
  } else {
330
348
  // no container found to add Theme list
331
- logger.info('bootstrapThemeSelector: no UL or SELECT element found');
332
- logger.error('bootstrapThemeSelector: failed');
349
+ logger.info('\n' + 'bootstrapThemeSelector: no UL or SELECT element found');
350
+ logger.error('\n' + 'bootstrapThemeSelector: failed');
333
351
  // console.warn('bootstrapThemeSelector only works with ul or select elements');
334
352
  }
335
353
  }, // END addThemesToControl
@@ -352,7 +370,7 @@
352
370
  base.addThemesToControl();
353
371
  },
354
372
  error: function (jqXHR, textStatus, errorThrown) {
355
- logger.error('Failed to retrieve the local feed from: \'' + base.settings.localFeed + '\'');
373
+ logger.error('\n' + 'failed to retrieve the local feed from: \'' + base.settings.localFeed + '\'');
356
374
  }
357
375
  });
358
376
  } else {
data/lib/j1/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module J1
2
- VERSION = '2021.1.13'
2
+ VERSION = '2021.1.14'
3
3
  end
@@ -54,7 +54,7 @@ gem 'jekyll', '~> 4.2'
54
54
 
55
55
  # Theme Rubies, default: J1 Template (NOT used for the development system)
56
56
  #
57
- gem 'j1-template', '~> 2021.1.13'
57
+ gem 'j1-template', '~> 2021.1.14'
58
58
 
59
59
  # ------------------------------------------------------------------------------
60
60
  # PRODUCTION: Gem needed for the Jekyll and J1 prod environment
@@ -53,7 +53,7 @@ environment: production
53
53
  # ------------------------------------------------------------------------------
54
54
  # Sets the build version of J1 Template Gem
55
55
  #
56
- version: 2021.1.13
56
+ version: 2021.1.14
57
57
 
58
58
  # version
59
59
  # ------------------------------------------------------------------------------
@@ -102,10 +102,11 @@ defaults:
102
102
  This website does <b>not</b> transfer any personal data to GA. Implicit
103
103
  personal information, like IP addresses, is anonymized to protect your privacy.
104
104
  <br><br>
105
- <code>Personalization</code> is used e.g. to collect user feedback or running
106
- advertising campaigns to provide you a website free of charge. Partners like
107
- Disqus or Google enables us to provide you excellent personalized services and
108
- enables us to finance the costs for running this site.
105
+ <code>Personalization</code> is used e.g. to provide personal themes, collect
106
+ visitors feedback or running advertising campaigns to provide you a website
107
+ free of charge. Partners like Bootswatch, Disqus or Google enables us to provide
108
+ you excellent personalized services and enables us to finance the costs for
109
+ running this site.
109
110
  de: >
110
111
  Die Betreiber dieser Website nehmen den Schutz Ihrer persönlichen Daten ernst.
111
112
  Wir behandeln Ihre Daten vertraulich und halten uns zum Schutz Ihrer Privatsphäre
@@ -127,11 +128,11 @@ defaults:
127
128
  übermittelt keine personenbezogenen Daten an GA. Implizite personenbezogene Daten wie
128
129
  IP-Adressen werden zum Schutz Ihrer Privatsphäre anonymisiert.
129
130
  <br><br>
130
- <code>Personalisierung</code> wird z.B. um Benutzerfeedback zu sammeln oder
131
- Werbekampagnen durchzuführen, um Ihnen eine Website kostenlos zur Verfügung zu
132
- stellen. Partner wie Disqus oder Google ermöglichen es uns, Ihnen exzellente
133
- personalisierte Dienste anzubieten und die Kosten für den Betrieb dieser Website
134
- zu finanzieren.
131
+ <code>Personalisierung</code> wird eingesetzt um Ihnen z.B. personalierte Ansichten der
132
+ Webseite (Themen) anzubieten, Benutzerfeedback zu sammeln oder Werbekampagnen durchzuführen,
133
+ um Ihnen diese Website kostenlos zur Verfügung zu stellen. Partner wie Bootswatch, Disqus
134
+ oder Google ermöglichen es uns, Ihnen exzellente personalisierte Dienste anzubieten sowie
135
+ die Kosten für den Betrieb dieser Website zu finanzieren.
135
136
 
136
137
  # ------------------------------------------------------------------------------
137
138
  # END config