j1-template 2023.0.7 → 2023.0.9
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/procedures/layouts/module_writer.proc +1 -1
- data/_includes/themes/j1/procedures/posts/collate_timeline.proc +1 -1
- data/assets/data/banner.html +2 -2
- data/assets/data/panel.html +4 -4
- data/assets/error_pages/HTTP204.html +23 -4
- data/assets/error_pages/HTTP400.html +2 -2
- data/assets/error_pages/HTTP401.html +2 -2
- data/assets/error_pages/HTTP403.html +2 -2
- data/assets/error_pages/HTTP404.html +2 -2
- data/assets/error_pages/HTTP444.html +2 -2
- data/assets/error_pages/HTTP445.html +2 -2
- data/assets/error_pages/HTTP446.html +2 -2
- data/assets/error_pages/HTTP447.html +2 -2
- data/assets/error_pages/HTTP448.html +2 -2
- data/assets/error_pages/HTTP500.html +2 -2
- data/assets/error_pages/HTTP501.html +2 -2
- data/assets/error_pages/HTTP502.html +2 -2
- data/assets/error_pages/HTTP503.html +2 -2
- data/assets/themes/j1/adapter/js/attic.js +36 -4
- data/assets/themes/j1/adapter/js/j1.js +293 -253
- data/assets/themes/j1/adapter/js/masterslider.js +16 -15
- data/assets/themes/j1/adapter/js/scroller.js +11 -4
- data/assets/themes/j1/adapter/js/themer.js +5 -1
- data/assets/themes/j1/adapter/js/waves.js +15 -6
- data/assets/themes/j1/core/css/themes/unodark/bootstrap.css +75 -3
- data/assets/themes/j1/core/css/themes/unodark/bootstrap.min.css +1 -1
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +55 -8
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +2 -2
- data/lib/j1/version.rb +1 -1
- data/lib/starter_web/Gemfile +1 -1
- data/lib/starter_web/README.md +5 -5
- data/lib/starter_web/_config.yml +3 -3
- data/lib/starter_web/_data/blocks/panel.yml +9 -9
- data/lib/starter_web/_data/j1_config.yml +10 -2
- data/lib/starter_web/_data/layouts/home.yml +1 -1
- data/lib/starter_web/_data/modules/attics.yml +17 -14
- data/lib/starter_web/_data/modules/defaults/attics.yml +18 -11
- data/lib/starter_web/_data/modules/defaults/blog_navigator.yml +44 -44
- data/lib/starter_web/_data/modules/defaults/navigator.yml +2 -0
- data/lib/starter_web/_data/modules/defaults/waves.yml +1 -1
- data/lib/starter_web/_data/resources.yml +145 -146
- data/lib/starter_web/_data/templates/feed.xml +1 -1
- data/lib/starter_web/_plugins/index/lunr.rb +1 -1
- data/lib/starter_web/assets/images/modules/attics/1920x1280/clem-onojeghuo.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/themes-1920x1280-bw.jpg +0 -0
- data/lib/starter_web/package.json +1 -1
- data/lib/starter_web/pages/public/blog/navigator/archive/allview.html +1 -1
- data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +1 -1
- data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +1 -1
- data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +1 -1
- data/lib/starter_web/pages/public/blog/navigator/index.html +1 -1
- data/lib/starter_web/pages/public/learn/roundtrip/present_images.adoc +7 -0
- data/lib/starter_web/pages/public/previewer/preview_bootstrap_theme.adoc +5 -6
- data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
- data/lib/starter_web/utilsrv/package.json +1 -1
- metadata +4 -2
@@ -162,6 +162,11 @@ var j1 = (function (options) {
|
|
162
162
|
var checkCookies = {{cookie_options.checkCookies}};
|
163
163
|
var expireCookiesOnRequiredOnly = ('{{cookie_options.expireCookiesOnRequiredOnly}}' === 'true') ? true: false;
|
164
164
|
|
165
|
+
// animation on page load
|
166
|
+
var bodyAnimation = ('{{template_config.body.animation}}' === 'true') ? true: false;
|
167
|
+
var bodyAnimationType = '{{template_config.body.animation_type}}';
|
168
|
+
var bodyAnimationDuration = '{{template_config.body.animation_duration}}';
|
169
|
+
|
165
170
|
// defaults for dynamic pages
|
166
171
|
var timeoutScrollDynamicPages = '{{template_config.timeoutScrollDynamicPages}}';
|
167
172
|
var scrollDynamicPagesTopOnChange = '{{template_config.scrollDynamicPagesTopOnChange}}';
|
@@ -171,8 +176,8 @@ var j1 = (function (options) {
|
|
171
176
|
var pageHeight;
|
172
177
|
var pageBaseHeight; // height of a page dynamic detected in ResizeObserver
|
173
178
|
|
174
|
-
var growthRatio =
|
175
|
-
var previousGrowthRatio =
|
179
|
+
var growthRatio = 0.00;
|
180
|
+
var previousGrowthRatio = 0.00;
|
176
181
|
var previousPageHeight;
|
177
182
|
var documentHeight;
|
178
183
|
|
@@ -388,7 +393,12 @@ var j1 = (function (options) {
|
|
388
393
|
}
|
389
394
|
}
|
390
395
|
|
391
|
-
|
396
|
+
var dependencies_met_page_loaded = setInterval (function () {
|
397
|
+
if (j1.getState() == 'finished') {
|
398
|
+
j1.registerEvents(logger);
|
399
|
+
}
|
400
|
+
clearInterval(dependencies_met_page_loaded);
|
401
|
+
}, 25); // END dependencies_met_page_loaded
|
392
402
|
|
393
403
|
// detect middleware (mode 'app') and update user session cookie
|
394
404
|
// -----------------------------------------------------------------------
|
@@ -547,15 +557,14 @@ var j1 = (function (options) {
|
|
547
557
|
// -----------------------------------------------------------------------
|
548
558
|
// additional BS helpers from j1.core
|
549
559
|
// -----------------------------------------------------------------------
|
560
|
+
|
550
561
|
j1.core.bsFormClearButton();
|
551
562
|
|
552
563
|
// finalize and display current page
|
553
564
|
j1.displayPage();
|
554
565
|
|
555
566
|
// scroll to an anchor in current page if given in URL
|
556
|
-
|
557
|
-
j1.scrollToAnchor();
|
558
|
-
}, timeoutScrollDynamicPages);
|
567
|
+
j1.scrollToAnchor();
|
559
568
|
},
|
560
569
|
|
561
570
|
// -------------------------------------------------------------------------
|
@@ -921,119 +930,28 @@ var j1 = (function (options) {
|
|
921
930
|
}
|
922
931
|
}
|
923
932
|
|
924
|
-
//
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
930
|
-
|
931
|
-
|
932
|
-
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
-
|
937
|
-
|
938
|
-
|
939
|
-
|
940
|
-
|
941
|
-
|
942
|
-
|
943
|
-
// manage Dropcaps if translation is enabled|disabled
|
944
|
-
// -----------------------------------------------------------------
|
945
|
-
if (user_translate.translationEnabled) {
|
946
|
-
logger.info('\n' + 'translation enabled: ' + user_translate.translationEnabled);
|
947
|
-
logger.debug('\n' + 'skipped processing of dropcaps');
|
948
|
-
} else {
|
949
|
-
// initialize dropcaps
|
950
|
-
logger.info('\n' + 'post processing: createDropCap');
|
951
|
-
j1.core.createDropCap();
|
952
|
-
}
|
953
|
-
|
954
|
-
// TODO: should MOVED to Cookiebar ???
|
955
|
-
// show|hide cookie icon
|
956
|
-
if (j1.existsCookie(cookie_names.user_consent)) {
|
957
|
-
// Display cookie icon
|
958
|
-
logText = '\n' + 'show cookie icon';
|
959
|
-
logger.info(logText);
|
960
|
-
$('#quickLinksCookieButton').css('display', 'block');
|
961
|
-
} else {
|
962
|
-
logText = '\n' + 'hide cookie icon';
|
963
|
-
logger.info(logText);
|
964
|
-
// Display cookie icon
|
965
|
-
$('#quickLinksCookieButton').css('display', 'none');
|
966
|
-
}
|
967
|
-
|
968
|
-
// TODO: should MOVED to ControlCenter Adapter ???
|
969
|
-
// -----------------------------------------------------------------
|
970
|
-
// show cc icon (currently NOT supported)
|
971
|
-
// $('#quickLinksControlCenterButton').css('display', 'block');
|
972
|
-
|
973
|
-
if (j1.authEnabled()) {
|
974
|
-
if (user_session.authenticated === 'true') {
|
975
|
-
// set signout
|
976
|
-
logger.info('\n' + 'show signout icon');
|
977
|
-
$('#navLinkSignInOut').attr('data-bs-target','#modalOmniSignOut');
|
978
|
-
$('#iconSignInOut').removeClass('mdi-login').addClass('mdi-logout');
|
979
|
-
} else {
|
980
|
-
// set signin
|
981
|
-
logger.info('\n' + 'show signin icon');
|
982
|
-
$('#navLinkSignInOut').attr('data-bs-target','#modalOmniSignIn');
|
983
|
-
$('#iconSignInOut').removeClass('mdi-logout').addClass('mdi-login');
|
984
|
-
}
|
985
|
-
logger.info('\n' + 'authentication detected as: ' + user_session.authenticated);
|
986
|
-
$('#quickLinksSignInOutButton').css('display', 'block');
|
987
|
-
}
|
988
|
-
|
989
|
-
// TODO: should MOVED to Themer ???
|
990
|
-
// jadams, 2021-07-25: hide|show themes menu on cookie consent
|
991
|
-
// (analysis|personalization) settings. BootSwatch is a 3rd party
|
992
|
-
// is using e.g GA. Because NO control is possible on 3rd parties,
|
993
|
-
// for GDPR compliance, themes feature may disabled on
|
994
|
-
// privacy settings
|
995
|
-
if (!user_consent.personalization) {
|
996
|
-
logger.debug('\n' + 'disable themes feature because of privacy settings');
|
997
|
-
logger.debug('\n' + 'personalization not allowed, privacy settings for personalization: ' + user_consent.personalization);
|
998
|
-
$("#themes_menu").hide();
|
999
|
-
} else {
|
1000
|
-
$("#themes_menu").show();
|
1001
|
-
}
|
1002
|
-
|
1003
|
-
// detect if a loaded page has been chenged
|
1004
|
-
if (user_session.previous_page !== user_session.current_page) {
|
1005
|
-
logText = '\n' + 'page change detected';
|
1006
|
-
logger.info(logText);
|
1007
|
-
logText = '\n' + 'previous page: ' + user_session.previous_page;
|
1008
|
-
logger.info(logText);
|
1009
|
-
logText = '\n' + 'current page: ' + user_session.current_page;
|
1010
|
-
logger.info(logText);
|
1011
|
-
}
|
1012
|
-
|
1013
|
-
// update sidebar for changed theme data
|
1014
|
-
logger.info('\n' + 'update sidebar');
|
1015
|
-
user_state = j1.readCookie(cookie_names.user_state);
|
1016
|
-
current_user_data = j1.mergeData(user_session, user_state);
|
1017
|
-
j1.core.navigator.updateSidebar(current_user_data);
|
1018
|
-
|
1019
|
-
// set|log status
|
1020
|
-
state = 'finished';
|
1021
|
-
j1.setState(state);
|
1022
|
-
logText = '\n' + 'state: ' + state;
|
1023
|
-
logger.info(logText);
|
1024
|
-
logText = '\n' + 'page finalized successfully';
|
1025
|
-
logger.info(logText);
|
1026
|
-
}, flickerTimeout);
|
1027
|
-
});
|
1028
|
-
} else {
|
1029
|
-
// web mode
|
1030
|
-
// ---------------------------------------------------------------------
|
1031
|
-
setTimeout (function() {
|
1032
|
-
logger.info('\n' + 'state: finished');
|
1033
|
-
logger.info('\n' + 'page initialization: finished');
|
933
|
+
// enable (body) animation on page load if enabled
|
934
|
+
if (bodyAnimation) {
|
935
|
+
var body_animation_fadein = '<style id="body_animation">';
|
936
|
+
body_animation_fadein += ' body {';
|
937
|
+
body_animation_fadein += ' animation: fadeInAnimation ease ' + bodyAnimationDuration + 's;';
|
938
|
+
body_animation_fadein += ' animation-iteration-count: 1;';
|
939
|
+
body_animation_fadein += ' animation-fill-mode: forwards;';
|
940
|
+
body_animation_fadein += ' }';
|
941
|
+
body_animation_fadein += ' @keyframes fadeInAnimation {';
|
942
|
+
body_animation_fadein += ' 0% {';
|
943
|
+
body_animation_fadein += ' opacity: 0;';
|
944
|
+
body_animation_fadein += ' }';
|
945
|
+
body_animation_fadein += ' 100% {';
|
946
|
+
body_animation_fadein += ' opacity: 1;';
|
947
|
+
body_animation_fadein += ' }';
|
948
|
+
body_animation_fadein += ' }';
|
949
|
+
body_animation_fadein += '</style>';
|
950
|
+
$('head').append(body_animation_fadein);
|
951
|
+
}
|
1034
952
|
|
1035
|
-
// display the page loaded
|
1036
|
-
$('#no_flicker').css('display', 'block');
|
953
|
+
// display the page loaded is managed by module "themer"
|
954
|
+
// $('#no_flicker').css('display', 'block');
|
1037
955
|
|
1038
956
|
// jadams, 2021-12-06: Check if access to cookies for this site failed.
|
1039
957
|
// Possibly, a third-party domain or an attacker tries to access it.
|
@@ -1045,64 +963,21 @@ var j1 = (function (options) {
|
|
1045
963
|
// redirect to error page: blocked content
|
1046
964
|
window.location.href = '/446.html';
|
1047
965
|
} else {
|
1048
|
-
|
1049
966
|
logger.info('\n' + 'j1 cookies found:' + j1Cookies.length);
|
1050
967
|
}
|
1051
968
|
}
|
1052
969
|
|
1053
|
-
// jadams, 2021-11-19: test code for 'tapTarget' of 'materializeCss'
|
1054
|
-
// See:
|
1055
|
-
// https://stackoverflow.com/questions/49422111/opening-tap-target-in-materialize-css-for-2-seconds
|
1056
|
-
// -------------------------------------------------------------------
|
1057
|
-
// $('#features').tapTarget();
|
1058
|
-
// $('#features').click(function(e) {
|
1059
|
-
// logger.info('\n' + 'call default action');
|
1060
|
-
// $('#features').tapTarget('open');
|
1061
|
-
// });
|
1062
|
-
|
1063
|
-
// jadams, 2021-11-19: additional code for accordions (collapsible)
|
1064
|
-
// used e.g for the 'SERVICE Panel'
|
1065
|
-
// -------------------------------------------------------------------
|
1066
|
-
// Add minus icon for collapse element which is open by default
|
1067
|
-
$(".collapse.show").each(function(){
|
1068
|
-
$(this).prev(".card-header").addClass("highlight");
|
1069
|
-
});
|
1070
|
-
|
1071
|
-
// Highlight open collapsed element
|
1072
|
-
$(".card-header .btn").click(function(){
|
1073
|
-
$(".card-header").not($(this).parents()).removeClass("highlight");
|
1074
|
-
$(this).parents(".card-header").toggleClass("highlight");
|
1075
|
-
});
|
1076
|
-
|
1077
970
|
// manage Dropcaps if translation is enabled|disabled
|
1078
|
-
//
|
971
|
+
// -----------------------------------------------------------------
|
1079
972
|
if (user_translate.translationEnabled) {
|
1080
|
-
|
1081
|
-
|
973
|
+
logger.info('\n' + 'translation enabled: ' + user_translate.translationEnabled);
|
974
|
+
logger.debug('\n' + 'skipped processing of dropcaps');
|
1082
975
|
} else {
|
1083
|
-
|
1084
|
-
|
1085
|
-
|
976
|
+
// initialize dropcaps
|
977
|
+
logger.info('\n' + 'post processing: createDropCap');
|
978
|
+
j1.core.createDropCap();
|
1086
979
|
}
|
1087
980
|
|
1088
|
-
logger.info('\n' + 'mode detected: web');
|
1089
|
-
logger.info('\n' + 'hide signin icon');
|
1090
|
-
$('#quickLinksSignInOutButton').css('display', 'none');
|
1091
|
-
|
1092
|
-
user_session.current_page = current_url.pathname;
|
1093
|
-
logger.debug('\n' + 'write to cookie : ' + cookie_names.user_session);
|
1094
|
-
cookie_written = j1.writeCookie({
|
1095
|
-
name: cookie_names.user_session,
|
1096
|
-
data: user_session,
|
1097
|
-
secure: secure,
|
1098
|
-
expires: 0
|
1099
|
-
});
|
1100
|
-
|
1101
|
-
// TODO: should MOVED to ControlCenter Adapter ???
|
1102
|
-
// -----------------------------------------------------------------
|
1103
|
-
// show cc icon (currently NOT supported)
|
1104
|
-
// $('#quickLinksControlCenterButton').css('display', 'block');
|
1105
|
-
|
1106
981
|
// TODO: should MOVED to Cookiebar ???
|
1107
982
|
// show|hide cookie icon
|
1108
983
|
if (j1.existsCookie(cookie_names.user_consent)) {
|
@@ -1117,6 +992,27 @@ var j1 = (function (options) {
|
|
1117
992
|
$('#quickLinksCookieButton').css('display', 'none');
|
1118
993
|
}
|
1119
994
|
|
995
|
+
// TODO: should MOVED to ControlCenter Adapter ???
|
996
|
+
// -----------------------------------------------------------------
|
997
|
+
// show cc icon (currently NOT supported)
|
998
|
+
// $('#quickLinksControlCenterButton').css('display', 'block');
|
999
|
+
|
1000
|
+
if (j1.authEnabled()) {
|
1001
|
+
if (user_session.authenticated === 'true') {
|
1002
|
+
// set signout
|
1003
|
+
logger.info('\n' + 'show signout icon');
|
1004
|
+
$('#navLinkSignInOut').attr('data-bs-target','#modalOmniSignOut');
|
1005
|
+
$('#iconSignInOut').removeClass('mdi-login').addClass('mdi-logout');
|
1006
|
+
} else {
|
1007
|
+
// set signin
|
1008
|
+
logger.info('\n' + 'show signin icon');
|
1009
|
+
$('#navLinkSignInOut').attr('data-bs-target','#modalOmniSignIn');
|
1010
|
+
$('#iconSignInOut').removeClass('mdi-logout').addClass('mdi-login');
|
1011
|
+
}
|
1012
|
+
logger.info('\n' + 'authentication detected as: ' + user_session.authenticated);
|
1013
|
+
$('#quickLinksSignInOutButton').css('display', 'block');
|
1014
|
+
}
|
1015
|
+
|
1120
1016
|
// TODO: should MOVED to Themer ???
|
1121
1017
|
// jadams, 2021-07-25: hide|show themes menu on cookie consent
|
1122
1018
|
// (analysis|personalization) settings. BootSwatch is a 3rd party
|
@@ -1144,29 +1040,6 @@ var j1 = (function (options) {
|
|
1144
1040
|
// update sidebar for changed theme data
|
1145
1041
|
logger.info('\n' + 'update sidebar');
|
1146
1042
|
user_state = j1.readCookie(cookie_names.user_state);
|
1147
|
-
|
1148
|
-
if (template_version_changed) {
|
1149
|
-
if (typeof template_previous_version == 'undefined') template_previous_version = 'na';
|
1150
|
-
logger.warn('\n' + 'template version detected as changed');
|
1151
|
-
logger.warn('\n' + 'template version previous|current: ' + template_previous_version + '|' + template_version);
|
1152
|
-
// Update the user_state cookie
|
1153
|
-
// TODO: replace theme_version by template_version as they
|
1154
|
-
// are alwas the same
|
1155
|
-
// disable: user_state.theme_version = template_version;
|
1156
|
-
//
|
1157
|
-
user_state.template_version = template_version;
|
1158
|
-
cookie_written = j1.writeCookie({
|
1159
|
-
name: cookie_names.user_state,
|
1160
|
-
data: user_state,
|
1161
|
-
secure: secure,
|
1162
|
-
expires: 365
|
1163
|
-
});
|
1164
|
-
logger.warn('\n' + 'template version updated to: ' + template_version);
|
1165
|
-
} else {
|
1166
|
-
logger.info('\n' + 'template version detected: ' + user_state.template_version);
|
1167
|
-
}
|
1168
|
-
|
1169
|
-
// set current user data
|
1170
1043
|
current_user_data = j1.mergeData(user_session, user_state);
|
1171
1044
|
j1.core.navigator.updateSidebar(current_user_data);
|
1172
1045
|
|
@@ -1177,7 +1050,182 @@ var j1 = (function (options) {
|
|
1177
1050
|
logger.info(logText);
|
1178
1051
|
logText = '\n' + 'page finalized successfully';
|
1179
1052
|
logger.info(logText);
|
1180
|
-
|
1053
|
+
|
1054
|
+
});
|
1055
|
+
} else {
|
1056
|
+
// web mode
|
1057
|
+
// ---------------------------------------------------------------------
|
1058
|
+
|
1059
|
+
logger.info('\n' + 'state: finished');
|
1060
|
+
logger.info('\n' + 'page initialization: finished');
|
1061
|
+
|
1062
|
+
// enable (body) animation on page load if enabled
|
1063
|
+
if (bodyAnimation) {
|
1064
|
+
var body_animation_fadein = '<style id="body_animation">';
|
1065
|
+
body_animation_fadein += ' body {';
|
1066
|
+
body_animation_fadein += ' animation: fadeInAnimation ease ' + bodyAnimationDuration + 's;';
|
1067
|
+
body_animation_fadein += ' animation-iteration-count: 1;';
|
1068
|
+
body_animation_fadein += ' animation-fill-mode: forwards;';
|
1069
|
+
body_animation_fadein += ' }';
|
1070
|
+
body_animation_fadein += ' @keyframes fadeInAnimation {';
|
1071
|
+
body_animation_fadein += ' 0% {';
|
1072
|
+
body_animation_fadein += ' opacity: 0;';
|
1073
|
+
body_animation_fadein += ' }';
|
1074
|
+
body_animation_fadein += ' 100% {';
|
1075
|
+
body_animation_fadein += ' opacity: 1;';
|
1076
|
+
body_animation_fadein += ' }';
|
1077
|
+
body_animation_fadein += ' }';
|
1078
|
+
body_animation_fadein += '</style>';
|
1079
|
+
|
1080
|
+
$('head').append(body_animation_fadein);
|
1081
|
+
}
|
1082
|
+
|
1083
|
+
// display the page loaded is managed by module "themer"
|
1084
|
+
// $('#no_flicker').css('display', 'block');
|
1085
|
+
|
1086
|
+
// jadams, 2021-12-06: Check if access to cookies for this site failed.
|
1087
|
+
// Possibly, a third-party domain or an attacker tries to access it.
|
1088
|
+
if (checkCookies) {
|
1089
|
+
var j1Cookies = j1.findCookie('j1');
|
1090
|
+
if (!j1.existsCookie(cookie_names.user_state)) {
|
1091
|
+
logger.error('\n' + 'Access to cookie failed or cookie not found: ' + cookie_names.user_state);
|
1092
|
+
logger.info('\n' + 'j1 cookies found:' + j1Cookies.length);
|
1093
|
+
// redirect to error page: blocked content
|
1094
|
+
window.location.href = '/446.html';
|
1095
|
+
} else {
|
1096
|
+
|
1097
|
+
logger.info('\n' + 'j1 cookies found:' + j1Cookies.length);
|
1098
|
+
}
|
1099
|
+
}
|
1100
|
+
|
1101
|
+
// jadams, 2021-11-19: test code for 'tapTarget' of 'materializeCss'
|
1102
|
+
// See:
|
1103
|
+
// https://stackoverflow.com/questions/49422111/opening-tap-target-in-materialize-css-for-2-seconds
|
1104
|
+
// -------------------------------------------------------------------
|
1105
|
+
// $('#features').tapTarget();
|
1106
|
+
// $('#features').click(function(e) {
|
1107
|
+
// logger.info('\n' + 'call default action');
|
1108
|
+
// $('#features').tapTarget('open');
|
1109
|
+
// });
|
1110
|
+
|
1111
|
+
// jadams, 2021-11-19: additional code for accordions (collapsible)
|
1112
|
+
// used e.g for the 'SERVICE Panel'
|
1113
|
+
// -------------------------------------------------------------------
|
1114
|
+
// Add minus icon for collapse element which is open by default
|
1115
|
+
$(".collapse.show").each(function(){
|
1116
|
+
$(this).prev(".card-header").addClass("highlight");
|
1117
|
+
});
|
1118
|
+
|
1119
|
+
// Highlight open collapsed element
|
1120
|
+
$(".card-header .btn").click(function(){
|
1121
|
+
$(".card-header").not($(this).parents()).removeClass("highlight");
|
1122
|
+
$(this).parents(".card-header").toggleClass("highlight");
|
1123
|
+
});
|
1124
|
+
|
1125
|
+
// manage Dropcaps if translation is enabled|disabled
|
1126
|
+
// -------------------------------------------------------------------
|
1127
|
+
if (user_translate.translationEnabled) {
|
1128
|
+
logger.info('\n' + 'translation enabled: ' + user_translate.translationEnabled);
|
1129
|
+
logger.debug('\n' + 'skipped processing of dropcaps');
|
1130
|
+
} else {
|
1131
|
+
// initialize dropcaps
|
1132
|
+
logger.info('\n' + 'post processing: createDropCap');
|
1133
|
+
j1.core.createDropCap();
|
1134
|
+
}
|
1135
|
+
|
1136
|
+
logger.info('\n' + 'mode detected: web');
|
1137
|
+
logger.info('\n' + 'hide signin icon');
|
1138
|
+
$('#quickLinksSignInOutButton').css('display', 'none');
|
1139
|
+
|
1140
|
+
user_session.current_page = current_url.pathname;
|
1141
|
+
logger.debug('\n' + 'write to cookie : ' + cookie_names.user_session);
|
1142
|
+
cookie_written = j1.writeCookie({
|
1143
|
+
name: cookie_names.user_session,
|
1144
|
+
data: user_session,
|
1145
|
+
secure: secure,
|
1146
|
+
expires: 0
|
1147
|
+
});
|
1148
|
+
|
1149
|
+
// TODO: should MOVED to ControlCenter Adapter ???
|
1150
|
+
// -----------------------------------------------------------------
|
1151
|
+
// show cc icon (currently NOT supported)
|
1152
|
+
// $('#quickLinksControlCenterButton').css('display', 'block');
|
1153
|
+
|
1154
|
+
// TODO: should MOVED to Cookiebar ???
|
1155
|
+
// show|hide cookie icon
|
1156
|
+
if (j1.existsCookie(cookie_names.user_consent)) {
|
1157
|
+
// Display cookie icon
|
1158
|
+
logText = '\n' + 'show cookie icon';
|
1159
|
+
logger.info(logText);
|
1160
|
+
$('#quickLinksCookieButton').css('display', 'block');
|
1161
|
+
} else {
|
1162
|
+
logText = '\n' + 'hide cookie icon';
|
1163
|
+
logger.info(logText);
|
1164
|
+
// Display cookie icon
|
1165
|
+
$('#quickLinksCookieButton').css('display', 'none');
|
1166
|
+
}
|
1167
|
+
|
1168
|
+
// TODO: should MOVED to Themer ???
|
1169
|
+
// jadams, 2021-07-25: hide|show themes menu on cookie consent
|
1170
|
+
// (analysis|personalization) settings. BootSwatch is a 3rd party
|
1171
|
+
// is using e.g GA. Because NO control is possible on 3rd parties,
|
1172
|
+
// for GDPR compliance, themes feature may disabled on
|
1173
|
+
// privacy settings
|
1174
|
+
if (!user_consent.personalization) {
|
1175
|
+
logger.debug('\n' + 'disable themes feature because of privacy settings');
|
1176
|
+
logger.debug('\n' + 'personalization not allowed, privacy settings for personalization: ' + user_consent.personalization);
|
1177
|
+
$("#themes_menu").hide();
|
1178
|
+
} else {
|
1179
|
+
$("#themes_menu").show();
|
1180
|
+
}
|
1181
|
+
|
1182
|
+
// detect if a loaded page has been chenged
|
1183
|
+
if (user_session.previous_page !== user_session.current_page) {
|
1184
|
+
logText = '\n' + 'page change detected';
|
1185
|
+
logger.info(logText);
|
1186
|
+
logText = '\n' + 'previous page: ' + user_session.previous_page;
|
1187
|
+
logger.info(logText);
|
1188
|
+
logText = '\n' + 'current page: ' + user_session.current_page;
|
1189
|
+
logger.info(logText);
|
1190
|
+
}
|
1191
|
+
|
1192
|
+
// update sidebar for changed theme data
|
1193
|
+
logger.info('\n' + 'update sidebar');
|
1194
|
+
user_state = j1.readCookie(cookie_names.user_state);
|
1195
|
+
|
1196
|
+
if (template_version_changed) {
|
1197
|
+
if (typeof template_previous_version == 'undefined') template_previous_version = 'na';
|
1198
|
+
logger.warn('\n' + 'template version detected as changed');
|
1199
|
+
logger.warn('\n' + 'template version previous|current: ' + template_previous_version + '|' + template_version);
|
1200
|
+
// Update the user_state cookie
|
1201
|
+
// TODO: replace theme_version by template_version as they
|
1202
|
+
// are alwas the same
|
1203
|
+
// disable: user_state.theme_version = template_version;
|
1204
|
+
//
|
1205
|
+
user_state.template_version = template_version;
|
1206
|
+
cookie_written = j1.writeCookie({
|
1207
|
+
name: cookie_names.user_state,
|
1208
|
+
data: user_state,
|
1209
|
+
secure: secure,
|
1210
|
+
expires: 365
|
1211
|
+
});
|
1212
|
+
logger.warn('\n' + 'template version updated to: ' + template_version);
|
1213
|
+
} else {
|
1214
|
+
logger.info('\n' + 'template version detected: ' + user_state.template_version);
|
1215
|
+
}
|
1216
|
+
|
1217
|
+
// set current user data
|
1218
|
+
current_user_data = j1.mergeData(user_session, user_state);
|
1219
|
+
j1.core.navigator.updateSidebar(current_user_data);
|
1220
|
+
|
1221
|
+
// set|log status
|
1222
|
+
state = 'finished';
|
1223
|
+
j1.setState(state);
|
1224
|
+
logText = '\n' + 'state: ' + state;
|
1225
|
+
logger.info(logText);
|
1226
|
+
logText = '\n' + 'page finalized successfully';
|
1227
|
+
logger.info(logText);
|
1228
|
+
|
1181
1229
|
}
|
1182
1230
|
},
|
1183
1231
|
|
@@ -2315,11 +2363,14 @@ var j1 = (function (options) {
|
|
2315
2363
|
var logger = log4javascript.getLogger('j1.adapter.scrollToAnchor');
|
2316
2364
|
|
2317
2365
|
var dependencies_met_page_displayed = setInterval (function () {
|
2318
|
-
|
2366
|
+
var pageState = $('#no_flicker').css("display");
|
2367
|
+
if (j1.getState() == 'finished' && pageState == 'block' && j1['pageMonitor'].pageType !== 'unknown') {
|
2319
2368
|
if (j1['pageMonitor'].pageType == 'static') {
|
2320
|
-
|
2321
|
-
|
2322
|
-
|
2369
|
+
setTimeout (function() {
|
2370
|
+
logger.info('\n' + 'Scroller: Scroll static page')
|
2371
|
+
const scrollOffset = j1.getScrollOffset();
|
2372
|
+
j1.scrollTo(scrollOffset);
|
2373
|
+
}, 1000);
|
2323
2374
|
clearInterval(dependencies_met_page_displayed);
|
2324
2375
|
} else if (j1['pageMonitor'].pageType == 'dynamic') {
|
2325
2376
|
setTimeout (function() {
|
@@ -2387,75 +2438,64 @@ var j1 = (function (options) {
|
|
2387
2438
|
|
2388
2439
|
j1['pageMonitor'].eventNo += 1;
|
2389
2440
|
|
2390
|
-
|
2391
|
-
|
2392
|
-
//
|
2393
|
-
pageBaseHeight =
|
2441
|
+
// Skip first Observer events as data returne found unusable
|
2442
|
+
if (j1['pageMonitor'].eventNo == 2) {
|
2443
|
+
// Set initial data from second event
|
2444
|
+
j1['pageMonitor'].pageBaseHeight = document.body.scrollHeight;
|
2445
|
+
j1['pageMonitor'].currentPageHeight = document.body.scrollHeight;
|
2446
|
+
j1['pageMonitor'].previousPageHeight = document.body.scrollHeight;
|
2447
|
+
j1['pageMonitor'].previousGrowthRatio = 0.00;
|
2448
|
+
|
2449
|
+
pageBaseHeight = document.body.scrollHeight;
|
2394
2450
|
previousGrowthRatio = 100;
|
2395
2451
|
growthRatio = 0.00;
|
2396
|
-
|
2397
|
-
j1['pageMonitor'].pageBaseHeight = documentHeight;
|
2398
|
-
j1['pageMonitor'].currentPageHeight = documentHeight;
|
2399
|
-
j1['pageMonitor'].previousGrowthRatio = previousGrowthRatio;
|
2400
|
-
j1['pageMonitor'].growthRatio = growthRatio;
|
2401
2452
|
} else {
|
2402
|
-
//
|
2403
|
-
//
|
2404
|
-
|
2405
|
-
|
2406
|
-
|
2407
|
-
|
2408
|
-
|
2409
|
-
|
2410
|
-
|
2411
|
-
|
2412
|
-
|
2413
|
-
|
2414
|
-
|
2415
|
-
|
2416
|
-
|
2417
|
-
|
2418
|
-
|
2419
|
-
|
2420
|
-
|
2421
|
-
|
2422
|
-
j1['pageMonitor'].currentGrowthRatio = pageGrowthRatio;
|
2423
|
-
|
2424
|
-
growthRatio = ((pageGrowthRatio / previousGrowthRatio) - 1) * 100;
|
2425
|
-
growthRatio = growthRatio.toFixed(2);
|
2426
|
-
j1['pageMonitor'].growthRatio = growthRatio;
|
2427
|
-
}
|
2428
|
-
|
2429
|
-
// detect the page 'type'
|
2430
|
-
//
|
2431
|
-
if (growthRatio > 0) {
|
2432
|
-
// scroll the page to top if content has grown
|
2433
|
-
//
|
2434
|
-
if (scrollDynamicPagesTopOnChange) {
|
2435
|
-
// limit scrolling to reduce the flicker (for chromium browsers)
|
2436
|
-
if (j1['pageMonitor'].eventNo > 3) {
|
2437
|
-
window.scrollTo(0, 0);
|
2453
|
+
// collect 'pageHeight' from 'entries'
|
2454
|
+
// NOTE: each entry is an instance of ResizeObserverEntry
|
2455
|
+
for (const entry of entries) {
|
2456
|
+
pageBaseHeight = j1['pageMonitor'].pageBaseHeight;
|
2457
|
+
if (pageBaseHeight > 0) {
|
2458
|
+
// get the page height (rounded to int) from observer
|
2459
|
+
//
|
2460
|
+
pageHeight = Math.round(entry.contentRect.height);
|
2461
|
+
j1['pageMonitor'].currentPageHeight = pageHeight;
|
2462
|
+
|
2463
|
+
// total growth ratio
|
2464
|
+
pageGrowthRatio = pageHeight / pageBaseHeight * 100;
|
2465
|
+
pageGrowthRatio = pageGrowthRatio.toFixed(2);
|
2466
|
+
|
2467
|
+
j1['pageMonitor'].currentGrowthRatio = pageGrowthRatio;
|
2468
|
+
|
2469
|
+
growthRatio = ((pageGrowthRatio / previousGrowthRatio) - 1) * 100;
|
2470
|
+
growthRatio = growthRatio.toFixed(2);
|
2471
|
+
j1['pageMonitor'].growthRatio = growthRatio;
|
2438
2472
|
}
|
2439
2473
|
}
|
2440
|
-
//
|
2441
|
-
|
2442
|
-
|
2474
|
+
// detect the page 'type'
|
2475
|
+
if (growthRatio >= 10) {
|
2476
|
+
j1['pageMonitor'].pageType = 'dynamic';
|
2443
2477
|
|
2444
|
-
logger.debug('\n' + 'Observer: previousPageHeight|currentPageHeight (px): ', j1['pageMonitor'].previousPageHeight + '|' + pageHeight);
|
2445
|
-
logger.debug('\n' + 'Observer: growthRatio relative|absolute (%): ', growthRatio + '|' + pageGrowthRatio);
|
2478
|
+
// logger.debug('\n' + 'Observer: previousPageHeight|currentPageHeight (px): ', j1['pageMonitor'].previousPageHeight + '|' + pageHeight);
|
2479
|
+
// logger.debug('\n' + 'Observer: growthRatio relative|absolute (%): ', growthRatio + '|' + pageGrowthRatio);
|
2446
2480
|
|
2447
|
-
|
2448
|
-
|
2449
|
-
|
2450
|
-
|
2451
|
-
|
2452
|
-
|
2481
|
+
logger.debug('\n' + 'Observer: page growthRatio (%): ', j1['pageMonitor'].growthRatio);
|
2482
|
+
logger.debug('\n' + 'Observer: page detected as: dynamic');
|
2483
|
+
|
2484
|
+
} else {
|
2485
|
+
// set the page type to 'static' if low growth detected
|
2486
|
+
//
|
2487
|
+
logger.debug('\n' + 'Observer: page growthRatio (%): ', j1['pageMonitor'].growthRatio);
|
2488
|
+
j1['pageMonitor'].pageType = 'static';
|
2489
|
+
logger.debug('\n' + 'Observer: page detected as: static');
|
2490
|
+
}
|
2491
|
+
} // END Observer data evaluation
|
2492
|
+
}); // END Observer
|
2453
2493
|
|
2454
2494
|
// monitor the page growth if visible
|
2455
|
-
var
|
2495
|
+
var dependencies_met_page_finished = setInterval (function () {
|
2456
2496
|
if (j1.getState() == 'finished') {
|
2457
2497
|
observer.observe(document.querySelector('body')); // observer.observe(document.querySelector('#content'));
|
2458
|
-
clearInterval(
|
2498
|
+
clearInterval(dependencies_met_page_finished);
|
2459
2499
|
}
|
2460
2500
|
}, 25);
|
2461
2501
|
|