j1-template 2021.1.27 → 2021.1.28

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7a970178e8bb5d0f6a828c80831fc08072c9ac911e20de5dbe80ec5ea8c8c33a
4
- data.tar.gz: 81abe20ca6bf9a02e3472aae773f22b22140621df913baf67c4fce873d34510d
3
+ metadata.gz: 6d149f9e04f389fc677449fe654ff144b8536834de7cb6bc9f61c806df4ca858
4
+ data.tar.gz: 95ee34bd117d6c2b6a49274d21048be1cb5e530a6474d3055f006aa8e2197f34
5
5
  SHA512:
6
- metadata.gz: 989fcda9a0ac7933b179e4d379580a0be55782c2ed4886e4559aec2ed58a6361394ebc9c4f9c936990cdd10a49ebf2510d247867065f5bdbc1e32a7331b3519a
7
- data.tar.gz: 4b1e8d305b2428b87295d9c133cfc2599b6be469e8d4b8ad788f97ee45f7aba695c6a02d861b3504d22ae3310771a80793f1b5b6099e77c75a6d4da2cda4a1b5
6
+ metadata.gz: 2fa157e83398f1cb9fb4f1307706acc3e1a003566e8b07ff963cac9031846798bc4fc3f667e669678fe4ced86bd07e593ac7c166e0c4ff25662be7c98e27e9fe
7
+ data.tar.gz: f89a9f07ffccf9f204d2aac60fdb386deac13b1bf018e9e12fe5a6ad7b06e1df20c62c00999c4c2a9f82552e191f8b9ef8b173e01bc74ad28ff675e0ee57f75a
@@ -59,6 +59,7 @@
59
59
  {% assign page_rtext = page.rtext %}
60
60
  {% assign page_rtext_size = page.rtext_size %}
61
61
 
62
+
62
63
  {% comment %} rtext|size detection
63
64
  -------------------------------------------------------------------------------- {% endcomment %}
64
65
  {% if rtext %}
@@ -149,7 +150,6 @@
149
150
  </nav>
150
151
  {% endif %}
151
152
 
152
-
153
153
  </div>
154
154
 
155
155
  <div id="article_preview">
@@ -55,6 +55,7 @@
55
55
 
56
56
  {% assign previewer = blog_navigator_options.previewer %}
57
57
  {% assign paginate = paginator_options.pagination.enabled %}
58
+ {% assign scroller = blog_navigator_options.scroller %}
58
59
  {% assign rtext = template_config.typography.rtext %}
59
60
  {% assign page_rtext = page.rtext %}
60
61
  {% assign page_rtext_size = page.rtext_size %}
@@ -165,7 +166,8 @@
165
166
  <h1 id="previewer" class="notoc mt-4">{{previewer_headline}}</h1>
166
167
  </div>
167
168
 
168
- {% if paginator.total_pages > 1 %}
169
+ <!-- Add Jekyll Paginator if enabled: {{scroller}} -->
170
+ {% if scroller == 'jekyll' %} {% if paginator.total_pages > 1 %}
169
171
  <nav class="paginator mb-4">
170
172
  <ul class="pagination raised-z0">
171
173
  {% if paginator.previous_page %}
@@ -185,11 +187,11 @@
185
187
  {% endif %}
186
188
  </ul>
187
189
  </nav>
188
- {% endif %}
190
+ {% endif %} {% endif %}
189
191
 
190
- {% if blog_navigator_options.article_previewer.page_text.enabled %}
192
+ {% if scroller == 'jekyll' %} {% if blog_navigator_options.article_previewer.page_text.enabled %}
191
193
  <div class="view-description mb-3">{{previewer_description_text}}</div>
192
- {% endif %}
194
+ {% endif %} {% endif %}
193
195
 
194
196
  </div>
195
197
 
@@ -93,7 +93,7 @@
93
93
  </div>
94
94
  {% endif %}
95
95
 
96
- <ul class="timeline">
96
+ <ul id="timeline" class="timeline">
97
97
  {% for post in posts_collate %}
98
98
 
99
99
  {% assign place_image = false %}
@@ -101,6 +101,7 @@ layout: compress
101
101
 
102
102
  <!-- [INFO ] [j1.layout.default.html ] [ page generated: {{site.time}} ] -->
103
103
  <!-- [INFO ] [j1.layout.default.html ] [ environment detected as: {{environment}} ] -->
104
+ <!-- [INFO ] [j1.layout.default.html ] [ version detected as: {{template_version}} ] -->
104
105
 
105
106
  {% comment %} collect the head section (region head)
106
107
  ------------------------------------------------------------------------------ {% endcomment %}
@@ -7,7 +7,7 @@ regenerate: true
7
7
  {% comment %}
8
8
  # -----------------------------------------------------------------------------
9
9
  # ~/assets/themes/j1/adapter/js/j1Scroll.js
10
- # Liquid template to adapt j1Scroll
10
+ # Liquid template to adapt j1Scroll plugin
11
11
  #
12
12
  # Product/Info:
13
13
  # https://jekyll.one
@@ -21,6 +21,37 @@ regenerate: true
21
21
  # -----------------------------------------------------------------------------
22
22
  {% endcomment %}
23
23
 
24
+ {% comment %} Liquid procedures
25
+ -------------------------------------------------------------------------------- {% endcomment %}
26
+
27
+ {% comment %} Set global settings
28
+ -------------------------------------------------------------------------------- {% endcomment %}
29
+ {% assign environment = site.environment %}
30
+ {% assign template_version = site.version %}
31
+ {% assign asset_path = "/assets/themes/j1" %}
32
+
33
+ {% comment %} Process YML config data
34
+ ================================================================================ {% endcomment %}
35
+
36
+ {% comment %} Set config files
37
+ -------------------------------------------------------------------------------- {% endcomment %}
38
+ {% assign template_config = site.data.j1_config %}
39
+ {% assign blocks = site.data.blocks %}
40
+ {% assign modules = site.data.modules %}
41
+
42
+ {% comment %} Set config data (settings only)
43
+ -------------------------------------------------------------------------------- {% endcomment %}
44
+ {% assign scroll_settings = modules.j1scroll.settings %}
45
+
46
+ {% comment %} Set config options (settings only)
47
+ -------------------------------------------------------------------------------- {% endcomment %}
48
+ {% assign scroll_options = scroll_settings %}
49
+
50
+ {% assign production = false %}
51
+ {% if environment == 'prod' or environment == 'production' %}
52
+ {% assign production = true %}
53
+ {% endif %}
54
+
24
55
  /*
25
56
  # -----------------------------------------------------------------------------
26
57
  # ~/assets/themes/j1/adapter/js/j1Scroll.js
@@ -80,12 +111,10 @@ j1.adapter['j1Scroll'] = (function (j1, window) {
80
111
  // Initializer
81
112
  // -------------------------------------------------------------------------
82
113
  init: function (options) {
83
-
84
- // -----------------------------------------------------------------------
85
- // globals
86
- // -----------------------------------------------------------------------
87
- _this = j1.adapter.j1Scroll;
88
- logger = log4javascript.getLogger('j1.adapter.j1Scroll');
114
+ {% comment %} Set global variables
115
+ -------------------------------------------------------------------------- {% endcomment %}
116
+ _this = j1.adapter.j1Scroll;
117
+ logger = log4javascript.getLogger('j1.adapter.j1Scroll');
89
118
 
90
119
  // initialize state flag
91
120
  _this.setState('started');
@@ -100,60 +129,110 @@ j1.adapter['j1Scroll'] = (function (j1, window) {
100
129
  generated: '{{site.time}}'
101
130
  }, options);
102
131
 
103
- // -----------------------------------------------------------------------
104
- // j1Scroll initializer
105
- // -----------------------------------------------------------------------
132
+ {% comment %} Load module config from yml data (disabled)
133
+ --------------------------------------------------------------------------
134
+ // Load module DEFAULTS|CONFIG
135
+ //
136
+ /* eslint-disable */
137
+ moduleOptions = $.extend({}, {{scroll_options | replace: '=>', ':' | replace: 'nil', '""'}});
138
+ /* eslint-enable */
139
+
140
+ if (typeof settings !== 'undefined') {
141
+ moduleOptions = j1.mergeData(moduleOptions, settings);
142
+ }
143
+
144
+ // _this.initialize(moduleOptions);
145
+ -------------------------------------------------------------------------- {% endcomment %}
146
+
147
+ _this.initialize();
148
+
149
+ _this.setState('finished');
150
+ logger.info('\n' + 'state: ' + _this.getState());
151
+ logger.info('\n' + 'module initialized successfully');
152
+ }, // END init
153
+
154
+ // -----------------------------------------------------------------------
155
+ // Generate scrollers configured/enabled
156
+ // -----------------------------------------------------------------------
157
+ initialize: function () {
158
+ logger = log4javascript.getLogger('j1.adapter.j1Scroll');
159
+
106
160
  var log_text = '\n' + 'j1Scroll is being initialized';
107
161
  logger.info(log_text);
108
162
 
163
+ // START generate scrollers
109
164
  var dependencies_met_page_ready = setInterval (function (options) {
110
165
  if (j1.getState() === 'finished') {
111
- var log_text = '\n' + 'j1Scroll is being initialized';
112
- logger.info(log_text);
113
166
 
114
- var postWrapperId = '#home_news_panel-scroll-group';
115
- var paginatePath = '/assets/data/news_panel_posts/page';
167
+ {% for item in scroll_options.scrollers %} {% if item.scroller.enabled %}
168
+
169
+ {% assign scroller_id = item.scroller.id %}
170
+ {% assign container = item.scroller.container %}
171
+ {% assign path = item.scroller.path %}
172
+ {% assign elementScroll = item.scroller.elementScroll %}
173
+ {% assign scrollOffset = item.scroller.scrollOffset %}
174
+ {% assign lastPage = item.scroller.lastPage %}
175
+ {% assign infoLastPage = item.scroller.infoLastPage %}
116
176
 
177
+ // scroller_id: {{ scroller_id }}
178
+ var log_text = '\n' + 'j1Scroll is being initialized on: ' + '{{scroller_id}}';
179
+ logger.info(log_text);
180
+
181
+ {% comment %} Unused options
182
+ ----------------------------------------------------------------------
117
183
  // status: '.page-scroll-last',
118
184
  // firstPage: 2,
119
185
  // onInit: function(){}, // Callback after plugin has loaded
120
186
  // onBeforeLoad: function(link){}, // Callback before new content is loaded
121
187
  // onAfterLoad: function(html){} // Callback after new content has been loaded
122
-
123
- $(postWrapperId).j1Scroll({
124
- path: paginatePath,
125
- elementScroll: false,
126
- scrollThreshold: 300,
127
- lastPage: 4,
128
- infoLastPage: true,
129
- });
130
-
131
- $('.list-group').on( 'load.j1Scroll', function( event, body, path, response ) {
132
- var logger = log4javascript.getLogger('j1.adapter.infiniteScroll');
133
- var log_text = `\n loaded data from path: ${path}`;
134
- logger.info(log_text);
135
-
136
- var log_text = "\n initialize backdrops on load";
137
- logger.info(log_text);
138
-
139
- // initialize backdrops
140
- j1.core.createDropCap();
141
-
142
- });
143
-
144
- $('.list-group').on( 'request.j1Scroll', function( event, path, fetchPromise ) {
145
- var logger = log4javascript.getLogger('j1.adapter.infiniteScroll');
146
- var log_text = `\n request for the next page to be loaded from path: ${path}`;
147
- logger.info(log_text);
148
- });
149
-
188
+ ---------------------------------------------------------------------- {% endcomment %}
189
+
190
+ var container = '#' + '{{container}}';
191
+ var pagePath = '{{path}}';
192
+
193
+ // Create an j1Scroll instance if container exists
194
+ if ($(container).length) {
195
+ $(container).j1Scroll({
196
+ path: pagePath,
197
+ elementScroll: {{elementScroll}},
198
+ scrollOffset: {{scrollOffset}},
199
+ lastPage: {{lastPage}},
200
+ infoLastPage: {{infoLastPage}},
201
+ });
202
+ }
203
+
204
+ {% comment %} Unused callbacks (disabled)
205
+ ----------------------------------------------------------------------
206
+ // $('.list-group').on( 'load.j1Scroll', function( event, body, path, response ) {
207
+ // var logger = log4javascript.getLogger('j1.adapter.infiniteScroll');
208
+ // var log_text = `\n loaded data from path: ${path}`;
209
+ // logger.info(log_text);
210
+ //
211
+ // var log_text = "\n initialize backdrops on load";
212
+ // logger.info(log_text);
213
+ //
214
+ // // initialize backdrops
215
+ // j1.core.createDropCap();
216
+ //
217
+ // });
218
+ //
219
+ // $('.list-group').on( 'request.j1Scroll', function( event, path, fetchPromise ) {
220
+ // var logger = log4javascript.getLogger('j1.adapter.infiniteScroll');
221
+ // var log_text = `\n request for the next page to be loaded from path: ${path}`;
222
+ // logger.info(log_text);
223
+ // });
224
+ ---------------------------------------------------------------------- {% endcomment %}
225
+
226
+ // END scroller_id: {{ scroller_id }}
227
+ {% endif %} {% endfor %}
150
228
  clearInterval(dependencies_met_page_ready);
151
229
  }
152
230
  });
153
- }, // END init
231
+ // END generate scrollers
232
+ },
154
233
 
155
234
  // -------------------------------------------------------------------------
156
- // messageHandler: MessageHandler for J1 CookieConsent module
235
+ // messageHandler: MessageHandler for j1Scroll module
157
236
  // Manage messages send from other J1 modules
158
237
  // -------------------------------------------------------------------------
159
238
  messageHandler: function (sender, message) {
@@ -12,4 +12,4 @@
12
12
  # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE
13
13
  # -----------------------------------------------------------------------------
14
14
  */
15
- .list-group-item{width:96%;margin-right:1%!important}@media only screen and (min-width:576px){.list-group-item.items-auto{width:48.3%}.list-group-item.items-1{width:96%}.list-group-item.items-2{width:48.3%}.list-group-item.items-3{width:48.3%}.list-group-item.items-4{width:48.3%}}@media only screen and (min-width:768px){.list-group-item.items-auto{width:31.333%}.list-group-item.items-1{width:96%}.list-group-item.items-2{width:48.3%}.list-group-item.items-3{width:48.3%}.list-group-item.items-4{width:48.3%}}@media only screen and (min-width:992px){.list-group-item.items-auto{width:23.8%}.list-group-item.items-1{width:96%}.list-group-item.items-2{width:48.3%}.list-group-item.items-3{width:31.333%}.list-group-item.items-4{width:23.8%}}.page-load-status,.page-scroll-last{display:none;padding-top:.5rem;border-top:1px dotted #212121;color:#777}span.infinite-scroll-last{border-bottom-width:1px;border-bottom-style:dotted;border-bottom-color:#212121;display:inline-block;margin:0 0 -1px 0;padding:10px 3px}.loader-ellips{font-size:20px;position:relative;width:4em;height:1em;margin:10px auto}.loader-ellips__dot{display:block;width:1em;height:1em;border-radius:.5em;background:#555;position:absolute;animation-duration:.5s;animation-timing-function:ease;animation-iteration-count:infinite}.loader-ellips__dot:nth-child(1),.loader-ellips__dot:nth-child(2){left:0}.loader-ellips__dot:nth-child(3){left:1.5em}.loader-ellips__dot:nth-child(4){left:3em}@keyframes reveal{from{transform:scale(0.001)}to{transform:scale(1)}}@keyframes slide{to{transform:translateX(1.5em)}}.loader-ellips__dot:nth-child(1){animation-name:reveal}.loader-ellips__dot:nth-child(2),.loader-ellips__dot:nth-child(3){animation-name:slide}.loader-ellips__dot:nth-child(4){animation-name:reveal;animation-direction:reverse}
15
+ .page-load-status,.page-scroll-last{display:none;padding-top:.5rem;border-top:1px dotted #212121;color:#777}span.infinite-scroll-last{border-bottom-width:1px;border-bottom-style:dotted;border-bottom-color:#212121;display:inline-block;margin:0 0 -1px 0;padding:10px 3px}.loader-ellips{font-size:20px;position:relative;width:4em;height:1em;margin:10px auto}.loader-ellips__dot{display:block;width:1em;height:1em;border-radius:.5em;background:#555;position:absolute;animation-duration:.5s;animation-timing-function:ease;animation-iteration-count:infinite}.loader-ellips__dot:nth-child(1),.loader-ellips__dot:nth-child(2){left:0}.loader-ellips__dot:nth-child(3){left:1.5em}.loader-ellips__dot:nth-child(4){left:3em}@keyframes reveal{from{transform:scale(0.001)}to{transform:scale(1)}}@keyframes slide{to{transform:translateX(1.5em)}}.loader-ellips__dot:nth-child(1){animation-name:reveal}.loader-ellips__dot:nth-child(2),.loader-ellips__dot:nth-child(3){animation-name:slide}.loader-ellips__dot:nth-child(4){animation-name:reveal;animation-direction:reverse}
@@ -1,252 +1,273 @@
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
- */
15
-
16
- // the semi-colon before function invocation is a SAFETY method against
17
- // concatenated scripts and/or other plugins which may NOT be closed
18
- // properly.
19
- //
20
- ;(function($, window, document, undefined) {
21
-
22
- 'use strict';
23
-
24
- // Create the defaults
25
- var pluginName = 'j1Scroll',
26
- defaults = {
27
- type: 'infiniteScroll',
28
- scrollThreshold: 400,
29
- elementScroll: false,
30
- firstPage: 2,
31
- lastPage: false,
32
- loadStatus: true,
33
- onInit: function (){}, // callback after plugin has initialized
34
- onBeforeLoad: function (){}, // callback before new items are loaded
35
- onAfterLoad: function (){} // callback after new items are loaded
36
- };
37
-
38
- // Plugin constructor
39
- function Plugin (element, options) {
40
- this.element = element;
41
- this.settings = $.extend( {}, defaults, options);
42
- this.settings.elementID = '#' + this.element["id"]
43
-
44
- // call the initializer
45
- this.init(this.settings);
46
- }
47
-
48
- // Avoid Plugin.prototype conflicts
49
- $.extend(Plugin.prototype, {
50
- // -------------------------------------------------------------------------
51
- // init: initializer
52
- // -------------------------------------------------------------------------
53
- init: function(options) {
54
- var logger = log4javascript.getLogger('j1Scroll');
55
-
56
- logger.info('\n' + 'initializing plugin: started');
57
- logger.info('\n' + 'state: started');
58
-
59
- if (options.loadStatus) {
60
- 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>';
61
- $(spinner).insertAfter(options.elementID);
62
- }
63
-
64
- if (options.infoLastPage ) {
65
- var scroll_last_en = 'More articles can be found with the ';
66
- var scroll_last_de = 'Weitere Artikel finden Sie im ';
67
- var scroll_last;
68
-
69
- if (document.documentElement.lang === 'en') {
70
- scroll_last = scroll_last_en;
71
- } else if (document.documentElement.lang === 'de') {
72
- scroll_last = scroll_last_de;
73
- } else {
74
- scroll_last = scroll_last_en;
75
- }
76
-
77
- if ( this.settings.elementScroll ) {
78
- this.scroller = this.element;
79
- } else {
80
- this.scroller = window;
81
- }
82
- var message = '<div class="page-scroll-last"><p class="infinite-scroll-last">' + scroll_last + '<a href="/pages/public/blog/navigator/">Blog Navigator</a></p> </div>';
83
- $(message).insertAfter(options.elementID);
84
- }
85
-
86
-
87
- // initialize infinite scroll
88
- if ( options.type === 'infiniteScroll') {
89
- logger.info('\n' + 'processing mode: infiniteScroll');
90
- logger.info('\n' + 'loading items from path: ' + options.path + "#");
91
- logger.info('\n' + 'monitoring element set to: ' + this.scroller);
92
- this.registerScrollEvent(options);
93
- }
94
- logger.info('\n' + 'initializing plugin: finished');
95
- logger.info('\n' + 'state: finished');
96
- },
97
- // -------------------------------------------------------------------------
98
- // bottomReached: detect final scroll position
99
- // -------------------------------------------------------------------------
100
- isBottomReached: function (options) {
101
- var _this = this;
102
- let bottom, scrollY;
103
- var clientHeight = $(options.elementID).height();
104
-
105
- if ( _this.settings.elementScroll ) {
106
- var $window = $(window);
107
- var viewport_top = $window.scrollTop();
108
- var viewport_height = $window.height();
109
- var viewport_bottom = viewport_top + viewport_height;
110
- var $elm = $(options.elementID);
111
- var top = $elm.offset().top + clientHeight;
112
- var height = $elm.height();
113
- // bottom = top + height - options.scrollThreshold
114
- bottom = top + height;
115
-
116
- return (top >= viewport_top && top < viewport_bottom) ||
117
- (bottom > viewport_top && bottom <= viewport_bottom) ||
118
- (height > viewport_height && top <= viewport_top && bottom >= viewport_bottom);
119
- } else {
120
- return (window.innerHeight + window.pageYOffset + options.scrollThreshold >= document.body.offsetHeight);
121
- }
122
- },
123
- // -------------------------------------------------------------------------
124
- // detectScroll: EventHandler to load new items for infinite scroll
125
- // if final scroll position reached
126
- // -------------------------------------------------------------------------
127
- registerScrollEvent: function (options) {
128
- var _this = this;
129
- var logger = log4javascript.getLogger('j1Scroll');
130
-
131
- logger.info('\n' + 'scroll event: register');
132
-
133
- var eventHandler_onscroll = function (event) {
134
- var options = _this.settings;
135
-
136
- if (_this.isBottomReached(options)) {
137
- if (options.firstPage > options.lastPage ) {
138
- logger.info('\n' + 'last page detected on: ' + options.lastPage);
139
- window.removeEventListener('scroll', eventHandler_onscroll);
140
- logger.info('\n' + 'scroll event: removed');
141
-
142
- if (options.infoLastPage ) {
143
- _this.infoLastPage(options);
144
- }
145
- return false;
146
- }
147
- _this.getNewPost(options);
148
- }
149
- }
150
- window.addEventListener('scroll', eventHandler_onscroll);
151
-
152
- logger.info('\n' + 'scroll event: registered');
153
- },
154
- // -------------------------------------------------------------------------
155
- // getNewPost: load new items (from current path)
156
- // Note: loader flag prevents to load items if AJAX load in progress
157
- // is NOT finished
158
- // -------------------------------------------------------------------------
159
- getNewPost: function (options) {
160
- var _this = this;
161
- var logger = log4javascript.getLogger('j1Scroll');
162
-
163
- // display spinner while loading
164
- if (options.loadStatus) {
165
- $('.loader-ellips').show();
166
- }
167
-
168
- // initialze loader flag
169
- if (this.itemsLoaded === false) return false;
170
-
171
- // set loader flag (false == not loaded)
172
- this.itemsLoaded = false;
173
- var xmlhttp = new XMLHttpRequest();
174
- xmlhttp.onreadystatechange = function () {
175
- if (xmlhttp.readyState == XMLHttpRequest.DONE) {
176
- if (xmlhttp.status == 200) {
177
- options.firstPage++;
178
- var childItems = _this.getChildItemsByAjaxHTML(options, xmlhttp.responseText);
179
- _this.appendNewItems(childItems);
180
- // set loader flag (true == loaded)
181
- logger.info('\n' + 'loading new items: successful');
182
-
183
- // hide the spinner after loading
184
- if (options.loadStatus) {
185
- $('.loader-ellips').hide();
186
- }
187
- // set loader flag (true == loaded)
188
- return _this.itemsLoaded = true;
189
- } else {
190
- logger.error('\n' + 'loading new items failed, HTTP response: ' + xmlhttp.status );
191
- // set loader flag (true == loaded)
192
- return _this.itemsLoaded = false;
193
- }
194
- }
195
- };
196
- logger.info('\n' + 'loading new items from path: ' + options.path + options.firstPage);
197
- xmlhttp.open("GET", location.origin + options.path + options.firstPage + '/index.html', true);
198
- xmlhttp.send();
199
- },
200
- // -------------------------------------------------------------------------
201
- // getChildItemsByAjaxHTML: extract items from page loaded
202
- // -------------------------------------------------------------------------
203
- getChildItemsByAjaxHTML: function (options, HTMLText) {
204
- var newHTML = document.createElement('html');
205
- var logger = log4javascript.getLogger('j1Scroll');
206
-
207
- logger.info('\n' + 'load new items');
208
- newHTML.innerHTML = HTMLText;
209
- var childItems = newHTML.querySelectorAll(options.elementID + ' > *');
210
- return childItems;
211
- },
212
- // -------------------------------------------------------------------------
213
- // appendNewItems: append items and run post processing
214
- // -------------------------------------------------------------------------
215
- appendNewItems: function (items) {
216
- var _this = this;
217
- var logger = log4javascript.getLogger('j1Scroll');
218
-
219
- logger.info('\n' + 'append new items');
220
- items.forEach(function (item) {
221
- _this.element.appendChild(item);
222
- });
223
-
224
- logger.info('\n' + 'post processing: createDropCap');
225
- // initialize backdrops
226
- j1.core.createDropCap();
227
- },
228
- // -------------------------------------------------------------------------
229
- // getNewPost: load/append new items
230
- // Note: loader flag prevents to load items if AJAX load in progress
231
- // is NOT finished
232
- // -------------------------------------------------------------------------
233
- infoLastPage: function (options) {
234
- var _this = this;
235
- var logger = log4javascript.getLogger('j1Scroll');
236
-
237
- logger.info('\n' + 'post processing: infoLastPage');
238
- $('.page-scroll-last').show();
239
- }
240
- }); // END prototype
241
-
242
- // wrapper around the constructor to prevent multiple instantiations
243
- $.fn [pluginName] = function(options) {
244
- return this.each(function() {
245
- if (!$.data( this, "plugin_" + pluginName)) {
246
- $.data(this, "plugin_" +
247
- pluginName, new Plugin(this, options));
248
- }
249
- });
250
- };
251
-
252
- })(jQuery, window, document);
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
+ */
15
+
16
+ // the semi-colon before function invocation is a SAFETY method against
17
+ // concatenated scripts and/or other plugins which may NOT be closed
18
+ // properly.
19
+ //
20
+ ;(function($, window, document, undefined) {
21
+
22
+ 'use strict';
23
+
24
+ // Create the defaults
25
+ var pluginName = 'j1Scroll',
26
+ defaults = {
27
+ type: 'infiniteScroll',
28
+ scrollOffset: 400,
29
+ elementScroll: false,
30
+ firstPage: 2,
31
+ lastPage: false,
32
+ loadStatus: true,
33
+ onInit: function (){}, // callback after plugin has initialized
34
+ onBeforeLoad: function (){}, // callback before new items are loaded
35
+ onAfterLoad: function (){} // callback after new items are loaded
36
+ };
37
+
38
+ // Plugin constructor
39
+ function Plugin (element, options) {
40
+ this.element = element;
41
+ this.settings = $.extend( {}, defaults, options);
42
+ this.settings.elementID = '#' + this.element["id"]
43
+
44
+ // call the initializer
45
+ this.init(this.settings);
46
+ }
47
+
48
+ // Avoid Plugin.prototype conflicts
49
+ $.extend(Plugin.prototype, {
50
+ // -------------------------------------------------------------------------
51
+ // init: initializer
52
+ // -------------------------------------------------------------------------
53
+ init: function(options) {
54
+ var logger = log4javascript.getLogger('j1Scroll');
55
+
56
+ logger.info('\n' + 'initializing plugin: started');
57
+ logger.info('\n' + 'state: started');
58
+
59
+ if (options.loadStatus) {
60
+ 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>';
61
+ $(spinner).insertAfter(options.elementID);
62
+ }
63
+
64
+ if (options.infoLastPage ) {
65
+ var scroll_last_en = 'More articles can be found with the ';
66
+ var scroll_last_de = 'Weitere Artikel finden Sie im ';
67
+ var scroll_last;
68
+
69
+ if (document.documentElement.lang === 'en') {
70
+ scroll_last = scroll_last_en;
71
+ } else if (document.documentElement.lang === 'de') {
72
+ scroll_last = scroll_last_de;
73
+ } else {
74
+ scroll_last = scroll_last_en;
75
+ }
76
+
77
+ if ( this.settings.elementScroll ) {
78
+ this.scroller = this.element;
79
+ } else {
80
+ this.scroller = window;
81
+ }
82
+ var message = '<div class="page-scroll-last"><p class="infinite-scroll-last">' + scroll_last + '<a href="/pages/public/blog/navigator/">Blog Navigator</a></p> </div>';
83
+ $(message).insertAfter(options.elementID);
84
+ }
85
+
86
+ // initialize infinite scroll
87
+ if ( options.type === 'infiniteScroll') {
88
+ logger.info('\n' + 'processing mode: infiniteScroll');
89
+ logger.info('\n' + 'loading items from path: ' + options.path + "#");
90
+ logger.info('\n' + 'monitoring element set to: ' + this.scroller);
91
+ this.registerScrollEvent(options);
92
+ }
93
+ logger.info('\n' + 'initializing plugin: finished');
94
+ logger.info('\n' + 'state: finished');
95
+ },
96
+ // -------------------------------------------------------------------------
97
+ // bottomReached: detect final scroll position
98
+ // NOTE: the calculation for BOTTOM position is different for
99
+ // elementScroll and windowScroll. For elementScroll, the
100
+ // trigger isBottomReached is TRUE, if the scroll position has
101
+ // the end of the container PLUS a given scrollOffset.
102
+ // For windowScroll, the trigger isBottomReached is TRUE, if
103
+ // the scroll position has the end of the window MINUS
104
+ // a given scrollOffset.
105
+ // -------------------------------------------------------------------------
106
+ isBottomReached: function (options) {
107
+ var _this = this;
108
+ var bottom, scrollY;
109
+ var clientHeight = $(options.elementID).height();
110
+
111
+ if ( _this.settings.elementScroll ) {
112
+ // check scroll position of the container items are to be added
113
+ var $window = $(window);
114
+ var viewport_top = $window.scrollTop();
115
+ var viewport_height = $window.height();
116
+ var viewport_bottom = viewport_top + viewport_height - options.scrollOffset;
117
+ var $elm = $(options.elementID);
118
+ var top = $elm.offset().top + clientHeight;
119
+ var height = $elm.height();
120
+ bottom = top + height;
121
+
122
+
123
+ return (top >= viewport_top && top < viewport_bottom) ||
124
+ (bottom > viewport_top && bottom <= viewport_bottom) ||
125
+ (height > viewport_height && top <= viewport_top && bottom >= viewport_bottom);
126
+ } else {
127
+ // check scroll position of the (overall) window
128
+ return (window.innerHeight + window.pageYOffset + options.scrollOffset >= document.body.offsetHeight);
129
+ }
130
+ },
131
+ // -------------------------------------------------------------------------
132
+ // detectScroll: EventHandler to load new items for infinite scroll
133
+ // if final scroll position reached
134
+ // -------------------------------------------------------------------------
135
+ registerScrollEvent: function (options) {
136
+ var _this = this;
137
+ var logger = log4javascript.getLogger('j1Scroll');
138
+
139
+ logger.info('\n' + 'scroll event: register');
140
+
141
+ var eventHandler_onscroll = function (event) {
142
+ var options = _this.settings;
143
+
144
+ if (_this.isBottomReached(options)) {
145
+ if (options.firstPage > options.lastPage ) {
146
+ logger.info('\n' + 'last page detected on: ' + options.lastPage);
147
+ window.removeEventListener('scroll', eventHandler_onscroll);
148
+ logger.info('\n' + 'scroll event: removed');
149
+
150
+ if (options.infoLastPage ) {
151
+ _this.infoLastPage(options);
152
+ }
153
+ return false;
154
+ }
155
+ _this.getNewPost(options);
156
+ }
157
+ }
158
+ window.addEventListener('scroll', eventHandler_onscroll);
159
+
160
+ logger.info('\n' + 'scroll event: registered');
161
+ },
162
+ // -------------------------------------------------------------------------
163
+ // getNewPost: load new items (from current path)
164
+ // Note: loader flag prevents to load items if AJAX load in progress
165
+ // is NOT finished
166
+ // -------------------------------------------------------------------------
167
+ getNewPost: function (options) {
168
+ var _this = this;
169
+ var logger = log4javascript.getLogger('j1Scroll');
170
+
171
+ logger.info('\n' + 'trigger loading ');
172
+
173
+ // initialze loader flag
174
+ if (this.itemsLoaded === false) return false;
175
+
176
+ // set loader flag (false == not loaded)
177
+ this.itemsLoaded = false;
178
+
179
+ // display spinner while loading
180
+ if (options.loadStatus) {
181
+ logger.info('\n' + 'show: spinner');
182
+ $('.loader-ellips').show();
183
+ }
184
+
185
+ var xmlhttp = new XMLHttpRequest();
186
+ xmlhttp.onreadystatechange = function () {
187
+ if (xmlhttp.readyState == XMLHttpRequest.DONE) {
188
+ if (xmlhttp.status == 200) {
189
+ options.firstPage++;
190
+ var childItems = _this.getChildItemsByAjaxHTML(options, xmlhttp.responseText);
191
+ _this.appendNewItems(childItems);
192
+
193
+ logger.info('\n' + 'loading new items: successful');
194
+
195
+ // hide the spinner after loading
196
+ if (options.loadStatus) {
197
+ logger.info('\n' + 'hide: spinner');
198
+ $('.loader-ellips').hide();
199
+ }
200
+
201
+ // set loader flag (true == loaded)
202
+ return _this.itemsLoaded = true;
203
+ } else {
204
+ // hide the spinner
205
+ if (options.loadStatus) {
206
+ logger.info('\n' + 'hide: spinner');
207
+ $('.loader-ellips').hide();
208
+ }
209
+
210
+ logger.error('\n' + 'loading new items failed, HTTP response: ' + xmlhttp.status );
211
+ // set loader flag (true == loaded)
212
+ return _this.itemsLoaded = false;
213
+ }
214
+ }
215
+ };
216
+ logger.info('\n' + 'loading new items from path: ' + options.path + options.firstPage);
217
+ xmlhttp.open("GET", location.origin + options.path + options.firstPage + '/index.html', true);
218
+ xmlhttp.send();
219
+
220
+ },
221
+ // -------------------------------------------------------------------------
222
+ // getChildItemsByAjaxHTML: extract items from page loaded
223
+ // -------------------------------------------------------------------------
224
+ getChildItemsByAjaxHTML: function (options, HTMLText) {
225
+ var newHTML = document.createElement('html');
226
+ var logger = log4javascript.getLogger('j1Scroll');
227
+
228
+ logger.info('\n' + 'load new items');
229
+ newHTML.innerHTML = HTMLText;
230
+ var childItems = newHTML.querySelectorAll(options.elementID + ' > *');
231
+ return childItems;
232
+ },
233
+ // -------------------------------------------------------------------------
234
+ // appendNewItems: append items and run post processing
235
+ // -------------------------------------------------------------------------
236
+ appendNewItems: function (items) {
237
+ var _this = this;
238
+ var logger = log4javascript.getLogger('j1Scroll');
239
+
240
+ logger.info('\n' + 'append new items');
241
+ items.forEach(function (item) {
242
+ _this.element.appendChild(item);
243
+ });
244
+
245
+ logger.info('\n' + 'post processing: createDropCap');
246
+ // initialize backdrops
247
+ j1.core.createDropCap();
248
+ },
249
+ // -------------------------------------------------------------------------
250
+ // getNewPost: load/append new items
251
+ // Note: loader flag prevents to load items if AJAX load in progress
252
+ // is NOT finished
253
+ // -------------------------------------------------------------------------
254
+ infoLastPage: function (options) {
255
+ var _this = this;
256
+ var logger = log4javascript.getLogger('j1Scroll');
257
+
258
+ logger.info('\n' + 'show: infoLastPage');
259
+ $('.page-scroll-last').show();
260
+ }
261
+ }); // END prototype
262
+
263
+ // wrapper around the constructor to prevent multiple instantiations
264
+ $.fn [pluginName] = function(options) {
265
+ return this.each(function() {
266
+ if (!$.data( this, "plugin_" + pluginName)) {
267
+ $.data(this, "plugin_" +
268
+ pluginName, new Plugin(this, options));
269
+ }
270
+ });
271
+ };
272
+
273
+ })(jQuery, window, document);
@@ -0,0 +1,16 @@
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
+
16
+ (function(e,c,a,g){var d="j1Scroll",f={type:"infiniteScroll",scrollOffset:400,elementScroll:false,firstPage:2,lastPage:false,loadStatus:true,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.loadStatus){var n='<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(n).insertAfter(i.elementID)}if(i.infoLastPage){var m="More articles can be found with the ";var j="Weitere Artikel finden Sie im ";var l;if(a.documentElement.lang==="en"){l=m}else{if(a.documentElement.lang==="de"){l=j}else{l=m}}if(this.settings.elementScroll){this.scroller=this.element}else{this.scroller=c}var k='<div class="page-scroll-last"><p class="infinite-scroll-last">'+l+'<a href="/pages/public/blog/navigator/">Blog Navigator</a></p> </div>';e(k).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()}return 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);return 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 j=this;var i=log4javascript.getLogger("j1Scroll");i.info("\nappend new items");h.forEach(function(k){j.element.appendChild(k)});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);
data/lib/j1/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module J1
2
- VERSION = '2021.1.27'
2
+ VERSION = '2021.1.28'
3
3
  end
@@ -53,7 +53,7 @@ gem 'jekyll', '~> 4.2'
53
53
 
54
54
  # Theme Rubies, default: J1 Template (NOT used for the development system)
55
55
  #
56
- gem 'j1-template', '~> 2021.1.27'
56
+ gem 'j1-template', '~> 2021.1.28'
57
57
 
58
58
  # ------------------------------------------------------------------------------
59
59
  # PRODUCTION: Gem needed for the Jekyll and J1 prod environment
@@ -53,7 +53,7 @@ environment: production
53
53
  # ------------------------------------------------------------------------------
54
54
  # Sets the build version of J1 Template Gem
55
55
  #
56
- version: 2021.1.27
56
+ version: 2021.1.28
57
57
 
58
58
  # version
59
59
  # ------------------------------------------------------------------------------
@@ -27,6 +27,7 @@ settings:
27
27
 
28
28
  post_image: /assets/images/modules/attics/christa-dodoo-1920x1280.jpg
29
29
  previewer: timeline
30
+ scroller: j1scroll # jekyll | j1scroll
30
31
 
31
32
  # ------------------------------------------------------------------------------
32
33
  # END config
@@ -1,5 +1,5 @@
1
1
  # ------------------------------------------------------------------------------
2
- # ~/_data/modules/infiniteScroll.yml
2
+ # ~/_data/modules/j1Scroll.yml
3
3
  # User configuration for J1 infiniteScroll
4
4
  #
5
5
  # Product/Info:
@@ -16,9 +16,9 @@
16
16
  #
17
17
  about_config:
18
18
 
19
- title: infiniteScroll
19
+ title:
20
20
  scope: User settings
21
- location: _data/modules/infiniteScroll.yml
21
+ location: _data/modules/j1Scroll.yml
22
22
 
23
23
  # ------------------------------------------------------------------------------
24
24
  # User configuration settings
@@ -27,40 +27,31 @@ settings:
27
27
  enabled: true
28
28
 
29
29
  scrollers:
30
-
31
- # ==========================================================================
32
- # Image Galleries
33
- #
34
-
35
30
  # --------------------------------------------------------------------------
36
31
  # News Panel
37
32
  #
38
33
  - scroller:
39
34
  enabled: true
40
35
  id: home_news_panel
41
- data_path: /assets/data/news_panel_posts
42
- pages: "page${pageNumber}/index.html"
36
+ container: home_news_panel-scroll-group
37
+ path: /assets/data/news_panel_posts/page
38
+ elementScroll: true # false = window, true = container
39
+ scrollOffset: 100
43
40
  lastPage: 4
44
- history: false
45
- scrollThreshold: 10
46
- scrollOffset: 470
47
- checkLastPage: true
48
- check_status: true
41
+ infoLastPage: true
49
42
 
50
43
  # --------------------------------------------------------------------------
51
- # Article Navigator
44
+ # Blog Navigator Preview
52
45
  #
53
46
  - scroller:
54
47
  enabled: true
55
- id: article_navigator
56
- data_path: /assets/data/article_navigator
57
- pages: "page${pageNumber}/index.html"
58
- lastPage: 4
59
- history: false
60
- scrollThreshold: 10
61
- scrollOffset: 470
62
- checkLastPage: true
63
- check_status: true
48
+ id: blog_navigator_preview
49
+ container: timeline
50
+ path: /pages/public/blog/navigator/page
51
+ elementScroll: true
52
+ scrollOffset: 200
53
+ lastPage: 6
54
+ infoLastPage: false
64
55
 
65
56
  # ------------------------------------------------------------------------------
66
57
  # END config
@@ -1261,30 +1261,8 @@ resources:
1261
1261
  init_function: [ j1.adapter.rtextResizer.init ]
1262
1262
 
1263
1263
  # ----------------------------------------------------------------------------
1264
- # infiniteScroll
1265
- # NOTE: https://infinite-scroll.com/
1264
+ # showOnScroll
1266
1265
  #
1267
- - name: infiniteScroll
1268
- resource:
1269
- id: infinitescroll
1270
- enabled: true
1271
- comment: J1 infiniteScroll
1272
- region: head
1273
- layout: [ all ]
1274
- required: ondemand # always | ondemand
1275
- preload: false # property currently unused
1276
- script_load: defer
1277
- dependencies: false
1278
- pass_init_data: false
1279
- data:
1280
- css: [ modules/infiniteScroll/css/theme/uno ]
1281
- files: [ adapter/js/infiniteScroll.js ]
1282
- js: [ modules/infiniteScroll/js/infiniteScroll ]
1283
- init_function: [ j1.adapter.infiniteScroll.init ]
1284
-
1285
- # ----------------------------------------------------------------------------
1286
- # infiniteScroll
1287
- # NOTE: https://infinite-scroll.com/
1288
1266
  #
1289
1267
  - name: showOnScroll
1290
1268
  resource:
@@ -1322,11 +1300,8 @@ resources:
1322
1300
  pass_init_data: false
1323
1301
  data:
1324
1302
  css: [ modules/j1Scroll/css/theme/uno ]
1325
- files: [
1326
- modules/j1Scroll/js/j1scroll.js,
1327
- adapter/js/j1scroll.js
1328
- ]
1329
- js: []
1303
+ files: [ adapter/js/j1scroll.js ]
1304
+ js: [ modules/j1Scroll/js/j1scroll ]
1330
1305
  init_function: [ j1.adapter.j1Scroll.init ]
1331
1306
 
1332
1307
  # ------------------------------------------------------------------------------
@@ -423,7 +423,7 @@ end::tables[]
423
423
  // -----------------------------------------------------------------------------
424
424
  tag::products[]
425
425
  :j1--license: MIT License
426
- :j1--version: 2021.1.27
426
+ :j1--version: 2021.1.28
427
427
  :j1--site-name: Jekyll One
428
428
  end::products[]
429
429
 
@@ -364,6 +364,6 @@ end
364
364
 
365
365
  module Jekyll
366
366
  module J1LunrSearch
367
- VERSION = '2021.1.27'
367
+ VERSION = '2021.1.28'
368
368
  end
369
369
  end
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": true,
3
3
  "name": "j1_starter",
4
- "version": "2021.1.27",
4
+ "version": "2021.1.28",
5
5
  "description": "J1 Template Starter Web",
6
6
  "homepage": "https://your.site",
7
7
  "author": {
@@ -11,10 +11,11 @@ tags: [ Navigator ]
11
11
  pagination:
12
12
  enabled: true
13
13
  permalink: /page:num/
14
+ per_page: 2
14
15
 
15
16
  sort: date
16
17
  toc: true
17
- fam_menu_id: open_toc
18
+ fam_menu_id: default
18
19
 
19
20
  analytics: true
20
21
  advertising: false
@@ -22,7 +23,7 @@ comments: false
22
23
 
23
24
  regenerate: true # needed to update pagination pages
24
25
 
25
- resources: []
26
+ resources: [ animate, j1scroll ]
26
27
  resource_options:
27
28
  - attic:
28
29
  padding_top: 400
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": true,
3
3
  "name": "utls",
4
- "version": "2021.1.27",
4
+ "version": "2021.1.28",
5
5
  "description": "J1 Template Utility Server",
6
6
  "homepage": "https://jekyll.one",
7
7
  "author": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": true,
3
3
  "name": "utls",
4
- "version": "2021.1.27",
4
+ "version": "2021.1.28",
5
5
  "description": "J1 Template Utility Server",
6
6
  "homepage": "https://jekyll.one",
7
7
  "author": {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: j1-template
3
3
  version: !ruby/object:Gem::Version
4
- version: 2021.1.27
4
+ version: 2021.1.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - juergen_jekyll_one
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-19 00:00:00.000000000 Z
11
+ date: 2021-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -544,6 +544,7 @@ files:
544
544
  - assets/themes/j1/modules/j1Scroll/css/theme/uno.css
545
545
  - assets/themes/j1/modules/j1Scroll/css/theme/uno.min.css
546
546
  - assets/themes/j1/modules/j1Scroll/js/j1scroll.js
547
+ - assets/themes/j1/modules/j1Scroll/js/j1scroll.min.js
547
548
  - assets/themes/j1/modules/jquery/css/jqueryUI/theme.css
548
549
  - assets/themes/j1/modules/jquery/css/jqueryUI/theme.min.css
549
550
  - assets/themes/j1/modules/jquery/js/jquery-3.5.1.min.map
@@ -1009,7 +1010,6 @@ files:
1009
1010
  - lib/starter_web/_data/modules/defaults/cookieconsent.yml
1010
1011
  - lib/starter_web/_data/modules/defaults/fam.yml
1011
1012
  - lib/starter_web/_data/modules/defaults/framer.yml
1012
- - lib/starter_web/_data/modules/defaults/infiniteScroll.yml
1013
1013
  - lib/starter_web/_data/modules/defaults/log4javascript.yml
1014
1014
  - lib/starter_web/_data/modules/defaults/log4r.yml
1015
1015
  - lib/starter_web/_data/modules/defaults/navigator.yml
@@ -1018,7 +1018,7 @@ files:
1018
1018
  - lib/starter_web/_data/modules/defaults/toccer.yml
1019
1019
  - lib/starter_web/_data/modules/fam.yml
1020
1020
  - lib/starter_web/_data/modules/framer.yml
1021
- - lib/starter_web/_data/modules/infiniteScroll.yml
1021
+ - lib/starter_web/_data/modules/j1scroll.yml
1022
1022
  - lib/starter_web/_data/modules/log4javascript.yml
1023
1023
  - lib/starter_web/_data/modules/log4r.yml
1024
1024
  - lib/starter_web/_data/modules/navigator.yml
@@ -1,73 +0,0 @@
1
- # ------------------------------------------------------------------------------
2
- # ~/_data/modules/infiniteScroll.yml
3
- # User configuration for J1 infiniteScroll
4
- #
5
- # Product/Info:
6
- # https://jekyll.one
7
- #
8
- # Copyright (C) 2021 Juergen Adams
9
- #
10
- # J1 Template is licensed under the MIT License.
11
- # See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE
12
- # ------------------------------------------------------------------------------
13
-
14
- # ------------------------------------------------------------------------------
15
- # About this configuration (used for J1 CC only)
16
- #
17
- about_config:
18
-
19
- title: infiniteScroll
20
- scope: Default settings
21
- location: _data/modules/defaults/infiniteScroll.yml
22
-
23
- # ------------------------------------------------------------------------------
24
- # Default configuration settings
25
- #
26
- settings:
27
-
28
- # ----------------------------------------------------------------------------
29
- # GENERAL gallery settings
30
- #
31
- # enabled
32
- # ----------------------------------------------------------------------------
33
- # Enables|Disables the use of a gallery
34
- #
35
- # xhr_data_path
36
- # ----------------------------------------------------------------------------
37
- # All data items displayed by a gallery are being read from a
38
- # JSON file automatically generated from that configuration.
39
- # AJAX get method is used to supply the gallery with respective
40
- # the HTML code at the time the gallery is initialized (by the
41
- # J1 Adapter for J1 Justified Gallery).
42
- #
43
- # values: string
44
- # default: /assets/data/galleries.json
45
- #
46
- # instance_type
47
- # ----------------------------------------------------------------------------
48
- # Specifies if a modules can be run as a single instance
49
- # (only) or run in multiple instances.
50
- #
51
- # NOTE: The parameter instance_type controls how MODULE runner
52
- # manages configuration options.
53
- #
54
- # values: single|multiple
55
- # default: single
56
- #
57
- # rowHeight
58
- # ----------------------------------------------------------------------------
59
- # All data items displayed by a gallery are being read from a
60
- # JSON file automatically generated from that configuration.
61
- #
62
- # values: string
63
- # default: /assets/data/galleries.json
64
- #
65
- # ----------------------------------------------------------------------------
66
-
67
- enabled: false
68
- history: false
69
- checkLastPage: true
70
- check_status: true
71
-
72
- # ------------------------------------------------------------------------------
73
- # END config