j1-template 2021.2.10 → 2021.3.1
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/blocks/footer/boxes/contacts_box.proc +1 -1
- data/_includes/themes/j1/layouts/content_generator_article_navigator.html +2 -2
- data/_includes/themes/j1/layouts/content_generator_blog_archive.html +2 -2
- data/_includes/themes/j1/layouts/content_generator_news_panel_posts.html +2 -2
- data/_includes/themes/j1/modules/boards/news_pin_board.html +10 -10
- data/_includes/themes/j1/modules/connectors/translators/google-translator.html +18 -3
- data/_includes/themes/j1/modules/navigator/generator.html +6 -6
- data/_includes/themes/j1/procedures/posts/collate_calendar.proc +3 -3
- data/_includes/themes/j1/procedures/posts/create_series_header.proc +1 -1
- data/_includes/themes/j1/procedures/posts/pager.proc +1 -1
- data/_layouts/compress.html +12 -4
- data/assets/data/gallery_customizer.html +1 -1
- data/assets/data/menu.html +17 -17
- data/assets/data/mmenu.html +17 -17
- data/assets/data/private.json +49 -0
- data/assets/data/quicklinks.html +3 -3
- data/assets/themes/j1/adapter/js/j1.js +1 -1
- data/assets/themes/j1/adapter/js/{j1scroll.js → scroller.js} +86 -105
- data/assets/themes/j1/adapter/js/translator.js +17 -3
- data/assets/themes/j1/core/js/template.js +3930 -55
- data/assets/themes/j1/core/js/template.min.js +9 -8
- data/assets/themes/j1/core/js/template.min.js.map +1 -1
- data/assets/themes/j1/modules/backstretch/js/backstretch.min.js +1 -1
- data/assets/themes/j1/modules/bmd/js/bootstrap-material-design.full.js +1 -1
- data/assets/themes/j1/modules/bmd/js/bootstrap-material-design.js +1 -1
- data/assets/themes/j1/modules/bmd/js/bootstrap-material-design.min.js +1 -1
- data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.min.js +1 -1
- data/assets/themes/j1/modules/datatables/js/datatables.js +1 -1
- data/assets/themes/j1/modules/datatables/js/datatables.min.js +5 -5
- data/assets/themes/j1/modules/{j1Deepl/js/j1deepl.js → deeplAPI/js/deeplAPI.js} +36 -11
- data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.min.js +18 -0
- data/assets/themes/j1/modules/iframeResizer/examples/frame.absolute.html +3 -3
- data/assets/themes/j1/modules/iframeResizer/examples/frame.content.html +6 -6
- data/assets/themes/j1/modules/iframeResizer/examples/frame.tolerance.html +2 -2
- data/assets/themes/j1/modules/iframeResizer/js/client/iframeResizer.contentWindow.js +1 -1
- data/assets/themes/j1/modules/iframeResizer/js/client/iframeResizer.contentWindow.min.js +1 -1
- data/assets/themes/j1/modules/iframeResizer/js/resizer.min.js +1 -1
- data/assets/themes/j1/modules/jquery/js/jquery.js +2 -2
- data/assets/themes/j1/modules/jquery/js/jquery.min.js +1 -1
- data/assets/themes/j1/modules/jquery/js/jqueryUI.js +7 -7
- data/assets/themes/j1/modules/jquery/js/jqueryUI.min.js +3 -3
- data/assets/themes/j1/modules/lightGallery/js/core/j1/lightgallery-x.min.js +1 -1
- data/assets/themes/j1/modules/lightGallery/js/core/lightgallery.min.js +1 -1
- data/assets/themes/j1/modules/lightGallery/js/modules/j1/j1-video.min.js +1 -1
- data/assets/themes/j1/modules/lightGallery/js/modules/j1/j1-x-video.min.js +1 -1
- data/assets/themes/j1/modules/lightbox/js/lightbox.js +1 -1
- data/assets/themes/j1/modules/lightbox/js/lightbox.min.js +1 -1
- data/assets/themes/j1/modules/lunrSearch/js/mustache.js +1 -1
- data/assets/themes/j1/modules/lunrSearch/js/mustache.min.js +1 -1
- data/assets/themes/j1/modules/lunrSearch/js/uri.js +1 -1
- data/assets/themes/j1/modules/lunrSearch/js/uri.min.js +7 -7
- data/assets/themes/j1/modules/mdiPreviewer/js/previewer.min.js +1 -1
- data/assets/themes/j1/modules/mdilPreviewer/js/previewer.min.js +1 -1
- data/assets/themes/j1/modules/{j1Scroll → scroller}/css/theme/uno.css +2 -2
- data/assets/themes/j1/modules/{j1Scroll → scroller}/css/theme/uno.min.css +0 -0
- data/assets/themes/j1/modules/scroller/js/scroller.js +346 -0
- data/assets/themes/j1/modules/scroller/js/scroller.min.js +15 -0
- data/assets/themes/j1/modules/themeSwitcher/js/switcher.js +1 -1
- data/assets/themes/j1/modules/themeSwitcher/js/switcher.min.js +1 -1
- data/assets/themes/j1/modules/translator/js/translator.js +38 -27
- data/assets/themes/j1/modules/translator/js/translator.min.js +1 -1
- data/assets/themes/j1/modules/twemoji/js/picker/twemoji-picker.js +1 -1
- data/assets/themes/j1/modules/twemoji/js/picker/twemoji-picker.min.js +1 -1
- data/assets/themes/j1/modules/videojs/js/video.min.js +2 -2
- data/lib/j1/version.rb +3 -3
- data/lib/starter_web/Gemfile +1 -1
- data/lib/starter_web/_config.yml +6 -2
- data/lib/starter_web/_data/_defaults/j1_config.1.yml +478 -0
- data/lib/starter_web/_data/apps/carousel.yml +4 -4
- data/lib/starter_web/_data/blocks/defaults/footer.yml +2 -2
- data/lib/starter_web/_data/blocks/footer.yml +2 -2
- data/lib/starter_web/_data/modules/attics.yml +1 -1
- data/lib/starter_web/_data/modules/defaults/attics.yml +2 -2
- data/lib/starter_web/_data/modules/defaults/translator.yml +1 -0
- data/lib/starter_web/_data/modules/{j1scroll.yml → scroller.yml} +30 -5
- data/lib/starter_web/_data/modules/translator.yml +3 -0
- data/lib/starter_web/_data/private.default.yml +8 -1
- data/lib/starter_web/_data/private.yml +8 -1
- data/lib/starter_web/_data/resources.yml +14 -35
- data/lib/starter_web/_includes/attributes.asciidoc +1 -1
- data/lib/starter_web/_plugins/lunr_index.rb +1 -1
- data/lib/starter_web/index.html +2 -1
- data/lib/starter_web/package.json +1 -1
- data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +2 -2
- data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +3 -3
- data/lib/starter_web/pages/public/blog/navigator/index.html +1 -1
- data/lib/starter_web/pages/public/learn/roundtrip/600_quicksearch.adoc +6 -6
- data/lib/starter_web/pages/public/manuals/dropdown-help.adoc +743 -743
- data/lib/starter_web/pages/public/previewer/preview_bootstrap_theme.adoc +85 -85
- data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
- data/lib/starter_web/utilsrv/package.json +1 -1
- metadata +12 -13
- data/assets/themes/j1/adapter/js/translator.1.js +0 -525
- data/assets/themes/j1/modules/j1Deepl/js/j1deepl.min.js +0 -18
- data/assets/themes/j1/modules/j1Scroll/js/j1scroll.js +0 -280
- data/assets/themes/j1/modules/j1Scroll/js/j1scroll.min.js +0 -15
- data/assets/themes/j1/modules/showOnScroll/js/showOnScroll.js +0 -73
- data/assets/themes/j1/modules/showOnScroll/js/showOnScroll.min.js +0 -15
@@ -1,280 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
# -----------------------------------------------------------------------------
|
3
|
-
# ~/assets/themes/j1/modules/j1Scroll/js/j1scroll.js
|
4
|
-
# J1 core module for j1scroll
|
5
|
-
#
|
6
|
-
# Product/Info:
|
7
|
-
# https://jekyll.one
|
8
|
-
#
|
9
|
-
# Copyright (C) 2021 Juergen Adams
|
10
|
-
#
|
11
|
-
# J1 Template is licensed under the MIT License.
|
12
|
-
# For details, see https://jekyll.one
|
13
|
-
# -----------------------------------------------------------------------------
|
14
|
-
# NOTE: Based on https://github.com/jquery-boilerplate/jquery-boilerplate
|
15
|
-
# See: https://www.dotnetcurry.com/jquery/1069/authoring-jquery-plugins
|
16
|
-
# -----------------------------------------------------------------------------
|
17
|
-
*/
|
18
|
-
|
19
|
-
// the semi-colon before function invocation is a SAFETY method against
|
20
|
-
// concatenated scripts and/or other plugins which may NOT be closed
|
21
|
-
// properly.
|
22
|
-
//
|
23
|
-
;(function($, window, document, undefined) {
|
24
|
-
|
25
|
-
'use strict';
|
26
|
-
|
27
|
-
// Create the defaults
|
28
|
-
var pluginName = 'j1Scroll',
|
29
|
-
defaults = {
|
30
|
-
type: 'infiniteScroll',
|
31
|
-
scrollOffset: 100,
|
32
|
-
elementScroll: false,
|
33
|
-
firstPage: 2,
|
34
|
-
lastPage: false,
|
35
|
-
infoLastPage: false,
|
36
|
-
loadStatus: false,
|
37
|
-
onInit: function (){}, // callback after plugin has initialized
|
38
|
-
onBeforeLoad: function (){}, // callback before new items are loaded
|
39
|
-
onAfterLoad: function (){} // callback after new items are loaded
|
40
|
-
};
|
41
|
-
|
42
|
-
// Plugin constructor
|
43
|
-
function Plugin (element, options) {
|
44
|
-
this.element = element;
|
45
|
-
this.settings = $.extend( {}, defaults, options);
|
46
|
-
this.settings.elementID = '#' + this.element.id;
|
47
|
-
|
48
|
-
// call the initializer
|
49
|
-
this.init(this.settings);
|
50
|
-
}
|
51
|
-
|
52
|
-
// Avoid Plugin.prototype conflicts
|
53
|
-
$.extend(Plugin.prototype, {
|
54
|
-
// -------------------------------------------------------------------------
|
55
|
-
// init: initializer
|
56
|
-
// -------------------------------------------------------------------------
|
57
|
-
init: function(options) {
|
58
|
-
var logger = log4javascript.getLogger('j1Scroll');
|
59
|
-
|
60
|
-
logger.info('\n' + 'initializing plugin: started');
|
61
|
-
logger.info('\n' + 'state: started');
|
62
|
-
|
63
|
-
if ( options.elementScroll ) {
|
64
|
-
this.scroller = this.element;
|
65
|
-
} else {
|
66
|
-
this.scroller = window;
|
67
|
-
}
|
68
|
-
|
69
|
-
if (options.loadStatus) {
|
70
|
-
var spinner = '<div class="loader-ellips" style="display: none"> <span class="loader-ellips__dot"></span> <span class="loader-ellips__dot"></span> <span class="loader-ellips__dot"></span> <span class="loader-ellips__dot"></span> </div>';
|
71
|
-
$(spinner).insertAfter(options.elementID);
|
72
|
-
}
|
73
|
-
|
74
|
-
if (options.infoLastPage) {
|
75
|
-
var message = options.lastPageInfo;
|
76
|
-
$(message).insertAfter(options.elementID);
|
77
|
-
}
|
78
|
-
|
79
|
-
// initialize infinite scroll
|
80
|
-
if ( options.type === 'infiniteScroll') {
|
81
|
-
logger.info('\n' + 'processing mode: infiniteScroll');
|
82
|
-
logger.info('\n' + 'loading items from path: ' + options.path + "#");
|
83
|
-
logger.info('\n' + 'monitoring element set to: ' + this.scroller);
|
84
|
-
this.registerScrollEvent(options);
|
85
|
-
}
|
86
|
-
logger.info('\n' + 'initializing plugin: finished');
|
87
|
-
logger.info('\n' + 'state: finished');
|
88
|
-
},
|
89
|
-
|
90
|
-
// -----------------------------------------------------------------------
|
91
|
-
// bottomReached: detect final scroll position
|
92
|
-
// NOTE: the calculation for BOTTOM position is different for
|
93
|
-
// elementScroll and windowScroll. For elementScroll, the
|
94
|
-
// trigger isBottomReached is TRUE, if the scroll position has
|
95
|
-
// the end of the container PLUS a given scrollOffset.
|
96
|
-
// For windowScroll, the trigger isBottomReached is TRUE, if
|
97
|
-
// the scroll position has the end of the window MINUS
|
98
|
-
// a given scrollOffset.
|
99
|
-
// -----------------------------------------------------------------------
|
100
|
-
isBottomReached: function (options) {
|
101
|
-
var _this = this;
|
102
|
-
var bottom, scrollY;
|
103
|
-
var clientHeight = $(options.elementID).height();
|
104
|
-
|
105
|
-
if ( _this.settings.elementScroll ) {
|
106
|
-
// check scroll position of the container items are to be added
|
107
|
-
var $window = $(window);
|
108
|
-
var viewport_top = $window.scrollTop();
|
109
|
-
var viewport_height = $window.height();
|
110
|
-
var viewport_bottom = viewport_top + viewport_height - options.scrollOffset;
|
111
|
-
var $elm = $(options.elementID);
|
112
|
-
var top = $elm.offset().top + clientHeight;
|
113
|
-
var height = $elm.height();
|
114
|
-
bottom = top + height;
|
115
|
-
|
116
|
-
|
117
|
-
return (top >= viewport_top && top < viewport_bottom) ||
|
118
|
-
(bottom > viewport_top && bottom <= viewport_bottom) ||
|
119
|
-
(height > viewport_height && top <= viewport_top && bottom >= viewport_bottom);
|
120
|
-
} else {
|
121
|
-
// check scroll position of the (overall) window
|
122
|
-
return (window.innerHeight + window.pageYOffset + options.scrollOffset >= document.body.offsetHeight);
|
123
|
-
}
|
124
|
-
},
|
125
|
-
|
126
|
-
// -----------------------------------------------------------------------
|
127
|
-
// detectScroll: EventHandler to load new items for infinite scroll
|
128
|
-
// if final scroll position reached
|
129
|
-
// -----------------------------------------------------------------------
|
130
|
-
registerScrollEvent: function (options) {
|
131
|
-
var _this = this;
|
132
|
-
var logger = log4javascript.getLogger('j1Scroll');
|
133
|
-
|
134
|
-
logger.info('\n' + 'scroll event: register');
|
135
|
-
var eventHandler_onscroll = function (event) {
|
136
|
-
var options = _this.settings;
|
137
|
-
|
138
|
-
if (_this.isBottomReached(options)) {
|
139
|
-
if (options.firstPage > options.lastPage ) {
|
140
|
-
logger.info('\n' + 'last page detected on: ' + options.lastPage);
|
141
|
-
window.removeEventListener('scroll', eventHandler_onscroll);
|
142
|
-
logger.info('\n' + 'scroll event: removed');
|
143
|
-
|
144
|
-
if (options.infoLastPage ) {
|
145
|
-
_this.infoLastPage(options);
|
146
|
-
}
|
147
|
-
return false;
|
148
|
-
}
|
149
|
-
_this.getNewPost(options);
|
150
|
-
}
|
151
|
-
};
|
152
|
-
window.addEventListener('scroll', eventHandler_onscroll);
|
153
|
-
logger.info('\n' + 'scroll event: registered');
|
154
|
-
},
|
155
|
-
|
156
|
-
// -----------------------------------------------------------------------
|
157
|
-
// getNewPost: load new items (from current path)
|
158
|
-
// Note: loader flag prevents to load items if AJAX load in progress
|
159
|
-
// is NOT finished
|
160
|
-
// -----------------------------------------------------------------------
|
161
|
-
getNewPost: function (options) {
|
162
|
-
var _this = this;
|
163
|
-
var logger = log4javascript.getLogger('j1Scroll');
|
164
|
-
|
165
|
-
logger.info('\n' + 'trigger loading ');
|
166
|
-
|
167
|
-
// initialze loader flag
|
168
|
-
if (this.itemsLoaded === false) return false;
|
169
|
-
|
170
|
-
// set loader flag (false == not loaded)
|
171
|
-
this.itemsLoaded = false;
|
172
|
-
|
173
|
-
// display spinner while loading
|
174
|
-
if (options.loadStatus) {
|
175
|
-
logger.info('\n' + 'show: spinner');
|
176
|
-
$('.loader-ellips').show();
|
177
|
-
}
|
178
|
-
|
179
|
-
var xmlhttp = new XMLHttpRequest();
|
180
|
-
xmlhttp.onreadystatechange = function () {
|
181
|
-
if (xmlhttp.readyState == XMLHttpRequest.DONE) {
|
182
|
-
if (xmlhttp.status == 200) {
|
183
|
-
options.firstPage++;
|
184
|
-
var childItems = _this.getChildItemsByAjaxHTML(options, xmlhttp.responseText);
|
185
|
-
_this.appendNewItems(childItems);
|
186
|
-
|
187
|
-
logger.info('\n' + 'loading new items: successful');
|
188
|
-
|
189
|
-
// hide the spinner after loading
|
190
|
-
if (options.loadStatus) {
|
191
|
-
logger.info('\n' + 'hide: spinner');
|
192
|
-
$('.loader-ellips').hide();
|
193
|
-
}
|
194
|
-
|
195
|
-
// set loader flag (true == loaded)
|
196
|
-
// return _this.itemsLoaded = true;
|
197
|
-
_this.itemsLoaded = true;
|
198
|
-
} else {
|
199
|
-
// hide the spinner
|
200
|
-
if (options.loadStatus) {
|
201
|
-
logger.info('\n' + 'hide: spinner');
|
202
|
-
$('.loader-ellips').hide();
|
203
|
-
}
|
204
|
-
|
205
|
-
logger.error('\n' + 'loading new items failed, HTTP response: ' + xmlhttp.status );
|
206
|
-
// set loader flag (true == loaded)
|
207
|
-
// return _this.itemsLoaded = false;
|
208
|
-
_this.itemsLoaded = false;
|
209
|
-
}
|
210
|
-
}
|
211
|
-
};
|
212
|
-
logger.info('\n' + 'loading new items from path: ' + options.path + options.firstPage);
|
213
|
-
xmlhttp.open("GET", location.origin + options.path + options.firstPage + '/index.html', true);
|
214
|
-
xmlhttp.send();
|
215
|
-
},
|
216
|
-
|
217
|
-
// -----------------------------------------------------------------------
|
218
|
-
// getChildItemsByAjaxHTML: extract items from page loaded
|
219
|
-
// -----------------------------------------------------------------------
|
220
|
-
getChildItemsByAjaxHTML: function (options, HTMLText) {
|
221
|
-
var newHTML = document.createElement('html');
|
222
|
-
var logger = log4javascript.getLogger('j1Scroll');
|
223
|
-
|
224
|
-
logger.info('\n' + 'load new items');
|
225
|
-
newHTML.innerHTML = HTMLText;
|
226
|
-
var childItems = newHTML.querySelectorAll(options.elementID + ' > *');
|
227
|
-
return childItems;
|
228
|
-
},
|
229
|
-
|
230
|
-
// -----------------------------------------------------------------------
|
231
|
-
// appendNewItems: append items and run post processing
|
232
|
-
// -----------------------------------------------------------------------
|
233
|
-
appendNewItems: function (items) {
|
234
|
-
var _this = this;
|
235
|
-
var logger = log4javascript.getLogger('j1Scroll');
|
236
|
-
var cookie_names = j1.getCookieNames();
|
237
|
-
var user_translate = j1.readCookie(cookie_names.user_translate);
|
238
|
-
|
239
|
-
logger.info('\n' + 'append new items');
|
240
|
-
items.forEach(function (item) {
|
241
|
-
_this.element.appendChild(item);
|
242
|
-
});
|
243
|
-
|
244
|
-
// no dropcaps if translation enabled
|
245
|
-
if (user_translate.translationEnabled) {
|
246
|
-
logger.info('\n' + 'translation enabled: ' + user_translate.translationEnabled);
|
247
|
-
logger.warn('\n' + 'skipped processing of dropcaps');
|
248
|
-
} else {
|
249
|
-
// initialize dropcaps
|
250
|
-
logger.info('\n' + 'post processing: createDropCap');
|
251
|
-
j1.core.createDropCap();
|
252
|
-
}
|
253
|
-
|
254
|
-
},
|
255
|
-
|
256
|
-
// -----------------------------------------------------------------------
|
257
|
-
// getNewPost: load/append new items
|
258
|
-
// Note: loader flag prevents to load items if AJAX load in progress
|
259
|
-
// is NOT finished
|
260
|
-
// -----------------------------------------------------------------------
|
261
|
-
infoLastPage: function (options) {
|
262
|
-
var _this = this;
|
263
|
-
var logger = log4javascript.getLogger('j1Scroll');
|
264
|
-
|
265
|
-
logger.info('\n' + 'show: infoLastPage');
|
266
|
-
$('.page-scroll-last').show();
|
267
|
-
}
|
268
|
-
}); // END prototype
|
269
|
-
|
270
|
-
// wrapper around the constructor to prevent multiple instantiations
|
271
|
-
$.fn [pluginName] = function(options) {
|
272
|
-
return this.each(function() {
|
273
|
-
if (!$.data( this, "plugin_" + pluginName)) {
|
274
|
-
$.data(this, "plugin_" +
|
275
|
-
pluginName, new Plugin(this, options));
|
276
|
-
}
|
277
|
-
});
|
278
|
-
};
|
279
|
-
|
280
|
-
})(jQuery, window, document);
|
@@ -1,15 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
# -----------------------------------------------------------------------------
|
3
|
-
# ~/assets/themes/j1/modules/j1Scroll/js/j1scroll.min.js
|
4
|
-
# J1 core module for j1scroll
|
5
|
-
#
|
6
|
-
# Product/Info:
|
7
|
-
# https://jekyll.one
|
8
|
-
#
|
9
|
-
# Copyright (C) 2021 Juergen Adams
|
10
|
-
#
|
11
|
-
# J1 Template is licensed under the MIT License.
|
12
|
-
# For details, see https://jekyll.one
|
13
|
-
# -----------------------------------------------------------------------------
|
14
|
-
*/
|
15
|
-
(function(e,c,a,g){var d="j1Scroll",f={type:"infiniteScroll",scrollOffset:100,elementScroll:false,firstPage:2,lastPage:false,infoLastPage:false,loadStatus:false,onInit:function(){},onBeforeLoad:function(){},onAfterLoad:function(){}};function b(i,h){this.element=i;this.settings=e.extend({},f,h);this.settings.elementID="#"+this.element.id;this.init(this.settings)}e.extend(b.prototype,{init:function(i){var h=log4javascript.getLogger("j1Scroll");h.info("\ninitializing plugin: started");h.info("\nstate: started");if(i.elementScroll){this.scroller=this.element}else{this.scroller=c}if(i.loadStatus){var k='<div class="loader-ellips" style="display: none"> <span class="loader-ellips__dot"></span> <span class="loader-ellips__dot"></span> <span class="loader-ellips__dot"></span> <span class="loader-ellips__dot"></span> </div>';e(k).insertAfter(i.elementID)}if(i.infoLastPage){var j=i.lastPageInfo;e(j).insertAfter(i.elementID)}if(i.type==="infiniteScroll"){h.info("\nprocessing mode: infiniteScroll");h.info("\nloading items from path: "+i.path+"#");h.info("\nmonitoring element set to: "+this.scroller);this.registerScrollEvent(i)}h.info("\ninitializing plugin: finished");h.info("\nstate: finished")},isBottomReached:function(s){var n=this;var h,p;var m=e(s.elementID).height();if(n.settings.elementScroll){var j=e(c);var r=j.scrollTop();var i=j.height();var l=r+i-s.scrollOffset;var k=e(s.elementID);var o=k.offset().top+m;var q=k.height();h=o+q;return(o>=r&&o<l)||(h>r&&h<=l)||(q>i&&o<=r&&h>=l)}else{return(c.innerHeight+c.pageYOffset+s.scrollOffset>=a.body.offsetHeight)}},registerScrollEvent:function(i){var k=this;var h=log4javascript.getLogger("j1Scroll");h.info("\nscroll event: register");var j=function(m){var l=k.settings;if(k.isBottomReached(l)){if(l.firstPage>l.lastPage){h.info("\nlast page detected on: "+l.lastPage);c.removeEventListener("scroll",j);h.info("\nscroll event: removed");if(l.infoLastPage){k.infoLastPage(l)}return false}k.getNewPost(l)}};c.addEventListener("scroll",j);h.info("\nscroll event: registered")},getNewPost:function(i){var k=this;var h=log4javascript.getLogger("j1Scroll");h.info("\ntrigger loading ");if(this.itemsLoaded===false){return false}this.itemsLoaded=false;if(i.loadStatus){h.info("\nshow: spinner");e(".loader-ellips").show()}var j=new XMLHttpRequest();j.onreadystatechange=function(){if(j.readyState==XMLHttpRequest.DONE){if(j.status==200){i.firstPage++;var l=k.getChildItemsByAjaxHTML(i,j.responseText);k.appendNewItems(l);h.info("\nloading new items: successful");if(i.loadStatus){h.info("\nhide: spinner");e(".loader-ellips").hide()}k.itemsLoaded=true}else{if(i.loadStatus){h.info("\nhide: spinner");e(".loader-ellips").hide()}h.error("\nloading new items failed, HTTP response: "+j.status);k.itemsLoaded=false}}};h.info("\nloading new items from path: "+i.path+i.firstPage);j.open("GET",location.origin+i.path+i.firstPage+"/index.html",true);j.send()},getChildItemsByAjaxHTML:function(j,i){var l=a.createElement("html");var h=log4javascript.getLogger("j1Scroll");h.info("\nload new items");l.innerHTML=i;var k=l.querySelectorAll(j.elementID+" > *");return k},appendNewItems:function(h){var l=this;var i=log4javascript.getLogger("j1Scroll");var k=j1.getCookieNames();var j=j1.readCookie(k.user_translate);i.info("\nappend new items");h.forEach(function(m){l.element.appendChild(m)});if(j.translationEnabled){i.info("\ntranslation enabled: "+j.translationEnabled);i.warn("\nskipped processing of dropcaps")}else{i.info("\npost processing: createDropCap");j1.core.createDropCap()}},infoLastPage:function(i){var j=this;var h=log4javascript.getLogger("j1Scroll");h.info("\nshow: infoLastPage");e(".page-scroll-last").show()}});e.fn[d]=function(h){return this.each(function(){if(!e.data(this,"plugin_"+d)){e.data(this,"plugin_"+d,new b(this,h))}})}})(jQuery,window,document);
|
@@ -1,73 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
# -----------------------------------------------------------------------------
|
3
|
-
# ~/assets/themes/j1/modules/showOnScroll/js/showOnScroll.js
|
4
|
-
# Very simple J1 implementation for showOnScroll
|
5
|
-
#
|
6
|
-
# Product/Info:
|
7
|
-
# https://jekyll.one
|
8
|
-
#
|
9
|
-
# Copyright (C) 2021 Juergen Adams
|
10
|
-
#
|
11
|
-
# J1 Template is licensed under the MIT License.
|
12
|
-
# For details, see https://jekyll.one
|
13
|
-
# -----------------------------------------------------------------------------
|
14
|
-
*/
|
15
|
-
// -------------------------------------------------------------------------
|
16
|
-
// isInViewport:
|
17
|
-
// Detects if an element is visible in an viewport specified
|
18
|
-
// -------------------------------------------------------------------------
|
19
|
-
function isInViewport(elm, offset) {
|
20
|
-
// if the element doesn't exist, abort
|
21
|
-
if( elm.length == 0 ) {
|
22
|
-
return;
|
23
|
-
}
|
24
|
-
var $window = jQuery(window);
|
25
|
-
var viewport_top = $window.scrollTop();
|
26
|
-
var viewport_height = $window.height();
|
27
|
-
var viewport_bottom = viewport_top + viewport_height;
|
28
|
-
var $elm = jQuery(elm);
|
29
|
-
var top = $elm.offset().top + offset;
|
30
|
-
var height = $elm.height();
|
31
|
-
var bottom = top + height;
|
32
|
-
|
33
|
-
return (top >= viewport_top && top < viewport_bottom) ||
|
34
|
-
(bottom > viewport_top && bottom <= viewport_bottom) ||
|
35
|
-
(height > viewport_height && top <= viewport_top && bottom >= viewport_bottom);
|
36
|
-
}
|
37
|
-
|
38
|
-
// -----------------------------------------------------------------------------
|
39
|
-
// Initializer
|
40
|
-
// -----------------------------------------------------------------------------
|
41
|
-
$(document).ready( function() {
|
42
|
-
|
43
|
-
var showDelay = 700;
|
44
|
-
var yOffset = 500;
|
45
|
-
var logger = log4javascript.getLogger('j1ShowOnScroll');
|
46
|
-
|
47
|
-
// ---------------------------------------------------------------------------
|
48
|
-
// EventHandler: Service Panel
|
49
|
-
// ---------------------------------------------------------------------------
|
50
|
-
var eventHandler_service_panel = function (event) {
|
51
|
-
if (isInViewport ($('#home_service_panel'), yOffset)) {
|
52
|
-
logger.info('\n' + 'specified container is in view: home_service_panel');
|
53
|
-
$(".home_service_panel").show(showDelay);
|
54
|
-
logger.info('\n' + 'remove eventHandler');
|
55
|
-
window.removeEventListener('scroll', eventHandler_service_panel);
|
56
|
-
}
|
57
|
-
}
|
58
|
-
window.addEventListener('scroll', eventHandler_service_panel);
|
59
|
-
|
60
|
-
// ---------------------------------------------------------------------------
|
61
|
-
// EventHandler: Intro Panel
|
62
|
-
// ---------------------------------------------------------------------------
|
63
|
-
var eventHandler_intro_panel = function (event) {
|
64
|
-
if (isInViewport ($('#home_intro_panel'), yOffset)) {
|
65
|
-
logger.info('\n' + 'specified container is in view: home_intro_panel');
|
66
|
-
$(".home_intro_panel").show(showDelay);
|
67
|
-
logger.info('\n' + 'remove eventHandler');
|
68
|
-
window.removeEventListener('scroll', eventHandler_intro_panel);
|
69
|
-
}
|
70
|
-
}
|
71
|
-
window.addEventListener('scroll', eventHandler_intro_panel);
|
72
|
-
|
73
|
-
});
|
@@ -1,15 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
# -----------------------------------------------------------------------------
|
3
|
-
# ~/assets/themes/j1/modules/showOnScroll/js/showOnScroll.min.js
|
4
|
-
# J1 implementation for showOnScroll
|
5
|
-
#
|
6
|
-
# Product/Info:
|
7
|
-
# https://jekyll.one
|
8
|
-
#
|
9
|
-
# Copyright (C) 2021 Juergen Adams
|
10
|
-
#
|
11
|
-
# J1 Template is licensed under the MIT License.
|
12
|
-
# For details, see https://jekyll.one
|
13
|
-
# -----------------------------------------------------------------------------
|
14
|
-
*/
|
15
|
-
function isInViewport(g,f){if(g.length==0){return}var c=jQuery(window);var j=c.scrollTop();var b=c.height();var d=j+b;var e=jQuery(g);var h=e.offset().top+f;var i=e.height();var a=h+i;return(h>=j&&h<d)||(a>j&&a<=d)||(i>b&&h<=j&&a>=d)}$(document).ready(function(){var a=700;var e=500;var b=log4javascript.getLogger("j1.core.showOnScroll");var c=function(f){if(isInViewport($("#home_service_panel"),e)){b.info("\nThe specified container is in view: home_service_panel");$(".home_service_panel").show(a);window.removeEventListener("scroll",c)}};window.addEventListener("scroll",c);var d=function(f){if(isInViewport($("#home_intro_panel"),e)){b.info("\nThe specified container is in view: home_intro_panel");$(".home_intro_panel").show(a);window.removeEventListener("scroll",d)}};window.addEventListener("scroll",d)});
|