j1-template 2021.1.8 → 2021.1.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/layout_metadata_generator.html +4 -4
  3. data/_includes/themes/j1/modules/connectors/ads +18 -7
  4. data/_includes/themes/j1/modules/connectors/analytic/google-analytics.html +6 -6
  5. data/_includes/themes/j1/modules/connectors/analytics +17 -3
  6. data/_includes/themes/j1/modules/connectors/comments +22 -8
  7. data/_includes/themes/j1/modules/connectors/translator +20 -6
  8. data/_includes/themes/j1/procedures/global/select_location.proc +3 -3
  9. data/assets/error_pages/HTTP204.html +30 -10
  10. data/assets/error_pages/HTTP400.html +29 -8
  11. data/assets/error_pages/HTTP401.html +29 -9
  12. data/assets/error_pages/HTTP403.html +29 -8
  13. data/assets/error_pages/HTTP404.html +29 -8
  14. data/assets/error_pages/HTTP500.html +29 -8
  15. data/assets/error_pages/HTTP501.html +29 -8
  16. data/assets/error_pages/HTTP502.html +29 -8
  17. data/assets/error_pages/HTTP503.html +30 -8
  18. data/assets/themes/j1/adapter/js/cookieConsent.js +55 -51
  19. data/assets/themes/j1/adapter/js/fam.js +2 -1
  20. data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.js +22 -7
  21. data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.min.js +275 -2
  22. data/assets/themes/j1/modules/themeSwitcher/js/switcher.js +1 -2
  23. data/lib/j1/version.rb +1 -1
  24. data/lib/starter_web/Gemfile +1 -1
  25. data/lib/starter_web/_config.yml +18 -10
  26. data/lib/starter_web/_data/j1_config.yml +1 -1
  27. data/lib/starter_web/_data/modules/cookieconsent.yml +1 -0
  28. data/lib/starter_web/_data/modules/defaults/cookieconsent.yml +10 -9
  29. data/lib/starter_web/_includes/attributes.asciidoc +1 -1
  30. data/lib/starter_web/_plugins/lunr_index.rb +1 -1
  31. data/lib/starter_web/index.html +3 -3
  32. data/lib/starter_web/package.json +2 -2
  33. data/lib/starter_web/pages/public/blog/navigator/archive.html +2 -1
  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 +20 -3
  36. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +9 -6
  37. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  38. data/lib/starter_web/utilsrv/package.json +1 -1
  39. metadata +2 -60
  40. data/assets/error_pages/HTTP520.html +0 -68
  41. data/assets/error_pages/HTTP521.html +0 -68
  42. data/assets/error_pages/HTTP533.html +0 -68
  43. data/assets/themes/j1/adapter/js/navigator.1.js +0 -896
  44. data/assets/themes/j1/adapter/js/navigator.2.js +0 -928
  45. data/assets/themes/j1/modules/_lightGallery/css/core/lg-fb-comment-box.css +0 -58
  46. data/assets/themes/j1/modules/_lightGallery/css/core/lg-fb-comment-box.min.css +0 -5
  47. data/assets/themes/j1/modules/_lightGallery/css/core/lg-transitions.css +0 -778
  48. data/assets/themes/j1/modules/_lightGallery/css/core/lg-transitions.min.css +0 -5
  49. data/assets/themes/j1/modules/_lightGallery/css/core/lightgallery.css +0 -981
  50. data/assets/themes/j1/modules/_lightGallery/css/core/lightgallery.min.css +0 -5
  51. data/assets/themes/j1/modules/_lightGallery/css/fonts/lg.eot +0 -0
  52. data/assets/themes/j1/modules/_lightGallery/css/fonts/lg.svg +0 -47
  53. data/assets/themes/j1/modules/_lightGallery/css/fonts/lg.ttf +0 -0
  54. data/assets/themes/j1/modules/_lightGallery/css/fonts/lg.woff +0 -0
  55. data/assets/themes/j1/modules/_lightGallery/css/img/loading.gif +0 -0
  56. data/assets/themes/j1/modules/_lightGallery/css/img/video-play.png +0 -0
  57. data/assets/themes/j1/modules/_lightGallery/css/img/vimeo-play.png +0 -0
  58. data/assets/themes/j1/modules/_lightGallery/css/img/youtube-play.png +0 -0
  59. data/assets/themes/j1/modules/_lightGallery/css/themes/icons/animation-w.png +0 -0
  60. data/assets/themes/j1/modules/_lightGallery/css/themes/icons/customize-w.png +0 -0
  61. data/assets/themes/j1/modules/_lightGallery/css/themes/icons/dynamic-w.png +0 -0
  62. data/assets/themes/j1/modules/_lightGallery/css/themes/icons/facebook-icon.svg +0 -10
  63. data/assets/themes/j1/modules/_lightGallery/css/themes/icons/googleplus-icon.svg +0 -30
  64. data/assets/themes/j1/modules/_lightGallery/css/themes/icons/html5-w.png +0 -0
  65. data/assets/themes/j1/modules/_lightGallery/css/themes/icons/linked-in.png +0 -0
  66. data/assets/themes/j1/modules/_lightGallery/css/themes/icons/module-w.png +0 -0
  67. data/assets/themes/j1/modules/_lightGallery/css/themes/icons/play-button.png +0 -0
  68. data/assets/themes/j1/modules/_lightGallery/css/themes/icons/responsive-w.png +0 -0
  69. data/assets/themes/j1/modules/_lightGallery/css/themes/icons/thumb-w.png +0 -0
  70. data/assets/themes/j1/modules/_lightGallery/css/themes/icons/touch-w.png +0 -0
  71. data/assets/themes/j1/modules/_lightGallery/css/themes/icons/twitter-icon.svg +0 -15
  72. data/assets/themes/j1/modules/_lightGallery/css/themes/icons/twitter.png +0 -0
  73. data/assets/themes/j1/modules/_lightGallery/css/themes/icons/video1-w.png +0 -0
  74. data/assets/themes/j1/modules/_lightGallery/css/themes/icons/zoom-w.png +0 -0
  75. data/assets/themes/j1/modules/_lightGallery/css/themes/icons/zoom.png +0 -0
  76. data/assets/themes/j1/modules/_lightGallery/css/themes/uno.css +0 -262
  77. data/assets/themes/j1/modules/_lightGallery/css/themes/uno.min.css +0 -15
  78. data/assets/themes/j1/modules/_lightGallery/js/core/lightgallery.js +0 -1362
  79. data/assets/themes/j1/modules/_lightGallery/js/core/lightgallery.min.js +0 -4
  80. data/assets/themes/j1/modules/_lightGallery/js/modules/j1/j1-video.js +0 -402
  81. data/assets/themes/j1/modules/_lightGallery/js/modules/j1/j1-video.min.js +0 -8
  82. data/assets/themes/j1/modules/_lightGallery/js/modules/lg-autoplay.js +0 -206
  83. data/assets/themes/j1/modules/_lightGallery/js/modules/lg-autoplay.min.js +0 -5
  84. data/assets/themes/j1/modules/_lightGallery/js/modules/lg-fullscreen.js +0 -126
  85. data/assets/themes/j1/modules/_lightGallery/js/modules/lg-fullscreen.min.js +0 -5
  86. data/assets/themes/j1/modules/_lightGallery/js/modules/lg-hash.js +0 -101
  87. data/assets/themes/j1/modules/_lightGallery/js/modules/lg-hash.min.js +0 -5
  88. data/assets/themes/j1/modules/_lightGallery/js/modules/lg-pager.js +0 -105
  89. data/assets/themes/j1/modules/_lightGallery/js/modules/lg-pager.min.js +0 -5
  90. data/assets/themes/j1/modules/_lightGallery/js/modules/lg-share.js +0 -107
  91. data/assets/themes/j1/modules/_lightGallery/js/modules/lg-share.min.js +0 -5
  92. data/assets/themes/j1/modules/_lightGallery/js/modules/lg-thumbnail.js +0 -478
  93. data/assets/themes/j1/modules/_lightGallery/js/modules/lg-thumbnail.min.js +0 -5
  94. data/assets/themes/j1/modules/_lightGallery/js/modules/lg-video.js +0 -342
  95. data/assets/themes/j1/modules/_lightGallery/js/modules/lg-video.min.js +0 -5
  96. data/assets/themes/j1/modules/_lightGallery/js/modules/lg-zoom.js +0 -527
  97. data/assets/themes/j1/modules/_lightGallery/js/modules/lg-zoom.min.js +0 -5
@@ -1,928 +0,0 @@
1
- ---
2
- regenerate: true
3
- ---
4
-
5
- {% capture cache %}
6
-
7
- {% comment %}
8
- # -----------------------------------------------------------------------------
9
- # ~/assets/themes/j1/adapter/js/navigator.js
10
- # Liquid template to adapt Navigator Core functions
11
- #
12
- # Product/Info:
13
- # https://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
- # NOTE:
24
- #
25
- # JSON pretty print
26
- # Example: var str = JSON.stringify(obj, null, 2); // spacing level = 2
27
- # See: https://stackoverflow.com/questions/4810841/how-can-i-pretty-print-json-using-javascript
28
- # -----------------------------------------------------------------------------
29
- # NOTE:
30
- # jadams, 2020-06-21:
31
- # J1 Navigator needs a general revision on BS4 code and functionalities
32
- # Current, only base function are tested with BS4 (was coded for BS3)
33
- # -----------------------------------------------------------------------------
34
- # NOTE:
35
- # jadams, 2020-07-17:
36
- # J1 Navigator can't be minfied for now. Uglifier fails on an ES6
37
- # (most probably) structure that couldn't fixed by 'harmony' setting.
38
- # Minifier fails by:
39
- # Unexpected token: punc ())
40
- # Current, minifying has been disabled
41
- # -----------------------------------------------------------------------------
42
- {% endcomment %}
43
-
44
- {% comment %} Liquid procedures
45
- -------------------------------------------------------------------------------- {% endcomment %}
46
- {% capture select_color %}themes/{{site.template.name}}/procedures/global/select_color.proc{% endcapture %}
47
-
48
- {% comment %} Set global settings
49
- -------------------------------------------------------------------------------- {% endcomment %}
50
- {% assign environment = site.environment %}
51
- {% assign brand_image_height = site.brand.image_height %}
52
-
53
- {% comment %} Process YML config data
54
- ================================================================================ {% endcomment %}
55
-
56
-
57
- {% comment %} Set config files
58
- {% assign auth_manager_config = site.j1_auth %}
59
- -------------------------------------------------------------------------------- {% endcomment %}
60
- {% assign template_config = site.data.j1_config %}
61
- {% assign blocks = site.data.blocks %}
62
- {% assign modules = site.data.modules %}
63
-
64
- {% assign themer_defaults = modules.defaults.themer.defaults %}
65
- {% assign themer_settings = modules.themer.settings %}
66
-
67
- {% assign authentication_defaults = modules.defaults.authentication.defaults %}
68
- {% assign authentication_settings = modules.authentication.settings %}
69
-
70
- {% assign template_config = site.data.template_settings %}
71
- {% assign navigator_defaults = site.data.modules.defaults.navigator.defaults %}
72
- {% assign navigator_settings = site.data.modules.navigator.settings %}
73
-
74
- {% comment %} Set config data
75
- -------------------------------------------------------------------------------- {% endcomment %}
76
- {% assign nav_bar_defaults = navigator_defaults.nav_bar %}
77
- {% assign nav_bar_settings = navigator_settings.nav_bar %}
78
- {% assign nav_menu_defaults = navigator_defaults.nav_menu %}
79
- {% assign nav_menu_settings = navigator_settings.nav_menu %}
80
-
81
- {% assign nav_quicklinks_defaults = navigator_defaults.nav_quicklinks %}
82
- {% assign nav_quicklinks_settings = navigator_settings.nav_quicklinks %}
83
- {% assign nav_topsearch_defaults = navigator_defaults.nav_topsearch %}
84
- {% assign nav_topsearch_settings = navigator_settings.nav_topsearch %}
85
- {% assign nav_authclient_defaults = authentication_defaults.auth_client %}
86
- {% assign nav_authclient_settings = authentication_settings.auth_client %}
87
-
88
- {% comment %} Set config options
89
- -------------------------------------------------------------------------------- {% endcomment %}
90
- {% assign authentication_options = authentication_defaults | merge: authentication_settings %}
91
- {% assign themer_options = themer_defaults | merge: themer_settings %}
92
- {% assign nav_bar_options = nav_bar_defaults | merge: nav_bar_settings %}
93
- {% assign nav_menu_options = nav_menu_defaults | merge: nav_menu_settings %}
94
- {% assign quicklinks_options = nav_quicklinks_defaults | merge: nav_quicklinks_settings %}
95
- {% assign topsearch_options = nav_topsearch_defaults | merge: nav_topsearch_settings %}
96
- {% assign authclient_options = nav_authclient_defaults | merge: nav_authclient_settings %}
97
-
98
- {% assign nav_bar_id = navigator_defaults.nav_bar.id %}
99
- {% assign nav_menu_id = navigator_defaults.nav_menu.id %}
100
- {% assign nav_quicklinks_id = navigator_defaults.nav_quicklinks.id %}
101
- {% assign nav_navbar_media_breakpoint = navigator_defaults.nav_bar.media_breakpoint %}
102
- {% assign authclient_modals_id = navigator_defaults.nav_authclient.xhr_container_id %}
103
-
104
- {% if nav_bar_options.dropdown_animate_duration != null %}
105
- {% assign animate_duration = nav_bar_options.dropdown_animate_duration %}
106
- {% else %}
107
- {% assign animate_duration = 1 %}
108
- {% endif %}
109
-
110
- {% assign production = false %}
111
- {% if environment == 'prod' or environment == 'production' %}
112
- {% assign production = true %}
113
- {% endif %}
114
-
115
- {% comment %}
116
- --------------------------------------------------------------------------------
117
- Set|Overload Liquid vars hardwired to NOT break the (MD) style
118
- ToDo: Remove configuration from j1_navigator.yml
119
- -------------------------------------------------------------------------------- {% endcomment %}
120
- {% assign dropdown_border_height = "3" %}
121
-
122
- /*
123
- # -----------------------------------------------------------------------------
124
- # ~/assets/themes/j1/adapter/js/navigator.js
125
- # JS Adapter for J1 Navigator
126
- #
127
- # Product/Info:
128
- # {{site.data.template_settings.theme_author_url}}
129
- #
130
- # Copyright (C) 2021 Juergen Adams
131
- #
132
- # J1 Template is licensed under the MIT License.
133
- # For details, see {{site.data.template_settings.theme_author_url}}
134
- # -----------------------------------------------------------------------------
135
- # NOTE: For AJAX (XHR) loads see
136
- # https://stackoverflow.com/questions/3709597/wait-until-all-jquery-ajax-requests-are-done
137
- # -----------------------------------------------------------------------------
138
- # NOTE: For getStyleValue helper see
139
- # https://stackoverflow.com/questions/16965515/how-to-get-a-style-attribute-from-a-css-class-by-javascript-jquery
140
- # -----------------------------------------------------------------------------
141
- # Adapter generated: {{site.time}}
142
- # -----------------------------------------------------------------------------
143
- */
144
-
145
- // -----------------------------------------------------------------------------
146
- // ESLint shimming
147
- // -----------------------------------------------------------------------------
148
- /* eslint indent: "off" */
149
- // -----------------------------------------------------------------------------
150
- 'use strict';
151
-
152
- j1.adapter['navigator'] = (function (j1, window) {
153
-
154
- // ---------------------------------------------------------------------------
155
- // globals
156
- // ---------------------------------------------------------------------------
157
- var environment = '{{environment}}';
158
- var dclFinished = false;
159
- var moduleOptions = {};
160
-
161
- var nav_menu_id = '{{nav_menu_id}}';
162
- var nav_quicklinks_id = '{{nav_quicklinks_id}}';
163
-
164
- var authclient_modals_id = '{{authclient_modals_id}}';
165
- var authclient_xhr_data_element = '{{authclient_options.xhr_data_element}}';
166
- var authclient_modals_data_path = '{{authclient_options.xhr_data_path}}';
167
-
168
- var nav_menu_data_path = '{{nav_menu_options.data_path}}';
169
- var nav_quicklinks_data_path = '{{quicklinks_options.data_path}}';
170
-
171
- var colors_data_path = '{{template_config.colors_data_path}}';
172
- var font_size_data_path = '{{template_config.font_size_data_path}}';
173
-
174
-
175
- var cookie_names = j1.getCookieNames();
176
- var cookie_user_session_name = cookie_names.user_session;
177
-
178
- var user_session = {};
179
- var user_session_merged = {};
180
- var session_state = {};
181
-
182
- var themerEnabled = {{themer_options.enabled}}; //was (test): false;
183
- var authClientEnabled;
184
- var appDetected;
185
- var json_data;
186
- var _this;
187
- var logger;
188
- var logText;
189
-
190
-
191
- // ---------------------------------------------------------------------------
192
- // helper functions
193
- // ---------------------------------------------------------------------------
194
-
195
- // ---------------------------------------------------------------------------
196
- // main object
197
- // ---------------------------------------------------------------------------
198
- return {
199
-
200
- // -------------------------------------------------------------------------
201
- // module initializer
202
- // -------------------------------------------------------------------------
203
- init: function (options) {
204
-
205
- // -----------------------------------------------------------------------
206
- // globals
207
- // -----------------------------------------------------------------------
208
- _this = j1.adapter.navigator;
209
- logger = log4javascript.getLogger('j1.adapter.navigator');
210
-
211
- // initialize state flag
212
- _this.setState('started');
213
- logger.info('state: ' + _this.getState());
214
- logger.info('module is being initialized');
215
-
216
- // -----------------------------------------------------------------------
217
- // defaults
218
- // -----------------------------------------------------------------------
219
- var settings = $.extend({
220
- module_name: 'j1.adapter.navigator',
221
- generated: '{{site.time}}'
222
- }, options);
223
-
224
- // -----------------------------------------------------------------------
225
- // options loader
226
- // -----------------------------------------------------------------------
227
- /* eslint-disable */
228
- var authConfig = {};
229
- var navDefaults = {};
230
- var navBarConfig = {};
231
- var navMenuConfig = {};
232
- var navQuicklinksConfig = {};
233
- var navTopsearchConfig = {};
234
- var navAuthClientConfig = {};
235
- var navBarOptions = {};
236
- var navMenuOptions = {};
237
- var navQuicklinksOptions = {};
238
- var navTopsearchOptions = {};
239
- var navAuthClientOptions = {};
240
- var navAuthMAnagerConfig = {};
241
-
242
- var user_state = {};
243
- var cookie_names = j1.getCookieNames();
244
- var cookie_user_state_name = cookie_names.user_state;
245
-
246
- var themerOptions = {};
247
- var interval_count = 0;
248
- var user_state_detected;
249
- var themes_count;
250
- var max_count = 100;
251
-
252
-
253
- navDefaults = $.extend({}, {{navigator_defaults | replace: '=>', ':' }});
254
- navBarConfig = $.extend({}, {{nav_bar_options | replace: '=>', ':' }});
255
- navMenuConfig = $.extend({}, {{nav_menu_options | replace: '=>', ':' }});
256
- navQuicklinksConfig = $.extend({}, {{quicklinks_options | replace: '=>', ':' }});
257
- navTopsearchConfig = $.extend({}, {{topsearch_options | replace: '=>', ':' }});
258
- navAuthClientConfig = $.extend({}, {{authclient_options | replace: '=>', ':' }});
259
-
260
- navAuthMAnagerConfig = $.extend({}, {{authentication_options | replace: '=>', ':' }});
261
- authClientEnabled = navAuthMAnagerConfig.enabled;
262
-
263
- themerOptions = $.extend({}, {{themer_options | replace: '=>', ':' | replace: 'nil', '""' }});
264
-
265
- // Merge|Overload module CONFIG by DEFAULTS
266
- //
267
- navBarOptions = j1.mergeData(navBarConfig, navDefaults.nav_bar);
268
- navMenuOptions = j1.mergeData(navMenuConfig, navDefaults.nav_menu);
269
- navQuicklinksOptions = j1.mergeData(navQuicklinksConfig, navDefaults.nav_quicklinks);
270
- navTopsearchOptions = j1.mergeData(navTopsearchConfig, navDefaults.nav_topsearch);
271
- navAuthClientConfig = j1.mergeData(navAuthClientConfig, navDefaults.nav_authclient);
272
-
273
- // save config settings into the adapter object for global access
274
- //
275
- _this['navDefaults'] = navDefaults;
276
- _this['navBarOptions'] = navBarOptions;
277
- _this['navMenuOptions'] = navMenuOptions;
278
- _this['navQuicklinksOptions'] = navQuicklinksOptions;
279
- _this['navTopsearchOptions'] = navTopsearchOptions;
280
- _this['navAuthClientConfig'] = navAuthClientConfig;
281
- _this['navAuthManagerConfig'] = navAuthMAnagerConfig;
282
-
283
- // Load (individual) frontmatter options (currently NOT used)
284
- if (options != null) { var frontmatterOptions = $.extend({}, options) }
285
- /* eslint-enable */
286
-
287
- // -----------------------------------------------------------------------
288
- // Load HTML data (AJAX)
289
- // -----------------------------------------------------------------------
290
- // jadams, 202-06-24: Promise (chain) if $.when seems NOT to work correctly.
291
- // It seems a chain using .then will be a better solution to make it sure
292
- // that the last Deferred set the state to 'data_loaded'.
293
- // Found the final state randomly set to 'null' what prevent the module
294
- // to run mmenuInitializer.
295
- // Workaround: Set 'data_loaded' to be returned by all Deferred in
296
- // the chain.
297
- // See: https://stackoverflow.com/questions/5436327/jquery-deferreds-and-promises-then-vs-done
298
- // authclient_xhr_data_element
299
- // -----------------------------------------------------------------------
300
- // data loader
301
- // -----------------------------------------------------------------------
302
- j1.xhrData({
303
- xhr_container_id: navQuicklinksOptions.xhr_container_id,
304
- xhr_data_path: navQuicklinksOptions.xhr_data_path,
305
- xhr_data_element: navQuicklinksOptions.xhr_data_element },
306
- 'j1.adapter.navigator',
307
- null);
308
- j1.xhrData({
309
- xhr_container_id: navAuthClientConfig.xhr_container_id,
310
- xhr_data_path: navAuthClientConfig.xhr_data_path,
311
- xhr_data_element: navAuthClientConfig.xhr_data_element },
312
- 'j1.adapter.navigator',
313
- null);
314
- j1.xhrData({
315
- xhr_container_id: navMenuOptions.xhr_container_id,
316
- xhr_data_path: navMenuOptions.xhr_data_path,
317
- xhr_data_element: navMenuOptions.xhr_data_element },
318
- 'j1.adapter.navigator',
319
- 'data_loaded');
320
-
321
- var dependencies_met_load_menu_finished = setInterval (function () {
322
- if (j1.xhrDOMState['#'+navQuicklinksOptions.xhr_container_id] === 'not loaded' ||
323
- j1.xhrDOMState['#'+navAuthClientConfig.xhr_container_id] === 'not loaded' ||
324
- j1.xhrDOMState['#'+navMenuOptions.xhr_container_id] === 'not loaded' ){
325
- logger.error('load HTML data (AJAX): failed');
326
- _this.setState('finished');
327
- logger.info('state: ' + _this.getState());
328
- logger.info('initializing module: failed');
329
- logger.info('met dependencies for: xhrData');
330
- clearInterval(dependencies_met_load_menu_finished);
331
- } else if (j1.xhrDOMState['#'+navQuicklinksOptions.xhr_container_id] === 'success' &&
332
- j1.xhrDOMState['#'+navAuthClientConfig.xhr_container_id] === 'success' &&
333
- j1.xhrDOMState['#'+navMenuOptions.xhr_container_id] === 'success' ) {
334
- // continue if all AJAX loads (xhrData) has finished
335
- _this.setState('processing');
336
- logger.info('status: ' + _this.getState());
337
- logger.info('initialize navigator core');
338
-
339
- // Detect|Set J1 App status
340
- appDetected = j1.appDetected();
341
- authClientEnabled = j1.authEnabled();
342
- logger.info('application status detected: ' + appDetected);
343
-
344
- j1.core.navigator.init (_this.navDefaults, _this.navMenuOptions);
345
-
346
- // load themes (to menu) if themer is enabled|finished
347
- if (themerEnabled) {
348
- logText = 'theme switcher: enabled';
349
- logger.info(logText);
350
-
351
- // Detect|Set J1 UserState
352
- user_state_detected = j1.existsCookie(cookie_user_state_name);
353
- if (user_state_detected) {
354
- user_state = j1.readCookie(cookie_user_state_name);
355
- }
356
-
357
- var dependencies_met_page_finished = setInterval(function() {
358
- // jadams, 2020-10-03: NOT needed to wait for j1 get finished
359
- // if (j1.getState() == 'finished') {
360
- // jadams, 2021-06-22: disabled check on themer get finished
361
- if (j1.adapter.navigator.getState() == 'core_initialized') {
362
- // if ('true' === 'true') {
363
- // initialize theme switcher menus
364
-
365
- logText = 'load themes';
366
- logger.info(logText);
367
-
368
- // load LOCAL themes from JSON data
369
- logText = 'load local themes (json file)';
370
- logger.info(logText);
371
- $('#local_themes').bootstrapThemeSwitcher({
372
- localFeed: themerOptions.localThemes
373
- });
374
-
375
- // load REMOTE themes from Bootswatch API (localFeed EMPTY!)
376
- $('#remote_themes').bootstrapThemeSwitcher({
377
- localFeed: '',
378
- bootswatchApiVersion: themerOptions.bootswatchApiVersion
379
- });
380
-
381
- // jadams, 2021-04-22: Up to now, it is unclear why in some
382
- // cases the menu bar is NOT fully loaded for THEMES
383
- // TODO: Add additional checks to find the reason
384
-
385
- // added same checks (as already done by adapter themer) to
386
- // check if remote theme menu detected as LOADED
387
- //
388
- var dependencies_met_remote_themes_loaded = setInterval(function() {
389
- interval_count += 1;
390
- themes_count = document.getElementById("remote_themes").getElementsByTagName("li").length;
391
- if ( themes_count > 0 ) {
392
- logger.info('remote themes loaded: successfully');
393
- logger.info('remote themes loaded: successfully after: ' + interval_count * 25 + ' ms');
394
-
395
- clearInterval(dependencies_met_remote_themes_loaded);
396
- // clearInterval(dependencies_met_page_finished);
397
- } else {
398
- logger.debug('wait for theme to be loaded: ' + user_state.theme_name);
399
- }
400
- if (interval_count > max_count) {
401
- logger.warn('remote themes loading: failed');
402
- logger.warn('continue processing');
403
- clearInterval(dependencies_met_remote_themes_loaded);
404
- // clearInterval(dependencies_met_page_finished);
405
- }
406
- clearInterval(dependencies_met_page_finished);
407
- }, 25);
408
-
409
- // clearInterval(dependencies_met_page_finished);
410
- }
411
- _this.setState('initialized');
412
- }, 25); // END 'dependencies_met_page_finished'
413
- } else {
414
- logText = 'theme switcher detected as: disabled';
415
- logger.info(logText);
416
- }
417
-
418
- // -----------------------------------------------------------------
419
- // event handler|css styles
420
- // -----------------------------------------------------------------
421
- // continue if Theme CSS is applied
422
- var dependencies_met_themer_finished = setInterval(function() {
423
- if (themerEnabled) {
424
- if (j1.adapter.themer.getState() === 'finished') {
425
- _this.setState('processing');
426
-
427
- // logger.info('initialize eventHandler');
428
- // j1.core.navigator.eventHandler();
429
-
430
- var dependencies_met_page_finished = setInterval(function() {
431
- // if (j1.getState() == 'finished') {
432
- if (true) {
433
- // set general|global theme colors
434
- logger.info('initializing dynamic CSS styles: started');
435
- _this.setCSS (
436
- navDefaults, navBarOptions, navMenuOptions,
437
- navQuicklinksOptions, navTopsearchOptions
438
- );
439
- clearInterval(dependencies_met_page_finished);
440
- }
441
- logger.info('initializing dynamic CSS styles: finished');
442
- }, 25); // END 'dependencies_met_page_finished'
443
-
444
- logger.info('init auth client');
445
- _this.initAuthClient(_this.navAuthManagerConfig);
446
-
447
- _this.setState('finished');
448
- logger.info('state: ' + _this.getState());
449
- logger.info('module initialized successfully');
450
- logger.info('met dependencies for: j1');
451
- clearInterval(dependencies_met_themer_finished);
452
- }
453
- } else {
454
- _this.setState('processing');
455
-
456
- // logger.info('initialize eventHandler');
457
- // j1.core.navigator.eventHandler();
458
-
459
- // set general|global theme colors
460
- logger.info('apply dynamic CSS styles');
461
- _this.setCSS (
462
- navDefaults, navBarOptions, navMenuOptions,
463
- navQuicklinksOptions, navTopsearchOptions
464
- );
465
-
466
- logger.info('init auth client');
467
- _this.initAuthClient(_this.navAuthManagerConfig);
468
- _this.setState('finished');
469
- logger.info('state: ' + _this.getState());
470
- clearInterval(dependencies_met_themer_finished);
471
- }
472
- }, 25); // END 'dependencies_met_themer_finished'
473
- logger.info('met dependencies for: themer');
474
- clearInterval(dependencies_met_load_menu_finished);
475
- } else {
476
- logger.error('load HTML data (AJAX) failed for unknown reason');
477
- _this.setState('finished');
478
- logger.info('state: ' + _this.getState());
479
- logger.info('met dependencies for: xhrData');
480
- clearInterval(dependencies_met_load_menu_finished);
481
- }
482
- }, 25); // END 'dependencies_met_load_menu_finished'
483
-
484
- // --------------------------------------------------------------------
485
- // Register event 'reset on resize' to call j1.core.navigator on
486
- // manageDropdownMenu to manage the (current) NAV menu for
487
- // desktop or mobile
488
- // ---------------------------------------------------------------------
489
- $(window).on('resize', function() {
490
- j1.core.navigator.manageDropdownMenu(navDefaults, navMenuOptions);
491
-
492
- // jadams, 2020-07-10: cause severe trouble on mobile devices if
493
- // OnScreen Kbd comes up and reduces the window size (resize event)
494
- // DISABLED
495
- // -------------------------------------------------------------------
496
- // Hide|Close topSearch on resize event
497
- // $('.top-search').slideUp();
498
-
499
- // Manage sticky NAV bars
500
- setTimeout (function() {
501
- j1.core.navigator.navbarSticky();
502
- }, 500);
503
-
504
- // Scroll the page one pixel back and forth to get
505
- // the right position for Toccer (trigger) and SSM
506
- $(window).scrollTop($(window).scrollTop()+1);
507
- $(window).scrollTop($(window).scrollTop()-1);
508
-
509
- // jadams, 2020-06-21: unclear|forgotten what I'm doing here!
510
- // Looks like the old BS3 implementation
511
- //
512
- // $('.navbar-collapse').removeClass('in');
513
- // $('.navbar-collapse').removeClass('on');
514
- // $('.navbar-collapse').removeClass('bounceIn');
515
- });
516
- }, // END init
517
-
518
- // -------------------------------------------------------------------------
519
- // initialize JS portion for the dialogs (modals) used by J1AuthClient
520
- // NOTE: Currently cookie updates NOT processed at the NAV module
521
- // All updates on Cookies are managed by Cookie Consent.
522
- // To be considered to re-add cookie updates for the auth state
523
- // -------------------------------------------------------------------------
524
- initAuthClient: function(auth_config) {
525
- var logger = log4javascript.getLogger('j1.adapter.navigator.initAuthClient');
526
- var user_session = j1.readCookie(cookie_user_session_name);
527
-
528
- _this.modalEventHandler(auth_config);
529
-
530
- if (j1.appDetected() && j1.authEnabled()) {
531
- // Toggle/Set SignIn/SignOut icon|link in QuickLinks
532
- // See: https://stackoverflow.com/questions/13524107/how-to-set-data-attributes-in-html-elements
533
- if (user_session.authenticated === 'true') {
534
- // Set SignOut
535
- $('#navLinkSignInOut').attr('data-target', '#modalOmniSignOut');
536
- $('#iconSignInOut').removeClass('mdi-login').addClass('mdi-logout');
537
- } else {
538
- // Set SignIn
539
- $('#navLinkSignInOut').attr('data-target', '#modalOmniSignIn');
540
- $('#iconSignInOut').removeClass('mdi-logout').addClass('mdi-login');
541
- }
542
- }
543
-
544
- return true;
545
- }, // END initAuthClient
546
-
547
- // -------------------------------------------------------------------------
548
- // modalEventHandler
549
- // Manage button click events for all BS Modals
550
- // See: https://www.nickang.com/add-event-listener-for-loop-problem-in-javascript/
551
- // -------------------------------------------------------------------------
552
- modalEventHandler: function (options) {
553
- // var logger = log4javascript.getLogger('j1.adapter.navigator.EventHandler');
554
- var authConfig = options.j1_auth;
555
- var route;
556
- var provider;
557
- var provider_url;
558
- var allowed_users;
559
- var logText;
560
-
561
- var signIn = {
562
- provider: authConfig.providers.activated[0],
563
- users: authConfig.providers[authConfig.providers['activated'][0]]['users'],
564
- do: false
565
- };
566
-
567
- var signOut = {
568
- provider: authConfig.providers.activated[0],
569
- providerSignOut: false,
570
- do: false
571
- };
572
-
573
- logText = 'initialize button click events';
574
- logger.info(logText);
575
-
576
- // Manage button click events for modal "signInOutButton"
577
- // -----------------------------------------------------------------------
578
- $('ul.nav-pills > li').click(function (e) {
579
- e.preventDefault();
580
- // jadams, 2019-07-30: To be checked if needed
581
- signIn.provider = $(this).text().trim();
582
- signIn.provider = signIn.provider.toLowerCase();
583
- signIn.allowed_users = signIn.users.toString();
584
- });
585
-
586
- $('a.btn').click(function() {
587
- if (this.id === 'signInButton') {
588
- signIn.do = true;
589
- } else {
590
- signIn.do = false;
591
- }
592
- if (this.id === 'signOutButton') {
593
- signOut.do = true;
594
- } else {
595
- signOut.do = false;
596
- }
597
- });
598
-
599
- $('input:checkbox[name="providerSignOut"]').on('click', function (e) {
600
- e.stopPropagation();
601
- signOut.providerSignOut = $('input:checkbox[name="providerSignOut"]').is(':checked');
602
- if(environment === 'development') {
603
- logText = 'provider signout set to: ' + signOut.providerSignOut;
604
- logger.info(logText);
605
- }
606
- });
607
-
608
- // Manage pre events on modal "modalOmniSignIn"
609
- // -----------------------------------------------------------------------
610
- $('#modalOmniSignOut').on('show.bs.modal', function() {
611
- var modal = $(this);
612
- logger.info('place current user data');
613
- user_session = j1.readCookie(cookie_user_session_name);
614
- modal.find('.user-info').text('You are signed in to provider: ' + user_session.provider);
615
- }); // END SHOW modalOmniSignOut
616
-
617
- // Manage post events on modal "modalOmniSignIn"
618
- // -----------------------------------------------------------------------
619
- $('#modalOmniSignIn').on('hidden.bs.modal', function() {
620
- if (signIn.do == true) {
621
- provider = signIn.provider.toLowerCase();
622
- allowed_users = signIn.users.toString();
623
- logText = 'provider detected: ' + provider;
624
- logger.info(logText);
625
-
626
- var route = '/authentication?request=signin&provider=' +provider+ '&allowed_users=' +allowed_users;
627
- logText = 'call middleware for signin on route: ' + route;
628
- logger.info(logText);
629
- window.location.href = route;
630
- } else {
631
- provider = signIn.provider.toLowerCase();
632
- logText = 'provider detected: ' + provider;
633
- logger.info(logText);
634
- logText = 'login declined for provider: ' +provider;
635
- logger.info(logText);
636
- }
637
- }); // END post events "modalOmniSignIn"
638
-
639
- // Manage post events on modal "modalOmniSignOut"
640
- // -----------------------------------------------------------------------
641
- $('#modalOmniSignOut').on('hidden.bs.modal', function() {
642
- if (signOut.do == true) {
643
- logger.info('load active provider from cookie: ' + cookie_user_session_name);
644
-
645
- user_session = j1.readCookie(cookie_user_session_name);
646
- provider = user_session.provider;
647
- provider_url = user_session.provider_site_url;
648
-
649
- logText = 'provider detected: ' + provider;
650
- logger.info(logText);
651
- logText = 'initiate signout for provider: ' +provider;
652
- logger.info(logText);
653
-
654
- var route = '/authentication?request=signout&provider=' + provider + '&provider_signout=' + signOut.providerSignOut; // + '/logout/';
655
- logText = 'call middleware on route : ' +route;
656
- logger.info(logText);
657
- window.location.href = route;
658
- } else {
659
- provider = signOut.provider.toLowerCase();
660
- logText = 'provider detected: ' + provider;
661
- logger.info(logText);
662
- logText = 'signout declined for provider: ' +provider ;
663
- logger.info(logText);
664
- }
665
- }); // END post events "modalSignOut"
666
-
667
- logText = 'initialize button click events completed';
668
- logger.info(logText);
669
-
670
- return true;
671
- }, // END modalEventHandler
672
-
673
- // -------------------------------------------------------------------------
674
- // setCSS
675
- // Set dynamic CSS styles
676
- // -------------------------------------------------------------------------
677
- setCSS: function (navDefaults, navBarOptions, navMenuOptions, navQuicklinksOptions, navTopsearchOptions) {
678
- var logger = log4javascript.getLogger('j1.adapter.navigator.setCSS');
679
- var gridBreakpoint_lg = '992px';
680
- var gridBreakpoint_md = '768px';
681
- var gridBreakpoint_sm = '576px';
682
- var navPrimaryColor = navDefaults.nav_primary_color;
683
-
684
- logger.info('set dynamic styles for the theme loaded');
685
-
686
- // Set|Resolve navMenuOptions
687
- // ------------------------------------------------------------------------
688
- navMenuOptions.dropdown_font_size = navMenuOptions.dropdown_font_size;
689
- navMenuOptions.megamenu_font_size = navMenuOptions.megamenu_font_size;
690
-
691
- // Set|Resolve navBarOptions
692
- // -----------------------------------------------------------------------
693
- navBarOptions.background_color_full = navBarOptions.background_color_full;
694
-
695
- // Set|Resolve navMenuOptions
696
- // -----------------------------------------------------------------------
697
- navMenuOptions.menu_item_color = navMenuOptions.menu_item_color;
698
- navMenuOptions.menu_item_color_hover = navMenuOptions.menu_item_color_hover;
699
- navMenuOptions.menu_item_dropdown_color = navMenuOptions.menu_item_dropdown_color;
700
- navMenuOptions.dropdown_item_color = navMenuOptions.dropdown_item_color;
701
- navMenuOptions.dropdown_background_color_hover = navMenuOptions.dropdown_background_color_hover;
702
- navMenuOptions.dropdown_background_color_active = navMenuOptions.dropdown_background_color_active;
703
- navMenuOptions.dropdown_border_color = navMenuOptions.dropdown_border_color;
704
-
705
- // Set|Resolve navQuicklinksOptions
706
- // -----------------------------------------------------------------------
707
- navQuicklinksOptions.icon_color = navQuicklinksOptions.icon_color;
708
- navQuicklinksOptions.icon_color_hover = navQuicklinksOptions.icon_color_hover;
709
- navQuicklinksOptions.background_color = navQuicklinksOptions.background_color;
710
-
711
- // Set|Resolve navTopsearchOptions
712
- // -----------------------------------------------------------------------
713
- navTopsearchOptions.input_color = navTopsearchOptions.input_color;
714
- navTopsearchOptions.background_color = navTopsearchOptions.background_color;
715
-
716
- // Set dymanic styles
717
- // -----------------------------------------------------------------------
718
- // $('nav-primary').css({"background-color": "navPrimaryColor"});
719
-
720
- // navBar styles
721
- // -----------------------------------------------------------------------
722
- var bg_primary = j1.getStyleValue('bg-primary', 'background-color');
723
- var bg_scrolled = bg_primary;
724
- var bg_collapsed = bg_primary;
725
-
726
- $('head').append('<style>.mdi-bg-primary {color: ' +bg_scrolled+ ';}</style>');
727
-
728
- // Size of brand image
729
- $('head').append('<style>.navbar-brand > img { height: {{brand_image_height}}px !important; }</style>');
730
-
731
- // Navbar transparent-light (light)
732
- $('head').append('<style>@media (min-width: ' +gridBreakpoint_lg+ ') { nav.navbar.navigator.navbar-transparent.light { background-color: ' +navBarOptions.background_color_full+ ' !important; border-bottom: solid 0px !important; } }</style>');
733
- $('head').append('<style>@media (min-width: ' +gridBreakpoint_lg+ ') { nav.navbar.navigator.navbar-scrolled.light { background-color: ' +bg_scrolled+ ' !important; } }</style>');
734
-
735
- $('head').append('<style id="dynNav">@media (max-width: ' +gridBreakpoint_md+ ') { nav.navbar.navigator.navbar-transparent.light { background-color: ' +navBarOptions.background_color_full+ ' !important; border-bottom: solid 0px !important; } }</style>');
736
- $('head').append('<style id="dynNav">@media (max-width: ' +gridBreakpoint_md+ ') { nav.navbar.navigator.navbar-scrolled.light { background-color: ' +bg_scrolled+ ' !important; } }</style>');
737
- $('head').append('<style id="dynNav">@media (min-width: ' +gridBreakpoint_md+ ') { nav.navbar.navigator.navbar-transparent.light { background-color: ' +navBarOptions.background_color_full+ ' !important; border-bottom: solid 0px !important; } }</style>');
738
- $('head').append('<style id="dynNav">@media (min-width: ' +gridBreakpoint_md+ ') { nav.navbar.navigator.navbar-scrolled.light { background-color: ' +bg_scrolled+ ' !important; } }</style>');
739
-
740
- $('head').append('<style id="dynNav">@media (max-width: ' +gridBreakpoint_sm+ ') { nav.navbar.navigator.navbar-transparent.light { background-color: ' +navBarOptions.background_color_full+ ' !important; border-bottom: solid 0px !important; } }</style>');
741
- $('head').append('<style id="dynNav">@media (max-width: ' +gridBreakpoint_sm+ ') { nav.navbar.navigator.navbar-scrolled.light { background-color: ' +bg_scrolled+ ' !important; } }</style>');
742
-
743
- // navQuicklinks styles
744
- // -----------------------------------------------------------------------
745
- $('head').append('<style>.attr-nav> ul > li > a { color: ' +navQuicklinksOptions.icon_color+ ' !important; }</style>');
746
- $('head').append('<style>.attr-nav> ul > li > a:hover { color: ' +navQuicklinksOptions.icon_color_hover+ ' !important; }</style>');
747
-
748
- // navMenu styles
749
- // -----------------------------------------------------------------------
750
- // Remove background for anchor
751
- $('head').append('<style>.dropdown-menu > .active > a { background-color: transparent !important; }</style>');
752
- // hover menu-item|menu-sub-item
753
- $('head').append('<style>@media (min-width: ' +gridBreakpoint_lg+ ') { nav.navbar.navigator .dropdown-item:focus, nav.navbar.navigator .dropdown-item:hover, nav.navbar.navigator .nav-sub-item:focus, nav.navbar.navigator .nav-sub-item:hover { background: ' +navMenuOptions.dropdown_background_color_hover+ ' !important; }}</style>');
754
-
755
- // Limit 1st dropdown item width
756
- $('head').append('<style>@media (min-width: ' +gridBreakpoint_lg+ ') { nav.navbar.navigator ul.nav.navbar-right .dropdown-menu .dropdown-menu { left: -' +navMenuOptions.dropdown_item_min_width+ 'rem !important; } }</style>');
757
-
758
- // Limit last (2nd) dropdown in height (nav.navbar.navigator li.dropdown ul.dropdown-menu ul.dropdown-menu)
759
- // !important
760
- $('head').append('<style>@media (min-width: ' +gridBreakpoint_lg+ ') { nav.navbar.navigator li.dropdown ul.dropdown-menu ul.dropdown-menu { top: -' +navMenuOptions.dropdown_border_top+ 'px !important; max-height: ' +navMenuOptions.dropdown_menu_max_height+ 'em; } }</style>');
761
-
762
- // Set dropdown item colors
763
- $('head').append('<style>@media (min-width: ' +gridBreakpoint_lg+ ') { nav.navbar.navigator ul.nav > li > a { color: ' +navMenuOptions.menu_item_color+ ' !important; } }</style>');
764
- $('head').append('<style>@media (min-width: ' +gridBreakpoint_lg+ ') { nav.navbar.navigator ul.nav > li > a:hover { color: ' +navMenuOptions.menu_item_color_hover+ ' !important; } }</style>');
765
-
766
- // Dropdown menu styles
767
- // jadams, 2017-11-30: removed left padding from dropdown mwenu (for new j1nav style based on Navigator|Slate)
768
- $('head').append('<style>@media (min-width: ' +gridBreakpoint_lg+ ') { nav.navbar.navigator li.dropdown ul.dropdown-menu { animation-duration: ' +navMenuOptions.dropdown_animate_duration+ 's !important; color: ' +bg_scrolled+ ' !important; min-width: ' +navMenuOptions.dropdown_item_min_width+ 'rem !important; border-top: solid ' +navMenuOptions.dropdown_border_top+ 'px !important; border-radius: ' +navMenuOptions.dropdown_border_radius+ 'px !important; left: 0; } }</style>');
769
-
770
- {% if dropdown_style == 'raised' %}
771
- $('head').append('<style>@media (min-width: ' +gridBreakpoint_lg+ ') { nav.navbar.navigator li.dropdown ul.dropdown-menu { box-shadow: 0 16px 38px -12px rgba(0, 0, 0, 0.56), 0 4px 25px 0px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.2) !important; } }</style>');
772
- {% endif %}
773
-
774
- // jadams, 2017-11-22: configure dropdown_font_size|color
775
- $('head').append('<style>@media (min-width: ' +gridBreakpoint_lg+ ') { nav.navbar.navigator li.dropdown ul.dropdown-menu > li > a { color: ' +navMenuOptions.dropdown_item_color+ ' !important; font-size: ' +navMenuOptions.dropdown_font_size+ ' !important; font-weight: 400; } }</style>');
776
- $('head').append('<style>@media (min-width: ' +gridBreakpoint_lg+ ') { nav.navbar.navigator ul.dropdown-menu.megamenu-content .content ul.menu-col li a { color: ' +navMenuOptions.dropdown_item_color+ ' !important; font-size: ' +navMenuOptions.megamenu_font_size+ ' !important; font-weight: 400; } }</style>');
777
-
778
- // navQuicklinks styles
779
- // -----------------------------------------------------------------------
780
-
781
- // navTopSearch Styles
782
- // -----------------------------------------------------------------------
783
- // jadams, 2020-07-08: disabled because colors for icons set by the icon font settings
784
- // $('head').append('<style>.top-search .input-group-addon { color: ' +navTopsearchOptions.input_color+ ' !important; }</style>');
785
- $('head').append('<style>.top-search { background-color: ' +navTopsearchOptions.background_color+ ' !important; }</style>');
786
- $('head').append('<style>.top-search input.form-control { color: ' +navTopsearchOptions.input_color+ ' !important; }</style>');
787
-
788
- // Timeline styles
789
- // -----------------------------------------------------------------------
790
- $('head').append('<style>.timeline > li > .timeline-panel:after {border-right-color: ' +bg_scrolled+ '; border-left-color: ' +bg_scrolled+ ';}</style>');
791
- $('head').append('<style>.tmicon {background: ' +bg_scrolled+ ';}</style>');
792
-
793
- // Heading styles
794
- // -----------------------------------------------------------------------
795
- $('head').append('<style>.heading:after {background: ' +bg_scrolled+ ' !important;}</style>');
796
-
797
- // Tag Cloud styles
798
- // -----------------------------------------------------------------------
799
- $('head').append('<style>.tag-cloud ul li a {background-color: ' +bg_scrolled+ ' !important;}</style>');
800
- // $('head').append('<style>.tag-cloud ul li a:hover {background-color: #212121 !important;}</style>');
801
-
802
- // Toccer styles
803
- // -----------------------------------------------------------------------
804
- $('head').append('<style>.is-active-link::before {background-color: ' +bg_scrolled+ ' !important;}</style>');
805
-
806
- // BS extended Modal styles
807
- // -----------------------------------------------------------------------
808
- $('head').append('<style>.modal-dialog.modal-notify.modal-primary .modal-header {background-color: ' +bg_scrolled+ ';}</style>');
809
-
810
- // BS nav|pills styles
811
- // -----------------------------------------------------------------------
812
- $('head').append('<style>.nav-pills .nav-link.active, .nav-pills .show > .nav-link {background-color: ' +bg_scrolled+ ' !important;}</style>');
813
-
814
- return true;
815
- }, // END setCSS
816
-
817
- // -------------------------------------------------------------------------
818
- // delayShowMenu
819
- // delay all dropdown menu to open for "delay" time
820
- // See: http://jsfiddle.net/AndreasPizsa/NzvKC/
821
- // -------------------------------------------------------------------------
822
- delayShowMenu: function ( menuOpenDelay ) {
823
- var logger = log4javascript.getLogger('j1.adapter.navigator.delayShowMenu');
824
- var theTimer = 0;
825
- var theElement = null;
826
- var theLastPosition = {x:0,y:0};
827
-
828
- logText ='entered delayShowMenu';
829
- logger.info(logText);
830
-
831
- // $('#navigator_nav_menu')
832
- // .find('li.dropdown.nav-item')
833
-
834
- $('[data-toggle]').closest('li')
835
- .on('mouseenter', function (inEvent) {
836
- if (theElement) theElement.removeClass('open');
837
- window.clearTimeout(theTimer);
838
- theElement = $(this);
839
-
840
- theTimer = window.setTimeout(function () {
841
- theElement.addClass('open');
842
- }, menuOpenDelay);
843
- })
844
- .on('mousemove', function (inEvent) {
845
- if(Math.abs(theLastPosition.x - inEvent.ScreenX) > 4 ||
846
- Math.abs(theLastPosition.y - inEvent.ScreenY) > 4) {
847
- theLastPosition.x = inEvent.ScreenX;
848
- theLastPosition.y = inEvent.ScreenY;
849
- return;
850
- }
851
- if (theElement.hasClass('open')) return;
852
- window.clearTimeout(theTimer);
853
- theTimer = window.setTimeout(function () {
854
- theElement.addClass('open');
855
- }, menuOpenDelay);
856
- })
857
- .on('mouseleave', function (inEvent) {
858
- window.clearTimeout(theTimer);
859
- theElement = $(this);
860
- theTimer = window.setTimeout(function () {
861
- theElement.removeClass('open');
862
- }, menuOpenDelay);
863
- });
864
-
865
- return true;
866
- }, // END delayShowMenu
867
-
868
- // -------------------------------------------------------------------------
869
- // messageHandler
870
- // Manage messages (paylods) send from other J1 modules
871
- // -------------------------------------------------------------------------
872
- messageHandler: function (sender, message) {
873
- // var json_message = JSON.stringify(message, undefined, 2); // multiline
874
- var json_message = JSON.stringify(message);
875
- _this.setState(message.action);
876
-
877
- logText = 'received message from ' + sender + ': ' + json_message;
878
- logger.info(logText);
879
-
880
- logText = 'set state to: ' + message.action;
881
- logger.info(logText);
882
-
883
- // -----------------------------------------------------------------------
884
- // Process commands|actions
885
- // -----------------------------------------------------------------------
886
- if (message.type === 'command' && message.action === 'module_initialized') {
887
- //
888
- // Place handling of command|action here
889
- //
890
- logger.info(message.text);
891
- }
892
- if (message.type === 'command' && message.action === 'status') {
893
- logger.info('messageHandler: received - ' + message.action);
894
- }
895
-
896
- //
897
- // Place handling of other command|action here
898
- //
899
-
900
- return true;
901
- }, // END messageHandler
902
-
903
- // -------------------------------------------------------------------------
904
- // setState()
905
- // Sets the current (processing) state of the module
906
- // -------------------------------------------------------------------------
907
- setState: function (stat) {
908
- _this.state = stat;
909
- }, // END setState
910
-
911
- // -------------------------------------------------------------------------
912
- // getState()
913
- // Returns the current (processing) state of the module
914
- // -------------------------------------------------------------------------
915
- getState: function () {
916
- return _this.state;
917
- } // END getState
918
-
919
- }; // END return
920
- })(j1, window);
921
-
922
- {% endcapture %}
923
- {% if production %}
924
- {{ cache | minifyJS }}
925
- {% else %}
926
- {{ cache | strip_empty_lines }}
927
- {% endif %}
928
- {% assign cache = nil %}