j1_template_mde 2018.4.15 → 2018.4.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/_includes/themes/j1/layouts/content_generator_blog_archive.html +3 -3
- data/_includes/themes/j1/layouts/layout_shim_generator.html +4 -0
- data/_includes/themes/j1/modules/navigator/generator.html +4 -4
- data/_includes/themes/j1/modules/navigator/procedures/sidebar.proc +174 -127
- data/lib/j1/version.rb +1 -1
- data/lib/j1_app.rb +4 -1
- data/lib/j1_app/j1_auth_manager/auth_manager.previous.rb +939 -0
- data/lib/j1_app/j1_auth_manager/auth_manager.rb +386 -214
- data/lib/j1_app/j1_auth_manager/config.rb +103 -66
- data/lib/j1_app/j1_auth_manager/helpers.rb +22 -14
- data/lib/j1_app/j1_auth_manager/views/auth_manager_ui.erb +7 -2
- data/lib/j1_app/omniauth/strategies/_unused/doumart_patreon.rb +75 -0
- data/lib/j1_app/omniauth/strategies/_unused/my_patreon.rb +78 -0
- data/lib/j1_app/omniauth/strategies/_unused/patreon.v1.rb +50 -0
- data/lib/j1_app/omniauth/strategies/_unused/patreon.v2-v1.rb +82 -0
- data/lib/j1_app/omniauth/strategies/_unused/patreon.v2.rb +79 -0
- data/lib/starter_web/Gemfile +185 -168
- data/lib/starter_web/_config.yml +85 -69
- data/lib/starter_web/_data/j1_resources.yml +15 -0
- data/lib/starter_web/_data/modules/j1_navigator.yml +79 -12
- data/lib/starter_web/_rack/Guardfile +75 -0
- data/lib/starter_web/assets/data/authclient.html +10 -7
- data/lib/starter_web/assets/data/banner.html +127 -127
- data/lib/starter_web/assets/images/patreon/premium-content-460x200.png +0 -0
- data/lib/starter_web/assets/images/patreon/scalable/{Premium-content.psd → premium-content.psd} +0 -0
- data/lib/starter_web/assets/images/patreon/scalable/value-content.psd +0 -0
- data/lib/starter_web/assets/images/patreon/value-content-460x200.png +0 -0
- data/lib/starter_web/assets/themes/j1/core/css/theme_extensions.css +2 -2
- data/lib/starter_web/assets/themes/j1/core/css/theme_extensions.min.css +1 -1
- data/lib/starter_web/assets/themes/j1/core/css/uno.css +2 -2
- data/lib/starter_web/assets/themes/j1/core/css/uno.min.css +1 -1
- data/lib/starter_web/assets/themes/j1/core/js/adapter/navigator.js +66 -11
- data/lib/starter_web/assets/themes/j1/core/js/adapter/navigator.js.failed +797 -0
- data/lib/starter_web/assets/themes/j1/core/js/adapter/template.js +26 -7
- data/lib/starter_web/assets/themes/j1/extensions/livereload/LICENSE +20 -0
- data/lib/starter_web/assets/themes/j1/extensions/livereload/README.md +249 -0
- data/lib/starter_web/assets/themes/j1/extensions/livereload/js/livereload.js +1951 -0
- data/lib/starter_web/assets/themes/j1/extensions/livereload/js/livereload.min.js +1 -0
- data/lib/starter_web/assets/themes/j1/extensions/patreon/patreon.widget.button.html +21 -0
- data/lib/starter_web/package.json +14 -5
- data/lib/starter_web/pages/public/about/become_a_patron.adoc +1 -1
- data/lib/starter_web/pages/public/blog/navigator/archive.html +0 -1
- metadata +19 -4
- data/lib/starter_web/assets/images/patreon/premium-content-420x200.png +0 -0
@@ -0,0 +1,797 @@
|
|
1
|
+
---
|
2
|
+
regenerate: true
|
3
|
+
---
|
4
|
+
|
5
|
+
{% capture cache %}
|
6
|
+
|
7
|
+
{% comment %}
|
8
|
+
# -----------------------------------------------------------------------------
|
9
|
+
# ~/assets/themes/j1/core/js/adapter/navigator.js
|
10
|
+
# Liquid template to create the Template Adapter for J1 Navigator
|
11
|
+
#
|
12
|
+
# Product/Info:
|
13
|
+
# https://jekyll.one
|
14
|
+
#
|
15
|
+
# Copyright (C) 2019 Juergen Adams
|
16
|
+
#
|
17
|
+
# J1 Template is licensed under the MIT License.
|
18
|
+
# For details, see https://jekyll.one
|
19
|
+
#
|
20
|
+
# -----------------------------------------------------------------------------
|
21
|
+
# Test data:
|
22
|
+
# {{ liquid_var | debug }}
|
23
|
+
#
|
24
|
+
# -----------------------------------------------------------------------------
|
25
|
+
{% endcomment %}
|
26
|
+
|
27
|
+
{% comment %} Variables
|
28
|
+
-------------------------------------------------------------------------------- {% endcomment %}
|
29
|
+
{% assign environment = site.environment %}
|
30
|
+
{% assign debug = navigator_config.debug %}
|
31
|
+
{% assign brand_image_height = site.brand.image_height %}
|
32
|
+
|
33
|
+
{% assign auth_config_provider = site.j1_auth.providers %}
|
34
|
+
{% assign navigator_config = site.data.modules.j1_navigator %}
|
35
|
+
{% assign nav_defaults = navigator_config.defaults %}
|
36
|
+
{% assign nav_bar_config = navigator_config.nav_bar %}
|
37
|
+
{% assign nav_menu_config = navigator_config.nav_menu %}
|
38
|
+
{% assign nav_quicklinks_config = navigator_config.nav_quicklinks %}
|
39
|
+
{% assign nav_topsearch_config = navigator_config.nav_topsearch %}
|
40
|
+
{% assign nav_sidebar_config = navigator_config.nav_sidebar %}
|
41
|
+
{% assign nav_authclient_config = navigator_config.nav_authclient %}
|
42
|
+
|
43
|
+
{% if nav_bar_config.dropdown_animate_duration != null %}
|
44
|
+
{% assign animate_duration = nav_bar_config.dropdown_animate_duration %}
|
45
|
+
{% else %}
|
46
|
+
{% assign animate_duration = 1 %}
|
47
|
+
{% endif %}
|
48
|
+
|
49
|
+
{% comment %}
|
50
|
+
Set|Overload Liquid vars hardwired to NOT break the (MD) style
|
51
|
+
ToDo: Remove configuration from j1_navigator.yml
|
52
|
+
-------------------------------------------------------------------------------- {% endcomment %}
|
53
|
+
{% assign dropdown_border_height = "3" %}
|
54
|
+
|
55
|
+
/*
|
56
|
+
# -----------------------------------------------------------------------------
|
57
|
+
# ~/assets/themes/j1/core/js/adapter/navigator.js
|
58
|
+
# JS Adapter for J1 Navigator
|
59
|
+
#
|
60
|
+
# Product/Info:
|
61
|
+
# https://jekyll.one
|
62
|
+
#
|
63
|
+
# Copyright (C) 2019 Juergen Adams
|
64
|
+
#
|
65
|
+
# J1 Template is licensed under the MIT License.
|
66
|
+
# For details, see https://jekyll.one
|
67
|
+
#
|
68
|
+
# -----------------------------------------------------------------------------
|
69
|
+
# Adapter generated: {{site.time}}
|
70
|
+
# -----------------------------------------------------------------------------
|
71
|
+
*/
|
72
|
+
'use strict';
|
73
|
+
|
74
|
+
j1.Navigator = (function (j1, window) {
|
75
|
+
var environment = '{{environment}}'; // Set environment
|
76
|
+
var state = 'unknown';
|
77
|
+
// J1 data file objects
|
78
|
+
var nav_menu_id = "navigator_nav_menu"
|
79
|
+
var authclient_modals_id = "authclient_modals"
|
80
|
+
var colors_data_path = "/assets/data/colors.json";
|
81
|
+
var font_size_data_path = "/assets/data/font_sizes.json";
|
82
|
+
var nav_menu_data_path = "/assets/data/menu/index.html"
|
83
|
+
var authclient_modals_data_path = "/assets/data/authclient/index.html"
|
84
|
+
var web_session_data = j1.getWebSessionCookie();
|
85
|
+
var j1_colors = {};
|
86
|
+
var j1_font_sizes = {};
|
87
|
+
var logger;
|
88
|
+
var logText;
|
89
|
+
|
90
|
+
return {
|
91
|
+
|
92
|
+
// -------------------------------------------------------------------------
|
93
|
+
// Initialize Navigator
|
94
|
+
// -------------------------------------------------------------------------
|
95
|
+
init: function ( options ) {
|
96
|
+
|
97
|
+
// Module setting objects
|
98
|
+
var navDefaults = {};
|
99
|
+
var navBarConfig = {};
|
100
|
+
var navMenuConfig = {};
|
101
|
+
var navQuicklinksConfig = {};
|
102
|
+
var navTopsearchConfig = {};
|
103
|
+
var navSidebarConfig = {};
|
104
|
+
var navAuthClientConfig = {};
|
105
|
+
var navBarOptions = {};
|
106
|
+
var navMenuOptions = {};
|
107
|
+
var navQuicklinksOptions = {};
|
108
|
+
var navTopsearchOptions = {};
|
109
|
+
var navSidebarOptions = {};
|
110
|
+
var navAuthClientOptions = {};
|
111
|
+
var navAuthClientProvider = {};
|
112
|
+
|
113
|
+
{% comment %} Set global variables
|
114
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
115
|
+
|
116
|
+
logger = log4javascript.getLogger("j1.Navigator"); // Setup logger
|
117
|
+
|
118
|
+
// Set|Log status
|
119
|
+
state = 'started';
|
120
|
+
logger.info('state: ' + state);
|
121
|
+
|
122
|
+
{% comment %} Load module config from yml data file
|
123
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
124
|
+
|
125
|
+
// Load module DEFAULTS|CONFIG
|
126
|
+
navDefaults = $.extend({}, {{nav_defaults | replace: '=>', ':' }});
|
127
|
+
navBarConfig = $.extend({}, {{nav_bar_config | replace: '=>', ':' }});
|
128
|
+
navMenuConfig = $.extend({}, {{nav_menu_config | replace: '=>', ':' }});
|
129
|
+
navQuicklinksConfig = $.extend({}, {{nav_quicklinks_config | replace: '=>', ':' }});
|
130
|
+
navTopsearchConfig = $.extend({}, {{nav_topsearch_config | replace: '=>', ':' }});
|
131
|
+
navSidebarConfig = $.extend({}, {{nav_sidebar_config | replace: '=>', ':' }});
|
132
|
+
navAuthClientConfig = $.extend({}, {{nav_authclient_config | replace: '=>', ':' }});
|
133
|
+
navAuthClientProvider = $.extend({}, {{auth_config_provider | replace: '=>', ':' }});
|
134
|
+
|
135
|
+
// Merge|Overload module CONFIG by DEFAULTS
|
136
|
+
navBarOptions = j1.mergeData( navDefaults.nav_bar, navBarConfig );
|
137
|
+
navMenuOptions = j1.mergeData( navDefaults.nav_menu, navMenuConfig );
|
138
|
+
navQuicklinksOptions = j1.mergeData( navDefaults.nav_quicklinks, navQuicklinksConfig );
|
139
|
+
navTopsearchOptions = j1.mergeData( navDefaults.nav_topsearch, navTopsearchConfig );
|
140
|
+
navSidebarOptions = j1.mergeData( navDefaults.nav_sidebar, navSidebarConfig );
|
141
|
+
navAuthClientConfig = j1.mergeData( navDefaults.nav_authclient, navAuthClientConfig );
|
142
|
+
|
143
|
+
// Load (individual) frontmatter options (currently NOT used)
|
144
|
+
if ( options != null ) { var frontmatterOptions = $.extend({}, options) }
|
145
|
+
|
146
|
+
{% comment %} Helper functions for (AJAX) data load
|
147
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
148
|
+
function load_color_data() {
|
149
|
+
// Returns the j1_colors object
|
150
|
+
return $.ajax({
|
151
|
+
url: colors_data_path,
|
152
|
+
success: function (data) {
|
153
|
+
if (typeof data == 'string') {
|
154
|
+
j1_colors = JSON.parse(data);
|
155
|
+
}
|
156
|
+
if (typeof data == 'object') {
|
157
|
+
j1_colors = data;
|
158
|
+
}
|
159
|
+
}
|
160
|
+
});
|
161
|
+
};
|
162
|
+
function load_font_sizes() {
|
163
|
+
// Returns the j1_font_sizes object
|
164
|
+
return $.ajax({
|
165
|
+
url: font_size_data_path,
|
166
|
+
success: function (data) {
|
167
|
+
if (typeof data == 'string') {
|
168
|
+
j1_font_sizes = JSON.parse(data);
|
169
|
+
}
|
170
|
+
if (typeof data == 'object') {
|
171
|
+
j1_font_sizes = data;
|
172
|
+
}
|
173
|
+
}
|
174
|
+
});
|
175
|
+
};
|
176
|
+
|
177
|
+
{% comment %} Deferred (AJAX) data load
|
178
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
179
|
+
// Load color and font (json) data asychronously
|
180
|
+
// See: https://stackoverflow.com/questions/3709597/wait-until-all-jquery-ajax-requests-are-done
|
181
|
+
$.when( load_color_data(), load_font_sizes() ).done (
|
182
|
+
function( load_color_data_response, load_font_sizes_response ) {
|
183
|
+
// Run initializer functions
|
184
|
+
j1.Navigator.loadMenuBar( navMenuOptions );
|
185
|
+
j1.Navigator.loadAuthClientModals( navAuthClientOptions, navAuthClientProvider );
|
186
|
+
j1.Navigator.setCss( navBarOptions, navMenuOptions, navQuicklinksOptions, navTopsearchOptions, navSidebarOptions );
|
187
|
+
// Set|Log status
|
188
|
+
state = 'initialized';
|
189
|
+
logger.info('state: ' + state);
|
190
|
+
logger.info("J1 Navigator initialized successfully");
|
191
|
+
});
|
192
|
+
|
193
|
+
/*
|
194
|
+
// jadams, 2017-10-18: Unclear if workaround is needed.
|
195
|
+
// For oversized menu bar, overflow set to hidden is set
|
196
|
+
// as a dynamic style - see setCss below
|
197
|
+
//
|
198
|
+
// jadams: WORKAROUND - Change width of the NavBar (to window size) if needed
|
199
|
+
*/
|
200
|
+
/*
|
201
|
+
$(window).on("resize", function(){
|
202
|
+
var navID = "#navigator_nav";
|
203
|
+
var getWindow = $(window).width();
|
204
|
+
var getNavWidth = $( navID ).width();
|
205
|
+
var diff = getNavWidth - getWindow;
|
206
|
+
|
207
|
+
if ( diff ) {
|
208
|
+
// change width of the NavBar ( to window width)
|
209
|
+
$( navID ).width(getWindow);
|
210
|
+
var logText = "NavBar ID #j1_main_nav resized to: " +getNavWidth+ " (" +getWindow+ ")";
|
211
|
+
//logger.debug(logText);
|
212
|
+
logger.info(logText);
|
213
|
+
}
|
214
|
+
});
|
215
|
+
*/
|
216
|
+
|
217
|
+
// Reset on resize
|
218
|
+
$(window).on("resize", function(){
|
219
|
+
|
220
|
+
j1nav.manageDropdownMenu();
|
221
|
+
|
222
|
+
$(".top-search").slideUp();
|
223
|
+
setTimeout(function(){
|
224
|
+
j1nav.navbarSticky();
|
225
|
+
}, 500);
|
226
|
+
|
227
|
+
// Toggle Bars
|
228
|
+
//$(".navbar-toggle").each(function(){
|
229
|
+
$('button.navigator.navbar-toggler').each(function(){
|
230
|
+
//$('button.navigator.navbar-toggler.animated').removeClass('rotateIn');
|
231
|
+
//$('button.navigator.navbar-toggler.animated').addClass('fadeIn')
|
232
|
+
$(".mdi", this).removeClass("mdi-close");
|
233
|
+
$(".mdi", this).addClass("mdi-menu");
|
234
|
+
$(this).removeClass("fixed");
|
235
|
+
});
|
236
|
+
$(".navbar-collapse").removeClass("in");
|
237
|
+
$(".navbar-collapse").removeClass("on");
|
238
|
+
$(".navbar-collapse").removeClass("bounceIn");
|
239
|
+
});
|
240
|
+
}, // end init
|
241
|
+
|
242
|
+
// -------------------------------------------------------------------------
|
243
|
+
// load the Menu bar
|
244
|
+
// -------------------------------------------------------------------------
|
245
|
+
loadMenuBar: function ( navMenuOptions ) {
|
246
|
+
//logger = log4javascript.getLogger("j1.Navigator.loadMenuBar");
|
247
|
+
|
248
|
+
// closure to pass additional data (e.g. div #id)
|
249
|
+
// to AJAX load callback (id)
|
250
|
+
// See: http://stackoverflow.com/questions/939032/jquery-pass-more-parameters-into-callback
|
251
|
+
var cb_load_closure = function(id, navMenuOptions) {
|
252
|
+
return function ( responseTxt, statusTxt, xhr ) {
|
253
|
+
if ( statusTxt == "success" ) {
|
254
|
+
j1nav.initialize( navMenuOptions );
|
255
|
+
var logText = "MenuBar on ID " +id+ " loaded successfully"
|
256
|
+
logger.info(logText);
|
257
|
+
|
258
|
+
// Initialize theme selectors for J1Theme Switcher
|
259
|
+
$('#ThemeList').bootstrapThemeSwitcher({localFeed: ''}); // Load from Bootswatch API
|
260
|
+
$('#ThemeSelect').bootstrapThemeSwitcher(); // Load from localFeed
|
261
|
+
var logText = "ThemeSwitcher Feeds on ID " +id+ " loaded successfully"
|
262
|
+
logger.info(logText);
|
263
|
+
//j1.Navigator.delayMenushow();
|
264
|
+
}
|
265
|
+
if ( statusTxt == "error" ) {
|
266
|
+
state = 'failed';
|
267
|
+
logger.error('state: ' + state);
|
268
|
+
var logText = "MenuBar on ID " +id+ " loading failed. Error: " + xhr.status + ": " + xhr.statusText;
|
269
|
+
logger.error(logText);
|
270
|
+
}
|
271
|
+
};
|
272
|
+
};
|
273
|
+
|
274
|
+
var id = "#" + nav_menu_id;
|
275
|
+
var selector = $(id);
|
276
|
+
if ( selector.length ) {
|
277
|
+
var menu_data_path = nav_menu_data_path + " " + id + " > *";
|
278
|
+
|
279
|
+
// Set the return URL (user by news pager) for the News Banner
|
280
|
+
selector.load( menu_data_path, cb_load_closure( id, navMenuOptions ) );
|
281
|
+
}
|
282
|
+
|
283
|
+
}, // end loadMenuBar
|
284
|
+
|
285
|
+
// -------------------------------------------------------------------------
|
286
|
+
// load the Modals used by J1AuthClient
|
287
|
+
// -------------------------------------------------------------------------
|
288
|
+
loadAuthClientModals: function ( authClientOptions, authClientProvider ) {
|
289
|
+
//logger = log4javascript.getLogger("j1.Navigator.loadAuthClientModals");
|
290
|
+
|
291
|
+
// closure to pass additional data (e.g. div #id)
|
292
|
+
// to AJAX load callback (id)
|
293
|
+
// See: http://stackoverflow.com/questions/939032/jquery-pass-more-parameters-into-callback
|
294
|
+
var cb_load_closure = function(id, authClientOptions) {
|
295
|
+
return function ( responseTxt, statusTxt, xhr ) {
|
296
|
+
if ( statusTxt == "success" ) {
|
297
|
+
//j1nav.initialize( authClientOptions );
|
298
|
+
var logText = "Modals on ID " +id+ " loaded successfully"
|
299
|
+
|
300
|
+
j1.Navigator.initAuthClient( authClientProvider );
|
301
|
+
|
302
|
+
logger.info(logText);
|
303
|
+
// Set|Log status
|
304
|
+
state = 'finished';
|
305
|
+
logger.info('state: ' + state);
|
306
|
+
}
|
307
|
+
if ( statusTxt == "error" ) {
|
308
|
+
state = 'failed';
|
309
|
+
logger.error('state: ' + state);
|
310
|
+
var logText = "Modals on ID " +id+ " loading failed. Error: " + xhr.status + ": " + xhr.statusText;
|
311
|
+
logger.error(logText);
|
312
|
+
}
|
313
|
+
};
|
314
|
+
};
|
315
|
+
|
316
|
+
var id = "#" + authclient_modals_id;
|
317
|
+
var selector = $(id);
|
318
|
+
if ( selector.length ) {
|
319
|
+
var modals_data_path = authclient_modals_data_path + " > *";
|
320
|
+
|
321
|
+
// Set the return URL (user by news pager) for the News Banner
|
322
|
+
selector.load( modals_data_path, cb_load_closure( id, authClientOptions ) );
|
323
|
+
}
|
324
|
+
|
325
|
+
}, // end loadAuthClientModals
|
326
|
+
|
327
|
+
// -------------------------------------------------------------------------
|
328
|
+
// Initialize JS portion for the dialogs (modals) used by J1AuthClient
|
329
|
+
// -------------------------------------------------------------------------
|
330
|
+
initAuthClient: function( authClientOptions ) {
|
331
|
+
|
332
|
+
var logger;
|
333
|
+
var logText;
|
334
|
+
var route;
|
335
|
+
var provider = 'unknown';
|
336
|
+
var allowed_users = 'unknown';
|
337
|
+
var web_session_data = j1.getWebSessionCookie();
|
338
|
+
|
339
|
+
var signIn = {
|
340
|
+
provider: authClientOptions["activated"][0],
|
341
|
+
user: authClientOptions[authClientOptions["activated"][0]]["users"],
|
342
|
+
do: false
|
343
|
+
}
|
344
|
+
|
345
|
+
var signOut = {
|
346
|
+
provider: authClientOptions["activated"][0],
|
347
|
+
providerSignOut: false,
|
348
|
+
do: false
|
349
|
+
}
|
350
|
+
|
351
|
+
// Set|Log status
|
352
|
+
logger = log4javascript.getLogger('j1.AuthClient');
|
353
|
+
state = 'initialize';
|
354
|
+
logger.info('state: ' + state);
|
355
|
+
|
356
|
+
$('ul.nav-pills > li').click(function (e) {
|
357
|
+
e.preventDefault();
|
358
|
+
signIn.provider = $(this).text().trim();
|
359
|
+
signIn.provider = signIn.provider.toLowerCase();
|
360
|
+
signIn.allowed_users = signIn.user[signIn.provider];
|
361
|
+
});
|
362
|
+
|
363
|
+
$("a.btn").click(function() {
|
364
|
+
if (this.id === "signInButton") {
|
365
|
+
signIn.do = true;
|
366
|
+
} else {
|
367
|
+
signIn.do = false;
|
368
|
+
}
|
369
|
+
if (this.id === "signOutButton") {
|
370
|
+
signOut.do = true;
|
371
|
+
} else {
|
372
|
+
signOut.do = false;
|
373
|
+
}
|
374
|
+
});
|
375
|
+
|
376
|
+
$('input:checkbox[name="providerSignOut"]').on('click', function (e) {
|
377
|
+
e.stopPropagation();
|
378
|
+
signOut.providerSignOut = $('input:checkbox[name="providerSignOut"]').is(":checked");
|
379
|
+
if( environment == "development" ) {
|
380
|
+
logText = "Provider signout set to: " +signOut.providerSignOut;
|
381
|
+
logger.info( logText );
|
382
|
+
}
|
383
|
+
});
|
384
|
+
|
385
|
+
$("#modalOmniSignIn").on('hidden.bs.modal', function() {
|
386
|
+
if (signIn.do == true) {
|
387
|
+
provider = signIn.provider.toLowerCase();
|
388
|
+
allowed_users = signIn.allowed_users;
|
389
|
+
logText = 'Provider detected: ' + provider;
|
390
|
+
logger.info(logText);
|
391
|
+
var route = '/authentication?request=signin&provider=' +provider+ '&allowed_users=' +allowed_users;
|
392
|
+
logText = 'Call middleware for route ' +route+ ' for signin';
|
393
|
+
logger.info(logText);
|
394
|
+
window.location.href = route;
|
395
|
+
} else {
|
396
|
+
provider = signIn.provider.toLowerCase();
|
397
|
+
logText = 'Provider detected: ' + provider;
|
398
|
+
logger.info(logText);
|
399
|
+
logText = 'Login for ' +provider+ " declined";
|
400
|
+
logger.info(logText);
|
401
|
+
}
|
402
|
+
}); // end modalOmniSignIn
|
403
|
+
|
404
|
+
$("#modalOmniSignOut").on('show.bs.modal', function() {
|
405
|
+
var modal = $(this);
|
406
|
+
logger.info('Place current user data');
|
407
|
+
var j1_user_state = j1.getUserStateCookie();
|
408
|
+
modal.find('.user-info').text('You are signed in to provider: ' + j1_user_state.provider);
|
409
|
+
}); // end SHOW modalOmniSignOut
|
410
|
+
|
411
|
+
$("#modalOmniSignOut").on('hidden.bs.modal', function() {
|
412
|
+
if (signOut.do == true) {
|
413
|
+
logger.info('Load active provider from cookie: UserState');
|
414
|
+
var j1_user_state = j1.getUserStateCookie();
|
415
|
+
provider = j1_user_state.provider;
|
416
|
+
// provider_url = providerUrls[provider];
|
417
|
+
logText = 'Provider detected: ' + provider;
|
418
|
+
logger.info(logText);
|
419
|
+
logText = 'SignIn for ' +provider+ ' accepted';
|
420
|
+
logger.info(logText);
|
421
|
+
// var route = '/authentication?request=signout&provider=' + provider + '&provider_signout=' + signOut.providerSignOut + '&provider_url=' + provider_url;
|
422
|
+
var route = '/authentication?request=signout&provider=' + provider + '&provider_signout=' + signOut.providerSignOut;
|
423
|
+
logText = 'Call middleware for route ' +route+ ' for signout';
|
424
|
+
logger.info(logText);
|
425
|
+
window.location.href = route;
|
426
|
+
} else {
|
427
|
+
provider = signOut.provider.toLowerCase();
|
428
|
+
logText = 'Provider detected: ' + provider;
|
429
|
+
logger.info(logText);
|
430
|
+
logText = 'SignOut for ' +provider+ " declined";
|
431
|
+
logger.info(logText);
|
432
|
+
}
|
433
|
+
}); // end modalSignOut
|
434
|
+
|
435
|
+
if ( web_session_data != null ) {
|
436
|
+
// Toggle/Set SignIn/SignOut icon|link in QuickLinks
|
437
|
+
// See: https://stackoverflow.com/questions/13524107/how-to-set-data-attributes-in-html-elements
|
438
|
+
if ( web_session_data.authenticated == 'true') {
|
439
|
+
var modal_target = $('#navLinkSignInOut').data('target');
|
440
|
+
var iconSignInOutClasses = $('#iconSignInOut').attr('class').split(/\s+/);
|
441
|
+
// Set SignOut
|
442
|
+
$('#navLinkSignInOut').attr("data-target","#modalOmniSignOut");
|
443
|
+
$('#iconSignInOut').removeClass( "mdi-login" ).addClass( "mdi-logout" );
|
444
|
+
// Show User Info with SideBar
|
445
|
+
$("#user-info").css({ display: "block" });
|
446
|
+
} else {
|
447
|
+
var modal_target = $('#navLinkSignInOut').data('target');
|
448
|
+
var iconSignInOutClasses = $('#iconSignInOut').attr('class').split(/\s+/);
|
449
|
+
// Set SignIn
|
450
|
+
$('#navLinkSignInOut').attr("data-target","#modalOmniSignIn");
|
451
|
+
$('#iconSignInOut').removeClass( "mdi-logout" ).addClass( "mdi-login" );
|
452
|
+
// Hide User Info from SideBar
|
453
|
+
$("#user-info").css({ display: "none" });
|
454
|
+
}
|
455
|
+
var session_json_data = JSON.stringify( web_session_data );
|
456
|
+
// jadams: confusion about last_page vs. requested_page
|
457
|
+
web_session_data.requested_page = window.location.pathname;
|
458
|
+
j1.setWebSessionCookie( web_session_data );
|
459
|
+
web_session_data = j1.getWebSessionCookie();
|
460
|
+
session_json_data = JSON.stringify( web_session_data );
|
461
|
+
logger.info( 'Session data: ' + session_json_data );
|
462
|
+
logger.info( 'Last page: ' + web_session_data.last_page );
|
463
|
+
} else {
|
464
|
+
// Hide SignIn button from QuickLinks
|
465
|
+
$("#quickLinksSignInOutButton").css({ display: "none" });
|
466
|
+
// Hide SignIn menu from MenuBar
|
467
|
+
$("#menuBarSignInOut").css({ display: "none" });
|
468
|
+
// Hide User Info from SideBar
|
469
|
+
$("#user-info").css({ display: "none" });
|
470
|
+
}
|
471
|
+
// Replace MACROs THEME Info
|
472
|
+
var j1_user_state = j1.getUserStateCookie();
|
473
|
+
var themeName = j1_user_state.theme_name;
|
474
|
+
$("#macro-theme-name").each(function() {
|
475
|
+
var $this = $(this);
|
476
|
+
var html = $this.html();
|
477
|
+
$(this).html(html.replace('??theme-name', themeName));
|
478
|
+
//console.log(html)
|
479
|
+
});
|
480
|
+
// Replace MACROs USER Info
|
481
|
+
var user;
|
482
|
+
var state;
|
483
|
+
var provider;
|
484
|
+
var provider_url;
|
485
|
+
var permissions;
|
486
|
+
var membership;
|
487
|
+
var membership_url;
|
488
|
+
|
489
|
+
if ( web_session_data.authenticated == 'true') {
|
490
|
+
// Call middleware info endpoint to return current user state
|
491
|
+
function load_user_details() {
|
492
|
+
return $.ajax({
|
493
|
+
url: '/status',
|
494
|
+
success: function (data) {
|
495
|
+
if (typeof data == 'string') {
|
496
|
+
JSON.parse(data)
|
497
|
+
}
|
498
|
+
if (typeof data == 'object') {
|
499
|
+
data
|
500
|
+
}
|
501
|
+
}
|
502
|
+
})
|
503
|
+
};
|
504
|
+
// Add|Place data when collected
|
505
|
+
$.when( load_user_details() ).done (
|
506
|
+
function( response ) {
|
507
|
+
var $this;
|
508
|
+
var html;
|
509
|
+
|
510
|
+
var json_data = JSON.stringify(response);
|
511
|
+
var user_state = JSON.parse(json_data);
|
512
|
+
|
513
|
+
user = user_state.user_name;
|
514
|
+
state = user_state.status;
|
515
|
+
provider = user_state.provider;
|
516
|
+
provider_url = user_state.provider_site_url;
|
517
|
+
permissions = user_state.provider_permissions;
|
518
|
+
membership = user_state.provider_membership;
|
519
|
+
membership_url = user_state.provider_member_url;
|
520
|
+
|
521
|
+
/*
|
522
|
+
See: https://stackoverflow.com/questions/5376431/wildcards-in-jquery-selectors
|
523
|
+
See: https://stackoverflow.com/questions/16400072/jquery-each-only-affects-last-element
|
524
|
+
See: https://dzone.com/articles/why-does-javascript-loop-only-use-last-value
|
525
|
+
*/
|
526
|
+
/*
|
527
|
+
$("[id^=macro-]").each(function() {
|
528
|
+
$this = $(this);
|
529
|
+
html = $this.html();
|
530
|
+
|
531
|
+
// $("#macro-provider-name").html(html.replace('??provider-name', provider));
|
532
|
+
|
533
|
+
$(this).html(html.replace('??provider-name', provider));
|
534
|
+
$(this).html(html.replace('??user-name', user));
|
535
|
+
$(this).html(html.replace('??user-state', state));
|
536
|
+
$(this).html(html.replace('??provider-permission', permissions));
|
537
|
+
$(this).html(html.replace('??provider-membership', membership));
|
538
|
+
//$(this).attr("href", provider_url);
|
539
|
+
//$(this).attr("href", membership_url);
|
540
|
+
|
541
|
+
console.log(html)
|
542
|
+
});
|
543
|
+
*/
|
544
|
+
$("#macro-provider-name").each(function() {
|
545
|
+
var $this = $(this);
|
546
|
+
var html = $this.html();
|
547
|
+
$(this).html(html.replace('??provider-name', provider));
|
548
|
+
$(this).attr("href", provider_url);
|
549
|
+
//console.log(html)
|
550
|
+
});
|
551
|
+
|
552
|
+
$("#macro-user-name").each(function() {
|
553
|
+
var $this = $(this);
|
554
|
+
var html = $this.html();
|
555
|
+
$(this).html(html.replace('??user-name', user));
|
556
|
+
//console.log(html)
|
557
|
+
});
|
558
|
+
|
559
|
+
$("#macro-user-state").each(function() {
|
560
|
+
var $this = $(this);
|
561
|
+
var html = $this.html();
|
562
|
+
$(this).html(html.replace('??user-state', state));
|
563
|
+
//console.log(html)
|
564
|
+
});
|
565
|
+
|
566
|
+
$("#macro-provider-permissions").each(function() {
|
567
|
+
var $this = $(this);
|
568
|
+
var html = $this.html();
|
569
|
+
$(this).html(html.replace('??provider-permissions', permissions));
|
570
|
+
//console.log(html)
|
571
|
+
});
|
572
|
+
|
573
|
+
$("#macro-provider-membership").each(function() {
|
574
|
+
var $this = $(this);
|
575
|
+
var html = $this.html();
|
576
|
+
$(this).html(html.replace('??provider-membership', membership));
|
577
|
+
$(this).attr("href", membership_url);
|
578
|
+
//console.log(html)
|
579
|
+
});
|
580
|
+
}); // end load_user_details
|
581
|
+
} // End if existsCookie j1.app.session
|
582
|
+
state = 'initialized';
|
583
|
+
logger.info('state: ' + state); // Set|Log status
|
584
|
+
}, // end initAuthClient
|
585
|
+
|
586
|
+
// -------------------------------------------------------------------------
|
587
|
+
// Initialize JS portion for the dialogs (modals) used by J1AuthClient
|
588
|
+
// -------------------------------------------------------------------------
|
589
|
+
toggleAuthClient : function() {
|
590
|
+
|
591
|
+
// code for toggle the AuthClient SignIn|SignOut
|
592
|
+
|
593
|
+
}, // end toggleAuthClient
|
594
|
+
|
595
|
+
// -------------------------------------------------------------------------
|
596
|
+
// Set dynamic CSS styles
|
597
|
+
// -------------------------------------------------------------------------
|
598
|
+
setCss: function ( navBarOptions, navMenuOptions, navQuicklinksOptions, navTopsearchOptions, navSidebarOptions ) {
|
599
|
+
|
600
|
+
// BS4 media breakpoints
|
601
|
+
var gridBreakpoint_lg = '992px';
|
602
|
+
var gridBreakpoint_md = '768px';
|
603
|
+
var gridBreakpoint_sm = '576px';
|
604
|
+
|
605
|
+
{% comment %} Resolve symbolic font sizes
|
606
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
607
|
+
|
608
|
+
{% comment %} Set|Resolve navMenuOptions
|
609
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
610
|
+
if ( typeof j1_font_sizes[navMenuOptions.dropdown_font_size] != "undefined" ) { navMenuOptions.dropdown_font_size = j1_font_sizes[navMenuOptions.dropdown_font_size] }
|
611
|
+
if ( typeof j1_font_sizes[navMenuOptions.megamenu_font_size] != "undefined" ) { navMenuOptions.megamenu_font_size = j1_font_sizes[navMenuOptions.megamenu_font_size] }
|
612
|
+
|
613
|
+
|
614
|
+
{% comment %} Resolve symbolic color names
|
615
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
616
|
+
|
617
|
+
{% comment %} Set|Resolve navBarOptions
|
618
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
619
|
+
if ( typeof j1_colors[navBarOptions.background_color_full] != "undefined" ) { navBarOptions.background_color_full = j1_colors[navBarOptions.background_color_full] }
|
620
|
+
if ( typeof j1_colors[navBarOptions.background_color_collapsed] != "undefined" ) { navBarOptions.background_color_collapsed = j1_colors[navBarOptions.background_color_collapsed] }
|
621
|
+
if ( typeof j1_colors[navBarOptions.background_color_scrolled] != "undefined" ) { navBarOptions.background_color_scrolled = j1_colors[navBarOptions.background_color_scrolled] }
|
622
|
+
|
623
|
+
{% comment %} Set|Resolve navMenuOptions
|
624
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
625
|
+
if ( typeof j1_colors[navMenuOptions.menu_item_color] != "undefined" ) { navMenuOptions.menu_item_color = j1_colors[navMenuOptions.menu_item_color] }
|
626
|
+
if ( typeof j1_colors[navMenuOptions.menu_item_color_hover] != "undefined" ) { navMenuOptions.menu_item_color_hover = j1_colors[navMenuOptions.menu_item_color_hover] }
|
627
|
+
if ( typeof j1_colors[navMenuOptions.menu_item_dropdown_color] != "undefined" ) { navMenuOptions.menu_item_dropdown_color = j1_colors[navMenuOptions.menu_item_dropdown_color] }
|
628
|
+
if ( typeof j1_colors[navMenuOptions.dropdown_item_color] != "undefined" ) { navMenuOptions.dropdown_item_color = j1_colors[navMenuOptions.dropdown_item_color] }
|
629
|
+
if ( typeof j1_colors[navMenuOptions.dropdown_background_color_hover] != "undefined" ) { navMenuOptions.dropdown_background_color_hover = j1_colors[navMenuOptions.dropdown_background_color_hover] }
|
630
|
+
if ( typeof j1_colors[navMenuOptions.dropdown_background_color_active] != "undefined" ) { navMenuOptions.dropdown_background_color_active = j1_colors[navMenuOptions.dropdown_background_color_active] }
|
631
|
+
if ( typeof j1_colors[navMenuOptions.dropdown_border_color] != "undefined" ) { navMenuOptions.dropdown_border_color = j1_colors[navMenuOptions.dropdown_border_color] }
|
632
|
+
|
633
|
+
{% comment %} Set|Resolve navQuicklinksOptions
|
634
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
635
|
+
if ( typeof j1_colors[navQuicklinksOptions.icon_color] != "undefined" ) { navQuicklinksOptions.icon_color = j1_colors[navQuicklinksOptions.icon_color] }
|
636
|
+
if ( typeof j1_colors[navQuicklinksOptions.icon_color_hover] != "undefined" ) { navQuicklinksOptions.icon_color_hover = j1_colors[navQuicklinksOptions.icon_color_hover] }
|
637
|
+
if ( typeof j1_colors[navQuicklinksOptions.background_color] != "undefined" ) { navQuicklinksOptions.background_color = j1_colors[navQuicklinksOptions.background_color] }
|
638
|
+
|
639
|
+
{% comment %} Set|Resolve navTopsearchOptions
|
640
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
641
|
+
if ( typeof j1_colors[navTopsearchOptions.input_color] != "undefined" ) { navTopsearchOptions.input_color = j1_colors[navTopsearchOptions.input_color] }
|
642
|
+
if ( typeof j1_colors[navTopsearchOptions.background_color] != "undefined" ) { navTopsearchOptions.background_color = j1_colors[navTopsearchOptions.background_color] }
|
643
|
+
|
644
|
+
{% comment %} Set|Resolve navSidebarOptions
|
645
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
646
|
+
if ( typeof j1_colors[navSidebarOptions.background_color] != "undefined" ) { navSidebarOptions.background_color = j1_colors[navSidebarOptions.background_color] }
|
647
|
+
|
648
|
+
{% comment %} Set dymanic styles
|
649
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
650
|
+
|
651
|
+
{% comment %} navBar styles
|
652
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
653
|
+
// Size of brand image
|
654
|
+
$('head').append("<style>.navbar-brand > img { height: {{brand_image_height}}px !important; }</style>");
|
655
|
+
// Navbar transparent-light (light)
|
656
|
+
$('head').append("<style>@media (min-width: " +gridBreakpoint_lg+ " ) { nav.navbar.navigator.navbar-transparent.light { background-color: " +navBarOptions.background_color_full+ "; border-bottom: solid 0px !important; } }</style>");
|
657
|
+
$('head').append("<style>@media (min-width: " +gridBreakpoint_lg+ " ) { nav.navbar.navigator.navbar-scrolled.light { background-color: " +navBarOptions.background_color_scrolled+ "; } }</style>");
|
658
|
+
|
659
|
+
/* Navbar media-queries, LARGE Window|Desktop (>= 1024) */
|
660
|
+
/* jadams: Oversized menu bar fixed by: overflow: hidden */
|
661
|
+
$('head').append("<style>@media (max-width: " +gridBreakpoint_lg+ " ) { nav.navbar.navigator { background-color: " +navBarOptions.background_color_collapsed+ "; overflow: hidden; } }</style>");
|
662
|
+
//$('head').append("<style>@media (max-width: 1023px) { row { margin-left: 0 !important; margin-right: 0 !important; } }</style>");
|
663
|
+
|
664
|
+
{% comment %} navQuicklinks styles
|
665
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
666
|
+
$('head').append("<style>.attr-nav> ul > li > a { color: " +navQuicklinksOptions.icon_color+ " !important; }</style>");
|
667
|
+
$('head').append("<style>.attr-nav> ul > li > a:hover { color: " +navQuicklinksOptions.icon_color_hover+ " !important; }</style>");
|
668
|
+
|
669
|
+
{% comment %} navMenu styles
|
670
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
671
|
+
|
672
|
+
// TODO: Check if this style is needed for MENU item (hover)
|
673
|
+
//$('head').append("<style>nav.navbar.navbar-transparent ul.nav > li > a:hover,nav.navbar.no-background ul.nav > li > a:hover,nav.navbar ul.nav li.scroll.active > a,nav.navbar.navbar-dark ul.nav li.dropdown ul.dropdown-menu > li > a:hover,nav.navbar ul.nav li.dropdown.on > a,nav.navbar-dark ul.nav li.dropdown.on > a { color: " +navMenuOptions.menu_item_color_hover+ " !important; }</style>");
|
674
|
+
//
|
675
|
+
//$('head').append("<style>.dropdown-menu > .active > a { background-color: " +navMenuOptions.dropdown_background_color_active+ " !important; }</style>");
|
676
|
+
// Remove background for anchor
|
677
|
+
$('head').append("<style>.dropdown-menu > .active > a { background-color: transparent !important; }</style>");
|
678
|
+
// hover menu-item|menu-sub-item
|
679
|
+
$('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>");
|
680
|
+
// $('head').append("<style>@media (min-width: " +gridBreakpoint_lg+ " ) { nav.navbar.navigator li.dropdown ul.dropdown-menu > li a:hover { color: " +navMenuOptions.menu_item_color_hover+ " !important; background: " +navMenuOptions.dropdown_background_color_hover+ " !important; } }</style>");
|
681
|
+
|
682
|
+
// 1st dropdown, limit height
|
683
|
+
// TODO: overflow needs to be managed correctly (not static)
|
684
|
+
//$('head').append("<style>@media (min-width: " +gridBreakpoint_lg+ " ) { nav.navbar.navigator li.dropdown ul.dropdown-menu { max-height: " +navMenuOptions.dropdown_menu_height+ "em; overflow: hidden } }</style>");
|
685
|
+
|
686
|
+
// Limit dropdown item width
|
687
|
+
$('head').append("<style>@media (min-width: " +gridBreakpoint_lg+ " ) { nav.navbar.navigator ul.nav.navbar-right .dropdown-menu .dropdown-menu { left: -" +navMenuOptions.dropdown_item_width+ "em; } }</style>");
|
688
|
+
|
689
|
+
// Limit last (2nd) dropdown in height (nav.navbar.navigator li.dropdown ul.dropdown-menu ul.dropdown-menu)
|
690
|
+
$('head').append("<style>@media (min-width: " +gridBreakpoint_lg+ " ) { nav.navbar.navigator li.dropdown ul.dropdown-menu ul.dropdown-menu { top: -" +navMenuOptions.dropdown_border_height+ "px !important; max-height: " +navMenuOptions.dropdown_menu_height+ "em; } }</style>");
|
691
|
+
|
692
|
+
// Set dropdown item colors
|
693
|
+
$('head').append("<style>@media (min-width: " +gridBreakpoint_lg+ " ) { nav.navbar.navigator ul.nav > li > a { color: " +navMenuOptions.menu_item_color+ " !important; } }</style>");
|
694
|
+
$('head').append("<style>@media (min-width: " +gridBreakpoint_lg+ " ) { nav.navbar.navigator ul.nav > li > a:hover { color: " +navMenuOptions.menu_item_color_hover+ " !important; } }</style>");
|
695
|
+
|
696
|
+
// Dropdown menu styles
|
697
|
+
//$('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: " +navMenuOptions.dropdown_border_color+ "; width: " +navMenuOptions.dropdown_item_width+ "px; border-top: solid " +navMenuOptions.dropdown_border_height+ "px; left: 1rem; top: calc( 90px + " +navMenuOptions.dropdown_border_height+ "px ); } }</style>");
|
698
|
+
//$('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: " +navMenuOptions.dropdown_border_color+ "; width: " +navMenuOptions.dropdown_item_width+ "em; border-top: solid " +navMenuOptions.dropdown_border_height+ "px; left: 1em; } }</style>");
|
699
|
+
// jadams, 2017-11-30: removed left padding from dropdown mwenu (for new j1nav style based on Navigator|Slate)
|
700
|
+
$('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: " +navMenuOptions.dropdown_border_color+ "; width: " +navMenuOptions.dropdown_item_width+ "em; border-top: solid " +navMenuOptions.dropdown_border_height+ "px; left: 0; } }</style>");
|
701
|
+
|
702
|
+
{% if dropdown_style == 'raised' %}
|
703
|
+
$('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); } }</style>");
|
704
|
+
{% endif %}
|
705
|
+
|
706
|
+
// jadams,2017-11-22: stop configure dropdown_font_size
|
707
|
+
//$('head').append("<style>@media (min-width: " +gridBreakpoint_lg+ " ) { nav.navbar.navigator li.dropdown li.dropdown.nav-item.nav-sub-item { color: " +navMenuOptions.dropdown_item_color+ "; font-size: " +navMenuOptions.dropdown_font_size+ "; font-weight: 400; } }</style>");
|
708
|
+
// $('head').append("<style>@media (min-width: " +gridBreakpoint_lg+ " ) { nav.navbar.navigator li.dropdown ul.dropdown-menu > li > a { color: " +navMenuOptions.dropdown_item_color+ "; font-size: " +navMenuOptions.dropdown_font_size+ "; font-weight: 400; display: inline-flex; align-items: center;} }</style>");
|
709
|
+
$('head').append("<style>@media (min-width: " +gridBreakpoint_lg+ " ) { nav.navbar.navigator li.dropdown ul.dropdown-menu > li > a { color: " +navMenuOptions.dropdown_item_color+ "; font-size: " +navMenuOptions.dropdown_font_size+ "; font-weight: 400; } }</style>");
|
710
|
+
$('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+ "; font-size: " +navMenuOptions.megamenu_font_size+ "; font-weight: 400; } }</style>");
|
711
|
+
|
712
|
+
// dropdown-menu item padding
|
713
|
+
// jadams, 2017-11-22: moved item padding to nav|dropdown-item based on font-site (rel|em)
|
714
|
+
{% if dropdown_item_style == 'raised' %}
|
715
|
+
//$('head').append("<style>@media (min-width: " +gridBreakpoint_lg+ " ) { nav.navbar.navigator li.dropdown ul.dropdown-menu > li > a { padding: " +navMenuOptions.dropdown_padding_y+ "px " +navMenuOptions.dropdown_padding_x+ "px; 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); } }</style>");
|
716
|
+
{% else %}
|
717
|
+
//$('head').append("<style>@media (min-width: " +gridBreakpoint_lg+ " ) { nav.navbar.navigator li.dropdown ul.dropdown-menu > li > a { padding: " +navMenuOptions.dropdown_padding_y+ "px " +navMenuOptions.dropdown_padding_x+ "px; } }</style>");
|
718
|
+
// blödsinn $('head').append("<style>@media (min-width: " +gridBreakpoint_lg+ " ) { nav.navbar.navigator .dropdown .nav-item { padding-top: " +navMenuOptions.dropdown_item_padding+ "px; padding-bottom: " +navMenuOptions.dropdown_item_padding+ "px; } }</style>");
|
719
|
+
{% endif %}
|
720
|
+
|
721
|
+
{% comment %} navQuicklinks styles
|
722
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
723
|
+
|
724
|
+
{% comment %} navTopSearch Styles
|
725
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
726
|
+
$('head').append("<style>.top-search { background-color: " +navTopsearchOptions.background_color+ "; }</style>");
|
727
|
+
$('head').append("<style>.top-search .input-group-addon { color: " +navTopsearchOptions.input_color+ "; }</style>");
|
728
|
+
$('head').append("<style>.top-search .input.form-control { color: " +navTopsearchOptions.input_color+ "; }</style>");
|
729
|
+
|
730
|
+
{% comment %} navSidebar styles
|
731
|
+
-------------------------------------------------------------------------- {% endcomment %}
|
732
|
+
$('head').append("<style>.side { background-color: " +navSidebarOptions.background_color+ "; }</style>");
|
733
|
+
|
734
|
+
|
735
|
+
}, // end setCss
|
736
|
+
|
737
|
+
// -------------------------------------------------------------------------
|
738
|
+
// returns the current (processing) state of the module
|
739
|
+
// -------------------------------------------------------------------------
|
740
|
+
state: function () {
|
741
|
+
return state;
|
742
|
+
},
|
743
|
+
|
744
|
+
// -------------------------------------------------------------------------
|
745
|
+
// delay all dropdown menu to open for "delay" time
|
746
|
+
// http://jsfiddle.net/AndreasPizsa/NzvKC/
|
747
|
+
// -------------------------------------------------------------------------
|
748
|
+
delayMenushow: function () {
|
749
|
+
var theTimer = 0;
|
750
|
+
var theElement = null;
|
751
|
+
|
752
|
+
var logger = log4javascript.getLogger("j1.Navigator");
|
753
|
+
logText = "entered delayMenushow"
|
754
|
+
logger.info(logText);
|
755
|
+
|
756
|
+
$('#navigator_nav_menu')
|
757
|
+
.find('li.dropdown.nav-item')
|
758
|
+
.on('mouseenter', function (inEvent) {
|
759
|
+
theElement = $(this);
|
760
|
+
if (theElement) theElement.removeClass('open');
|
761
|
+
//if (theElement) theElement.css("display", "none");
|
762
|
+
//window.clearTimeout(theTimer);
|
763
|
+
|
764
|
+
//theTimer = window.setTimeout(function () {
|
765
|
+
setTimeout(function () {
|
766
|
+
theElement.addClass('open');
|
767
|
+
//theElement.css("display", "block");
|
768
|
+
//window.clearTimeout(theTimer);
|
769
|
+
}, {{menuOpenDelay}});
|
770
|
+
})
|
771
|
+
.on('mousemove', function (inEvent) {
|
772
|
+
if (theElement.hasClass('open')) return;
|
773
|
+
//window.clearTimeout(theTimer);
|
774
|
+
//theTimer = window.setTimeout(function () {
|
775
|
+
setTimeout(function () {
|
776
|
+
theElement.addClass('open');
|
777
|
+
//window.clearTimeout(theTimer);
|
778
|
+
}, {{menuOpenDelay}});
|
779
|
+
})
|
780
|
+
.on('mouseleave', function (inEvent) {
|
781
|
+
//window.clearTimeout(theTimer);
|
782
|
+
theElement = $(this);
|
783
|
+
//theTimer = window.setTimeout(function () {
|
784
|
+
setTimeout(function () {
|
785
|
+
theElement.removeClass('open');
|
786
|
+
//window.clearTimeout(theTimer);
|
787
|
+
}, {{menuOpenDelay}});
|
788
|
+
});
|
789
|
+
} // end delayMenushow
|
790
|
+
}; // end return
|
791
|
+
|
792
|
+
})(j1, window);
|
793
|
+
|
794
|
+
{% endcapture %}
|
795
|
+
|
796
|
+
{{ cache | strip_empty_lines }}
|
797
|
+
{% assign cache = nil %}
|