j1-template 2020.0.0 → 2020.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) 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 +150 -23
  18. data/assets/themes/j1/core/css/theme_extensions.min.css +1 -1
  19. data/assets/themes/j1/core/css/uno.css +150 -23
  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/layouts/default.yml +5 -5
  33. data/lib/starter_web/_data/modules/authentication.yml +4 -4
  34. data/lib/starter_web/_data/modules/cookie_consent.yml +10 -10
  35. data/lib/starter_web/_data/modules/defaults/navigator.yml +25 -24
  36. data/lib/starter_web/_data/modules/defaults/ssm.yml +50 -0
  37. data/lib/starter_web/_data/modules/defaults/toccer.yml +1 -1
  38. data/lib/starter_web/_data/modules/navigator.yml +161 -97
  39. data/lib/starter_web/_data/modules/navigator.yml.new +232 -0
  40. data/lib/starter_web/_data/modules/ssm.yml +133 -0
  41. data/lib/starter_web/_data/modules/toccer.yml +2 -1
  42. data/lib/starter_web/_data/private.yml +66 -98
  43. data/lib/starter_web/_data/resources.yml +76 -10
  44. data/lib/starter_web/apps/public/{cc → cc/cc.yml} +0 -0
  45. data/lib/starter_web/apps/public/cc/index.adoc +107 -0
  46. data/lib/starter_web/assets/images/modules/icons/j1/{j1..ico → j1.ico} +0 -0
  47. data/lib/starter_web/assets/themes/j1/adapter/js/algolia.js +321 -0
  48. data/lib/starter_web/assets/themes/j1/adapter/js/back2top.js +2 -2
  49. data/lib/starter_web/assets/themes/j1/adapter/js/cookie_consent.js +38 -28
  50. data/lib/starter_web/assets/themes/j1/adapter/js/gallery_customizer.js +7 -7
  51. data/lib/starter_web/assets/themes/j1/adapter/js/j1.js +55 -30
  52. data/lib/starter_web/assets/themes/j1/adapter/js/logger.js +2 -2
  53. data/lib/starter_web/assets/themes/j1/adapter/js/mmenu.js +439 -0
  54. data/lib/starter_web/assets/themes/j1/adapter/js/mmenu.js.new +432 -0
  55. data/lib/starter_web/assets/themes/j1/adapter/js/navigator.js +29 -47
  56. data/lib/starter_web/assets/themes/j1/adapter/js/ssm.js +496 -0
  57. data/lib/starter_web/assets/themes/j1/adapter/js/themer.js +2 -1
  58. data/lib/starter_web/assets/themes/j1/adapter/js/toccer.js +40 -36
  59. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/mmenu-light.css +384 -0
  60. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/mmenu-light.min.css +384 -0
  61. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/themes/uno.css +95 -0
  62. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/css/themes/uno.min.css +95 -0
  63. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.js +11 -0
  64. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.min.js +11 -0
  65. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.polyfills.js +118 -0
  66. data/lib/starter_web/assets/themes/j1/extensions/mmenu-light/js/mmenu-light.polyfills.min.js +118 -0
  67. data/lib/starter_web/collections/posts/public/{jekyll → featured}/_posts/2018-05-01-confusion-about-base-url.adoc +0 -0
  68. data/lib/starter_web/package.json +1 -1
  69. data/lib/starter_web/pages/public/learn/floating_sidebar.adoc +199 -0
  70. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +2 -2
  71. data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +2 -2
  72. data/lib/starter_web/pages/public/learn/whats_up.adoc +12 -11
  73. data/lib/starter_web/pages/public/legal/en/500_support.adoc +1 -1
  74. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/200_rotate.asciidoc +1 -1
  75. data/lib/starter_web/pages/public/previewer/mdi_icons_preview.adoc +2 -3
  76. data/lib/starter_web/pages/public/previewer/twitter_emoji_preview.adoc +3 -3
  77. data/lib/starter_web/pages/public/site_search.adoc +196 -0
  78. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  79. data/lib/starter_web/utilsrv/package.json +1 -1
  80. metadata +27 -6
@@ -0,0 +1,432 @@
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
+
178
+ }, // END init
179
+
180
+ // -------------------------------------------------------------------------
181
+ // MMenu Loader
182
+ // -------------------------------------------------------------------------
183
+ mmenuLoader: function (mmOptions) {
184
+ var menu_id;
185
+ var xhr_data_path;
186
+
187
+ _this.setState('loading');
188
+ logger.info('status: ' + _this.getState());
189
+ logger.info('load HTML data for navs and drawers');
190
+
191
+ {% assign id_list = "" %}
192
+
193
+ // -----------------------------------------------------------------------
194
+ // Load HTML data (AJAX)
195
+ // -----------------------------------------------------------------------
196
+ // jadams, 202-06-24: Promise (chain) if $.when seems NOT to work correctly.
197
+ // It semms a chain using .then will be a better solution to make it sure
198
+ // that the last Deferred set the state to 'data_loaded'.
199
+ // Found the final state randomly set to 'null' what prevent the module
200
+ // to run mmenuInitializer.
201
+ // Workaround: Set 'data_loaded' to be returned by all Deferred in
202
+ // the chain.
203
+ // See: https://stackoverflow.com/questions/5436327/jquery-deferreds-and-promises-then-vs-done
204
+ //
205
+ {% comment %} Modify chain
206
+ --------------------------------------------------------------------------
207
+ {% if forloop.last %}'data_loaded'{% else %}'null'{% endif %}){% if forloop.last %}{% else %},{% endif %}
208
+ to
209
+ {% if forloop.last %}'data_loaded'{% else %}'data_loaded'{% endif %}){% if forloop.last %}{% else %},{% endif %}
210
+ -------------------------------------------------------------------------- {% endcomment %}
211
+ $.when (
212
+ {% for item in nav_mmenu_options.menus %} {% if item.menu.enabled %}
213
+ {% assign menu_id = item.menu.xhr_container_id %}
214
+ {% assign xhr_data_path = item.menu.xhr_data_path %}
215
+
216
+ j1.xhrData (
217
+ 'j1.adapter.mmenu', {
218
+ xhr_container_id: "{{menu_id}}",
219
+ xhr_data_path: "{{xhr_data_path}}" },
220
+ {% if forloop.last %}'data_loaded'{% else %}'data_loaded'{% endif %}){% if forloop.last %}{% else %},{% endif %}
221
+
222
+ {% endif %}
223
+ {% capture id_list %}{{id_list}}{{menu_id}}{% if forloop.last %}{% else %},{% endif %} {% endcapture %}
224
+ {% endfor %} // ENDFOR menus
225
+ ).done (function ({{id_list}}) {
226
+ // ---------------------------------------------------------------------
227
+ // Initialize MMenu Navs and Drawers
228
+ // ---------------------------------------------------------------------
229
+ var dependencies_met_mmenu_initialized = setInterval (function () {
230
+ if (_this.getState() === 'data_loaded') {
231
+ logger.info('load HTML data (AJAX): finished');
232
+ _this.setState('processing');
233
+ logger.info('status: ' + _this.getState());
234
+ logger.info('initialize navs and drawers');
235
+ j1.adapter.mmenu.mmenuInitializer(mmOptions);
236
+ clearInterval(dependencies_met_mmenu_initialized);
237
+ }
238
+ }); // END dependencies_met_mmenu_loaded
239
+ }); // END done
240
+ }, // END dataLoader
241
+
242
+ // -------------------------------------------------------------------------
243
+ // MMenu Initializer
244
+ // -------------------------------------------------------------------------
245
+ mmenuInitializer: function (mmOptions) {
246
+ var menu_id;
247
+ var xhr_data_path;
248
+
249
+ {% for item in nav_mmenu_options.menus %} {% if item.menu.enabled %}
250
+
251
+ {% assign menu_id = item.menu.xhr_container_id %}
252
+ menu_id = "{{menu_id}}";
253
+ xhr_data_path = "{{item.menu.xhr_data_path}}";
254
+
255
+ // Create an mmenu instance if id exists: {{menu_id}}
256
+ if ($('#{{menu_id}}').length) {
257
+
258
+ logger.info('mmenu is being initialized on id: {{menu_id}}');
259
+
260
+ {% if item.menu.content.type == "navigation" %}
261
+ // Create an mmenu instance of type NAVIGATION
262
+ logger.info('found content type: NAVIGATION');
263
+ // ---------------------------------------------------------------------
264
+ // menu initializer (NAVIGATION)
265
+ // ---------------------------------------------------------------------
266
+ logger.info('initialize mmenu on id: #{{menu_id}}');
267
+ var dependencies_met_{{menu_id}}_loaded = setInterval (function () {
268
+ if ({{menu_id}}) {
269
+ const menu_selector = document.querySelector('#{{menu_id}}');
270
+ const mmenu_{{menu_id}} = new MmenuLight (
271
+ menu_selector,
272
+ '(max-width: ' + mmOptions.mmenu_plugin.max_width +'px)', {
273
+ // plugin options
274
+ node: mmOptions.mmenu_plugin.node,
275
+ mediaQuery: mmOptions.mmenu_plugin.mediaQuery
276
+ });
277
+
278
+ const drawer_{{menu_id}} = mmenu_{{menu_id}}.offcanvas ({
279
+ // drawer options
280
+ position: mmOptions.mmenu_drawer.position
281
+ });
282
+
283
+ const navigator_{{menu_id}} = mmenu_{{menu_id}}.navigation ({
284
+ // navigator options
285
+ selected: mmOptions.mmenu_navigator.selected,
286
+ slidingSubmenus: mmOptions.mmenu_navigator.slidingSubmenus,
287
+ title: mmOptions.mmenu_navigator.title,
288
+ theme: mmOptions.mmenu_navigator.theme
289
+ });
290
+
291
+ // Button|Toggler for the NavBar to open|close
292
+ // the mmenu drawer
293
+ $('{{item.menu.content.button_selector}}').each(function(e) {
294
+ var $this = $(this);
295
+
296
+ $this.on('click', function(e){
297
+ const toggler_{{menu_id}} = this;
298
+
299
+ // TODO: Animated toggle button
300
+ //
301
+ $('{{item.menu.content.button_selector}}').toggleClass('fadeIn');
302
+ $('{{item.menu.content.button_selector}}').toggleClass('rotateIn')
303
+
304
+ $('.mdi', this).toggleClass('mdi-menu');
305
+ $('.mdi', this).toggleClass('mdi-close');
306
+ e.preventDefault();
307
+ (toggler_{{menu_id}}.t = !toggler_{{menu_id}}.t)
308
+ ? drawer_{{menu_id}}.open()
309
+ : drawer_{{menu_id}}.close();
310
+ });
311
+ });
312
+ clearInterval(dependencies_met_{{menu_id}}_loaded);
313
+ logger.info('initializing mmenu finished on id: #{{menu_id}}');
314
+ }; // END mmenu_loaded
315
+ }); // END dependencies_met_mmenu_loaded
316
+ {% endif %} // ENDIF content_type: NAVIGATION
317
+
318
+ {% if item.menu.content.type == "drawer" %}
319
+ // Create an mmenu instance of type HTML
320
+ logger.info('found content type: DRAWER');
321
+ // -------------------------------------------------------------------
322
+ // menu initializer (DRAWER)
323
+ // -------------------------------------------------------------------
324
+ logger.info('initialize mmenu on id: #{{menu_id}}');
325
+ var dependencies_met_{{menu_id}}_loaded = setInterval (function () {
326
+ if ({{menu_id}}) {
327
+ const menu_selector = document.querySelector('#{{menu_id}}');
328
+
329
+ const mmenu_{{menu_id}} = new MmenuLight (
330
+ menu_selector,
331
+ '(max-width: ' + mmOptions.mmenu_plugin.max_width +'px)', {
332
+ // plugin options
333
+ node: mmOptions.mmenu_plugin.node,
334
+ mediaQuery: mmOptions.mmenu_plugin.mediaQuery
335
+ });
336
+
337
+ const drawer_{{menu_id}} = mmenu_{{menu_id}}.offcanvas ({
338
+ // drawer options
339
+ position: "{{item.menu.drawer.position}}"
340
+ });
341
+
342
+ // Button|Toggler for the MMenu tocbar to open|close the toc drawer
343
+ $('{{item.menu.content.button_selector}}').each(function(e) {
344
+ var $this = $(this);
345
+
346
+ $this.on('click', function(e) {
347
+ var toggler_{{menu_id}} = this;
348
+ var hasClass;
349
+
350
+ // check if the toggler should be activated
351
+ // e.g for TOC only if clas js-toc-content is found
352
+ //
353
+ if ('{{item.menu.content.toggler_activated}}' != 'always') {
354
+ hasClass = $('main').hasClass('{{item.menu.content.toggler_activated}}');
355
+ } else {
356
+ hasClass = true;
357
+ }
358
+ if (hasClass) {
359
+ // Toggle button animation
360
+ $('{{item.menu.content.button_selector}}').toggleClass('{{item.menu.content.toggler_animation}}')
361
+
362
+ e.preventDefault();
363
+ (toggler_{{menu_id}}.t = !toggler_{{menu_id}}.t)
364
+ ? drawer_{{menu_id}}.open()
365
+ : drawer_{{menu_id}}.close();
366
+ } // END if hasclass
367
+ });
368
+ });
369
+ clearInterval(dependencies_met_{{menu_id}}_loaded);
370
+ }; // END if menu_loaded
371
+ }); // END dependencies_met_mmenu_loaded
372
+ logger.info('initializing mmenu finished on id: #{{menu_id}}');
373
+ {% endif %} // ENDIF content_type: DRAWER
374
+ } // END menus|drawers
375
+
376
+ {% endif %} // ENDIF menu enabled
377
+ {% endfor %} // ENDFOR menus
378
+ }, // END mmenuInitializer
379
+
380
+ // -------------------------------------------------------------------------
381
+ // messageHandler
382
+ // Manage messages (paylods) send from other J1 modules
383
+ // -------------------------------------------------------------------------
384
+ messageHandler: function (sender, message) {
385
+ // var json_message = JSON.stringify(message, undefined, 2); // multiline
386
+ var json_message = JSON.stringify(message);
387
+
388
+ logText = 'received message from ' + sender + ': ' + json_message;
389
+ logger.debug(logText);
390
+
391
+ // -----------------------------------------------------------------------
392
+ // Process commands|actions
393
+ // -----------------------------------------------------------------------
394
+ if (message.type === 'command' && message.action === 'module_initialized') {
395
+ //
396
+ // Place handling of command|action here
397
+ //
398
+ logger.info(message.text);
399
+ }
400
+ if (message.type === 'command' && message.action === 'status') {
401
+ logger.info('messageHandler: received - ' + message.action);
402
+ }
403
+
404
+ //
405
+ // Place handling of other command|action here
406
+ //
407
+
408
+ return true;
409
+ }, // END messageHandler
410
+
411
+ // -------------------------------------------------------------------------
412
+ // setState
413
+ // Set the current (processing) state of the module
414
+ // -------------------------------------------------------------------------
415
+ setState: function (stat) {
416
+ j1.adapter.mmenu.state = stat;
417
+ }, // END setState
418
+
419
+ // -------------------------------------------------------------------------
420
+ // getState
421
+ // Returns the current (processing) state of the module
422
+ // -------------------------------------------------------------------------
423
+ getState: function () {
424
+ return j1.adapter.mmenu.state;
425
+ } // END state
426
+
427
+ }; // END return
428
+ })(j1, window);
429
+
430
+ {% endcapture %}
431
+ {{ cache | strip_empty_lines }}
432
+ {% 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
 
@@ -255,27 +249,22 @@ j1.adapter['navigator'] = (function (j1, window) {
255
249
  // -----------------------------------------------------------------------
256
250
  logger.info('run deferred data load');
257
251
  $.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
252
+ j1.xhrData ( // quicklinks
264
253
  'j1.adapter.navigator', {
265
254
  xhr_container_id: navQuicklinksOptions.xhr_container_id,
266
255
  xhr_data_path: navQuicklinksOptions.xhr_data_path },
267
256
  null),
268
- j1.xhrData (// authclient
257
+ j1.xhrData ( // authclient
269
258
  'j1.adapter.navigator', {
270
259
  xhr_container_id: navAuthClientConfig.xhr_container_id,
271
260
  xhr_data_path: navAuthClientConfig.xhr_data_path },
272
261
  null),
273
- j1.xhrData (// menubar
262
+ j1.xhrData ( // menubar
274
263
  'j1.adapter.navigator', {
275
264
  xhr_container_id: navMenuOptions.xhr_container_id,
276
265
  xhr_data_path: navMenuOptions.xhr_data_path },
277
266
  'data_loaded'))
278
- .done (function (sideBar, quickLinks, authclient, menuBar) {
267
+ .done (function (quickLinks, authclient, menuBar) {
279
268
  // ---------------------------------------------------------------------
280
269
  // core initializer
281
270
  // ---------------------------------------------------------------------
@@ -325,8 +314,7 @@ j1.adapter['navigator'] = (function (j1, window) {
325
314
  logger.info('apply styles');
326
315
  _this.setCSS (
327
316
  navBarOptions, navMenuOptions,
328
- navQuicklinksOptions, navTopsearchOptions,
329
- navSidebarOptions
317
+ navQuicklinksOptions, navTopsearchOptions
330
318
  );
331
319
 
332
320
  logger.info('init auth client');
@@ -340,27 +328,28 @@ j1.adapter['navigator'] = (function (j1, window) {
340
328
  }
341
329
  }, 25); // END 'dependencies_met_navigator_core'
342
330
 
343
- // -----------------------------------------------------------------------
344
- // Register event 'reset on resize' (should moved to core events)
345
- // -----------------------------------------------------------------------
331
+ // --------------------------------------------------------------------
332
+ // Register event 'reset on resize' to call j1.core.navigator on
333
+ // manageDropdownMenu to manage the (current) NAV menu for
334
+ // desktop or mobile
335
+ // ---------------------------------------------------------------------
346
336
  $(window).on('resize', function() {
347
337
  j1.core.navigator.manageDropdownMenu(navDefaults, navMenuOptions);
348
338
 
339
+ // Hide|Close topSearch on resize event
349
340
  $('.top-search').slideUp();
341
+
342
+ // Manage sticky NAV bars
350
343
  setTimeout (function(){
351
344
  j1.core.navigator.navbarSticky();
352
345
  }, 500);
353
346
 
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');
347
+ // jadams, 2020-06-21: unclear|forgotten what I'm doing here!
348
+ // Looks like the old BS3 implementation
349
+ //
350
+ // $('.navbar-collapse').removeClass('in');
351
+ // $('.navbar-collapse').removeClass('on');
352
+ // $('.navbar-collapse').removeClass('bounceIn');
364
353
  });
365
354
 
366
355
  return true;
@@ -369,12 +358,12 @@ j1.adapter['navigator'] = (function (j1, window) {
369
358
 
370
359
  // -------------------------------------------------------------------------
371
360
  // Initialize JS portion for the dialogs (modals) used by J1AuthClient
372
- // NOTE: Currently cookie|sidebar updates NOT processed at the NAV module
361
+ // NOTE: Currently cookie updates NOT processed at the NAV module
373
362
  // All updates on Cookies are managed by Cookie Consent.
374
363
  // To be considered to re-add cookie updates for the auth state
375
364
  // -------------------------------------------------------------------------
376
365
  initAuthClient: function(auth_config) {
377
- var logger = log4javascript.getLogger('j1.adapter.navigator.initAuthClient');
366
+ var logger = log4javascript.getLogger('j1.adapter.navigator.initAuthClient');
378
367
  var user_session = j1.readCookie(cookie_user_session_name);
379
368
 
380
369
  _this.modalEventHandler(auth_config);
@@ -502,7 +491,7 @@ j1.adapter['navigator'] = (function (j1, window) {
502
491
  logger.info(logText);
503
492
  logText = 'initiate signout for provider: ' +provider;
504
493
  logger.info(logText);
505
-
494
+
506
495
  var route = '/authentication?request=signout&provider=' + provider + '&provider_signout=' + signOut.providerSignOut; // + '/logout/';
507
496
  logText = 'call middleware on route : ' +route;
508
497
  logger.info(logText);
@@ -526,7 +515,7 @@ j1.adapter['navigator'] = (function (j1, window) {
526
515
  // setCSS
527
516
  // Set dynamic CSS styles
528
517
  // -------------------------------------------------------------------------
529
- setCSS: function (navBarOptions, navMenuOptions, navQuicklinksOptions, navTopsearchOptions, navSidebarOptions) {
518
+ setCSS: function (navBarOptions, navMenuOptions, navQuicklinksOptions, navTopsearchOptions) {
530
519
  var logger = log4javascript.getLogger("j1.adapter.navigator.setCSS");
531
520
  var gridBreakpoint_lg = '992px';
532
521
  var gridBreakpoint_md = '768px';
@@ -571,9 +560,6 @@ j1.adapter['navigator'] = (function (j1, window) {
571
560
  navTopsearchOptions.input_color = j1.setColorData(navTopsearchOptions.input_color);
572
561
  navTopsearchOptions.background_color = j1.setColorData(navTopsearchOptions.background_color);
573
562
 
574
- {% comment %} Set|Resolve navSidebarOptions
575
- -------------------------------------------------------------------------- {% endcomment %}
576
- navSidebarOptions.background_color = j1.setColorData(navSidebarOptions.background_color);
577
563
 
578
564
  {% comment %} Set dymanic styles
579
565
  -------------------------------------------------------------------------- {% endcomment %}
@@ -670,10 +656,6 @@ j1.adapter['navigator'] = (function (j1, window) {
670
656
  $('head').append("<style>.top-search .input-group-addon { color: " +navTopsearchOptions.input_color+ " !important; }</style>");
671
657
  $('head').append("<style>.top-search .input.form-control { color: " +navTopsearchOptions.input_color+ " !important; }</style>");
672
658
 
673
- {% comment %} navSidebar styles
674
- -------------------------------------------------------------------------- {% endcomment %}
675
- $('head').append("<style>.side { background-color: " +navSidebarOptions.background_color+ " !important; }</style>");
676
-
677
659
  return true;
678
660
  }, // END setCSS
679
661
 
@@ -779,4 +761,4 @@ j1.adapter['navigator'] = (function (j1, window) {
779
761
 
780
762
  {% endcapture %}
781
763
  {{ cache | strip_empty_lines }}
782
- {% assign cache = nil %}
764
+ {% assign cache = nil %}