j1-template 2021.2.10 → 2021.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/_includes/themes/j1/blocks/footer/boxes/contacts_box.proc +1 -1
- data/_includes/themes/j1/layouts/content_generator_article_navigator.html +2 -2
- data/_includes/themes/j1/layouts/content_generator_blog_archive.html +2 -2
- data/_includes/themes/j1/layouts/content_generator_news_panel_posts.html +2 -2
- data/_includes/themes/j1/modules/boards/news_pin_board.html +10 -10
- data/_includes/themes/j1/modules/connectors/translators/google-translator.html +18 -3
- data/_includes/themes/j1/modules/navigator/generator.html +6 -6
- data/_includes/themes/j1/procedures/posts/collate_calendar.proc +3 -3
- data/_includes/themes/j1/procedures/posts/create_series_header.proc +1 -1
- data/_includes/themes/j1/procedures/posts/pager.proc +1 -1
- data/_layouts/compress.html +12 -4
- data/assets/data/gallery_customizer.html +1 -1
- data/assets/data/menu.html +17 -17
- data/assets/data/mmenu.html +17 -17
- data/assets/data/private.json +49 -0
- data/assets/data/quicklinks.html +3 -3
- data/assets/themes/j1/adapter/js/j1.js +1 -1
- data/assets/themes/j1/adapter/js/{j1scroll.js → scroller.js} +86 -105
- data/assets/themes/j1/adapter/js/translator.js +17 -3
- data/assets/themes/j1/core/js/template.js +3930 -55
- data/assets/themes/j1/core/js/template.min.js +9 -8
- data/assets/themes/j1/core/js/template.min.js.map +1 -1
- data/assets/themes/j1/modules/backstretch/js/backstretch.min.js +1 -1
- data/assets/themes/j1/modules/bmd/js/bootstrap-material-design.full.js +1 -1
- data/assets/themes/j1/modules/bmd/js/bootstrap-material-design.js +1 -1
- data/assets/themes/j1/modules/bmd/js/bootstrap-material-design.min.js +1 -1
- data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.min.js +1 -1
- data/assets/themes/j1/modules/datatables/js/datatables.js +1 -1
- data/assets/themes/j1/modules/datatables/js/datatables.min.js +5 -5
- data/assets/themes/j1/modules/{j1Deepl/js/j1deepl.js → deeplAPI/js/deeplAPI.js} +36 -11
- data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.min.js +18 -0
- data/assets/themes/j1/modules/iframeResizer/examples/frame.absolute.html +3 -3
- data/assets/themes/j1/modules/iframeResizer/examples/frame.content.html +6 -6
- data/assets/themes/j1/modules/iframeResizer/examples/frame.tolerance.html +2 -2
- data/assets/themes/j1/modules/iframeResizer/js/client/iframeResizer.contentWindow.js +1 -1
- data/assets/themes/j1/modules/iframeResizer/js/client/iframeResizer.contentWindow.min.js +1 -1
- data/assets/themes/j1/modules/iframeResizer/js/resizer.min.js +1 -1
- data/assets/themes/j1/modules/jquery/js/jquery.js +2 -2
- data/assets/themes/j1/modules/jquery/js/jquery.min.js +1 -1
- data/assets/themes/j1/modules/jquery/js/jqueryUI.js +7 -7
- data/assets/themes/j1/modules/jquery/js/jqueryUI.min.js +3 -3
- data/assets/themes/j1/modules/lightGallery/js/core/j1/lightgallery-x.min.js +1 -1
- data/assets/themes/j1/modules/lightGallery/js/core/lightgallery.min.js +1 -1
- data/assets/themes/j1/modules/lightGallery/js/modules/j1/j1-video.min.js +1 -1
- data/assets/themes/j1/modules/lightGallery/js/modules/j1/j1-x-video.min.js +1 -1
- data/assets/themes/j1/modules/lightbox/js/lightbox.js +1 -1
- data/assets/themes/j1/modules/lightbox/js/lightbox.min.js +1 -1
- data/assets/themes/j1/modules/lunrSearch/js/mustache.js +1 -1
- data/assets/themes/j1/modules/lunrSearch/js/mustache.min.js +1 -1
- data/assets/themes/j1/modules/lunrSearch/js/uri.js +1 -1
- data/assets/themes/j1/modules/lunrSearch/js/uri.min.js +7 -7
- data/assets/themes/j1/modules/mdiPreviewer/js/previewer.min.js +1 -1
- data/assets/themes/j1/modules/mdilPreviewer/js/previewer.min.js +1 -1
- data/assets/themes/j1/modules/{j1Scroll → scroller}/css/theme/uno.css +2 -2
- data/assets/themes/j1/modules/{j1Scroll → scroller}/css/theme/uno.min.css +0 -0
- data/assets/themes/j1/modules/scroller/js/scroller.js +346 -0
- data/assets/themes/j1/modules/scroller/js/scroller.min.js +15 -0
- data/assets/themes/j1/modules/themeSwitcher/js/switcher.js +1 -1
- data/assets/themes/j1/modules/themeSwitcher/js/switcher.min.js +1 -1
- data/assets/themes/j1/modules/translator/js/translator.js +38 -27
- data/assets/themes/j1/modules/translator/js/translator.min.js +1 -1
- data/assets/themes/j1/modules/twemoji/js/picker/twemoji-picker.js +1 -1
- data/assets/themes/j1/modules/twemoji/js/picker/twemoji-picker.min.js +1 -1
- data/assets/themes/j1/modules/videojs/js/video.min.js +2 -2
- data/lib/j1/version.rb +3 -3
- data/lib/starter_web/Gemfile +1 -1
- data/lib/starter_web/_config.yml +6 -2
- data/lib/starter_web/_data/_defaults/j1_config.1.yml +478 -0
- data/lib/starter_web/_data/apps/carousel.yml +4 -4
- data/lib/starter_web/_data/blocks/defaults/footer.yml +2 -2
- data/lib/starter_web/_data/blocks/footer.yml +2 -2
- data/lib/starter_web/_data/modules/attics.yml +1 -1
- data/lib/starter_web/_data/modules/defaults/attics.yml +2 -2
- data/lib/starter_web/_data/modules/defaults/translator.yml +1 -0
- data/lib/starter_web/_data/modules/{j1scroll.yml → scroller.yml} +30 -5
- data/lib/starter_web/_data/modules/translator.yml +3 -0
- data/lib/starter_web/_data/private.default.yml +8 -1
- data/lib/starter_web/_data/private.yml +8 -1
- data/lib/starter_web/_data/resources.yml +14 -35
- data/lib/starter_web/_includes/attributes.asciidoc +1 -1
- data/lib/starter_web/_plugins/lunr_index.rb +1 -1
- data/lib/starter_web/index.html +2 -1
- data/lib/starter_web/package.json +1 -1
- data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +2 -2
- data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +3 -3
- data/lib/starter_web/pages/public/blog/navigator/index.html +1 -1
- data/lib/starter_web/pages/public/learn/roundtrip/600_quicksearch.adoc +6 -6
- data/lib/starter_web/pages/public/manuals/dropdown-help.adoc +743 -743
- data/lib/starter_web/pages/public/previewer/preview_bootstrap_theme.adoc +85 -85
- data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
- data/lib/starter_web/utilsrv/package.json +1 -1
- metadata +12 -13
- data/assets/themes/j1/adapter/js/translator.1.js +0 -525
- data/assets/themes/j1/modules/j1Deepl/js/j1deepl.min.js +0 -18
- data/assets/themes/j1/modules/j1Scroll/js/j1scroll.js +0 -280
- data/assets/themes/j1/modules/j1Scroll/js/j1scroll.min.js +0 -15
- data/assets/themes/j1/modules/showOnScroll/js/showOnScroll.js +0 -73
- data/assets/themes/j1/modules/showOnScroll/js/showOnScroll.min.js +0 -15
@@ -0,0 +1,346 @@
|
|
1
|
+
/*
|
2
|
+
# -----------------------------------------------------------------------------
|
3
|
+
# ~/assets/themes/j1/modules/scroller/js/scroller.js
|
4
|
+
# J1 core module for scroller
|
5
|
+
#
|
6
|
+
# Product/Info:
|
7
|
+
# https://jekyll.one
|
8
|
+
#
|
9
|
+
# Copyright (C) 2021 Juergen Adams
|
10
|
+
#
|
11
|
+
# J1 Template is licensed under the MIT License.
|
12
|
+
# For details, see https://jekyll.one
|
13
|
+
# -----------------------------------------------------------------------------
|
14
|
+
# NOTE: Based on https://github.com/jquery-boilerplate/jquery-boilerplate
|
15
|
+
# See: https://www.dotnetcurry.com/jquery/1069/authoring-jquery-plugins
|
16
|
+
# -----------------------------------------------------------------------------
|
17
|
+
*/
|
18
|
+
|
19
|
+
// the semi-colon before function invocation is a SAFETY method
|
20
|
+
// against concatenated scripts and/or other plugins which may
|
21
|
+
// NOT be closed properly.
|
22
|
+
//
|
23
|
+
;(function($, window, document, undefined) {
|
24
|
+
'use strict';
|
25
|
+
|
26
|
+
// Create the defaults
|
27
|
+
var pluginName = 'scroller',
|
28
|
+
defaults = {
|
29
|
+
type: 'infiniteScroll',
|
30
|
+
scrollOffset: 100,
|
31
|
+
elementScroll: false,
|
32
|
+
firstPage: 2,
|
33
|
+
lastPage: false,
|
34
|
+
infoLastPage: false,
|
35
|
+
loadStatus: false,
|
36
|
+
onInit: function (){}, // callback after plugin has initialized
|
37
|
+
onBeforeLoad: function (){}, // callback before new items are loaded
|
38
|
+
onAfterLoad: function (){} // callback after new items are loaded
|
39
|
+
};
|
40
|
+
|
41
|
+
// Plugin constructor
|
42
|
+
function Plugin (element, options) {
|
43
|
+
this.element = element;
|
44
|
+
this.settings = $.extend( {}, defaults, options);
|
45
|
+
this.settings.elementID = '#' + this.element.id;
|
46
|
+
|
47
|
+
// call the initializer
|
48
|
+
this.init(this.settings);
|
49
|
+
}
|
50
|
+
|
51
|
+
// Avoid plugin prototype conflicts
|
52
|
+
$.extend(Plugin.prototype, {
|
53
|
+
// -----------------------------------------------------------------------
|
54
|
+
// init()
|
55
|
+
// plugin initializer
|
56
|
+
// -----------------------------------------------------------------------
|
57
|
+
init: function(options) {
|
58
|
+
var _this = this;
|
59
|
+
var logger = log4javascript.getLogger('');
|
60
|
+
|
61
|
+
logger.info('\n' + 'initializing plugin: started');
|
62
|
+
logger.info('\n' + 'state: started');
|
63
|
+
|
64
|
+
if (options.elementScroll) {
|
65
|
+
_this.scroller = _this.element;
|
66
|
+
} else {
|
67
|
+
_this.scroller = window;
|
68
|
+
}
|
69
|
+
|
70
|
+
if (options.loadStatus) {
|
71
|
+
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>';
|
72
|
+
$(spinner).insertAfter(options.elementID);
|
73
|
+
}
|
74
|
+
|
75
|
+
if (options.infoLastPage) {
|
76
|
+
var message = options.lastPageInfo;
|
77
|
+
$(message).insertAfter(options.elementID);
|
78
|
+
}
|
79
|
+
|
80
|
+
// jadams, 2021-11-08: for testing reason, registerScrollEvent delayed
|
81
|
+
// until page_ready state
|
82
|
+
var dependencies_met_page_ready = setInterval (function () {
|
83
|
+
if (j1.getState() === 'finished') {
|
84
|
+
|
85
|
+
// initialize infinite scroll
|
86
|
+
if ( options.type === 'infiniteScroll') {
|
87
|
+
logger.info('\n' + 'processing mode: ' + options.type);
|
88
|
+
logger.info('\n' + 'loading items from path: ' + options.pagePath + "#void");
|
89
|
+
logger.info('\n' + 'monitoring element set to: ' + this.scroller);
|
90
|
+
_this.registerScrollEvent(options);
|
91
|
+
}
|
92
|
+
// initialize show on scroll
|
93
|
+
if ( options.type === 'showOnScroll') {
|
94
|
+
logger.info('\n' + 'processing mode: ' + options.type);
|
95
|
+
logger.info('\n' + 'loading items from path: ' + options.pagePath + "#void");
|
96
|
+
logger.info('\n' + 'monitoring element set to: ' + this.scroller);
|
97
|
+
_this.registerScrollEvent(options);
|
98
|
+
}
|
99
|
+
logger.info('\n' + 'initializing plugin: finished');
|
100
|
+
logger.info('\n' + 'state: finished');
|
101
|
+
clearInterval(dependencies_met_page_ready);
|
102
|
+
}
|
103
|
+
});
|
104
|
+
},
|
105
|
+
|
106
|
+
// -------------------------------------------------------------------------
|
107
|
+
// isInViewport()
|
108
|
+
// detects if an element is visible in an viewport specified
|
109
|
+
// -------------------------------------------------------------------------
|
110
|
+
isInViewport: function (elm, offset) {
|
111
|
+
// if the element doesn't exist, abort
|
112
|
+
if( elm.length == 0 ) {
|
113
|
+
return;
|
114
|
+
}
|
115
|
+
var $window = jQuery(window);
|
116
|
+
var viewport_top = $window.scrollTop();
|
117
|
+
var viewport_height = $window.height();
|
118
|
+
var viewport_bottom = viewport_top + viewport_height;
|
119
|
+
var $elm = jQuery(elm);
|
120
|
+
var top = $elm.offset().top + offset;
|
121
|
+
var height = $elm.height();
|
122
|
+
var bottom = top + height;
|
123
|
+
|
124
|
+
return (top >= viewport_top && top < viewport_bottom) ||
|
125
|
+
(bottom > viewport_top && bottom <= viewport_bottom) ||
|
126
|
+
(height > viewport_height && top <= viewport_top && bottom >= viewport_bottom);
|
127
|
+
},
|
128
|
+
|
129
|
+
// -------------------------------------------------------------------------
|
130
|
+
// bottomReached()
|
131
|
+
// detect final scroll position
|
132
|
+
// NOTE: the calculation for BOTTOM position is different for
|
133
|
+
// elementScroll and windowScroll. For elementScroll, the
|
134
|
+
// trigger isBottomReached is TRUE, if the scroll position has
|
135
|
+
// the end of the container PLUS a given scrollOffset.
|
136
|
+
// For windowScroll, the trigger isBottomReached is TRUE, if
|
137
|
+
// the scroll position has the end of the window MINUS
|
138
|
+
// a given scrollOffset.
|
139
|
+
// -------------------------------------------------------------------------
|
140
|
+
isBottomReached: function (options) {
|
141
|
+
var _this = this;
|
142
|
+
var bottom, scrollY;
|
143
|
+
var clientHeight = $(options.elementID).height();
|
144
|
+
|
145
|
+
if (_this.settings.elementScroll) {
|
146
|
+
// check scroll position of the container items are to be added
|
147
|
+
var $window = $(window);
|
148
|
+
var viewport_top = $window.scrollTop();
|
149
|
+
var viewport_height = $window.height();
|
150
|
+
var viewport_bottom = viewport_top + viewport_height - options.scrollOffset;
|
151
|
+
var $elm = $(options.elementID);
|
152
|
+
var top = $elm.offset().top + clientHeight;
|
153
|
+
var height = $elm.height();
|
154
|
+
bottom = top + height;
|
155
|
+
|
156
|
+
return (top >= viewport_top && top < viewport_bottom) ||
|
157
|
+
(bottom > viewport_top && bottom <= viewport_bottom) ||
|
158
|
+
(height > viewport_height && top <= viewport_top && bottom >= viewport_bottom);
|
159
|
+
} else {
|
160
|
+
// check scroll position of the (overall) window
|
161
|
+
return (window.innerHeight + window.pageYOffset + options.scrollOffset >= document.body.offsetHeight);
|
162
|
+
}
|
163
|
+
},
|
164
|
+
|
165
|
+
// -------------------------------------------------------------------------
|
166
|
+
// detectScroll()
|
167
|
+
// EventHandler to load new items for infinite scroll if final scroll
|
168
|
+
// position reached
|
169
|
+
// -------------------------------------------------------------------------
|
170
|
+
registerScrollEvent: function (options) {
|
171
|
+
var _this = this;
|
172
|
+
var logger = log4javascript.getLogger('');
|
173
|
+
|
174
|
+
// scroller type infiniteScroll
|
175
|
+
if (options.type === 'infiniteScroll') {
|
176
|
+
logger.info('\n' + 'register scroll event of type: ' + options.type);
|
177
|
+
|
178
|
+
// register event function DYNAMICALLY
|
179
|
+
_this[options.id] = function (event) {
|
180
|
+
var options = _this.settings;
|
181
|
+
|
182
|
+
if (_this.isBottomReached(options)) {
|
183
|
+
if (options.firstPage > options.lastPage ) {
|
184
|
+
logger.info('\n' + 'last page detected on: ' + options.lastPage);
|
185
|
+
window.removeEventListener('scroll', _this[options.id]);
|
186
|
+
logger.info('\n' + 'scroll event: removed');
|
187
|
+
|
188
|
+
if (options.infoLastPage ) {
|
189
|
+
_this.infoLastPage(options);
|
190
|
+
}
|
191
|
+
return false;
|
192
|
+
}
|
193
|
+
_this.getNewPost(options);
|
194
|
+
}
|
195
|
+
};
|
196
|
+
window.addEventListener('scroll', _this[options.id]);
|
197
|
+
logger.info('\n' + 'scroll event: registered');
|
198
|
+
}
|
199
|
+
|
200
|
+
// scroller type showOnScroll
|
201
|
+
if (options.type === 'showOnScroll') {
|
202
|
+
logger.info('\n' + 'register scroll event of type: ' + options.type);
|
203
|
+
|
204
|
+
// register event function DYNAMICALLY
|
205
|
+
_this[options.id] = function (event) {
|
206
|
+
if (_this.isInViewport ($('#' + options.id ), options.scrollOffset)) {
|
207
|
+
logger.info('\n' + 'specified container is in view: ' + options.id);
|
208
|
+
$('.' + options.id).show(options.showDelay);
|
209
|
+
logger.info('\n' + 'remove eventHandler');
|
210
|
+
window.removeEventListener('scroll', _this[options.id]);
|
211
|
+
}
|
212
|
+
}
|
213
|
+
window.addEventListener('scroll', _this[options.id]);
|
214
|
+
}
|
215
|
+
|
216
|
+
},
|
217
|
+
|
218
|
+
// -------------------------------------------------------------------------
|
219
|
+
// getNewPost()
|
220
|
+
// load new items (from current path)
|
221
|
+
// Note: loader flag prevents to load items if AJAX load in progress
|
222
|
+
// is NOT finished
|
223
|
+
// -------------------------------------------------------------------------
|
224
|
+
getNewPost: function (options) {
|
225
|
+
var _this = this;
|
226
|
+
var logger = log4javascript.getLogger('');
|
227
|
+
|
228
|
+
logger.info('\n' + 'trigger loading ');
|
229
|
+
|
230
|
+
// initialze loader flag
|
231
|
+
if (this.itemsLoaded === false) return false;
|
232
|
+
|
233
|
+
// set loader flag (false == not loaded)
|
234
|
+
this.itemsLoaded = false;
|
235
|
+
|
236
|
+
// display spinner while loading
|
237
|
+
if (options.loadStatus) {
|
238
|
+
logger.info('\n' + 'show: spinner');
|
239
|
+
$('.loader-ellips').show();
|
240
|
+
}
|
241
|
+
|
242
|
+
var xmlhttp = new XMLHttpRequest();
|
243
|
+
xmlhttp.onreadystatechange = function () {
|
244
|
+
if (xmlhttp.readyState == XMLHttpRequest.DONE) {
|
245
|
+
if (xmlhttp.status == 200) {
|
246
|
+
options.firstPage++;
|
247
|
+
var childItems = _this.getChildItemsByAjaxHTML(options, xmlhttp.responseText);
|
248
|
+
_this.appendNewItems(childItems);
|
249
|
+
|
250
|
+
logger.info('\n' + 'loading new items: successful');
|
251
|
+
|
252
|
+
// hide the spinner after loading
|
253
|
+
if (options.loadStatus) {
|
254
|
+
logger.info('\n' + 'hide: spinner');
|
255
|
+
$('.loader-ellips').hide();
|
256
|
+
}
|
257
|
+
|
258
|
+
// set loader flag (true == loaded)
|
259
|
+
// return _this.itemsLoaded = true;
|
260
|
+
_this.itemsLoaded = true;
|
261
|
+
} else {
|
262
|
+
// hide the spinner
|
263
|
+
if (options.loadStatus) {
|
264
|
+
logger.info('\n' + 'hide: spinner');
|
265
|
+
$('.loader-ellips').hide();
|
266
|
+
}
|
267
|
+
|
268
|
+
logger.error('\n' + 'loading new items failed, HTTP response: ' + xmlhttp.status );
|
269
|
+
// set loader flag (true == loaded)
|
270
|
+
// return _this.itemsLoaded = false;
|
271
|
+
_this.itemsLoaded = false;
|
272
|
+
}
|
273
|
+
}
|
274
|
+
};
|
275
|
+
logger.info('\n' + 'loading new items from path: ' + options.pagePath + options.firstPage);
|
276
|
+
xmlhttp.open("GET", location.origin + options.pagePath + options.firstPage + '/index.html', true);
|
277
|
+
xmlhttp.send();
|
278
|
+
},
|
279
|
+
|
280
|
+
// -------------------------------------------------------------------------
|
281
|
+
// getChildItemsByAjaxHTML()
|
282
|
+
// extract items from page loaded
|
283
|
+
// -------------------------------------------------------------------------
|
284
|
+
getChildItemsByAjaxHTML: function (options, HTMLText) {
|
285
|
+
var newHTML = document.createElement('html');
|
286
|
+
var logger = log4javascript.getLogger('');
|
287
|
+
|
288
|
+
logger.info('\n' + 'load new items');
|
289
|
+
newHTML.innerHTML = HTMLText;
|
290
|
+
var childItems = newHTML.querySelectorAll(options.elementID + ' > *');
|
291
|
+
return childItems;
|
292
|
+
},
|
293
|
+
|
294
|
+
// -------------------------------------------------------------------------
|
295
|
+
// appendNewItems()
|
296
|
+
// append items and run post processing
|
297
|
+
// -------------------------------------------------------------------------
|
298
|
+
appendNewItems: function (items) {
|
299
|
+
var _this = this;
|
300
|
+
var logger = log4javascript.getLogger('');
|
301
|
+
var cookie_names = j1.getCookieNames();
|
302
|
+
var user_translate = j1.readCookie(cookie_names.user_translate);
|
303
|
+
|
304
|
+
logger.info('\n' + 'append new items');
|
305
|
+
items.forEach(function (item) {
|
306
|
+
_this.element.appendChild(item);
|
307
|
+
});
|
308
|
+
|
309
|
+
// no dropcaps if translation enabled
|
310
|
+
if (user_translate.translationEnabled) {
|
311
|
+
logger.info('\n' + 'translation enabled: ' + user_translate.translationEnabled);
|
312
|
+
logger.warn('\n' + 'skipped processing of dropcaps');
|
313
|
+
} else {
|
314
|
+
// initialize dropcaps
|
315
|
+
logger.info('\n' + 'post processing: createDropCap');
|
316
|
+
j1.core.createDropCap();
|
317
|
+
}
|
318
|
+
|
319
|
+
},
|
320
|
+
|
321
|
+
// -------------------------------------------------------------------------
|
322
|
+
// getNewPost()
|
323
|
+
// load|append new items
|
324
|
+
// Note: loader flag prevents to load items if AJAX load in progress
|
325
|
+
// is NOT finished
|
326
|
+
// -------------------------------------------------------------------------
|
327
|
+
infoLastPage: function (options) {
|
328
|
+
var _this = this;
|
329
|
+
var logger = log4javascript.getLogger('');
|
330
|
+
|
331
|
+
logger.info('\n' + 'show: infoLastPage');
|
332
|
+
$('.page-scroll-last').show();
|
333
|
+
}
|
334
|
+
}); // END prototype
|
335
|
+
|
336
|
+
// wrapper around the constructor to prevent multiple instantiations
|
337
|
+
$.fn [pluginName] = function(options) {
|
338
|
+
return this.each(function() {
|
339
|
+
if (!$.data( this, "plugin_" + pluginName)) {
|
340
|
+
$.data(this, "plugin_" +
|
341
|
+
pluginName, new Plugin(this, options));
|
342
|
+
}
|
343
|
+
});
|
344
|
+
};
|
345
|
+
|
346
|
+
})(jQuery, window, document);
|
@@ -0,0 +1,15 @@
|
|
1
|
+
/*
|
2
|
+
# -----------------------------------------------------------------------------
|
3
|
+
# ~/assets/themes/j1/modules//js/scroller.min.js
|
4
|
+
# J1 core module for scroller
|
5
|
+
#
|
6
|
+
# Product/Info:
|
7
|
+
# https://jekyll.one
|
8
|
+
#
|
9
|
+
# Copyright (C) 2021 Juergen Adams
|
10
|
+
#
|
11
|
+
# J1 Template is licensed under the MIT License.
|
12
|
+
# For details, see https://jekyll.one
|
13
|
+
# -----------------------------------------------------------------------------
|
14
|
+
*/
|
15
|
+
(function(e,c,a,g){var d="scroller",f={type:"infiniteScroll",scrollOffset:100,elementScroll:false,firstPage:2,lastPage:false,infoLastPage:false,loadStatus:false,onInit:function(){},onBeforeLoad:function(){},onAfterLoad:function(){}};function b(i,h){this.element=i;this.settings=e.extend({},f,h);this.settings.elementID="#"+this.element.id;this.init(this.settings)}e.extend(b.prototype,{init:function(i){var m=this;var h=log4javascript.getLogger("");h.info("\ninitializing plugin: started");h.info("\nstate: started");if(i.elementScroll){m.scroller=m.element}else{m.scroller=c}if(i.loadStatus){var l='<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(l).insertAfter(i.elementID)}if(i.infoLastPage){var j=i.lastPageInfo;e(j).insertAfter(i.elementID)}var k=setInterval(function(){if(j1.getState()==="finished"){if(i.type==="infiniteScroll"){h.info("\nprocessing mode: "+i.type);h.info("\nloading items from path: "+i.pagePath+"#void");h.info("\nmonitoring element set to: "+this.scroller);m.registerScrollEvent(i)}if(i.type==="showOnScroll"){h.info("\nprocessing mode: "+i.type);h.info("\nloading items from path: "+i.pagePath+"#void");h.info("\nmonitoring element set to: "+this.scroller);m.registerScrollEvent(i)}h.info("\ninitializing plugin: finished");h.info("\nstate: finished");clearInterval(k)}})},isInViewport:function(n,m){if(n.length==0){return}var j=jQuery(c);var q=j.scrollTop();var i=j.height();var k=q+i;var l=jQuery(n);var o=l.offset().top+m;var p=l.height();var h=o+p;return(o>=q&&o<k)||(h>q&&h<=k)||(p>i&&o<=q&&h>=k)},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 j=this;var h=log4javascript.getLogger("");if(i.type==="infiniteScroll"){h.info("\nregister scroll event of type: "+i.type);j[i.id]=function(l){var k=j.settings;if(j.isBottomReached(k)){if(k.firstPage>k.lastPage){h.info("\nlast page detected on: "+k.lastPage);c.removeEventListener("scroll",j[k.id]);h.info("\nscroll event: removed");if(k.infoLastPage){j.infoLastPage(k)}return false}j.getNewPost(k)}};c.addEventListener("scroll",j[i.id]);h.info("\nscroll event: registered")}if(i.type==="showOnScroll"){h.info("\nregister scroll event of type: "+i.type);j[i.id]=function(k){if(j.isInViewport(e("#"+i.id),i.scrollOffset)){h.info("\nspecified container is in view: "+i.id);e("."+i.id).show(i.showDelay);h.info("\nremove eventHandler");c.removeEventListener("scroll",j[i.id])}};c.addEventListener("scroll",j[i.id])}},getNewPost:function(i){var k=this;var h=log4javascript.getLogger("");h.info("\ntrigger loading ");if(this.itemsLoaded===false){return false}this.itemsLoaded=false;if(i.loadStatus){h.info("\nshow: spinner");e(".loader-ellips").show()}var j=new XMLHttpRequest();j.onreadystatechange=function(){if(j.readyState==XMLHttpRequest.DONE){if(j.status==200){i.firstPage++;var l=k.getChildItemsByAjaxHTML(i,j.responseText);k.appendNewItems(l);h.info("\nloading new items: successful");if(i.loadStatus){h.info("\nhide: spinner");e(".loader-ellips").hide()}k.itemsLoaded=true}else{if(i.loadStatus){h.info("\nhide: spinner");e(".loader-ellips").hide()}h.error("\nloading new items failed, HTTP response: "+j.status);k.itemsLoaded=false}}};h.info("\nloading new items from path: "+i.pagePath+i.firstPage);j.open("GET",location.origin+i.pagePath+i.firstPage+"/index.html",true);j.send()},getChildItemsByAjaxHTML:function(j,i){var l=a.createElement("html");var h=log4javascript.getLogger("");h.info("\nload new items");l.innerHTML=i;var k=l.querySelectorAll(j.elementID+" > *");return k},appendNewItems:function(h){var l=this;var i=log4javascript.getLogger("");var k=j1.getCookieNames();var j=j1.readCookie(k.user_translate);i.info("\nappend new items");h.forEach(function(m){l.element.appendChild(m)});if(j.translationEnabled){i.info("\ntranslation enabled: "+j.translationEnabled);i.warn("\nskipped processing of dropcaps")}else{i.info("\npost processing: createDropCap");j1.core.createDropCap()}},infoLastPage:function(i){var j=this;var h=log4javascript.getLogger("");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);
|
@@ -309,7 +309,7 @@
|
|
309
309
|
}
|
310
310
|
var li = $('<li />')
|
311
311
|
.attr('class',cssClass)
|
312
|
-
.append('<a href="#"><i class="mdi mdi-view-quilt mdi-18px mr-2" style="color: ' +iconColor+ '"></i>' +value.name+ '</a>')
|
312
|
+
.append('<a href="#void"><i class="mdi mdi-view-quilt mdi-18px mr-2" style="color: ' +iconColor+ '"></i>' +value.name+ '</a>')
|
313
313
|
.on('click', function () {
|
314
314
|
if (settings.loadFromBootswatch) {
|
315
315
|
base.switchTheme(value.name, value.css);
|
@@ -309,7 +309,7 @@
|
|
309
309
|
}
|
310
310
|
var li = $('<li />')
|
311
311
|
.attr('class',cssClass)
|
312
|
-
.append('<a href="#"><i class="mdi mdi-view-quilt mdi-18px mr-2" style="color: ' +iconColor+ '"></i>' +value.name+ '</a>')
|
312
|
+
.append('<a href="#void"><i class="mdi mdi-view-quilt mdi-18px mr-2" style="color: ' +iconColor+ '"></i>' +value.name+ '</a>')
|
313
313
|
.on('click', function () {
|
314
314
|
if (settings.loadFromBootswatch) {
|
315
315
|
base.switchTheme(value.name, value.css);
|
@@ -308,34 +308,45 @@ function Translator(props) {
|
|
308
308
|
// on 'shown'
|
309
309
|
// ---------------------------------------------------------------------
|
310
310
|
self.$modal.on('shown.bs.modal', function () {
|
311
|
-
var msDropdownJSON
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
311
|
+
var msDropdownJSON;
|
312
|
+
var dependencies_met_msDropdownJSON_loaded;
|
313
|
+
|
314
|
+
// found msDropdownJSON loaded slow on some PC
|
315
|
+
dependencies_met_msDropdownJSON_loaded = setInterval (function () {
|
316
|
+
if (typeof document.getElementById('dropdownJSON').msDropdown !== 'undefined') {
|
317
|
+
msDropdownJSON = document.getElementById('dropdownJSON').msDropdown;
|
318
|
+
if (!msDropdownJSON.length) {
|
319
|
+
// critical error
|
320
|
+
logger.error('\n' + 'no msDropdown found in translation dialog');
|
321
|
+
self.$modal.hide();
|
322
|
+
} else {
|
323
|
+
// set translation language for auto detection
|
324
|
+
if (self.props.translationLanguage === 'auto') {
|
325
|
+
navigator_language = navigator.language || navigator.userLanguage;
|
326
|
+
translation_language = navigator_language.split('-')[0];
|
327
|
+
} else {
|
328
|
+
translation_language = self.props.translationLanguage;
|
329
|
+
}
|
330
|
+
|
331
|
+
// set translation language for the dropdown
|
332
|
+
msDropdownJSON.selectedIndex = $('#dropdownJSON option[value=' + translation_language + ']').index();;
|
333
|
+
|
334
|
+
// disable translation language selection
|
335
|
+
if (self.props.disableLanguageSelector) {
|
336
|
+
msDropdownJSON.disabled = true;
|
337
|
+
}
|
338
|
+
|
339
|
+
$('#dropdownJSON').show();
|
340
|
+
|
341
|
+
// jadams, 2021-10-18: added stop scrolling on the body,
|
342
|
+
// if modal is OPEN
|
343
|
+
$('body').addClass('stop-scrolling');
|
344
|
+
|
345
|
+
logger.info('\n' + 'msDropdown successfully loaded in translation dialog');
|
346
|
+
clearInterval(dependencies_met_msDropdownJSON_loaded);
|
347
|
+
}
|
330
348
|
}
|
331
|
-
|
332
|
-
$('#dropdownJSON').show();
|
333
|
-
|
334
|
-
// jadams, 2021-10-18: added stop scrolling on the body,
|
335
|
-
// if modal is OPEN
|
336
|
-
$('body').addClass('stop-scrolling');
|
337
|
-
|
338
|
-
}
|
349
|
+
}, 25);
|
339
350
|
|
340
351
|
}); // END modal on 'shown'
|
341
352
|
|
@@ -12,4 +12,4 @@
|
|
12
12
|
# See: https://github.com/jekyll-one/J1 Template/blob/master/LICENSE
|
13
13
|
# -----------------------------------------------------------------------------
|
14
14
|
*/
|
15
|
-
function Translator(d){var p=this;var u=log4javascript.getLogger("j1.core.translator");var l=new liteURL(window.location.href);var c=(l.protocol.includes("https"))?true:false;var q=false;var g;var s;this.props={contentURL:"/assets/data/translator",cookieName:"j1.user.state",cookieConsentName:"j1.user.consent",cookieStorageDays:365,cookieSameSite:"Strict",cookieSecure:c,translationEnabled:false,disableLanguageSelector:false,translatorName:"google",translationLanguages:"all",translationLanguage:"auto",translateAllPages:true,hideSuggestionBox:true,hidePoweredBy:true,hideTopFrame:true,dialogLanguage:"content",dialogLanguages:["en","de"],dialogContainerID:"translator-modal",xhrDataElement:"",postSelectionCallback:"",};for(var e in d){this.props[e]=d[e]}if(this.props.dialogLanguage.indexOf("-")!==-1){this.props.dialogLanguage=this.props.dialogLanguage.split("-")[0]}if(!this.props.dialogLanguages.includes(this.props.dialogLanguage)){this.props.dialogLanguage=this.props.dialogLanguages[0]}this.props.xhrDataElement=this.props.xhrDataElement+"-"+this.props.dialogLanguage;u.info("\ninitializing core module: started");u.info("\nstate: started");var f={set:function(x,z,C,y,A){var B=window.btoa(z);var v="";if(C){var w=new Date();w.setTime(w.getTime()+(C*24*60*60*1000));v="; expires="+w.toUTCString()}if(A){document.cookie=x+"="+(B||"")+v+"; Path=/; SameSite="+y+"; secure="+A+";"}else{document.cookie=x+"="+(B||"")+v+"; Path=/; SameSite="+y+";"}},get:function(w){var z=w+"=";var v=document.cookie.split(";");for(var x=0;x<v.length;x++){var B=v[x];while(B.charAt(0)===" "){B=B.substring(1,B.length)}if(B.indexOf(z)===0){var A=B.substring(z.length,B.length);var y=window.atob(A);return y}}return undefined}};var n={documentReady:function(v){if(document.readyState!=="loading"){v()}else{document.addEventListener("DOMContentLoaded",v)}}};function t(){var v={};var w=false;var x=0;var y=arguments.length;if(Object.prototype.toString.call(arguments[0])==="[object Boolean]"){w=arguments[0];x++}var A=function(B){for(var C in B){if(Object.prototype.hasOwnProperty.call(B,C)){if(w&&Object.prototype.toString.call(B[C])==="[object Object]"){v[C]=t(true,v[C],B[C])}else{v[C]=B[C]}}}};for(;x<y;x++){var z=arguments[x];A(z)}return v}function h(A,x){var v=Array.prototype.slice.call(arguments,2);var z=A.split(".");var y=z.pop();for(var w=0;w<z.length;w++){x=x[z[w]]}return x[y].apply(x,v)}function j(w){var v;var x=t({size:0,width:250,multiple:false,selectedIndex:1,enableAutoFilter:false,visibleRows:null,},w);v="#"+x.selector;$.ajax({url:x.url,dataType:"json",success:function(A){var z=[];if(p.props.translationLanguages.includes("all")){z=A[x.elm]}else{for(var y=0;y<A[x.elm].length;y++){if(p.props.translationLanguages.includes(A[x.elm][y].value)){z.push(A[x.elm][y])}}}if(x.visibleRows>z.length){x.visibleRows=z.length}MsDropdown.make(v,{byJson:{data:z,name:x.name,size:x.size,width:x.width,multiple:x.multiple,},enableAutoFilter:x.enableAutoFilter,visibleRows:x.visibleRows,})},error:function(y,A,z){u.error("\nfailed to retrieve JSON data from: "+x.url)}})}function m(){n.documentReady(function(){p.modal=document.getElementById(p.props.dialogContainerID);if(!p.modal){u.info("\nload consent modal");p.modal=document.createElement("div");p.modal.id=p.props.dialogContainerID;p.modal.setAttribute("class","modal fade");p.modal.setAttribute("tabindex","-1");p.modal.setAttribute("role","dialog");p.modal.setAttribute("aria-labelledby",p.props.dialogContainerID);document.body.append(p.modal);p.$modal=$(p.modal);p.$modal.on("show.bs.modal",function(){var w;var x;u.info("\nshow.bs.modal: entered");$.when(j({url:"/assets/data/iso-639-language-codes-flags.json",elm:"iso-639-languages",selector:"dropdownJSON",width:400,visibleRows:8,})).then(function(y){u.info("\ncreating msDropdown from JSON data: finished")})});p.$modal.on("shown.bs.modal",function(){var w=document.getElementById("dropdownJSON").msDropdown;if(!w.length){u.error("\nno msDropdown found in translation dialog");p.$modal.hide()}else{if(p.props.translationLanguage==="auto"){g=navigator.language||navigator.userLanguage;s=g.split("-")[0]}w.selectedIndex=$("#dropdownJSON option[value="+s+"]").index();if(p.props.disableLanguageSelector){w.disabled=true}$("#dropdownJSON").show();$("body").addClass("stop-scrolling")}});p.$modal.on("hidden.bs.modal",function(){$("body").removeClass("stop-scrolling");h(p.props.postSelectionCallback,window)});var v=p.props.contentURL+"/index.html";$.get(v).done(function(w){u.info("\nloading consent modal: successfully");p.modal.innerHTML=w;p.modal.innerHTML=$("#"+p.props.xhrDataElement).eq(0).html();$(p.modal).modal({backdrop:"static",keyboard:false});p.$buttonDoNotAgree=$("#translator-buttonDoNotAgree");p.$buttonAgree=$("#translator-buttonAgree");p.$buttonSave=$("#translator-buttonSave");p.$buttonAgreeAll=$("#translator-buttonAgreeAll");u.info("\nload/initialze options from cookie");k();i();$("#google-options").on("hide.bs.collapse",function(){q=false;k()}).on("show.bs.collapse",function(){q=true;k()});u.info("\ninitialze button event handler");p.$buttonDoNotAgree.click(function(){b()});p.$buttonAgree.click(function(){o()});p.$buttonSave.click(function(){$("#google-options").collapse("hide");r();i()});p.$buttonAgreeAll.click(function(){$("#google-options").collapse("hide");o()})}).fail(function(){u.error("\nloading translator dialog (modal): failed");u.warn("\nprobably no|wrong `contentURL` set")})}else{p.$modal.modal("show")}}.bind(this))}function i(){var x=p.getSettings();if(x){for(var w in x){var v=p.$modal.find("#google-options .translator-option[data-name="+w+'] input[type="checkbox"]');v.prop("checked",x[w])}}}function k(){if(q){p.$buttonDoNotAgree.hide();p.$buttonAgree.hide();p.$buttonSave.show();p.$buttonAgreeAll.show()}else{p.$buttonDoNotAgree.show();p.$buttonAgree.show();p.$buttonSave.hide();p.$buttonAgreeAll.hide()}}function a(w){var v=p.$modal.find("#google-options .translator-option");var y={};for(var z=0;z<v.length;z++){var B=v[z];var x=B.getAttribute("data-name");if(x==="necessary"){y[x]=true}else{if(w===undefined){var A=$(B).find('input[type="checkbox"]');y[x]=A.prop("checked")}else{y[x]=!!w}}}return y}function o(){var w=a(true);var v={};v=JSON.parse(f.get(p.props.cookieConsentName));v.analysis=w.analysis;v.personalization=w.personalization;f.set(p.props.cookieConsentName,JSON.stringify(v),p.props.cookieStorageDays,p.props.sameSite,p.props.secure);f.set(p.props.cookieName,JSON.stringify(w),p.props.cookieStorageDays,p.props.sameSite,p.props.secure);p.$modal.modal("hide")}function b(){var v=a();v.translationEnabled=false;f.set(p.props.cookieName,JSON.stringify(v),p.props.cookieStorageDays,p.props.sameSite,p.props.secure);p.$modal.modal("hide")}function r(){var w;var v={};w=a();v=JSON.parse(f.get(p.props.cookieConsentName));v.analysis=w.analysis;v.personalization=w.personalization;f.set(p.props.cookieConsentName,JSON.stringify(v),p.props.cookieStorageDays,p.props.sameSite,p.props.secure);f.set(p.props.cookieName,JSON.stringify(a()),p.props.cookieStorageDays,p.props.sameSite,p.props.secure);p.$modal.modal("hide")}this.showDialog=function(){m()};this.getSettings=function(w){var v=f.get(p.props.cookieName);if(v){var x=JSON.parse(f.get(p.props.cookieName));if(w===undefined){return x}else{if(x){return x[w]}else{return false}}}else{return undefined}};u.info("\ninitializing core module finished");u.info("\nstate: finished")};
|
15
|
+
function Translator(d){var p=this;var u=log4javascript.getLogger("j1.core.translator");var l=new liteURL(window.location.href);var c=(l.protocol.includes("https"))?true:false;var q=false;var g;var s;this.props={contentURL:"/assets/data/translator",cookieName:"j1.user.state",cookieConsentName:"j1.user.consent",cookieStorageDays:365,cookieSameSite:"Strict",cookieSecure:c,translationEnabled:false,disableLanguageSelector:false,translatorName:"google",translationLanguages:"all",translationLanguage:"auto",translateAllPages:true,hideSuggestionBox:true,hidePoweredBy:true,hideTopFrame:true,dialogLanguage:"content",dialogLanguages:["en","de"],dialogContainerID:"translator-modal",xhrDataElement:"",postSelectionCallback:"",};for(var e in d){this.props[e]=d[e]}if(this.props.dialogLanguage.indexOf("-")!==-1){this.props.dialogLanguage=this.props.dialogLanguage.split("-")[0]}if(!this.props.dialogLanguages.includes(this.props.dialogLanguage)){this.props.dialogLanguage=this.props.dialogLanguages[0]}this.props.xhrDataElement=this.props.xhrDataElement+"-"+this.props.dialogLanguage;u.info("\ninitializing core module: started");u.info("\nstate: started");var f={set:function(x,z,C,y,A){var B=window.btoa(z);var v="";if(C){var w=new Date();w.setTime(w.getTime()+(C*24*60*60*1000));v="; expires="+w.toUTCString()}if(A){document.cookie=x+"="+(B||"")+v+"; Path=/; SameSite="+y+"; secure="+A+";"}else{document.cookie=x+"="+(B||"")+v+"; Path=/; SameSite="+y+";"}},get:function(w){var z=w+"=";var v=document.cookie.split(";");for(var x=0;x<v.length;x++){var B=v[x];while(B.charAt(0)===" "){B=B.substring(1,B.length)}if(B.indexOf(z)===0){var A=B.substring(z.length,B.length);var y=window.atob(A);return y}}return undefined}};var n={documentReady:function(v){if(document.readyState!=="loading"){v()}else{document.addEventListener("DOMContentLoaded",v)}}};function t(){var v={};var w=false;var x=0;var y=arguments.length;if(Object.prototype.toString.call(arguments[0])==="[object Boolean]"){w=arguments[0];x++}var A=function(B){for(var C in B){if(Object.prototype.hasOwnProperty.call(B,C)){if(w&&Object.prototype.toString.call(B[C])==="[object Object]"){v[C]=t(true,v[C],B[C])}else{v[C]=B[C]}}}};for(;x<y;x++){var z=arguments[x];A(z)}return v}function h(A,x){var v=Array.prototype.slice.call(arguments,2);var z=A.split(".");var y=z.pop();for(var w=0;w<z.length;w++){x=x[z[w]]}return x[y].apply(x,v)}function j(w){var v;var x=t({size:0,width:250,multiple:false,selectedIndex:1,enableAutoFilter:false,visibleRows:null,},w);v="#"+x.selector;$.ajax({url:x.url,dataType:"json",success:function(A){var z=[];if(p.props.translationLanguages.includes("all")){z=A[x.elm]}else{for(var y=0;y<A[x.elm].length;y++){if(p.props.translationLanguages.includes(A[x.elm][y].value)){z.push(A[x.elm][y])}}}if(x.visibleRows>z.length){x.visibleRows=z.length}MsDropdown.make(v,{byJson:{data:z,name:x.name,size:x.size,width:x.width,multiple:x.multiple,},enableAutoFilter:x.enableAutoFilter,visibleRows:x.visibleRows,})},error:function(y,A,z){u.error("\nfailed to retrieve JSON data from: "+x.url)}})}function m(){n.documentReady(function(){p.modal=document.getElementById(p.props.dialogContainerID);if(!p.modal){u.info("\nload consent modal");p.modal=document.createElement("div");p.modal.id=p.props.dialogContainerID;p.modal.setAttribute("class","modal fade");p.modal.setAttribute("tabindex","-1");p.modal.setAttribute("role","dialog");p.modal.setAttribute("aria-labelledby",p.props.dialogContainerID);document.body.append(p.modal);p.$modal=$(p.modal);p.$modal.on("show.bs.modal",function(){var w;var x;u.info("\nshow.bs.modal: entered");$.when(j({url:"/assets/data/iso-639-language-codes-flags.json",elm:"iso-639-languages",selector:"dropdownJSON",width:400,visibleRows:8,})).then(function(y){u.info("\ncreating msDropdown from JSON data: finished")})});p.$modal.on("shown.bs.modal",function(){var w;var x;x=setInterval(function(){if(typeof document.getElementById("dropdownJSON").msDropdown!=="undefined"){w=document.getElementById("dropdownJSON").msDropdown;if(!w.length){u.error("\nno msDropdown found in translation dialog");p.$modal.hide()}else{if(p.props.translationLanguage==="auto"){g=navigator.language||navigator.userLanguage;s=g.split("-")[0]}else{s=p.props.translationLanguage}w.selectedIndex=$("#dropdownJSON option[value="+s+"]").index();if(p.props.disableLanguageSelector){w.disabled=true}$("#dropdownJSON").show();$("body").addClass("stop-scrolling");u.info("\nmsDropdown successfully loaded in translation dialog");clearInterval(x)}}},25)});p.$modal.on("hidden.bs.modal",function(){$("body").removeClass("stop-scrolling");h(p.props.postSelectionCallback,window)});var v=p.props.contentURL+"/index.html";$.get(v).done(function(w){u.info("\nloading consent modal: successfully");p.modal.innerHTML=w;p.modal.innerHTML=$("#"+p.props.xhrDataElement).eq(0).html();$(p.modal).modal({backdrop:"static",keyboard:false});p.$buttonDoNotAgree=$("#translator-buttonDoNotAgree");p.$buttonAgree=$("#translator-buttonAgree");p.$buttonSave=$("#translator-buttonSave");p.$buttonAgreeAll=$("#translator-buttonAgreeAll");u.info("\nload/initialze options from cookie");k();i();$("#google-options").on("hide.bs.collapse",function(){q=false;k()}).on("show.bs.collapse",function(){q=true;k()});u.info("\ninitialze button event handler");p.$buttonDoNotAgree.click(function(){b()});p.$buttonAgree.click(function(){o()});p.$buttonSave.click(function(){$("#google-options").collapse("hide");r();i()});p.$buttonAgreeAll.click(function(){$("#google-options").collapse("hide");o()})}).fail(function(){u.error("\nloading translator dialog (modal): failed");u.warn("\nprobably no|wrong `contentURL` set")})}else{p.$modal.modal("show")}}.bind(this))}function i(){var x=p.getSettings();if(x){for(var w in x){var v=p.$modal.find("#google-options .translator-option[data-name="+w+'] input[type="checkbox"]');v.prop("checked",x[w])}}}function k(){if(q){p.$buttonDoNotAgree.hide();p.$buttonAgree.hide();p.$buttonSave.show();p.$buttonAgreeAll.show()}else{p.$buttonDoNotAgree.show();p.$buttonAgree.show();p.$buttonSave.hide();p.$buttonAgreeAll.hide()}}function a(w){var v=p.$modal.find("#google-options .translator-option");var y={};for(var z=0;z<v.length;z++){var B=v[z];var x=B.getAttribute("data-name");if(x==="necessary"){y[x]=true}else{if(w===undefined){var A=$(B).find('input[type="checkbox"]');y[x]=A.prop("checked")}else{y[x]=!!w}}}return y}function o(){var w=a(true);var v={};v=JSON.parse(f.get(p.props.cookieConsentName));v.analysis=w.analysis;v.personalization=w.personalization;f.set(p.props.cookieConsentName,JSON.stringify(v),p.props.cookieStorageDays,p.props.sameSite,p.props.secure);f.set(p.props.cookieName,JSON.stringify(w),p.props.cookieStorageDays,p.props.sameSite,p.props.secure);p.$modal.modal("hide")}function b(){var v=a();v.translationEnabled=false;f.set(p.props.cookieName,JSON.stringify(v),p.props.cookieStorageDays,p.props.sameSite,p.props.secure);p.$modal.modal("hide")}function r(){var w;var v={};w=a();v=JSON.parse(f.get(p.props.cookieConsentName));v.analysis=w.analysis;v.personalization=w.personalization;f.set(p.props.cookieConsentName,JSON.stringify(v),p.props.cookieStorageDays,p.props.sameSite,p.props.secure);f.set(p.props.cookieName,JSON.stringify(a()),p.props.cookieStorageDays,p.props.sameSite,p.props.secure);p.$modal.modal("hide")}this.showDialog=function(){m()};this.getSettings=function(w){var v=f.get(p.props.cookieName);if(v){var x=JSON.parse(f.get(p.props.cookieName));if(w===undefined){return x}else{if(x){return x[w]}else{return false}}}else{return undefined}};u.info("\ninitializing core module finished");u.info("\nstate: finished")};
|
@@ -96,7 +96,7 @@
|
|
96
96
|
buttonsHTML += '</span>';
|
97
97
|
buttonsHTML += '</div>';
|
98
98
|
|
99
|
-
h.$id = "#" + h.$el["0"].id;
|
99
|
+
h.$id = "#void" + h.$el["0"].id;
|
100
100
|
h.$pickerHeigth = h.options.height.replace("px", "");
|
101
101
|
h.$pickerHeigth = Number(h.$pickerHeigth);
|
102
102
|
h.$wrapper = h.$el.wrap('<div class="twemoji-wrap"></div>').parent();
|
@@ -16,4 +16,4 @@
|
|
16
16
|
# For details, https://github.com/xLs51/Twemoji-Picker
|
17
17
|
# -----------------------------------------------------------------------------
|
18
18
|
*/
|
19
|
-
(function(c,h,a){var k=150;var i={};var e="/assets/data/twa_v1.json";var j;var l;c.TwemojiPicker=function(d,b){var f=this;c.when(this._loadDatabase()).done(function(m){f.$el=c(d);f._init(b)})};c.TwemojiPicker.defaults={init:null,language:"en",size:25,icon:"grinning",iconSize:25,height:100,width:null,category:["smile","cherry-blossom","video-game","oncoming-automobile","symbols"],categorySize:20,pickerPosition:null,pickerHeight:150,pickerWidth:null,placeholder:"Click on Picker to select Emoji's from a Category",};c.TwemojiPicker.prototype={_init:function(b){this.options=c.extend(true,{},c.TwemojiPicker.defaults,b);this._initPicker();this._initCategory();this._initTwemoji();this._initText();this._initStyle();this._initEvents()},_loadDatabase:function g(){return c.ajax({url:e,success:function(b){if(typeof b=="string"){i=JSON.parse(b)}if(typeof b=="object"){i=b}}})},_initPicker:function(){var f=this;var b;var d;if(f.options.language=="en"){b="Clear";j="Copied to Clipboard";l=f.options.placeholder}else{if(f.options.language=="de"){b="Löschen";j="Kopiert zur Zwischenablage";l="Klicken Sie auf Picker zur Auswahl von Emoji's aus einer Kategorie"}else{b="Clear";j="in Clipboard";l=f.options.placeholder}}d='<div class="twemoji-icon-picker">';d+='<span id="open-group" class="mr-2" style="width: 2rem; height: 2rem;">';d+='<button type="button" name="open-group" class="btn btn-raised btn-flex btn-primary mr-2"><i class="toggle-button mdi mdi-lg mr-1 mdi-toggle-switch-off"></i> Picker </button>';d+="</span>";d+='<span id="clear-textarea" style="width: 2rem; height: 2rem;">';d+='<button type="button" name="clear-textarea" class="btn btn-raised btn-flex btn-primary"><i class="mdi mdi-close mdi-lg mr-1"></i>'+b+"</button>";d+="</span>";d+="</div>";f.$id="#"+f.$el["0"].id;f.$pickerHeigth=f.options.height.replace("px","");f.$pickerHeigth=Number(f.$pickerHeigth);f.$wrapper=f.$el.wrap('<div class="twemoji-wrap"></div>').parent();f.$wrapper.append('<div class="twemoji-textarea" contentEditable="true" placeholder="'+l+'"></div>');f.$wrapper.append('<div class="twemoji-textarea-duplicate"></div>');f.$wrapper.append(d);f.$wrapper.append('<div class="twemoji-picker"></div>');f.$el.hide();f.$textarea=f.$wrapper.find(".twemoji-textarea");f.$textareaDuplicate=f.$wrapper.find(".twemoji-textarea-duplicate").hide();f.$iconPicker=f.$wrapper.find("#open-group");f.$clearTextarea=f.$wrapper.find("#clear-textarea");f.$picker=f.$wrapper.find(".twemoji-picker").hide()},_initCategory:function(){var d=this;var b=this.options.category;this.categoryName=["people","nature","object","place","symbol"];this.$picker.append('<div class="twemoji-picker-category"></div>');this.$pickerCategory=this.$picker.find(".twemoji-picker-category");c.each(this.categoryName,function(m,f){d.$pickerCategory.append('<span data-category="'+f+'">'+d.imageFromName(b[m])+"</span>")});this.$pickerCategory.find("span:first").addClass("active")},_initTwemoji:function(){var b=this;c.each(this.categoryName,function(f,d){b.$picker.append('<div class="twemoji-list '+d+'"></div>');c.each(i,function(n,m){if(m.category===d){b.$wrapper.find(".twemoji-picker ."+d).append('<span><img class="emoji" draggable="false" src="'+m.base64+'" alt="'+m.value+'" title="'+m.name+'"></span>')}})});this.$twemojiList=this.$picker.find(".twemoji-list");this.$twemojiList.not(":first").hide()},_initText:function(){if(this.options.init){var b=this.options.init;var d=/:([\w-]+):/g;var f;while(f==d.exec(b)){b=b.replace(f[0],this.imageFromName(f[1],true))}this.$textarea.html(b);this.copyTextArea(this.$textarea.html())}},_initStyle:function(){this.$wrapper.css({width:this.options.width?this.options.width:"100%",height:this.options.height?this.options.height:"",});this.$wrapper.find("img").css({width:this.options.size,height:this.options.size,});this.$iconPicker.css({width:this.options.iconSize,height:this.options.iconSize,});this.$pickerCategory.find("img").css({width:this.options.categorySize,height:this.options.categorySize,});this.$twemojiList.css({width:this.options.pickerWidth?this.options.pickerWidth:"100%",height:this.options.pickerHeight,});this.$picker.css({width:this.options.pickerWidth?this.options.pickerWidth:"100%",top:this.options.pickerPosition==="top"?"-"+this.$picker.outerHeight()+"px":"",})},_initEvents:function(){var b=this;this.$textarea.on("keyup",function(){b.copyTextArea(c(this).html())});this.$iconPicker.on("click",function(){var d=c(".twemoji-picker").height()+k;c("#picker").height(d);c(".toggle-button").toggleClass("mdi-toggle-switch-off mdi-toggle-switch");if(!b.openedPicker){b.openPicker()}else{b.closePicker();c("#picker").height(b.$pickerHeigth)}});this.$clearTextarea.on("click",function(){b.copyTextArea("");c(b.$id).val("");c(".twemoji-textarea > .emoji-span").remove()});this.$pickerCategory.find("span").on("click",function(){var d=c(this).data("category");b.openCategory(c(this),d)});this.$pickerCategory.find(".close").on("click",function(){if(b.openedPicker){b.closePicker()}});this.$twemojiList.find("img").on("click",function(){b.copyTwemoji(c(this))})},copyText:function(f){var d=document.createElement("textarea");d.setAttribute("style","position:fixed;opacity:0;top:100px;left:100px;");d.value=f;document.body.appendChild(d);d.select();document.execCommand("copy");var b=document.createElement("div");b.setAttribute("class","copied");b.appendChild(document.createTextNode(j));document.body.appendChild(b);setTimeout(function(){document.body.removeChild(d);document.body.removeChild(b)},1500)},openPicker:function(){this.$picker.show();this.openedPicker=true},closePicker:function(){this.$picker.hide();this.openedPicker=false},openCategory:function(d,b){this.$pickerCategory.find("span").removeClass("active");d.addClass("active");this.$twemojiList.not(".twemoji-picker ."+b).hide();this.$twemojiList.filter(".twemoji-picker ."+b).show()},copyTwemoji:function(b){var m=b.attr("alt");var d=b.attr("src");var f=b.attr("title");var n="emoji:"+f+"[]";this.copyText(n);this.$textarea.focus();this.pasteAtCursor('<span class="emoji-span"><img class="emoji" src="'+d+'" title="'+f+'" alt="'+m+'" width="'+this.options.size+'" height="'+this.options.size+'"> '+n+"</span> ");this.copyTextArea(this.$textarea.html())},copyTextArea:function(b){var f=this.$textareaDuplicate.html(b);f.find("img").replaceWith(function(){return this.alt});var d=f.html();this.$el.text(d)},imageFromName:function(d,b){var f=c.grep(i,function(m){return m.name==d});if(b){return'<img class="emoji" src="'+f[0].base64+'" alt="'+f[0].value+'" width="'+this.options.size+'" height="'+this.options.size+'">'}return'<img class="emoji" draggable="false" src="'+f[0].base64+'" alt="'+d+'">'},pasteAtCursor:function(b){var d,q;if(h.getSelection){d=h.getSelection();if(d.getRangeAt&&d.rangeCount){q=d.getRangeAt(0);q.deleteContents();var p=document.createElement("div");p.innerHTML=b;var r=document.createDocumentFragment(),f,o;while((f=p.firstChild)){o=r.appendChild(f)}q.insertNode(r);if(o){q=q.cloneRange();q.setStartAfter(o);q.collapse(true);d.removeAllRanges();d.addRange(q)}}}else{if(document.selection&&document.selection.type!="Control"){document.selection.createRange().pasteHTML(b)}}}};c.fn.twemojiPicker=function(b){var d=c.data(this,"twemojiPicker");this.each(function(){d?d._init():d=c.data(this,"twemojiPicker",new c.TwemojiPicker(this,b))});return d}})(jQuery,window);
|
19
|
+
(function(c,h,a){var k=150;var i={};var e="/assets/data/twa_v1.json";var j;var l;c.TwemojiPicker=function(d,b){var f=this;c.when(this._loadDatabase()).done(function(m){f.$el=c(d);f._init(b)})};c.TwemojiPicker.defaults={init:null,language:"en",size:25,icon:"grinning",iconSize:25,height:100,width:null,category:["smile","cherry-blossom","video-game","oncoming-automobile","symbols"],categorySize:20,pickerPosition:null,pickerHeight:150,pickerWidth:null,placeholder:"Click on Picker to select Emoji's from a Category",};c.TwemojiPicker.prototype={_init:function(b){this.options=c.extend(true,{},c.TwemojiPicker.defaults,b);this._initPicker();this._initCategory();this._initTwemoji();this._initText();this._initStyle();this._initEvents()},_loadDatabase:function g(){return c.ajax({url:e,success:function(b){if(typeof b=="string"){i=JSON.parse(b)}if(typeof b=="object"){i=b}}})},_initPicker:function(){var f=this;var b;var d;if(f.options.language=="en"){b="Clear";j="Copied to Clipboard";l=f.options.placeholder}else{if(f.options.language=="de"){b="Löschen";j="Kopiert zur Zwischenablage";l="Klicken Sie auf Picker zur Auswahl von Emoji's aus einer Kategorie"}else{b="Clear";j="in Clipboard";l=f.options.placeholder}}d='<div class="twemoji-icon-picker">';d+='<span id="open-group" class="mr-2" style="width: 2rem; height: 2rem;">';d+='<button type="button" name="open-group" class="btn btn-raised btn-flex btn-primary mr-2"><i class="toggle-button mdi mdi-lg mr-1 mdi-toggle-switch-off"></i> Picker </button>';d+="</span>";d+='<span id="clear-textarea" style="width: 2rem; height: 2rem;">';d+='<button type="button" name="clear-textarea" class="btn btn-raised btn-flex btn-primary"><i class="mdi mdi-close mdi-lg mr-1"></i>'+b+"</button>";d+="</span>";d+="</div>";f.$id="#void"+f.$el["0"].id;f.$pickerHeigth=f.options.height.replace("px","");f.$pickerHeigth=Number(f.$pickerHeigth);f.$wrapper=f.$el.wrap('<div class="twemoji-wrap"></div>').parent();f.$wrapper.append('<div class="twemoji-textarea" contentEditable="true" placeholder="'+l+'"></div>');f.$wrapper.append('<div class="twemoji-textarea-duplicate"></div>');f.$wrapper.append(d);f.$wrapper.append('<div class="twemoji-picker"></div>');f.$el.hide();f.$textarea=f.$wrapper.find(".twemoji-textarea");f.$textareaDuplicate=f.$wrapper.find(".twemoji-textarea-duplicate").hide();f.$iconPicker=f.$wrapper.find("#open-group");f.$clearTextarea=f.$wrapper.find("#clear-textarea");f.$picker=f.$wrapper.find(".twemoji-picker").hide()},_initCategory:function(){var d=this;var b=this.options.category;this.categoryName=["people","nature","object","place","symbol"];this.$picker.append('<div class="twemoji-picker-category"></div>');this.$pickerCategory=this.$picker.find(".twemoji-picker-category");c.each(this.categoryName,function(m,f){d.$pickerCategory.append('<span data-category="'+f+'">'+d.imageFromName(b[m])+"</span>")});this.$pickerCategory.find("span:first").addClass("active")},_initTwemoji:function(){var b=this;c.each(this.categoryName,function(f,d){b.$picker.append('<div class="twemoji-list '+d+'"></div>');c.each(i,function(n,m){if(m.category===d){b.$wrapper.find(".twemoji-picker ."+d).append('<span><img class="emoji" draggable="false" src="'+m.base64+'" alt="'+m.value+'" title="'+m.name+'"></span>')}})});this.$twemojiList=this.$picker.find(".twemoji-list");this.$twemojiList.not(":first").hide()},_initText:function(){if(this.options.init){var b=this.options.init;var d=/:([\w-]+):/g;var f;while(f==d.exec(b)){b=b.replace(f[0],this.imageFromName(f[1],true))}this.$textarea.html(b);this.copyTextArea(this.$textarea.html())}},_initStyle:function(){this.$wrapper.css({width:this.options.width?this.options.width:"100%",height:this.options.height?this.options.height:"",});this.$wrapper.find("img").css({width:this.options.size,height:this.options.size,});this.$iconPicker.css({width:this.options.iconSize,height:this.options.iconSize,});this.$pickerCategory.find("img").css({width:this.options.categorySize,height:this.options.categorySize,});this.$twemojiList.css({width:this.options.pickerWidth?this.options.pickerWidth:"100%",height:this.options.pickerHeight,});this.$picker.css({width:this.options.pickerWidth?this.options.pickerWidth:"100%",top:this.options.pickerPosition==="top"?"-"+this.$picker.outerHeight()+"px":"",})},_initEvents:function(){var b=this;this.$textarea.on("keyup",function(){b.copyTextArea(c(this).html())});this.$iconPicker.on("click",function(){var d=c(".twemoji-picker").height()+k;c("#picker").height(d);c(".toggle-button").toggleClass("mdi-toggle-switch-off mdi-toggle-switch");if(!b.openedPicker){b.openPicker()}else{b.closePicker();c("#picker").height(b.$pickerHeigth)}});this.$clearTextarea.on("click",function(){b.copyTextArea("");c(b.$id).val("");c(".twemoji-textarea > .emoji-span").remove()});this.$pickerCategory.find("span").on("click",function(){var d=c(this).data("category");b.openCategory(c(this),d)});this.$pickerCategory.find(".close").on("click",function(){if(b.openedPicker){b.closePicker()}});this.$twemojiList.find("img").on("click",function(){b.copyTwemoji(c(this))})},copyText:function(f){var d=document.createElement("textarea");d.setAttribute("style","position:fixed;opacity:0;top:100px;left:100px;");d.value=f;document.body.appendChild(d);d.select();document.execCommand("copy");var b=document.createElement("div");b.setAttribute("class","copied");b.appendChild(document.createTextNode(j));document.body.appendChild(b);setTimeout(function(){document.body.removeChild(d);document.body.removeChild(b)},1500)},openPicker:function(){this.$picker.show();this.openedPicker=true},closePicker:function(){this.$picker.hide();this.openedPicker=false},openCategory:function(d,b){this.$pickerCategory.find("span").removeClass("active");d.addClass("active");this.$twemojiList.not(".twemoji-picker ."+b).hide();this.$twemojiList.filter(".twemoji-picker ."+b).show()},copyTwemoji:function(b){var m=b.attr("alt");var d=b.attr("src");var f=b.attr("title");var n="emoji:"+f+"[]";this.copyText(n);this.$textarea.focus();this.pasteAtCursor('<span class="emoji-span"><img class="emoji" src="'+d+'" title="'+f+'" alt="'+m+'" width="'+this.options.size+'" height="'+this.options.size+'"> '+n+"</span> ");this.copyTextArea(this.$textarea.html())},copyTextArea:function(b){var f=this.$textareaDuplicate.html(b);f.find("img").replaceWith(function(){return this.alt});var d=f.html();this.$el.text(d)},imageFromName:function(d,b){var f=c.grep(i,function(m){return m.name==d});if(b){return'<img class="emoji" src="'+f[0].base64+'" alt="'+f[0].value+'" width="'+this.options.size+'" height="'+this.options.size+'">'}return'<img class="emoji" draggable="false" src="'+f[0].base64+'" alt="'+d+'">'},pasteAtCursor:function(b){var d,q;if(h.getSelection){d=h.getSelection();if(d.getRangeAt&&d.rangeCount){q=d.getRangeAt(0);q.deleteContents();var p=document.createElement("div");p.innerHTML=b;var r=document.createDocumentFragment(),f,o;while((f=p.firstChild)){o=r.appendChild(f)}q.insertNode(r);if(o){q=q.cloneRange();q.setStartAfter(o);q.collapse(true);d.removeAllRanges();d.addRange(q)}}}else{if(document.selection&&document.selection.type!="Control"){document.selection.createRange().pasteHTML(b)}}}};c.fn.twemojiPicker=function(b){var d=c.data(this,"twemojiPicker");this.each(function(){d?d._init():d=c.data(this,"twemojiPicker",new c.TwemojiPicker(this,b))});return d}})(jQuery,window);
|