j1-template 2021.1.13 → 2021.1.14

Sign up to get free protection for your applications and to get access to all the features.
@@ -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