j1-template 2020.0.1 → 2020.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/content_generator_blog_archive.html +22 -18
  3. data/_includes/themes/j1/layouts/content_generator_collection.html +15 -12
  4. data/_includes/themes/j1/layouts/content_generator_page.html +16 -17
  5. data/_includes/themes/j1/layouts/content_generator_post.html +19 -24
  6. data/_includes/themes/j1/modules/navigator/generator.html +62 -40
  7. data/assets/data/menu.html +6 -5
  8. data/assets/data/mmenu.html +455 -0
  9. data/assets/data/{sidebar.html → mmenu_sidebar.html} +24 -18
  10. data/assets/data/mmenu_toc.html +45 -0
  11. data/assets/data/quicklinks.html +9 -4
  12. data/assets/data/ssm.html +227 -0
  13. data/assets/error_pages/HTTP204.html +3 -3
  14. data/assets/themes/j1/core/css/bootstrap.css +116 -93
  15. data/assets/themes/j1/core/css/bootstrap.min.css +4 -4
  16. data/assets/themes/j1/core/css/globals.css +1 -1
  17. data/assets/themes/j1/core/css/theme_extensions.css +186 -96
  18. data/assets/themes/j1/core/css/theme_extensions.min.css +1 -1
  19. data/assets/themes/j1/core/css/uno.css +186 -96
  20. data/assets/themes/j1/core/css/uno.min.css +1 -1
  21. data/assets/themes/j1/core/css/vendor.css +130 -104
  22. data/assets/themes/j1/core/css/vendor.min.css +4 -4
  23. data/assets/themes/j1/core/js/template.js +296 -24
  24. data/assets/themes/j1/core/js/template.js.map +1 -1
  25. data/assets/themes/j1/core/js/template.min.js +1 -1
  26. data/lib/j1/version.rb +1 -1
  27. data/lib/j1_app/j1_auth_manager/auth_manager.rb +21 -17
  28. data/lib/j1_app/j1_auth_manager/config.rb +13 -9
  29. data/lib/j1_app/j1_site_manager/static_site.rb +1 -1
  30. data/lib/starter_web/Gemfile +2 -2
  31. data/lib/starter_web/_config.yml +12 -139
  32. data/lib/starter_web/_data/modules/authentication.yml +1 -1
  33. data/lib/starter_web/_data/modules/defaults/navigator.yml +25 -24
  34. data/lib/starter_web/_data/modules/defaults/ssm.yml +50 -0
  35. data/lib/starter_web/_data/modules/defaults/toccer.yml +14 -15
  36. data/lib/starter_web/_data/modules/navigator.yml +164 -97
  37. data/lib/starter_web/_data/modules/ssm.yml +133 -0
  38. data/lib/starter_web/_data/modules/toccer.yml +20 -62
  39. data/lib/starter_web/_data/resources.yml +74 -51
  40. data/lib/starter_web/_data/template_settings.yml +13 -13
  41. data/lib/starter_web/_plugins/uglify.rb +41 -0
  42. data/lib/starter_web/apps/public/{cc → cc/cc.yml} +0 -0
  43. data/lib/starter_web/apps/public/cc/index.adoc +107 -0
  44. data/lib/starter_web/assets/images/modules/icons/j1/{j1..ico → j1.ico} +0 -0
  45. data/lib/starter_web/assets/themes/j1/adapter/js/algolia.js +321 -0
  46. data/lib/starter_web/assets/themes/j1/adapter/js/attic.js +4 -4
  47. data/lib/starter_web/assets/themes/j1/adapter/js/carousel.js +3 -3
  48. data/lib/starter_web/assets/themes/j1/adapter/js/framer.js +3 -3
  49. data/lib/starter_web/assets/themes/j1/adapter/js/j1.js +19 -60
  50. data/lib/starter_web/assets/themes/j1/adapter/js/mmenu.js +452 -0
  51. data/lib/starter_web/assets/themes/j1/adapter/js/navigator.js +50 -50
  52. data/lib/starter_web/assets/themes/j1/adapter/js/ssm.js +498 -0
  53. data/lib/starter_web/assets/themes/j1/adapter/js/themer.js +1 -1
  54. data/lib/starter_web/assets/themes/j1/adapter/js/toccer.js +40 -43
  55. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/mmenu-light.css +384 -0
  56. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/mmenu-light.min.css +384 -0
  57. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/themes/uno.css +153 -0
  58. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/themes/uno.min.css +153 -0
  59. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.js +11 -0
  60. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.min.js +11 -0
  61. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.polyfills.js +118 -0
  62. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.polyfills.min.js +118 -0
  63. data/lib/starter_web/collections/posts/public/{jekyll → featured}/_posts/2018-05-01-confusion-about-base-url.adoc +0 -0
  64. data/lib/starter_web/package.json +1 -1
  65. data/lib/starter_web/pages/public/learn/floating_sidebar.adoc +199 -0
  66. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +2 -2
  67. data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +2 -2
  68. data/lib/starter_web/pages/public/learn/whats_up.adoc +12 -11
  69. data/lib/starter_web/pages/public/legal/en/500_support.adoc +1 -1
  70. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/200_rotate.asciidoc +1 -1
  71. data/lib/starter_web/pages/public/previewer/mdi_icons_preview.adoc +2 -3
  72. data/lib/starter_web/pages/public/previewer/twitter_emoji_preview.adoc +3 -3
  73. data/lib/starter_web/pages/public/site_search.adoc +196 -0
  74. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  75. data/lib/starter_web/utilsrv/package.json +1 -1
  76. metadata +26 -13
  77. data/assets/themes/j1/core/css/globals.scss +0 -28
  78. data/lib/starter_web/_data/modules/back2top.yml +0 -40
  79. data/lib/starter_web/_data/modules/defaults/back2top.yml +0 -147
  80. data/lib/starter_web/_data/modules/defaults/smooth_scroll.yml +0 -169
  81. data/lib/starter_web/_data/modules/smooth_scroll.yml +0 -169
  82. data/lib/starter_web/assets/themes/j1/adapter/js/back2top.js +0 -227
  83. data/lib/starter_web/assets/themes/j1/adapter/js/scroller.js +0 -177
@@ -0,0 +1,452 @@
1
+ ---
2
+ regenerate: true
3
+ ---
4
+
5
+ {% capture cache %}
6
+
7
+ {% comment %}
8
+ # -----------------------------------------------------------------------------
9
+ # ~/assets/themes/j1/adapter/js/mmenu.js
10
+ # Liquid template to adapt Mmenu-Light Core functions
11
+ #
12
+ # Product/Info:
13
+ # https://jekyll.one
14
+ #
15
+ # Copyright (C) 2020 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
+ {% endcomment %}
30
+
31
+ {% comment %} Liquid procedures
32
+ -------------------------------------------------------------------------------- {% endcomment %}
33
+ {% capture select_color %}themes/{{site.template.name}}/procedures/global/select_color.proc{% endcapture %}
34
+
35
+ {% comment %} Set global settings
36
+ -------------------------------------------------------------------------------- {% endcomment %}
37
+ {% assign environment = site.environment %}
38
+ {% assign brand_image_height = site.brand.image_height %}
39
+
40
+ {% comment %} Process YML config data
41
+ ================================================================================ {% endcomment %}
42
+
43
+ {% comment %} Set config files
44
+ {% assign auth_manager_config = site.j1_auth %}
45
+ -------------------------------------------------------------------------------- {% endcomment %}
46
+ {% assign site_config = site %}
47
+ {% assign template_config = site.data.template_settings %}
48
+ {% assign blocks = site.data.blocks %}
49
+ {% assign modules = site.data.modules %}
50
+
51
+ {% assign template_config = site.data.template_settings %}
52
+ {% assign navigator_defaults = site.data.modules.defaults.navigator.defaults %}
53
+ {% assign navigator_settings = site.data.modules.navigator.settings %}
54
+
55
+ {% comment %} Set config data
56
+ -------------------------------------------------------------------------------- {% endcomment %}
57
+ {% assign nav_mmenu_defaults = navigator_defaults.nav_mmenu %}
58
+ {% assign nav_mmenu_settings = navigator_settings.nav_mmenu %}
59
+
60
+ {% comment %} Set config options
61
+ -------------------------------------------------------------------------------- {% endcomment %}
62
+ {% assign nav_mmenu_options = nav_mmenu_defaults | merge: nav_mmenu_settings %}
63
+ {% assign nav_mmenu_id = navigator_defaults.nav_mmenu.xhr_container_id %}
64
+ {% assign nav_navbar_media_breakpoint = navigator_defaults.nav_bar.media_breakpoint %}
65
+
66
+ /*
67
+ # -----------------------------------------------------------------------------
68
+ # ~/assets/themes/j1/adapter/js/mmenu.js
69
+ # JS Adapter for J1 MobileMenu (MMenu Light)
70
+ #
71
+ # Product/Info:
72
+ # {{site.data.template_settings.theme_author_url}}
73
+ #
74
+ # Copyright (C) 2020 Juergen Adams
75
+ #
76
+ # J1 Template is licensed under the MIT License.
77
+ # For details, see {{site.data.template_settings.theme_author_url}}
78
+ # -----------------------------------------------------------------------------
79
+ # NOTE: For AJAX (XHR) loads see
80
+ # https://stackoverflow.com/questions/3709597/wait-until-all-jquery-ajax-requests-are-done
81
+ # -----------------------------------------------------------------------------
82
+ # NOTE: For getStyleValue helper see
83
+ # https://stackoverflow.com/questions/16965515/how-to-get-a-style-attribute-from-a-css-class-by-javascript-jquery
84
+ # -----------------------------------------------------------------------------
85
+ # Adapter generated: {{site.time}}
86
+ # -----------------------------------------------------------------------------
87
+ */
88
+ 'use strict';
89
+
90
+ j1.adapter['mmenu'] = (function (j1, window) {
91
+
92
+ // ---------------------------------------------------------------------------
93
+ // globals
94
+ // ---------------------------------------------------------------------------
95
+ var environment = '{{environment}}';
96
+ var dclFinished = false;
97
+ var moduleOptions = {};
98
+ var cookie_names = j1.getCookieNames();
99
+ var user_state;
100
+ var user_session;
101
+ var user_data;
102
+ var _this;
103
+ var logger;
104
+ var logText;
105
+
106
+ // ---------------------------------------------------------------------------
107
+ // helper functions
108
+ // ---------------------------------------------------------------------------
109
+
110
+
111
+ // ---------------------------------------------------------------------------
112
+ // main object
113
+ // ---------------------------------------------------------------------------
114
+ return {
115
+
116
+ // -------------------------------------------------------------------------
117
+ // module initializer
118
+ // -------------------------------------------------------------------------
119
+ init: function (options) {
120
+ // initialize state flag
121
+ j1.adapter.mmenu.state = 'pending';
122
+
123
+ // -----------------------------------------------------------------------
124
+ // defaults
125
+ // -----------------------------------------------------------------------
126
+ var settings = $.extend({
127
+ module_name: 'j1.adapter.mmenu',
128
+ generated: '{{site.time}}'
129
+ }, options);
130
+
131
+ // -----------------------------------------------------------------------
132
+ // globals
133
+ // -----------------------------------------------------------------------
134
+ _this = j1.adapter.mmenu;
135
+ logger = log4javascript.getLogger('j1.adapter.mmenu');
136
+
137
+ // -----------------------------------------------------------------------
138
+ // options loader
139
+ // -----------------------------------------------------------------------
140
+ var navMenuOptions = $.extend({}, {{nav_mmenu_options | replace: '=>', ':' }});
141
+ var xhr_data_path;
142
+ var menu_id;
143
+
144
+ // save config settings into the mmenu object for global access
145
+ //
146
+ j1.adapter.mmenu['navMenuOptions'] = navMenuOptions;
147
+
148
+ // Load (individual) frontmatter options (currently NOT used)
149
+ //
150
+ if (options != null) { var frontmatterOptions = $.extend({}, options) }
151
+
152
+ _this.setState('started');
153
+ logger.info('state: ' + _this.getState());
154
+ logger.info('module is being initialized');
155
+
156
+ // jadams, 2020-06-24: Set max_count to 100 what cause to wait 2.5s
157
+ // for J1 Navigator to finish (init)
158
+ //
159
+ var interval_count = 0;
160
+ var max_count = 100;
161
+
162
+ var dependencies_met_navigator = setInterval(function() {
163
+ interval_count += 1;
164
+ if ( j1.adapter.navigator.getState() == 'finished' ) {
165
+ logger.info('dependencies of module navigator met for: mmenu');
166
+ logger.info('dependencies of module navigator met after: ' + interval_count * 25 + ' ms');
167
+ j1.adapter.mmenu.mmenuLoader(navMenuOptions);
168
+ clearInterval(dependencies_met_navigator);
169
+ }
170
+ if (interval_count > max_count) {
171
+ logger.warn('dependency check failed for module: navigator');
172
+ logger.warn('dependencies of module navigator met after: ' + interval_count * 25 + ' ms');
173
+ clearInterval(dependencies_met_navigator);
174
+ j1.adapter.mmenu.mmenuLoader(navMenuOptions);
175
+ }
176
+ }, 25);
177
+ }, // END init
178
+
179
+ // -------------------------------------------------------------------------
180
+ // MMenu Loader
181
+ // -------------------------------------------------------------------------
182
+ mmenuLoader: function (mmOptions) {
183
+ var menu_id;
184
+ var xhr_data_path;
185
+
186
+ _this.setState('loading');
187
+ logger.info('status: ' + _this.getState());
188
+ logger.info('load HTML data for navs and drawers');
189
+
190
+ {% assign id_list = "" %}
191
+
192
+ // -----------------------------------------------------------------------
193
+ // Load HTML data (AJAX)
194
+ // -----------------------------------------------------------------------
195
+ // jadams, 202-06-24: Promise (chain) if $.when seems NOT to work correctly.
196
+ // It semms a chain using .then will be a better solution to make it sure
197
+ // that the last Deferred set the state to 'data_loaded'.
198
+ // Found the final state randomly set to 'null' what prevent the module
199
+ // to run mmenuInitializer.
200
+ // Workaround: Set 'data_loaded' to be returned by all Deferred in
201
+ // the chain.
202
+ // See: https://stackoverflow.com/questions/5436327/jquery-deferreds-and-promises-then-vs-done
203
+ //
204
+ {% comment %} Modify chain
205
+ --------------------------------------------------------------------------
206
+ {% if forloop.last %}'data_loaded'{% else %}'null'{% endif %}){% if forloop.last %}{% else %},{% endif %}
207
+ to
208
+ {% if forloop.last %}'data_loaded'{% else %}'data_loaded'{% endif %}){% if forloop.last %}{% else %},{% endif %}
209
+ -------------------------------------------------------------------------- {% endcomment %}
210
+ $.when (
211
+ {% for item in nav_mmenu_options.menus %} {% if item.menu.enabled %}
212
+ {% assign menu_id = item.menu.xhr_container_id %}
213
+ {% assign xhr_data_path = item.menu.xhr_data_path %}
214
+
215
+ j1.xhrData (
216
+ 'j1.adapter.mmenu', {
217
+ xhr_container_id: "{{menu_id}}",
218
+ xhr_data_path: "{{xhr_data_path}}" },
219
+ {% if forloop.last %}'null'{% else %}'null'{% endif %}){% if forloop.last %}{% else %},{% endif %}
220
+
221
+ {% endif %}
222
+ {% capture id_list %}{{id_list}}{{menu_id}}{% if forloop.last %}{% else %},{% endif %} {% endcapture %}
223
+ {% endfor %} // ENDFOR menus
224
+ ).done (function ({{id_list}}) {
225
+ // ---------------------------------------------------------------------
226
+ // Initialize MMenu Navs and Drawers
227
+ // ---------------------------------------------------------------------
228
+ // Make sure that Load HTML data (AJAX) is finished
229
+ setTimeout (function() {
230
+ _this.setState('data_loaded');
231
+ }, 300);
232
+
233
+ var dependencies_met_mmenu_initialized = setInterval (function () {
234
+ if (_this.getState() === 'data_loaded') {
235
+ logger.info('load HTML data (AJAX): finished');
236
+ _this.setState('processing');
237
+ logger.info('status: ' + _this.getState());
238
+ logger.info('initialize navs and drawers');
239
+ j1.adapter.mmenu.mmenuInitializer(mmOptions);
240
+ clearInterval(dependencies_met_mmenu_initialized);
241
+ }
242
+ }, 25); // END dependencies_met_mmenu_loaded
243
+
244
+ var dependencies_met_all_menu_loaded = setInterval (function () {
245
+ if ( $('#menu_mmenu').length && $('#sidebar_mmenu').length && $('#toc_mmenu').length ) {
246
+ _this.setState('finished');
247
+ logger.info('status: ' + _this.getState());
248
+ clearInterval(dependencies_met_all_menu_loaded);
249
+ }
250
+ }, 25); // END dependencies_met_all_menu_loaded
251
+ }); // END done
252
+ }, // END dataLoader
253
+
254
+ // -------------------------------------------------------------------------
255
+ // MMenu Initializer
256
+ // -------------------------------------------------------------------------
257
+ mmenuInitializer: function (mmOptions) {
258
+ var menu_id;
259
+ var xhr_data_path;
260
+
261
+ {% for item in nav_mmenu_options.menus %} {% if item.menu.enabled %}
262
+
263
+ {% assign menu_id = item.menu.xhr_container_id %}
264
+ menu_id = "{{menu_id}}";
265
+ xhr_data_path = "{{item.menu.xhr_data_path}}";
266
+
267
+ // Create an mmenu instance if id exists: {{menu_id}}
268
+ if ($('#{{menu_id}}').length) {
269
+
270
+ logger.info('mmenu is being initialized on id: {{menu_id}}');
271
+
272
+ {% if item.menu.content.type == "navigation" %}
273
+ // Create an mmenu instance of type NAVIGATION
274
+ logger.info('found content type: NAVIGATION');
275
+ // ---------------------------------------------------------------------
276
+ // menu initializer (NAVIGATION)
277
+ // ---------------------------------------------------------------------
278
+ logger.info('initialize mmenu on id: #{{menu_id}}');
279
+ var dependencies_met_{{menu_id}}_loaded = setInterval (function () {
280
+ if ({{menu_id}}) {
281
+ const menu_selector = document.querySelector('#{{menu_id}}');
282
+ const mmenu_{{menu_id}} = new MmenuLight (
283
+ menu_selector,
284
+ '(max-width: ' + mmOptions.mmenu_plugin.max_width +'px)', {
285
+ // plugin options
286
+ node: mmOptions.mmenu_plugin.node,
287
+ mediaQuery: mmOptions.mmenu_plugin.mediaQuery
288
+ });
289
+
290
+ const drawer_{{menu_id}} = mmenu_{{menu_id}}.offcanvas ({
291
+ // drawer options
292
+ position: mmOptions.mmenu_drawer.position
293
+ });
294
+
295
+ const navigator_{{menu_id}} = mmenu_{{menu_id}}.navigation ({
296
+ // navigator options
297
+ selected: mmOptions.mmenu_navigator.selected,
298
+ slidingSubmenus: mmOptions.mmenu_navigator.slidingSubmenus,
299
+ title: mmOptions.mmenu_navigator.title,
300
+ theme: mmOptions.mmenu_navigator.theme
301
+ });
302
+
303
+ // Toggle Bars (Hamburger) for the NavBar to open|close
304
+ // the mmenu drawer
305
+ $('{{item.menu.content.button}}').each(function(e) {
306
+ var $this = $(this);
307
+
308
+ $this.on('click', function(e){
309
+ const button_{{menu_id}} = this;
310
+
311
+ // TODO: Animated toggle button
312
+ //
313
+ // $('{{item.menu.content.toggler}}').toggleClass('fadeIn');
314
+ // $('{{item.menu.content.toggler}}').toggleClass('rotateIn')
315
+
316
+ // $('.mdi', this).toggleClass('mdi-menu');
317
+ // $('.mdi', this).toggleClass('mdi-close');
318
+
319
+ e.preventDefault();
320
+
321
+ // (toggler_{{menu_id}}.t = !toggler_{{menu_id}}.t)
322
+ // ? drawer_{{menu_id}}.open()
323
+ // : drawer_{{menu_id}}.close();
324
+
325
+ drawer_{{menu_id}}.open()
326
+ });
327
+ });
328
+ clearInterval(dependencies_met_{{menu_id}}_loaded);
329
+ $('#{{item.menu.content.id}}').show();
330
+ logger.info('initializing mmenu finished on id: #{{menu_id}}');
331
+ }; // END mmenu_loaded
332
+ }, 25); // END dependencies_met_mmenu_loaded
333
+ {% endif %} // ENDIF content_type: NAVIGATION
334
+
335
+ {% if item.menu.content.type == "drawer" %}
336
+ // Create an mmenu instance of type HTML
337
+ logger.info('found content type: DRAWER');
338
+ // -------------------------------------------------------------------
339
+ // menu initializer (DRAWER)
340
+ // -------------------------------------------------------------------
341
+ logger.info('initialize mmenu on id: #{{menu_id}}');
342
+ var dependencies_met_{{menu_id}}_loaded = setInterval (function () {
343
+ if ({{menu_id}}) {
344
+ const menu_selector = document.querySelector('#{{menu_id}}');
345
+
346
+ const mmenu_{{menu_id}} = new MmenuLight (
347
+ menu_selector,
348
+ '(max-width: ' + mmOptions.mmenu_plugin.max_width +'px)', {
349
+ // plugin options
350
+ node: mmOptions.mmenu_plugin.node,
351
+ mediaQuery: mmOptions.mmenu_plugin.mediaQuery
352
+ });
353
+
354
+ const drawer_{{menu_id}} = mmenu_{{menu_id}}.offcanvas ({
355
+ // drawer options
356
+ position: "{{item.menu.drawer.position}}"
357
+ });
358
+
359
+ // button for the MMenu tocbar to open|close the toc drawer
360
+ $('{{item.menu.content.button}}').each(function(e) {
361
+ var $this = $(this);
362
+
363
+ $this.on('click', function(e) {
364
+ var button_{{menu_id}} = this;
365
+ var hasClass;
366
+
367
+ // check if the button should be activated
368
+ // e.g for TOC only if clas js-toc-content is found
369
+ //
370
+ if ('{{item.menu.content.button_activated}}' != 'always') {
371
+ hasClass = $('main').hasClass('{{item.menu.content.button_activated}}');
372
+ } else {
373
+ hasClass = true;
374
+ }
375
+ if (hasClass) {
376
+ // Toggle button animation
377
+ //$('{{item.menu.content.toggler}}').toggleClass('{{item.menu.content.toggler_animation}}')
378
+
379
+ e.preventDefault();
380
+
381
+ // (toggler_{{menu_id}}.t = !toggler_{{menu_id}}.t)
382
+ // ? drawer_{{menu_id}}.open()
383
+ // : drawer_{{menu_id}}.close();
384
+
385
+ drawer_{{menu_id}}.open()
386
+ } // END if hasclass
387
+ });
388
+ });
389
+ clearInterval(dependencies_met_{{menu_id}}_loaded);
390
+ $('#{{item.menu.content.id}}').show();
391
+ }; // END if menu_loaded
392
+ }, 25); // END dependencies_met_mmenu_loaded
393
+ logger.info('initializing mmenu finished on id: #{{menu_id}}');
394
+ {% endif %} // ENDIF content_type: DRAWER
395
+ } // END menus|drawers
396
+ {% endif %} // ENDIF menu enabled
397
+ {% endfor %} // ENDFOR menus
398
+ }, // END mmenuInitializer
399
+
400
+ // -------------------------------------------------------------------------
401
+ // messageHandler
402
+ // Manage messages (paylods) send from other J1 modules
403
+ // -------------------------------------------------------------------------
404
+ messageHandler: function (sender, message) {
405
+ // var json_message = JSON.stringify(message, undefined, 2); // multiline
406
+ var json_message = JSON.stringify(message);
407
+
408
+ logText = 'received message from ' + sender + ': ' + json_message;
409
+ logger.debug(logText);
410
+
411
+ // -----------------------------------------------------------------------
412
+ // Process commands|actions
413
+ // -----------------------------------------------------------------------
414
+ if (message.type === 'command' && message.action === 'module_initialized') {
415
+ //
416
+ // Place handling of command|action here
417
+ //
418
+ logger.info(message.text);
419
+ }
420
+ if (message.type === 'command' && message.action === 'status') {
421
+ logger.info('messageHandler: received - ' + message.action);
422
+ }
423
+
424
+ //
425
+ // Place handling of other command|action here
426
+ //
427
+
428
+ return true;
429
+ }, // END messageHandler
430
+
431
+ // -------------------------------------------------------------------------
432
+ // setState
433
+ // Set the current (processing) state of the module
434
+ // -------------------------------------------------------------------------
435
+ setState: function (stat) {
436
+ j1.adapter.mmenu.state = stat;
437
+ }, // END setState
438
+
439
+ // -------------------------------------------------------------------------
440
+ // getState
441
+ // Returns the current (processing) state of the module
442
+ // -------------------------------------------------------------------------
443
+ getState: function () {
444
+ return j1.adapter.mmenu.state;
445
+ } // END state
446
+
447
+ }; // END return
448
+ })(j1, window);
449
+
450
+ {% endcapture %}
451
+ {{ cache | strip_empty_lines }}
452
+ {% assign cache = nil %}
@@ -26,6 +26,11 @@ regenerate: true
26
26
  # Example: var str = JSON.stringify(obj, null, 2); // spacing level = 2
27
27
  # See: https://stackoverflow.com/questions/4810841/how-can-i-pretty-print-json-using-javascript
28
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
+ # -----------------------------------------------------------------------------
29
34
  {% endcomment %}
30
35
 
31
36
  {% comment %} Liquid procedures
@@ -67,8 +72,6 @@ regenerate: true
67
72
  {% assign nav_quicklinks_settings = navigator_settings.nav_quicklinks %}
68
73
  {% assign nav_topsearch_defaults = navigator_defaults.nav_topsearch %}
69
74
  {% assign nav_topsearch_settings = navigator_settings.nav_topsearch %}
70
- {% assign nav_sidebar_defaults = navigator_defaults.nav_sidebar %}
71
- {% assign nav_sidebar_settings = navigator_settings.nav_sidebar %}
72
75
  {% assign nav_authclient_defaults = authentication_defaults.auth_client %}
73
76
  {% assign nav_authclient_settings = authentication_settings.auth_client %}
74
77
 
@@ -79,12 +82,10 @@ regenerate: true
79
82
  {% assign nav_menu_options = nav_menu_defaults | merge: nav_menu_settings %}
80
83
  {% assign quicklinks_options = nav_quicklinks_defaults | merge: nav_quicklinks_settings %}
81
84
  {% assign topsearch_options = nav_topsearch_defaults | merge: nav_topsearch_settings %}
82
- {% assign sidebar_options = nav_sidebar_defaults | merge: nav_sidebar_settings %}
83
85
  {% assign authclient_options = nav_authclient_defaults | merge: nav_authclient_settings %}
84
86
 
85
87
  {% assign nav_bar_id = navigator_defaults.nav_bar.id %}
86
88
  {% assign nav_menu_id = navigator_defaults.nav_menu.id %}
87
- {% assign nav_sidebar_id = navigator_defaults.nav_sidebar.id %}
88
89
  {% assign nav_quicklinks_id = navigator_defaults.nav_quicklinks.id %}
89
90
  {% assign nav_navbar_media_breakpoint = navigator_defaults.nav_bar.media_breakpoint %}
90
91
  {% assign authclient_modals_id = navigator_defaults.nav_authclient.xhr_container_id %}
@@ -137,14 +138,12 @@ j1.adapter['navigator'] = (function (j1, window) {
137
138
 
138
139
  var nav_menu_id = '{{nav_menu_id}}';
139
140
  var nav_quicklinks_id = '{{nav_quicklinks_id}}';
140
- var nav_sidebar_id = '{{nav_sidebar_id}}';
141
141
  var authclient_modals_id = '{{authclient_modals_id}}';
142
142
 
143
143
  var colors_data_path = '{{template_config.colors_data_path}}';
144
144
  var font_size_data_path = '{{template_config.font_size_data_path}}';
145
145
  var nav_menu_data_path = '{{nav_menu_options.data_path}}';
146
146
  var nav_quicklinks_data_path = '{{quicklinks_options.data_path}}';
147
- var nav_sidebar_data_path = '{{sidebar_options.data_path}}';
148
147
  var authclient_modals_data_path = '{{authclient_options.xhr_data_path}}';
149
148
 
150
149
  var cookie_names = j1.getCookieNames();
@@ -201,13 +200,11 @@ j1.adapter['navigator'] = (function (j1, window) {
201
200
  var navMenuConfig = {};
202
201
  var navQuicklinksConfig = {};
203
202
  var navTopsearchConfig = {};
204
- var navSidebarConfig = {};
205
203
  var navAuthClientConfig = {};
206
204
  var navBarOptions = {};
207
205
  var navMenuOptions = {};
208
206
  var navQuicklinksOptions = {};
209
207
  var navTopsearchOptions = {};
210
- var navSidebarOptions = {};
211
208
  var navAuthClientOptions = {};
212
209
  var navAuthMAnagerConfig = {};
213
210
 
@@ -216,7 +213,6 @@ j1.adapter['navigator'] = (function (j1, window) {
216
213
  navMenuConfig = $.extend({}, {{nav_menu_options | replace: '=>', ':' }});
217
214
  navQuicklinksConfig = $.extend({}, {{quicklinks_options | replace: '=>', ':' }});
218
215
  navTopsearchConfig = $.extend({}, {{topsearch_options | replace: '=>', ':' }});
219
- navSidebarConfig = $.extend({}, {{sidebar_options | replace: '=>', ':' }});
220
216
  navAuthClientConfig = $.extend({}, {{authclient_options | replace: '=>', ':' }});
221
217
 
222
218
  navAuthMAnagerConfig = $.extend({}, {{authentication_options | replace: '=>', ':' }});
@@ -229,7 +225,6 @@ j1.adapter['navigator'] = (function (j1, window) {
229
225
  navMenuOptions = j1.mergeData(navMenuConfig, navDefaults.nav_menu);
230
226
  navQuicklinksOptions = j1.mergeData(navQuicklinksConfig, navDefaults.nav_quicklinks);
231
227
  navTopsearchOptions = j1.mergeData(navTopsearchConfig, navDefaults.nav_topsearch);
232
- navSidebarOptions = j1.mergeData(navSidebarConfig, navDefaults.nav_sidebar);
233
228
  navAuthClientConfig = j1.mergeData(navAuthClientConfig, navDefaults.nav_authclient);
234
229
 
235
230
  // save config settings into the navigator object for global access
@@ -239,7 +234,6 @@ j1.adapter['navigator'] = (function (j1, window) {
239
234
  j1.adapter.navigator['navMenuOptions'] = navMenuOptions;
240
235
  j1.adapter.navigator['navQuicklinksOptions'] = navQuicklinksOptions;
241
236
  j1.adapter.navigator['navTopsearchOptions'] = navTopsearchOptions;
242
- j1.adapter.navigator['navSidebarOptions'] = navSidebarOptions;
243
237
  j1.adapter.navigator['navAuthClientConfig'] = navAuthClientConfig;
244
238
  j1.adapter.navigator['navAuthManagerConfig'] = navAuthMAnagerConfig;
245
239
 
@@ -250,35 +244,48 @@ j1.adapter['navigator'] = (function (j1, window) {
250
244
  logger.info('state: ' + _this.getState());
251
245
  logger.info('module is being initialized');
252
246
 
247
+ // -----------------------------------------------------------------------
248
+ // Load HTML data (AJAX)
249
+ // -----------------------------------------------------------------------
250
+ // jadams, 202-06-24: Promise (chain) if $.when seems NOT to work correctly.
251
+ // It semms a chain using .then will be a better solution to make it sure
252
+ // that the last Deferred set the state to 'data_loaded'.
253
+ // Found the final state randomly set to 'null' what prevent the module
254
+ // to run mmenuInitializer.
255
+ // Workaround: Set 'data_loaded' to be returned by all Deferred in
256
+ // the chain.
257
+ // See: https://stackoverflow.com/questions/5436327/jquery-deferreds-and-promises-then-vs-done
258
+ //
253
259
  // -----------------------------------------------------------------------
254
260
  // data loader
255
261
  // -----------------------------------------------------------------------
256
262
  logger.info('run deferred data load');
257
263
  $.when (
258
- j1.xhrData (// sidebar
259
- 'j1.adapter.navigator', {
260
- xhr_container_id: navSidebarOptions.xhr_container_id,
261
- xhr_data_path: navSidebarOptions.xhr_data_path },
262
- null),
263
- j1.xhrData (// quicklinks
264
+ j1.xhrData ( // quicklinks
264
265
  'j1.adapter.navigator', {
265
266
  xhr_container_id: navQuicklinksOptions.xhr_container_id,
266
267
  xhr_data_path: navQuicklinksOptions.xhr_data_path },
267
268
  null),
268
- j1.xhrData (// authclient
269
+ j1.xhrData ( // authclient
269
270
  'j1.adapter.navigator', {
270
271
  xhr_container_id: navAuthClientConfig.xhr_container_id,
271
272
  xhr_data_path: navAuthClientConfig.xhr_data_path },
272
273
  null),
273
- j1.xhrData (// menubar
274
+ j1.xhrData ( // menubar
274
275
  'j1.adapter.navigator', {
275
276
  xhr_container_id: navMenuOptions.xhr_container_id,
276
277
  xhr_data_path: navMenuOptions.xhr_data_path },
277
278
  'data_loaded'))
278
- .done (function (sideBar, quickLinks, authclient, menuBar) {
279
+ .done (function (quickLinks, authclient, menuBar) {
279
280
  // ---------------------------------------------------------------------
280
281
  // core initializer
281
282
  // ---------------------------------------------------------------------
283
+
284
+ // Make sure that Load HTML data (AJAX) is finished
285
+ // setTimeout (function() {
286
+ // _this.setState('data_loaded');
287
+ // }, 150);
288
+
282
289
  var dependencies_met_navigator_core = setInterval (function () {
283
290
  if (_this.getState() === 'data_loaded') {
284
291
  _this.setState('processing');
@@ -325,8 +332,7 @@ j1.adapter['navigator'] = (function (j1, window) {
325
332
  logger.info('apply styles');
326
333
  _this.setCSS (
327
334
  navBarOptions, navMenuOptions,
328
- navQuicklinksOptions, navTopsearchOptions,
329
- navSidebarOptions
335
+ navQuicklinksOptions, navTopsearchOptions
330
336
  );
331
337
 
332
338
  logger.info('init auth client');
@@ -340,27 +346,28 @@ j1.adapter['navigator'] = (function (j1, window) {
340
346
  }
341
347
  }, 25); // END 'dependencies_met_navigator_core'
342
348
 
343
- // -----------------------------------------------------------------------
344
- // Register event 'reset on resize' (should moved to core events)
345
- // -----------------------------------------------------------------------
349
+ // --------------------------------------------------------------------
350
+ // Register event 'reset on resize' to call j1.core.navigator on
351
+ // manageDropdownMenu to manage the (current) NAV menu for
352
+ // desktop or mobile
353
+ // ---------------------------------------------------------------------
346
354
  $(window).on('resize', function() {
347
355
  j1.core.navigator.manageDropdownMenu(navDefaults, navMenuOptions);
348
356
 
357
+ // Hide|Close topSearch on resize event
349
358
  $('.top-search').slideUp();
359
+
360
+ // Manage sticky NAV bars
350
361
  setTimeout (function(){
351
362
  j1.core.navigator.navbarSticky();
352
363
  }, 500);
353
364
 
354
- // Toggle Bars
355
- $('button.navigator.navbar-toggler').each (function() {
356
- $('.mdi', this).removeClass('mdi-close');
357
- $('.mdi', this).addClass('mdi-menu');
358
- $(this).removeClass('fixed');
359
- });
360
-
361
- $('.navbar-collapse').removeClass('in');
362
- $('.navbar-collapse').removeClass('on');
363
- $('.navbar-collapse').removeClass('bounceIn');
365
+ // jadams, 2020-06-21: unclear|forgotten what I'm doing here!
366
+ // Looks like the old BS3 implementation
367
+ //
368
+ // $('.navbar-collapse').removeClass('in');
369
+ // $('.navbar-collapse').removeClass('on');
370
+ // $('.navbar-collapse').removeClass('bounceIn');
364
371
  });
365
372
 
366
373
  return true;
@@ -369,12 +376,12 @@ j1.adapter['navigator'] = (function (j1, window) {
369
376
 
370
377
  // -------------------------------------------------------------------------
371
378
  // Initialize JS portion for the dialogs (modals) used by J1AuthClient
372
- // NOTE: Currently cookie|sidebar updates NOT processed at the NAV module
379
+ // NOTE: Currently cookie updates NOT processed at the NAV module
373
380
  // All updates on Cookies are managed by Cookie Consent.
374
381
  // To be considered to re-add cookie updates for the auth state
375
382
  // -------------------------------------------------------------------------
376
383
  initAuthClient: function(auth_config) {
377
- var logger = log4javascript.getLogger('j1.adapter.navigator.initAuthClient');
384
+ var logger = log4javascript.getLogger('j1.adapter.navigator.initAuthClient');
378
385
  var user_session = j1.readCookie(cookie_user_session_name);
379
386
 
380
387
  _this.modalEventHandler(auth_config);
@@ -502,7 +509,7 @@ j1.adapter['navigator'] = (function (j1, window) {
502
509
  logger.info(logText);
503
510
  logText = 'initiate signout for provider: ' +provider;
504
511
  logger.info(logText);
505
-
512
+
506
513
  var route = '/authentication?request=signout&provider=' + provider + '&provider_signout=' + signOut.providerSignOut; // + '/logout/';
507
514
  logText = 'call middleware on route : ' +route;
508
515
  logger.info(logText);
@@ -526,7 +533,7 @@ j1.adapter['navigator'] = (function (j1, window) {
526
533
  // setCSS
527
534
  // Set dynamic CSS styles
528
535
  // -------------------------------------------------------------------------
529
- setCSS: function (navBarOptions, navMenuOptions, navQuicklinksOptions, navTopsearchOptions, navSidebarOptions) {
536
+ setCSS: function (navBarOptions, navMenuOptions, navQuicklinksOptions, navTopsearchOptions) {
530
537
  var logger = log4javascript.getLogger("j1.adapter.navigator.setCSS");
531
538
  var gridBreakpoint_lg = '992px';
532
539
  var gridBreakpoint_md = '768px';
@@ -571,9 +578,6 @@ j1.adapter['navigator'] = (function (j1, window) {
571
578
  navTopsearchOptions.input_color = j1.setColorData(navTopsearchOptions.input_color);
572
579
  navTopsearchOptions.background_color = j1.setColorData(navTopsearchOptions.background_color);
573
580
 
574
- {% comment %} Set|Resolve navSidebarOptions
575
- -------------------------------------------------------------------------- {% endcomment %}
576
- navSidebarOptions.background_color = j1.setColorData(navSidebarOptions.background_color);
577
581
 
578
582
  {% comment %} Set dymanic styles
579
583
  -------------------------------------------------------------------------- {% endcomment %}
@@ -595,14 +599,14 @@ j1.adapter['navigator'] = (function (j1, window) {
595
599
  $('head').append("<style>@media (min-width: " +gridBreakpoint_lg+ ") { nav.navbar.navigator.navbar-scrolled.light { background-color: " +bg_scrolled+ " !important; } }</style>");
596
600
 
597
601
  // Menubar collapsed (mobile)
598
- $('head').append('<style>.navbar-collapse.collapse.show { background-color: ' +bg_scrolled+ ' !important; }</style>');
602
+ // $('head').append('<style>.navbar-collapse.collapse.show { background-color: ' +bg_scrolled+ ' !important; }</style>');
599
603
 
600
604
 
601
605
  /* Navbar media-queries, LARGE Window|Desktop (>= 1024) */
602
606
  /* jadams: Oversized menu bar fixed by: overflow: hidden */
603
607
  // $('head').append("<style>@media (max-width: " +gridBreakpoint_lg+ ") { nav.navbar.navigator { background-color: " +navBarOptions.background_color_collapsed+ " !important; overflow: hidden; } }</style>");
604
- $('head').append("<style>@media (max-width: " +gridBreakpoint_lg+ ") { nav.navbar.navigator { background-color: " +bg_collapsed+ " !important; overflow: hidden; } }</style>");
605
- //$('head').append("<style>@media (max-width: 1023px) { row { margin-left: 0 !important; margin-right: 0 !important; } }</style>");
608
+ // $('head').append("<style>@media (max-width: " +gridBreakpoint_lg+ ") { nav.navbar.navigator { background-color: " +bg_collapsed+ " !important; overflow: hidden; } }</style>");
609
+ // $('head').append("<style>@media (max-width: 1023px) { row { margin-left: 0 !important; margin-right: 0 !important; } }</style>");
606
610
 
607
611
  {% comment %} navQuicklinks styles
608
612
  -------------------------------------------------------------------------- {% endcomment %}
@@ -670,10 +674,6 @@ j1.adapter['navigator'] = (function (j1, window) {
670
674
  $('head').append("<style>.top-search .input-group-addon { color: " +navTopsearchOptions.input_color+ " !important; }</style>");
671
675
  $('head').append("<style>.top-search .input.form-control { color: " +navTopsearchOptions.input_color+ " !important; }</style>");
672
676
 
673
- {% comment %} navSidebar styles
674
- -------------------------------------------------------------------------- {% endcomment %}
675
- $('head').append("<style>.side { background-color: " +navSidebarOptions.background_color+ " !important; }</style>");
676
-
677
677
  return true;
678
678
  }, // END setCSS
679
679
 
@@ -779,4 +779,4 @@ j1.adapter['navigator'] = (function (j1, window) {
779
779
 
780
780
  {% endcapture %}
781
781
  {{ cache | strip_empty_lines }}
782
- {% assign cache = nil %}
782
+ {% assign cache = nil %}