j1-template 2023.0.7 → 2023.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
|