j1-template 2023.5.2 → 2023.7.0
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/layouts/content_generator_news_panel_posts.html +11 -9
- data/_includes/themes/j1/layouts/content_generator_post.html +8 -6
- data/_includes/themes/j1/procedures/global/create_word_cloud.proc +1 -1
- data/_includes/themes/j1/procedures/layouts/module_writer.proc +1 -1
- data/_includes/themes/j1/procedures/posts/collate_timeline.proc +4 -4
- data/_includes/themes/j1/procedures/posts/pager.proc +1 -1
- data/_layouts/_home.html +88 -0
- data/_layouts/home.html +1 -1
- data/assets/data/banner.html +7 -7
- data/assets/data/panel.html +37 -25
- data/assets/data/quicklinks.html +40 -30
- data/assets/data/speak2me.html +219 -0
- data/assets/data/translator.html +32 -4
- data/assets/themes/j1/adapter/js/speak2me.js +425 -0
- data/assets/themes/j1/adapter/js/translator.js +10 -2
- data/assets/themes/j1/core/css/icon-fonts/mdib.css +21 -0
- data/assets/themes/j1/core/css/icon-fonts/mdib.min.css +1 -1
- data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.css +34 -40
- data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.min.css +2 -2
- data/assets/themes/j1/core/css/themes/unodark/bootstrap.css +77 -57
- data/assets/themes/j1/core/css/themes/unodark/bootstrap.min.css +2 -2
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +176 -42
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +3 -3
- data/assets/themes/j1/core/js/template.js +1658 -0
- data/assets/themes/j1/core/js/template.min.js +11 -5
- data/assets/themes/j1/core/js/template.min.js.map +1 -1
- data/assets/themes/j1/modules/speak2me/LICENSE +21 -0
- data/assets/themes/j1/modules/speak2me/js/speak2me.js +947 -0
- data/assets/themes/j1/modules/speak2me/js/speak2me.min.js +26 -0
- data/assets/themes/j1/modules/translator/js/translator.js +30 -13
- data/assets/themes/j1/modules/translator/js/translator.min.js +1 -1
- data/lib/j1/version.rb +1 -1
- data/lib/starter_web/Gemfile +5 -5
- data/lib/starter_web/README.md +5 -5
- data/lib/starter_web/_config.yml +12 -44
- data/lib/starter_web/_data/blocks/banner.yml +7 -6
- data/lib/starter_web/_data/blocks/panel.yml +37 -39
- data/lib/starter_web/_data/layouts/home.yml +1 -1
- data/lib/starter_web/_data/modules/advertising.yml +10 -88
- data/lib/starter_web/_data/modules/buymeacoffee.yml +30 -0
- data/lib/starter_web/_data/modules/defaults/advertising.yml +3 -1
- data/lib/starter_web/_data/modules/defaults/blog_navigator.yml +97 -164
- data/lib/starter_web/_data/modules/defaults/buymeacoffee.yml +30 -0
- data/lib/starter_web/_data/modules/defaults/navigator.yml +8 -4
- data/lib/starter_web/_data/modules/defaults/speak2me.yml +72 -0
- data/lib/starter_web/_data/modules/scroller.yml +1 -1
- data/lib/starter_web/_data/modules/speak2me.yml +33 -0
- data/lib/starter_web/_data/resources.yml +24 -1
- data/lib/starter_web/_data/templates/feed.xml +1 -1
- data/lib/starter_web/_includes/google/static/{google_ad_5128488466.html → google_ad__your-slot-id.html} +1 -1
- data/lib/starter_web/_plugins/asciidoctor/callout.rb +1 -1
- data/lib/starter_web/_plugins/asciidoctor/carousel-block.rb +2 -2
- data/lib/starter_web/_plugins/asciidoctor/gallery-block.rb +2 -2
- data/lib/starter_web/_plugins/asciidoctor/gist-block.rb +2 -2
- data/lib/starter_web/_plugins/asciidoctor/google-ad-block.rb +1 -1
- data/lib/starter_web/_plugins/asciidoctor/lightbox-block.rb +2 -7
- data/lib/starter_web/_plugins/asciidoctor/masonry-block.rb +2 -3
- data/lib/starter_web/_plugins/asciidoctor/masterslider-block.rb +2 -2
- data/lib/starter_web/_plugins/asciidoctor/mdib-icon-inline.rb +43 -0
- data/lib/starter_web/_plugins/asciidoctor/mdil-icon-inline.rb +1 -1
- data/lib/starter_web/_plugins/asciidoctor/range-slider-block.rb +1 -1
- data/lib/starter_web/_plugins/asciidoctor/slick-block.rb +2 -2
- data/lib/starter_web/_plugins/asciidoctor/textbook-block.rb +1 -1
- data/lib/starter_web/_plugins/filter/liquify.rb +22 -22
- data/lib/starter_web/_plugins/index/lunr.rb +1 -1
- data/lib/starter_web/assets/images/collections/books/biography/a_life_in_questions.jpg +0 -0
- data/lib/starter_web/assets/images/collections/books/biography/becoming.jpg +0 -0
- data/lib/starter_web/assets/images/collections/books/biography/born_to_run.jpg +0 -0
- data/lib/starter_web/assets/images/collections/books/biography/forty_autumns.jpg +0 -0
- data/lib/starter_web/assets/images/collections/books/biography/not_dead_yet.jpg +0 -0
- data/lib/starter_web/assets/images/collections/books/biography/the_princess_diarist.jpg +0 -0
- data/lib/starter_web/assets/images/collections/books/biography/when_breath_becomes_air.jpg +0 -0
- data/lib/starter_web/assets/images/collections/books/fantasy/harry-potter-deathly-hallows.jpg +0 -0
- data/lib/starter_web/assets/images/collections/books/fantasy/harry-potter-philosophers-stone.jpg +0 -0
- data/lib/starter_web/assets/images/collections/books/fantasy/mistborn-trilogy.jpg +0 -0
- data/lib/starter_web/assets/images/collections/books/fantasy/ready-player-one.jpg +0 -0
- data/lib/starter_web/assets/images/collections/books/fantasy/sword-of-destiny.jpg +0 -0
- data/lib/starter_web/assets/images/collections/books/fantasy/terry-pratchet-diary.jpg +0 -0
- data/lib/starter_web/assets/images/collections/books/romance/breath-of-snow-and-ashes.jpg +0 -0
- data/lib/starter_web/assets/images/collections/books/romance/it-ends-with-us.jpg +0 -0
- data/lib/starter_web/assets/images/collections/books/romance/outlander-novel.jpg +0 -0
- data/lib/starter_web/assets/images/collections/books/romance/outlander-short-story.jpg +0 -0
- data/lib/starter_web/assets/images/collections/books/romance/the-fiery-cross.jpg +0 -0
- data/lib/starter_web/assets/images/collections/books/romance/the_dressmaker.jpg +0 -0
- data/lib/starter_web/collections/_biography/a-life-in-questions.adoc +13 -8
- data/lib/starter_web/collections/_biography/becoming.adoc +18 -12
- data/lib/starter_web/collections/_biography/born-to-run.adoc +17 -13
- data/lib/starter_web/collections/_biography/forty-autumns.adoc +14 -9
- data/lib/starter_web/collections/_biography/not-dead-yet.adoc +12 -7
- data/lib/starter_web/collections/_biography/princess-diarist-the.adoc +13 -8
- data/lib/starter_web/collections/_biography/when-breath-becomes-air.adoc +14 -9
- data/lib/starter_web/collections/_fantasy/harry-potter-deathly-hallows.adoc +13 -7
- data/lib/starter_web/collections/_fantasy/harry-potter-philosophers-stone.adoc +12 -8
- data/lib/starter_web/collections/_fantasy/mistborn-trilogy.adoc +14 -10
- data/lib/starter_web/collections/_fantasy/ready-player-one.adoc +12 -11
- data/lib/starter_web/collections/_fantasy/sword-of-destiny.adoc +15 -7
- data/lib/starter_web/collections/_fantasy/terry-pratchet-diary.adoc +11 -6
- data/lib/starter_web/collections/_romance/breath-of-snow-and-ashes.adoc +15 -10
- data/lib/starter_web/collections/_romance/it-ends-with-us.adoc +11 -6
- data/lib/starter_web/collections/_romance/outlander-novel.adoc +11 -6
- data/lib/starter_web/collections/_romance/{virgins-outlander-short-story.adoc → outlander-virgins-short-story.adoc} +11 -6
- data/lib/starter_web/collections/_romance/{dressmaker-the.adoc → the-dressmaker.adoc} +11 -6
- data/lib/starter_web/collections/_romance/{fiery-cross-the.adoc → the-fiery-cross.adoc} +11 -6
- data/lib/starter_web/collections/posts/public/featured/_posts/0000-00-00-welcome-to-j1.adoc.erb +6 -6
- data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.adoc +12 -11
- data/lib/starter_web/collections/posts/public/featured/_posts/2021-02-01-static-site-generators.adoc +9 -7
- data/lib/starter_web/collections/posts/public/featured/_posts/2022-02-01-about-j1.adoc +8 -8
- data/lib/starter_web/dot.ruby-version +1 -1
- data/lib/starter_web/index.html +10 -8
- data/lib/starter_web/package.json +1 -1
- data/lib/starter_web/pages/public/about/features.adoc +7 -1
- data/lib/starter_web/pages/public/about/reporting_issues.adoc +2 -0
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/000_intro.adoc +2 -0
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/100_converter.adoc +2 -0
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/200_themes.adoc +2 -0
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/000_intro.asciidoc +1 -1
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/112_getting_started.asciidoc +1 -0
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/113_themes.asciidoc +1 -0
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +2 -0
- data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/_includes/documents/100_chapter.asciidoc +3 -1
- data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/_includes/documents/200_chapter.asciidoc +1 -0
- data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +2 -0
- data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +6 -0
- data/lib/starter_web/pages/public/blog/navigator/archive/allview.html +6 -13
- data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +17 -11
- data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +7 -8
- data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +5 -7
- data/lib/starter_web/pages/public/blog/navigator/index.html +15 -14
- data/lib/starter_web/pages/public/features/general.adoc +7 -1
- data/lib/starter_web/pages/public/features/template.adoc +87 -128
- data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_all_books.adoc +10 -2
- data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_biography.adoc +8 -3
- data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_fantasy.adoc +11 -4
- data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_romance.adoc +11 -5
- data/lib/starter_web/pages/public/learn/bookshelf/jekyll_collections.adoc +24 -14
- data/lib/starter_web/pages/public/learn/bs_sass_variables/bs_sass_variables.adoc +4 -0
- data/lib/starter_web/pages/public/learn/core_web_vitals/core_web_vitals.adoc +8 -4
- data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/100_gistblock.asciidoc +2 -1
- data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/themes_bootstrap.asciidoc +27 -28
- data/lib/starter_web/pages/public/learn/roundtrip/asciidoc_extensions.adoc +169 -155
- data/lib/starter_web/pages/public/learn/roundtrip/bootstrap_themes.adoc +28 -19
- data/lib/starter_web/pages/public/learn/roundtrip/highlghter_rouge.adoc +9 -5
- data/lib/starter_web/pages/public/learn/roundtrip/icon_fonts.adoc +67 -77
- data/lib/starter_web/pages/public/learn/roundtrip/lunr_search.1.asciidoc +460 -0
- data/lib/starter_web/pages/public/learn/roundtrip/lunr_search.adoc +12 -7
- data/lib/starter_web/pages/public/learn/roundtrip/modal_extentions.adoc +26 -19
- data/lib/starter_web/pages/public/learn/roundtrip/present_images.adoc +470 -447
- data/lib/starter_web/pages/public/learn/roundtrip/present_videos.adoc +60 -59
- data/lib/starter_web/pages/public/learn/roundtrip/responsive_tables.adoc +51 -38
- data/lib/starter_web/pages/public/learn/roundtrip/typography.adoc +31 -25
- data/lib/starter_web/pages/public/learn/where_to_go.adoc +9 -4
- data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +4 -0
- data/lib/starter_web/pages/public/legal/en/200_impress.adoc +2 -0
- data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +22 -3
- data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +5 -0
- data/lib/starter_web/pages/public/manuals/speak2me.adoc +412 -0
- data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +27 -19
- data/lib/starter_web/pages/public/plans/plans.adoc +3 -0
- data/lib/starter_web/pages/public/tools/cheatsheet/gem.adoc +2 -0
- data/lib/starter_web/pages/public/tools/cheatsheet/git.adoc +2 -0
- data/lib/starter_web/pages/public/tools/cheatsheet/j1.adoc +2 -0
- data/lib/starter_web/pages/public/tools/cheatsheet/yaml.adoc +6 -0
- data/lib/starter_web/pages/public/tools/previewer/preview_bootstrap_theme.adoc +17 -3
- data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
- data/lib/starter_web/utilsrv/package.json +1 -1
- metadata +38 -7
- data/lib/starter_web/_includes/google/static/google_ad_7284712660.html +0 -19
@@ -0,0 +1,425 @@
|
|
1
|
+
---
|
2
|
+
regenerate: true
|
3
|
+
---
|
4
|
+
|
5
|
+
{% capture cache %}
|
6
|
+
|
7
|
+
{% comment %}
|
8
|
+
# -----------------------------------------------------------------------------
|
9
|
+
# ~/assets/themes/j1/adapter/js/speak2me.js
|
10
|
+
# Liquid template to adapt the Speak2Me module
|
11
|
+
#
|
12
|
+
# Product/Info:
|
13
|
+
# https://jekyll.one
|
14
|
+
# Copyright (C) 2023 Juergen Adams
|
15
|
+
#
|
16
|
+
# J1 Theme is licensed under the MIT License.
|
17
|
+
# For details, see: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE.md
|
18
|
+
# -----------------------------------------------------------------------------
|
19
|
+
# Test data:
|
20
|
+
# {{ liquid_var | debug }}
|
21
|
+
# speak2me_options: {{ speak2me_options | debug }}
|
22
|
+
# -----------------------------------------------------------------------------
|
23
|
+
{% endcomment %}
|
24
|
+
|
25
|
+
{% comment %} Liquid procedures
|
26
|
+
-------------------------------------------------------------------------------- {% endcomment %}
|
27
|
+
|
28
|
+
{% comment %} Set global settings
|
29
|
+
-------------------------------------------------------------------------------- {% endcomment %}
|
30
|
+
{% assign environment = site.environment %}
|
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 speak2me_defaults = modules.defaults.speak2me.defaults %}
|
45
|
+
{% assign speak2me_settings = modules.speak2me.settings %}
|
46
|
+
|
47
|
+
{% comment %} Set config options (settings only)
|
48
|
+
-------------------------------------------------------------------------------- {% endcomment %}
|
49
|
+
{% assign speak2me_options = speak2me_defaults | merge: speak2me_settings %}
|
50
|
+
|
51
|
+
{% comment %} Variables
|
52
|
+
-------------------------------------------------------------------------------- {% endcomment %}
|
53
|
+
{% assign comments = speak2me_options.enabled %}
|
54
|
+
|
55
|
+
{% comment %} Detect prod mode
|
56
|
+
-------------------------------------------------------------------------------- {% endcomment %}
|
57
|
+
{% assign production = false %}
|
58
|
+
{% if environment == 'prod' or environment == 'production' %}
|
59
|
+
{% assign production = true %}
|
60
|
+
{% endif %}
|
61
|
+
|
62
|
+
/*
|
63
|
+
# -----------------------------------------------------------------------------
|
64
|
+
# ~/assets/themes/j1/adapter/js/speak2me.js
|
65
|
+
# J1 Adapter for the speak2me module
|
66
|
+
#
|
67
|
+
# Product/Info:
|
68
|
+
# https://jekyll.one
|
69
|
+
#
|
70
|
+
# Copyright (C) 2023 Juergen Adams
|
71
|
+
#
|
72
|
+
# J1 Theme is licensed under the MIT License.
|
73
|
+
# For details, see: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE.md
|
74
|
+
# -----------------------------------------------------------------------------
|
75
|
+
# NOTE: Wave styles defind in /assets/data/panel.html, key 'wave'
|
76
|
+
# -----------------------------------------------------------------------------
|
77
|
+
# Adapter generated: {{site.time}}
|
78
|
+
# -----------------------------------------------------------------------------
|
79
|
+
*/
|
80
|
+
|
81
|
+
// -----------------------------------------------------------------------------
|
82
|
+
// ESLint shimming
|
83
|
+
// -----------------------------------------------------------------------------
|
84
|
+
/* eslint indent: "off" */
|
85
|
+
// -----------------------------------------------------------------------------
|
86
|
+
'use strict';
|
87
|
+
j1.adapter.speak2me = (function (j1, window) {
|
88
|
+
|
89
|
+
{% comment %} Set global variables
|
90
|
+
-------------------------------------------------------------------------------- {% endcomment %}
|
91
|
+
var environment = '{{environment}}';
|
92
|
+
var cookie_names = j1.getCookieNames();
|
93
|
+
var user_state = j1.readCookie(cookie_names.user_state);
|
94
|
+
var state = 'not_started';
|
95
|
+
var isFirefox = /Firefox/i.test(navigator.userAgent);
|
96
|
+
var chrome = /chrome/i.test( navigator.userAgent );
|
97
|
+
var isEdge = /Edg/i.test(navigator.userAgent);
|
98
|
+
var isOpera = /OPR/i.test(navigator.userAgent);
|
99
|
+
var isAvast = /Avast/i.test(navigator.userAgent);
|
100
|
+
var isChrome = ((chrome) && (!isEdge));
|
101
|
+
var ttsDisabled = false;
|
102
|
+
var isMobile = (window.orientation !== undefined) ? true :false; // NOTE: window.orientation is DEPRECATED
|
103
|
+
// var isMobile = (screen.orientation.type == 'portrait-secondary') ? true : false;
|
104
|
+
|
105
|
+
var frontmatterOptions;
|
106
|
+
var speak2meDefaults;
|
107
|
+
var speak2meSettings;
|
108
|
+
var speak2meOptions;
|
109
|
+
var speak2meModal;
|
110
|
+
var _this;
|
111
|
+
var logger;
|
112
|
+
var logText;
|
113
|
+
|
114
|
+
// -------------------------------------------------------------------------
|
115
|
+
// global event handler
|
116
|
+
// -------------------------------------------------------------------------
|
117
|
+
var Events = {
|
118
|
+
documentReady: function (onDocumentReady) {
|
119
|
+
if (document.readyState !== 'loading') {
|
120
|
+
onDocumentReady();
|
121
|
+
} else {
|
122
|
+
document.addEventListener('DOMContentLoaded', onDocumentReady);
|
123
|
+
}
|
124
|
+
}
|
125
|
+
};
|
126
|
+
|
127
|
+
// ---------------------------------------------------------------------------
|
128
|
+
// Main object
|
129
|
+
// ---------------------------------------------------------------------------
|
130
|
+
return {
|
131
|
+
|
132
|
+
// -------------------------------------------------------------------------
|
133
|
+
// init()
|
134
|
+
// adapter initializer
|
135
|
+
// -------------------------------------------------------------------------
|
136
|
+
init: function (options) {
|
137
|
+
|
138
|
+
// -----------------------------------------------------------------------
|
139
|
+
// Default module settings
|
140
|
+
// -----------------------------------------------------------------------
|
141
|
+
var settings = $.extend({
|
142
|
+
module_name: 'j1.adapter.speak2me',
|
143
|
+
generated: '{{site.time}}'
|
144
|
+
}, options);
|
145
|
+
|
146
|
+
// -----------------------------------------------------------------------
|
147
|
+
// Global variable settings
|
148
|
+
// -----------------------------------------------------------------------
|
149
|
+
|
150
|
+
// create settings object from frontmatter
|
151
|
+
//
|
152
|
+
frontmatterOptions = options != null ? $.extend({}, options) : {};
|
153
|
+
|
154
|
+
// create settings object from module options
|
155
|
+
//
|
156
|
+
speak2meDefaults = $.extend({}, {{speak2me_defaults | replace: 'nil', 'null' | replace: '=>', ':' }});
|
157
|
+
speak2meSettings = $.extend({}, {{speak2me_settings | replace: 'nil', 'null' | replace: '=>', ':' }});
|
158
|
+
speak2meOptions = $.extend(true, {}, speak2meDefaults, speak2meSettings, frontmatterOptions);
|
159
|
+
|
160
|
+
ttsDisabled = (speak2meOptions.tts == "false") ? true : false;
|
161
|
+
|
162
|
+
_this = j1.adapter.speak2me;
|
163
|
+
logger = log4javascript.getLogger('j1.adapter.speak2me');
|
164
|
+
|
165
|
+
_this.setState('started');
|
166
|
+
logger.debug('\n' + 'state: ' + _this.getState());
|
167
|
+
logger.info('\n' + 'module is being initialized');
|
168
|
+
|
169
|
+
// -----------------------------------------------------------------------
|
170
|
+
// initializer
|
171
|
+
// -----------------------------------------------------------------------
|
172
|
+
var dependencies_met_page_ready = setInterval (function (options) {
|
173
|
+
var pageState = $('#no_flicker').css("display");
|
174
|
+
var pageVisible = (pageState == 'block') ? true : false;
|
175
|
+
var atticFinished = (j1.adapter.attic.getState() == 'finished') ? true: false;
|
176
|
+
|
177
|
+
if (j1.getState() === 'finished' && pageVisible && atticFinished) {
|
178
|
+
|
179
|
+
if (isMobile) {
|
180
|
+
console.log('module speak2me is currently not supported for the Opera browser');
|
181
|
+
$('#quickLinksSpeakButton').hide();
|
182
|
+
clearInterval(dependencies_met_page_ready);
|
183
|
+
return;
|
184
|
+
}
|
185
|
+
|
186
|
+
if (isOpera) {
|
187
|
+
console.log('module speak2me is currently not supported for the Firefox browser');
|
188
|
+
$('#quickLinksSpeakButton').hide();
|
189
|
+
clearInterval(dependencies_met_page_ready);
|
190
|
+
return;
|
191
|
+
}
|
192
|
+
|
193
|
+
if (isAvast) {
|
194
|
+
console.log('module speak2me is currently not supported for the Avast Secure browser');
|
195
|
+
$('#quickLinksSpeakButton').hide();
|
196
|
+
clearInterval(dependencies_met_page_ready);
|
197
|
+
return;
|
198
|
+
}
|
199
|
+
|
200
|
+
if (isFirefox) {
|
201
|
+
console.log('module speak2me is currently not supported on mobile devices');
|
202
|
+
$('#quickLinksSpeakButton').hide();
|
203
|
+
clearInterval(dependencies_met_page_ready);
|
204
|
+
return;
|
205
|
+
}
|
206
|
+
|
207
|
+
if (isChrome) {
|
208
|
+
var chromeWorkaround = setInterval(function () {
|
209
|
+
if ($().speak2me('isSpeaking')) {
|
210
|
+
$().speak2me('pause').speak2me('resume');
|
211
|
+
logger.debug('\n' + 'speak: send pause-resumed');
|
212
|
+
}
|
213
|
+
}, 10000);
|
214
|
+
}
|
215
|
+
|
216
|
+
if (ttsDisabled) {
|
217
|
+
logger.warn('\n' + 'tts detected: disabled');
|
218
|
+
$('#quickLinksSpeakButton').hide();
|
219
|
+
clearInterval(dependencies_met_page_ready);
|
220
|
+
return;
|
221
|
+
} else {
|
222
|
+
speak2meModal = document.createElement('div');
|
223
|
+
speak2meModal.id = speak2meOptions.dialogContainerID;
|
224
|
+
speak2meModal.style.display = 'none';
|
225
|
+
|
226
|
+
speak2meModal.setAttribute('class', 'modal fade');
|
227
|
+
speak2meModal.setAttribute('tabindex', '-1');
|
228
|
+
speak2meModal.setAttribute('role', 'dialog');
|
229
|
+
speak2meModal.setAttribute('aria-labelledby', speak2meOptions.dialogContainerID);
|
230
|
+
document.body.append(speak2meModal);
|
231
|
+
|
232
|
+
// -------------------------------------------------------------------
|
233
|
+
// data loader
|
234
|
+
// -------------------------------------------------------------------
|
235
|
+
j1.loadHTML ({
|
236
|
+
xhr_container_id: 'speak2me_container',
|
237
|
+
xhr_data_path: '/assets/data/speak2me/index.html',
|
238
|
+
xhr_data_element: 'speak2me-modal-data' },
|
239
|
+
'j1.adapter.rtextResizer',
|
240
|
+
'null'
|
241
|
+
);
|
242
|
+
}
|
243
|
+
|
244
|
+
// -------------------------------------------------------------------
|
245
|
+
// on 'show'
|
246
|
+
// -------------------------------------------------------------------
|
247
|
+
$('#speak2me_container').on('show.bs.modal', function () {
|
248
|
+
if (isChrome || isEdge) {
|
249
|
+
logger.warn('\n' + 'chromium browser detected: pause|resume buttons disabled');
|
250
|
+
$('#pause_button').hide();
|
251
|
+
$('#resume_button').hide();
|
252
|
+
}
|
253
|
+
_this.create('#voiceSelector');
|
254
|
+
}); // END modal on 'show'
|
255
|
+
|
256
|
+
// -------------------------------------------------------------------
|
257
|
+
// on 'shown'
|
258
|
+
// -------------------------------------------------------------------
|
259
|
+
// $('#speak2me_container').on('shown.bs.modal', function () {
|
260
|
+
// // do something here
|
261
|
+
// return;
|
262
|
+
// }); // END modal on 'shown'
|
263
|
+
|
264
|
+
_this.setState('finished');
|
265
|
+
logger.debug('\n' + 'state: ' + _this.getState());
|
266
|
+
logger.info('\n' + 'module initialization finished');
|
267
|
+
|
268
|
+
clearInterval(dependencies_met_page_ready);
|
269
|
+
}
|
270
|
+
}, 10);
|
271
|
+
|
272
|
+
}, // END init
|
273
|
+
|
274
|
+
// -------------------------------------------------------------------------
|
275
|
+
// create()
|
276
|
+
// create a HTML select element for all (valid) voices found
|
277
|
+
// -------------------------------------------------------------------------
|
278
|
+
create: function (obj) {
|
279
|
+
var isSelectEmpty = ($('#voiceSelect').length == 1) ? false: true;
|
280
|
+
var numVoices;
|
281
|
+
|
282
|
+
// create select element (#voiceSelect) if not already exist
|
283
|
+
if (isSelectEmpty) {
|
284
|
+
numVoices = $().speak2me('getVoices', obj, 'Select a voice');
|
285
|
+
|
286
|
+
// delete select element (#voiceSelect) if no valid voiuces found
|
287
|
+
if (numVoices === 0) {
|
288
|
+
$(obj).remove();
|
289
|
+
}
|
290
|
+
}
|
291
|
+
}, // END create
|
292
|
+
|
293
|
+
// -------------------------------------------------------------------------
|
294
|
+
// showDialog()
|
295
|
+
// display the tts settings dialog
|
296
|
+
// -------------------------------------------------------------------------
|
297
|
+
showDialog: function () {
|
298
|
+
logger.debug('\n' + "showDialog");
|
299
|
+
|
300
|
+
$('#speak2me_container').modal({
|
301
|
+
backdrop: 'static',
|
302
|
+
keyboard: false
|
303
|
+
});
|
304
|
+
|
305
|
+
$('#speak2me_container').modal('show');
|
306
|
+
}, // END showDialog
|
307
|
+
|
308
|
+
// -------------------------------------------------------------------------
|
309
|
+
// update()
|
310
|
+
// update the value to the right of the input sliders
|
311
|
+
// -------------------------------------------------------------------------
|
312
|
+
update: function (obj, value) {
|
313
|
+
var n = parseFloat(value).toFixed(1)
|
314
|
+
$(obj).parent().find('span').text(n);
|
315
|
+
}, // END update
|
316
|
+
|
317
|
+
// -------------------------------------------------------------------------
|
318
|
+
// speak()
|
319
|
+
// calls the 'speak' functiion of the screen reader
|
320
|
+
// -------------------------------------------------------------------------
|
321
|
+
speak: function (obj) {
|
322
|
+
// Get the parameter values from the input sliders
|
323
|
+
//
|
324
|
+
var rate = parseFloat(document.getElementById('rate').value);
|
325
|
+
var pitch = parseFloat(document.getElementById('pitch').value);
|
326
|
+
var volume = parseFloat(document.getElementById('volume').value);
|
327
|
+
|
328
|
+
// Note: Function calls can be perfromed individually or
|
329
|
+
// chained together as demonstrated below
|
330
|
+
//
|
331
|
+
$(obj).speak2me('rate', rate).speak2me('pitch', pitch).speak2me('volume', volume);
|
332
|
+
// $(obj).speak2me('ignore', 'h2','h3');
|
333
|
+
var speaker = $(obj).speak2me('speak');
|
334
|
+
$(".mdib-speaker").addClass("mdib-spin");
|
335
|
+
|
336
|
+
// just for debugging completeness, no errors seem to be thrown though
|
337
|
+
speaker.addEventListener('error', (event) => {
|
338
|
+
console.log('speak2me error:', event);
|
339
|
+
});
|
340
|
+
|
341
|
+
}, // END speak
|
342
|
+
|
343
|
+
// -------------------------------------------------------------------------
|
344
|
+
// pause()
|
345
|
+
// Calls the 'pause' function of rge screen reader
|
346
|
+
// -------------------------------------------------------------------------
|
347
|
+
pause: function () {
|
348
|
+
$().speak2me('pause');
|
349
|
+
$(".mdib-speaker").removeClass("mdib-spin");
|
350
|
+
}, // END pause
|
351
|
+
|
352
|
+
// -------------------------------------------------------------------------
|
353
|
+
// resume()
|
354
|
+
// Calls the 'resume' function of rge screen reader
|
355
|
+
// -------------------------------------------------------------------------
|
356
|
+
resume: function () {
|
357
|
+
$().speak2me('resume');
|
358
|
+
$(".mdib-speaker").addClass("mdib-spin");
|
359
|
+
}, // END resume
|
360
|
+
|
361
|
+
// -------------------------------------------------------------------------
|
362
|
+
// stop()
|
363
|
+
// Calls the 'stop' function of rge screen reader
|
364
|
+
// -------------------------------------------------------------------------
|
365
|
+
stop: function () {
|
366
|
+
$().speak2me('stop');
|
367
|
+
$(".mdib-speaker").removeClass("mdib-spin");
|
368
|
+
// potential workaround, when selected language in voice
|
369
|
+
// selector (dialog) has NOT changed if translation was changed
|
370
|
+
// location.reload();
|
371
|
+
}, // END stop
|
372
|
+
|
373
|
+
// -------------------------------------------------------------------------
|
374
|
+
// messageHandler()
|
375
|
+
// manage messages send from other J1 modules
|
376
|
+
// -------------------------------------------------------------------------
|
377
|
+
messageHandler: function (sender, message) {
|
378
|
+
var json_message = JSON.stringify(message, undefined, 2);
|
379
|
+
|
380
|
+
logText = '\n' + 'received message from ' + sender + ': ' + json_message;
|
381
|
+
logger.debug(logText);
|
382
|
+
|
383
|
+
// -----------------------------------------------------------------------
|
384
|
+
// Process commands|actions
|
385
|
+
// -----------------------------------------------------------------------
|
386
|
+
if (message.type === 'command' && message.action === 'module_initialized') {
|
387
|
+
//
|
388
|
+
// Place handling of command|action here
|
389
|
+
//
|
390
|
+
logger.info('\n' + message.text);
|
391
|
+
}
|
392
|
+
|
393
|
+
//
|
394
|
+
// Place handling of other command|action here
|
395
|
+
//
|
396
|
+
|
397
|
+
return true;
|
398
|
+
}, // END messageHandler
|
399
|
+
|
400
|
+
// -------------------------------------------------------------------------
|
401
|
+
// setState()
|
402
|
+
// Sets the current (processing) state of the module
|
403
|
+
// -------------------------------------------------------------------------
|
404
|
+
setState: function (stat) {
|
405
|
+
_this.state = stat;
|
406
|
+
}, // END setState
|
407
|
+
|
408
|
+
// -------------------------------------------------------------------------
|
409
|
+
// getState()
|
410
|
+
// Returns the current (processing) state of the module
|
411
|
+
// -------------------------------------------------------------------------
|
412
|
+
getState: function () {
|
413
|
+
return _this.state;
|
414
|
+
} // END getState
|
415
|
+
|
416
|
+
}; // END return
|
417
|
+
})(j1, window);
|
418
|
+
|
419
|
+
{% endcapture %}
|
420
|
+
{% if production %}
|
421
|
+
{{ cache | minifyJS }}
|
422
|
+
{% else %}
|
423
|
+
{{ cache | strip_empty_lines }}
|
424
|
+
{% endif %}
|
425
|
+
{% assign cache = nil %}
|
@@ -80,6 +80,8 @@ regenerate: true
|
|
80
80
|
/* eslint quotes: "off" */
|
81
81
|
// -----------------------------------------------------------------------------
|
82
82
|
// https://github.com/EdwardBalaj/Simple-DeepL-API-Integration
|
83
|
+
// https://www.javatpoint.com/how-to-add-google-translate-button-on-your-webpage
|
84
|
+
// https://gist.github.com/ab007shetty/28e99707734db32a6e881e4d245d42f7
|
83
85
|
// https://github.com/marghoobsuleman/ms-Dropdown
|
84
86
|
// https://www.marghoobsuleman.com/image-dropdown/help
|
85
87
|
// https://www.marghoobsuleman.com/image-dropdown/advanced-help
|
@@ -410,7 +412,7 @@ j1.adapter.translator = (function (j1, window) {
|
|
410
412
|
// Called by the translator CORE module after the user has made
|
411
413
|
// the selection for a translation|language
|
412
414
|
// -------------------------------------------------------------------------
|
413
|
-
cbGoogle: function () {
|
415
|
+
cbGoogle: function (option) {
|
414
416
|
var logger = log4javascript.getLogger('j1.adapter.translator.cbGoogle');
|
415
417
|
var msDropdown = document.getElementById('dropdownJSON').msDropdown;
|
416
418
|
|
@@ -445,6 +447,12 @@ j1.adapter.translator = (function (j1, window) {
|
|
445
447
|
// domainAttribute = '';
|
446
448
|
// }
|
447
449
|
|
450
|
+
// button 'Do nothing' clicked
|
451
|
+
//
|
452
|
+
if (option === 'exitOnly') {
|
453
|
+
return;
|
454
|
+
}
|
455
|
+
|
448
456
|
selectedTranslationLanguage = msDropdown.value;
|
449
457
|
logger.info('\n' + 'selected translation language: ' + selectedTranslationLanguage);
|
450
458
|
|
@@ -461,7 +469,7 @@ j1.adapter.translator = (function (j1, window) {
|
|
461
469
|
Cookies.remove('googtrans', { domain: domainAttribute });
|
462
470
|
Cookies.remove('googtrans', { domain: hostname });
|
463
471
|
Cookies.remove('googtrans');
|
464
|
-
location.reload(
|
472
|
+
location.reload();
|
465
473
|
}
|
466
474
|
|
467
475
|
// set transCode settings
|
@@ -3503,6 +3503,9 @@
|
|
3503
3503
|
.mdib-format-annotation-plus:before {
|
3504
3504
|
content: "\F0646"; }
|
3505
3505
|
|
3506
|
+
.mdib-format-clear:before {
|
3507
|
+
content: "\F0265"; }
|
3508
|
+
|
3506
3509
|
.mdib-format-color-fill:before {
|
3507
3510
|
content: "\F0266"; }
|
3508
3511
|
|
@@ -5903,6 +5906,12 @@
|
|
5903
5906
|
.mdib-play:before {
|
5904
5907
|
content: "\F040A"; }
|
5905
5908
|
|
5909
|
+
.mdib-play-outline:before {
|
5910
|
+
content: "\F0F1B"; }
|
5911
|
+
|
5912
|
+
.mdib-play-pause:before {
|
5913
|
+
content: "\F040E"; }
|
5914
|
+
|
5906
5915
|
.mdib-plex:before {
|
5907
5916
|
content: "\F06BA"; }
|
5908
5917
|
|
@@ -7001,6 +7010,18 @@
|
|
7001
7010
|
.mdib-speaker:before {
|
7002
7011
|
content: "\F04C3"; }
|
7003
7012
|
|
7013
|
+
.mdib-speaker-off:before {
|
7014
|
+
content: "\F04C4"; }
|
7015
|
+
|
7016
|
+
.mdib-speaker-pause:before {
|
7017
|
+
content: "\F1B73"; }
|
7018
|
+
|
7019
|
+
.mdib-speaker-play:before {
|
7020
|
+
content: "\F1B72"; }
|
7021
|
+
|
7022
|
+
.mdib-speaker-stop:before {
|
7023
|
+
content: "\F1B74"; }
|
7024
|
+
|
7004
7025
|
.mdib-spear:before {
|
7005
7026
|
content: "\F1845"; }
|
7006
7027
|
|