j1-template 2021.1.27 → 2021.1.28

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 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