j1-template 2023.3.0 → 2023.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/_includes/themes/j1/layouts/layout_metadata_generator.html +0 -3
- data/_includes/themes/j1/procedures/posts/create_series_header.proc +1 -1
- data/assets/data/banner.html +2 -2
- data/assets/data/masonry.html +1 -1
- data/assets/themes/j1/adapter/js/advertising.js +302 -96
- data/assets/themes/j1/adapter/js/j1.js +2 -1
- data/assets/themes/j1/adapter/js/themer.js +47 -16
- data/assets/themes/j1/core/css/themes/unodark/bootstrap.css +104 -30
- data/assets/themes/j1/core/css/themes/unodark/bootstrap.min.css +1 -1
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +19 -5
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +1 -1
- data/lib/j1/version.rb +1 -1
- data/lib/starter_web/Gemfile +2 -2
- data/lib/starter_web/README.md +5 -5
- data/lib/starter_web/_config.yml +2 -2
- data/lib/starter_web/_data/blocks/defaults/footer.yml +1 -1
- data/lib/starter_web/_data/blocks/footer.yml +3 -0
- data/lib/starter_web/_data/layouts/home.yml +29 -0
- data/lib/starter_web/_data/modules/advertising.yml +120 -42
- data/lib/starter_web/_data/modules/defaults/advertising.yml +1 -1
- data/lib/starter_web/_data/modules/masonry.yml +2 -2
- data/lib/starter_web/_data/modules/navigator_menu.yml +190 -148
- data/lib/starter_web/_data/modules/slick.yml +47 -86
- data/lib/starter_web/_data/resources.yml +2 -2
- data/lib/starter_web/_data/templates/feed.xml +1 -1
- data/lib/starter_web/_includes/attributes.0.asciidoc +626 -0
- data/lib/starter_web/_includes/attributes.asciidoc +26 -24
- data/lib/starter_web/_includes/google/static/google_ad_5128488466.html +19 -0
- data/lib/starter_web/_includes/google/static/google_ad_7284712660.html +19 -0
- data/lib/starter_web/_includes/google/templates/google_ads.html +55 -0
- data/lib/starter_web/_plugins/index/lunr.rb +1 -1
- data/lib/starter_web/assets/images/badges/configBinder.jpg +0 -0
- data/lib/starter_web/assets/images/badges/docsBinder.jpg +0 -0
- data/lib/starter_web/assets/images/badges/notebookBinder.jpg +0 -0
- data/lib/starter_web/assets/images/badges/scaleable/configBinder.svg +1 -1
- data/lib/starter_web/assets/images/badges/scaleable/docsBinder.svg +1 -1
- data/lib/starter_web/assets/images/badges/scaleable/myBinder.svg +1 -1
- data/lib/starter_web/assets/images/badges/scaleable/notebookBinder.svg +1 -1
- data/lib/starter_web/assets/images/icons/hyvor-talk/jpg/hyvor-logo.512x512.jpg +0 -0
- data/lib/starter_web/assets/images/icons/hyvor-talk/png/hyvor-logo.24x24.jpg +0 -0
- data/lib/starter_web/assets/images/icons/hyvor-talk/scalable/hyvor-logo.svg +1 -1
- data/lib/starter_web/assets/images/icons/j1/jpg/j1-256x256.jpg +0 -0
- data/lib/starter_web/assets/images/icons/j1/jpg/j1-512x512.jpg +0 -0
- data/lib/starter_web/assets/images/icons/j1/jpg/j1-64x64.jpg +0 -0
- data/lib/starter_web/assets/images/icons/j1/png/j1-256x256.png +0 -0
- data/lib/starter_web/assets/images/icons/j1/png/j1-512x512.jpg +0 -0
- data/lib/starter_web/assets/images/icons/j1/png/j1-512x512.jpg.png +0 -0
- data/lib/starter_web/assets/images/icons/j1/png/j1-512x512.png +0 -0
- data/lib/starter_web/assets/images/icons/j1/png/j1-64x64.png +0 -0
- data/lib/starter_web/assets/images/icons/j1/scalable/j1.svg +1 -1
- data/lib/starter_web/assets/images/modules/attics/1920x1280/brigitta-schneiter.jpg +0 -0
- data/lib/starter_web/assets/images/modules/icons/j1/scalable/j1.svg +1 -1
- data/lib/starter_web/assets/images/pages/asciidoc_skeletons/example-pdf-screenshot.jpg +0 -0
- data/lib/starter_web/assets/images/pages/core_web_vitals/200-create-a-link-1.jpg +0 -0
- data/lib/starter_web/assets/images/pages/core_web_vitals/core_web_vitals_best.jpg +0 -0
- data/lib/starter_web/assets/images/pages/core_web_vitals/core_web_vitals_best_full.jpg +0 -0
- data/lib/starter_web/assets/images/pages/features/bootswatch-themes-1280x800.jpg +0 -0
- data/lib/starter_web/assets/images/pages/features/global-mobile-traffic-1920x1080.jpg +0 -0
- data/lib/starter_web/assets/images/pages/features/google-lighthouse-1080x300.jpg +0 -0
- data/lib/starter_web/assets/images/pages/features/mobile-navigation-600x800.jpg +0 -0
- data/lib/starter_web/assets/images/pages/features/native-speakers-by-language.jpg +0 -0
- data/lib/starter_web/assets/images/posts/featured/dynamic-web-access.jpg +0 -0
- data/lib/starter_web/assets/images/posts/featured/jamstack-generators.jpg +0 -0
- data/lib/starter_web/assets/images/posts/featured/jekyll.1200x400.jpg +0 -0
- data/lib/starter_web/assets/images/posts/featured/jekyll.jpg +0 -0
- data/lib/starter_web/assets/images/posts/featured/static-web-access.jpg +0 -0
- data/lib/starter_web/assets/images/promo/home/screenshot.jpg +0 -0
- data/lib/starter_web/assets/images/promo/jekyll/jekyll-faq.jpg +0 -0
- data/lib/starter_web/assets/images/promo/jekyll/jekyll-generator.jpg +0 -0
- data/lib/starter_web/assets/images/promo/jekyll/jekyll-generator.png +0 -0
- data/lib/starter_web/assets/images/promo/jekyll/jekyll-og.png +0 -0
- data/lib/starter_web/assets/images/promo/jekyll/scalable/jekyll-faq.psd +0 -0
- data/lib/starter_web/collections/_biography/a-life-in-questions.adoc +1 -1
- data/lib/starter_web/collections/_biography/becoming.adoc +1 -1
- data/lib/starter_web/collections/_biography/born-to-run.adoc +1 -1
- data/lib/starter_web/collections/_biography/forty-autumns.adoc +1 -1
- data/lib/starter_web/collections/_biography/not-dead-yet.adoc +1 -1
- data/lib/starter_web/collections/_biography/princess-diarist-the.adoc +1 -1
- data/lib/starter_web/collections/_biography/when-breath-becomes-air.adoc +1 -1
- data/lib/starter_web/collections/_fantasy/harry-potter-deathly-hallows.adoc +1 -1
- data/lib/starter_web/collections/_fantasy/harry-potter-philosophers-stone.adoc +1 -1
- data/lib/starter_web/collections/_fantasy/mistborn-trilogy.adoc +26 -1
- data/lib/starter_web/collections/_fantasy/ready-player-one.adoc +1 -1
- data/lib/starter_web/collections/_fantasy/sword-of-destiny.adoc +17 -2
- data/lib/starter_web/collections/_fantasy/terry-pratchet-diary.adoc +24 -1
- data/lib/starter_web/collections/_romance/{breath-of-snow-and-ashes-a.adoc → breath-of-snow-and-ashes.adoc} +13 -1
- data/lib/starter_web/collections/_romance/dressmaker-the.adoc +13 -1
- data/lib/starter_web/collections/_romance/fiery-cross-the.adoc +1 -1
- data/lib/starter_web/collections/_romance/it-ends-with-us.adoc +1 -1
- data/lib/starter_web/collections/_romance/outlander-novel.adoc +1 -1
- data/lib/starter_web/collections/_romance/virgins-outlander-short-story.adoc +1 -1
- data/lib/starter_web/collections/posts/public/featured/_posts/0000-00-00-welcome-to-j1.adoc.erb +4 -2
- data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.adoc +4 -1
- data/lib/starter_web/collections/posts/public/featured/_posts/2021-02-01-static-site-generators.adoc +5 -3
- data/lib/starter_web/collections/posts/public/featured/_posts/2022-02-01-about-j1.adoc +4 -1
- data/lib/starter_web/collections/posts/public/featured/_posts/_includes/attributes.asciidoc +2 -2
- data/lib/starter_web/index.html +0 -9
- data/lib/starter_web/package.json +1 -1
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/attributes.asciidoc +1 -1
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/112_getting_started.asciidoc +1 -1
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/200_themes/212_values.asciidoc +4 -4
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/attributes.asciidoc +1 -1
- data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/attributes.asciidoc +2 -2
- data/lib/starter_web/pages/public/learn/roundtrip/_includes/attributes.0.asciidoc +112 -0
- data/lib/starter_web/pages/public/learn/roundtrip/_includes/attributes.asciidoc +2 -2
- data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/themes_rouge.asciidoc +1 -1
- data/lib/starter_web/pages/public/learn/roundtrip/present_images.adoc +28 -4
- data/lib/starter_web/pages/public/learn/where_to_go.adoc +11 -13
- data/lib/starter_web/pages/public/{learn → tools}/cheatsheet/gem.adoc +5 -5
- data/lib/starter_web/pages/public/{learn → tools}/cheatsheet/git.adoc +14 -14
- data/lib/starter_web/pages/public/{learn → tools}/cheatsheet/j1.adoc +1 -1
- data/lib/starter_web/pages/public/{learn → tools}/cheatsheet/yaml.adoc +1 -1
- data/lib/starter_web/pages/public/{previewer → tools/previewer}/preview_bootstrap_theme.adoc +1 -1
- data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
- data/lib/starter_web/utilsrv/package.json +1 -1
- metadata +51 -51
- data/assets/themes/j1/modules/advertising/js/adInitializer.js +0 -160
- data/lib/starter_web/assets/images/icons/j1/j1-256x256.gif +0 -0
- data/lib/starter_web/assets/images/pages/asciidoc_skeletons/example-pdf-screenshot.png +0 -0
- data/lib/starter_web/assets/images/pages/core_web_vitals/core_web_vitals_best.png +0 -0
- data/lib/starter_web/assets/images/pages/core_web_vitals/core_web_vitals_best_full.png +0 -0
- data/lib/starter_web/assets/images/pages/features/bootswatch-themes-1280x800.png +0 -0
- data/lib/starter_web/assets/images/pages/features/global-mobile-traffic-1920x1080.png +0 -0
- data/lib/starter_web/assets/images/pages/features/google-lighthouse-1080x300.png +0 -0
- data/lib/starter_web/assets/images/pages/features/mobile-navigation-600x800.png +0 -0
- data/lib/starter_web/assets/images/pages/features/native-speakers-by-language.png +0 -0
- data/lib/starter_web/assets/images/pages/nbinteract/binderhub-architecture.jpg +0 -0
- data/lib/starter_web/assets/images/pages/nbinteract/jupyterlab-architecture.jpg +0 -0
- data/lib/starter_web/assets/images/pages/nbinteract/mandelbrot-menge-1920x1200.jpg +0 -0
- data/lib/starter_web/assets/images/pages/nbinteract/mandelbrot-menge.png +0 -0
- data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi-textbook-example.jpg +0 -0
- data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_bar.jpg +0 -0
- data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_hist.jpg +0 -0
- data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_line.jpg +0 -0
- data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_multiple_choice.jpg +0 -0
- data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_scatter.jpg +0 -0
- data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_scatter_drag.jpg +0 -0
- data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_short_answer.jpg +0 -0
- data/lib/starter_web/assets/images/pages/nbinteract/nbi-textbook-example.jpg +0 -0
- data/lib/starter_web/assets/images/posts/featured/dynamic-web-access.png +0 -0
- data/lib/starter_web/assets/images/posts/featured/jamstack-generators.png +0 -0
- data/lib/starter_web/assets/images/posts/featured/jekyll.1200x400.png +0 -0
- data/lib/starter_web/assets/images/posts/featured/jekyll.png +0 -0
- data/lib/starter_web/assets/images/posts/featured/post-1.jpg +0 -0
- data/lib/starter_web/assets/images/posts/featured/post-2.jpg +0 -0
- data/lib/starter_web/assets/images/posts/featured/post-3.jpg +0 -0
- data/lib/starter_web/assets/images/posts/featured/post-4.jpg +0 -0
- data/lib/starter_web/assets/images/posts/featured/post-5.jpg +0 -0
- data/lib/starter_web/assets/images/posts/featured/static-web-access.png +0 -0
- data/lib/starter_web/collections/posts/public/series/_posts/2022-08-01-organize-your-life.adoc +0 -118
- data/lib/starter_web/collections/posts/public/series/_posts/2022-08-02-organize-your-life.adoc +0 -118
- data/lib/starter_web/collections/posts/public/series/_posts/2022-08-03-organize-your-life.adoc +0 -118
- data/lib/starter_web/collections/posts/public/series/_posts/2022-09-01-organize-your-life.adoc +0 -117
- data/lib/starter_web/collections/posts/public/series/_posts/2022-09-02-organize-your-life.adoc +0 -117
- /data/lib/starter_web/assets/images/badges/{configBinder.png → png/configBinder.png} +0 -0
- /data/lib/starter_web/assets/images/badges/{docsBinder.png → png/docsBinder.png} +0 -0
- /data/lib/starter_web/assets/images/badges/{notebookBinder.png → png/notebookBinder.png} +0 -0
- /data/lib/starter_web/assets/images/icons/hyvor-talk/{hyvor-logo.24x24.png → png/hyvor-logo.24x24.png} +0 -0
- /data/lib/starter_web/assets/images/icons/hyvor-talk/{hyvor-logo.512x512.png → png/hyvor-logo.512x512.png} +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e4e546edd3d0fb0df50cb026c9a0fbfecefe67f9e27ab2b3e1197fede65c9c6a
|
|
4
|
+
data.tar.gz: 4e9f703964a634cdd1c6df8f60733e12a0f5bfe95d92936ba473e4828bc9419b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8b8a9a94213f6f7d4cbb096fc978d10d016133dcbe245da037abacabb31c6b0bc6b82aac08e0e65f28d502bc0c2e35c678fb08f1d92719c8902712c092600769
|
|
7
|
+
data.tar.gz: c7c8bd55790f676f51cff47bf5e42949c48e6a398527730f0f60d3b0b83be13d8c667e6abf4af71e5d3d8ccebd3893299449210c8dcc9b86c232de07fc2cd0e0
|
|
@@ -62,9 +62,6 @@
|
|
|
62
62
|
<!-- [INFO ] [j1.layout.meta_data_generator.html ] [ page|content encoding ] -->
|
|
63
63
|
<meta http-equiv="Content-Type" content="text/html;charset={{site.coding}}">
|
|
64
64
|
|
|
65
|
-
<!-- [INFO ] [j1.layout.meta_data_generator.html ] [ enable Google experimental setting (prevent warnings) ] -->
|
|
66
|
-
<meta http-equiv="Permissions-Policy" content="interest-cohort=()">
|
|
67
|
-
|
|
68
65
|
<!-- [INFO ] [j1.layout.meta_data_generator.html ] [ added for MS Edge Browser ] -->
|
|
69
66
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
70
67
|
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
<h4 id="blog_series_list" class="notoc mt-2 mr-2 mb-4">{{series_heading}}</h4>
|
|
75
75
|
<ul class="side-nav" style="width: calc(100% - 15px)">
|
|
76
76
|
{% endcapture %}
|
|
77
|
-
{% for post in site.posts
|
|
77
|
+
{% for post in site.posts %}
|
|
78
78
|
{% if post.series == page.series %}
|
|
79
79
|
{% assign count = count | plus: 1 %}
|
|
80
80
|
{% if post.url == page.url %}
|
data/assets/data/banner.html
CHANGED
|
@@ -262,8 +262,8 @@ exclude_from_search: true
|
|
|
262
262
|
<img
|
|
263
263
|
class="sticker-image"
|
|
264
264
|
src="/assets/images/sticker/600x600/sticker-new-version.png"
|
|
265
|
-
alt="Get new version 2023.3.
|
|
266
|
-
title="Get new version 2023.3.
|
|
265
|
+
alt="Get new version 2023.3.1"
|
|
266
|
+
title="Get new version 2023.3.1"
|
|
267
267
|
style="width: 140px; height: 120px;"
|
|
268
268
|
>
|
|
269
269
|
</a>
|
data/assets/data/masonry.html
CHANGED
|
@@ -249,7 +249,7 @@ exclude_from_search: true
|
|
|
249
249
|
{% endif %}
|
|
250
250
|
<div class="article-caption">
|
|
251
251
|
<div class="article-caption-heading">
|
|
252
|
-
<a class="
|
|
252
|
+
<a class="article-link {{translate}}" href="{{article.url}}">{{article.title}}</a>
|
|
253
253
|
</div>
|
|
254
254
|
<div class="article-caption-subheading text-muted">{{article.tags[0]}}</div>
|
|
255
255
|
</div>
|
|
@@ -6,7 +6,7 @@ regenerate: true
|
|
|
6
6
|
|
|
7
7
|
{% comment %}
|
|
8
8
|
# -----------------------------------------------------------------------------
|
|
9
|
-
# ~/assets/
|
|
9
|
+
# ~/assets/theFdames/j1/adapter/js/advertising.js
|
|
10
10
|
# Liquid template to adapt advertising plugin
|
|
11
11
|
#
|
|
12
12
|
# Product/Info:
|
|
@@ -55,6 +55,7 @@ regenerate: true
|
|
|
55
55
|
-------------------------------------------------------------------------------- {% endcomment %}
|
|
56
56
|
{% assign advertising = advertising_options.enabled %}
|
|
57
57
|
{% assign advertising_provider = advertising_options.provider %}
|
|
58
|
+
{% assign layout = page.layout %}
|
|
58
59
|
|
|
59
60
|
{% comment %} Detect prod mode
|
|
60
61
|
-------------------------------------------------------------------------------- {% endcomment %}
|
|
@@ -90,15 +91,19 @@ j1.adapter.advertising = (function (j1, window) {
|
|
|
90
91
|
|
|
91
92
|
{% comment %} Set global variables
|
|
92
93
|
-------------------------------------------------------------------------------- {% endcomment %}
|
|
93
|
-
var environment
|
|
94
|
-
var
|
|
95
|
-
var
|
|
96
|
-
var
|
|
97
|
-
var
|
|
98
|
-
var
|
|
99
|
-
var
|
|
94
|
+
var environment = '{{environment}}';
|
|
95
|
+
var production = (environment.includes('prod') ? true : false);
|
|
96
|
+
var development = (environment.includes('dev') ? true : false);
|
|
97
|
+
var date = new Date();
|
|
98
|
+
var timestamp_now = date.toISOString();
|
|
99
|
+
var gasScript = document.createElement('script');
|
|
100
|
+
var gasDiv = document.createElement('div');
|
|
101
|
+
var gasIns = document.createElement('ins');
|
|
102
|
+
var adInitializerScript = document.createElement('script');
|
|
103
|
+
var advertisingProvider = 'Google Adsense';
|
|
104
|
+
var layout;
|
|
100
105
|
var advertisingDefaults;
|
|
101
|
-
var
|
|
106
|
+
var advertisingSettings;
|
|
102
107
|
var advertisingOptions;
|
|
103
108
|
var frontmatterOptions;
|
|
104
109
|
var autoHideOnUnfilled;
|
|
@@ -112,9 +117,8 @@ var baseUrl;
|
|
|
112
117
|
var hostname;
|
|
113
118
|
var cookie_names;
|
|
114
119
|
var user_consent;
|
|
115
|
-
var advertisingProvider;
|
|
116
120
|
var publisherID;
|
|
117
|
-
var
|
|
121
|
+
var validpublisherID;
|
|
118
122
|
var _this;
|
|
119
123
|
var logger;
|
|
120
124
|
var logText;
|
|
@@ -149,79 +153,111 @@ var logText;
|
|
|
149
153
|
hostname = url.hostname;
|
|
150
154
|
|
|
151
155
|
// create settings object from frontmatter
|
|
156
|
+
//
|
|
152
157
|
frontmatterOptions = options != null ? $.extend({}, options) : {};
|
|
153
158
|
|
|
159
|
+
// initialze advertisingOptions
|
|
160
|
+
//
|
|
154
161
|
advertisingDefaults = $.extend({}, {{advertising_defaults | replace: 'nil', 'null' | replace: '=>', ':' }});
|
|
155
|
-
|
|
156
|
-
advertisingOptions = $.extend(true, {}, advertisingDefaults,
|
|
157
|
-
|
|
162
|
+
advertisingSettings = $.extend({}, {{advertising_settings | replace: 'nil', 'null' | replace: '=>', ':' }});
|
|
163
|
+
advertisingOptions = $.extend(true, {}, advertisingDefaults, advertisingSettings, frontmatterOptions);
|
|
164
|
+
layout = advertisingOptions.layout;
|
|
165
|
+
publisherID = advertisingOptions.google.publisherID;
|
|
166
|
+
validpublisherID = (publisherID.includes('pub-')) ? true : false;
|
|
158
167
|
autoHideOnUnfilled = advertisingOptions.google.autoHideOnUnfilled;
|
|
159
168
|
addBorderOnUnfilled = advertisingOptions.google.addBorderOnUnfilled;
|
|
160
169
|
checkTrackingProtection = advertisingOptions.google.checkTrackingProtection;
|
|
161
170
|
showErrorPageOnBlocked = advertisingOptions.google.showErrorPageOnBlocked;
|
|
162
171
|
|
|
172
|
+
// run initialization on 'contentVisible'
|
|
173
|
+
//
|
|
163
174
|
var dependencies_met_page_ready = setInterval (function (options) {
|
|
164
|
-
var
|
|
165
|
-
var
|
|
166
|
-
|
|
175
|
+
var contentState = $('#content').css("display");
|
|
176
|
+
var contentVisible = (contentState == 'block') ? true: false;
|
|
177
|
+
|
|
178
|
+
if (j1.getState() === 'finished' && contentVisible) {
|
|
167
179
|
|
|
168
|
-
|
|
169
|
-
|
|
180
|
+
{% comment %} detect|load code if 'advertising' is 'enabled'
|
|
181
|
+
------------------------------------------------------------------------ {% endcomment %}
|
|
170
182
|
{% if advertising %}
|
|
171
183
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
184
|
+
_this.ad_initializer();
|
|
185
|
+
|
|
186
|
+
if (!validpublisherID) {
|
|
187
|
+
if (development) {
|
|
188
|
+
logger.warn('\n' + 'invalid publisher id: ' + publisherID);
|
|
189
|
+
logger.info('\n' + 'module disabled' );
|
|
190
|
+
}
|
|
178
191
|
clearInterval(dependencies_met_page_ready);
|
|
179
192
|
return false;
|
|
180
193
|
}
|
|
181
194
|
|
|
182
195
|
{% case advertising_provider %}
|
|
183
196
|
{% when "google" %}
|
|
184
|
-
// [INFO ] [j1.adapter.advertising
|
|
197
|
+
// [INFO ] [j1.adapter.advertising ] [ place provider: Google Adsense ]
|
|
185
198
|
|
|
186
199
|
// initialize state flag
|
|
200
|
+
//
|
|
187
201
|
_this.setState('started');
|
|
188
|
-
|
|
202
|
+
if (development) {
|
|
203
|
+
logger.debug('\n' + 'state: ' + _this.getState());
|
|
204
|
+
}
|
|
189
205
|
|
|
190
206
|
if (user_consent.personalization) {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
advertisingProvider = 'Google Adsense';
|
|
195
|
-
validPublisherID = (publisherID.includes('your')) ? false : true;
|
|
207
|
+
if (development) {
|
|
208
|
+
logger.info('\n' + 'adsense api is being initialized');
|
|
209
|
+
}
|
|
196
210
|
|
|
197
|
-
if (!
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
211
|
+
if (!validpublisherID) {
|
|
212
|
+
if (development) {
|
|
213
|
+
logger.debug('\n' + 'invalid publisherID detected for Google Adsense: ' + publisherID);
|
|
214
|
+
logger.info('\n' + 'skip initialization for provider: ' + advertisingProvider);
|
|
215
|
+
}
|
|
216
|
+
return false;
|
|
201
217
|
} else {
|
|
202
|
-
|
|
218
|
+
if (development) {
|
|
219
|
+
logger.info('\n' + 'use publisherID for Google Adsense: ' + publisherID);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// add Google Adsense API dynamically in head section loaded async
|
|
224
|
+
//
|
|
225
|
+
if (development) {
|
|
226
|
+
logger.info('\n' + 'add Google AdsenseAPI in section: head');
|
|
203
227
|
}
|
|
204
228
|
|
|
205
|
-
// add GAS API (Google Adsense) dynamically in head section
|
|
206
|
-
// loaded async
|
|
207
|
-
// -----------------------------------------------------------------
|
|
208
|
-
logger.info('\n' + 'add Google Adsense (GAS) API in section: head');
|
|
209
229
|
gasScript.async = true;
|
|
210
230
|
gasScript.id = 'gas-api';
|
|
211
231
|
gasScript.src = '//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';
|
|
212
232
|
gasScript.setAttribute('data-ad-client', publisherID);
|
|
213
233
|
document.head.appendChild(gasScript);
|
|
214
|
-
|
|
234
|
+
|
|
235
|
+
if (development) {
|
|
236
|
+
logger.info('\n' + 'adsense api initialized');
|
|
237
|
+
}
|
|
215
238
|
|
|
216
239
|
// setup monitor for state changes on all ads configured
|
|
217
|
-
//
|
|
218
|
-
|
|
219
|
-
|
|
240
|
+
//
|
|
241
|
+
setTimeout(function () {
|
|
242
|
+
var ads_found = (document.getElementsByClassName('adsbygoogle').length > 0) ? true : false;
|
|
243
|
+
if (ads_found > 0) {
|
|
244
|
+
if (development) {
|
|
245
|
+
logger.info('\n' + 'setup Google Ad monitoring');
|
|
246
|
+
}
|
|
247
|
+
_this.ad_monitor();
|
|
248
|
+
} else {
|
|
249
|
+
if (development) {
|
|
250
|
+
logger.warn('\n' + 'no initialized Google Ads found in page');
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}, 1000);
|
|
220
254
|
|
|
221
255
|
// run protection check
|
|
222
|
-
//
|
|
256
|
+
//
|
|
223
257
|
if (checkTrackingProtection) {
|
|
224
|
-
|
|
258
|
+
if (development) {
|
|
259
|
+
logger.debug('\n' + 'run checks for tracking protection');
|
|
260
|
+
}
|
|
225
261
|
|
|
226
262
|
_this.check_tracking_protection();
|
|
227
263
|
var dependencies_met_tracking_check_ready = setInterval (function (options) {
|
|
@@ -229,46 +265,57 @@ var logText;
|
|
|
229
265
|
var browser_tracking_feature = navigator.DoNotTrack;
|
|
230
266
|
|
|
231
267
|
if (!tracking_protection && !browser_tracking_feature) {
|
|
232
|
-
|
|
233
|
-
|
|
268
|
+
if (development) {
|
|
269
|
+
logText = '\n' + 'tracking protection: disabled';
|
|
270
|
+
logger.info(logText);
|
|
271
|
+
}
|
|
234
272
|
} else {
|
|
235
|
-
|
|
236
|
-
|
|
273
|
+
if (development) {
|
|
274
|
+
logText = '\n' + 'tracking protection: enabled';
|
|
275
|
+
logger.debug(logText);
|
|
276
|
+
}
|
|
237
277
|
|
|
238
278
|
if (showErrorPageOnBlocked) {
|
|
239
|
-
|
|
279
|
+
if (development) {
|
|
280
|
+
logger.error('\n' + 'redirect to error page (blocked content): HTML-447');
|
|
281
|
+
}
|
|
240
282
|
// redirect to error page: blocked content
|
|
241
283
|
window.location.href = '/447.html';
|
|
242
284
|
}
|
|
243
285
|
}
|
|
244
286
|
}
|
|
287
|
+
|
|
245
288
|
clearInterval(dependencies_met_tracking_check_ready);
|
|
246
289
|
}, 10);
|
|
247
290
|
} else {
|
|
248
291
|
// no protection check enabled
|
|
249
292
|
_this.setState('finished');
|
|
250
|
-
|
|
251
|
-
|
|
293
|
+
|
|
294
|
+
if (development) {
|
|
295
|
+
logger.debug('\n' + 'state: ' + _this.getState());
|
|
296
|
+
logger.info('\n' + 'module initialized successfully');
|
|
297
|
+
}
|
|
298
|
+
|
|
252
299
|
clearInterval(dependencies_met_tracking_check_ready);
|
|
253
300
|
}
|
|
254
301
|
|
|
255
302
|
} else {
|
|
256
303
|
// user consent on personalization "false"
|
|
257
304
|
//
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
//
|
|
268
|
-
|
|
269
|
-
// ------------------------------------------------------------------
|
|
305
|
+
if (production) {
|
|
306
|
+
console.debug('cookies for personalization rejected');
|
|
307
|
+
console.debug('initialization of module advertising skipped');
|
|
308
|
+
} else {
|
|
309
|
+
logger.warn('\n' + 'user consent on personalization: ' + user_consent.personalization);
|
|
310
|
+
logger.warn('\n' + 'initializing module: skipped');
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
// if consent is rejected, detect and remove Adsense cookies
|
|
314
|
+
//
|
|
315
|
+
var gasCookies = j1.findCookie('__g');
|
|
270
316
|
gasCookies.forEach(function (item) {
|
|
271
|
-
//
|
|
317
|
+
// remove Google Ad cookies
|
|
318
|
+
//
|
|
272
319
|
if (hostname == 'localhost') {
|
|
273
320
|
j1.removeCookie({ name: item, domain: false, secure: false });
|
|
274
321
|
} else {
|
|
@@ -277,14 +324,18 @@ var logText;
|
|
|
277
324
|
});
|
|
278
325
|
|
|
279
326
|
// manage tracking protection
|
|
280
|
-
//
|
|
327
|
+
//
|
|
281
328
|
if (checkTrackingProtection) {
|
|
282
329
|
if (!user_consent.personalization) {
|
|
283
|
-
|
|
284
|
-
|
|
330
|
+
if (development) {
|
|
331
|
+
logText = '\n' + 'consent on cookies disabled for personalization';
|
|
332
|
+
logger.debug(logText);
|
|
333
|
+
}
|
|
285
334
|
|
|
286
335
|
if (showErrorPageOnBlocked) {
|
|
287
|
-
|
|
336
|
+
if (development) {
|
|
337
|
+
logger.error('\n' + 'redirect to error page (blocked content): HTML-447');
|
|
338
|
+
}
|
|
288
339
|
// redirect to error page: blocked content
|
|
289
340
|
window.location.href = '/448.html';
|
|
290
341
|
}
|
|
@@ -299,48 +350,195 @@ var logText;
|
|
|
299
350
|
// [INFO ] [j1.adapter.advertising ] [ end processing ]
|
|
300
351
|
{% else %}
|
|
301
352
|
var ads_found = document.getElementsByClassName('adsbygoogle').length;
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
353
|
+
if (development) {
|
|
354
|
+
logger = log4javascript.getLogger('j1.adapter.advertising');
|
|
355
|
+
logger.debug('\n' + 'found ads in page: #' + ads_found);
|
|
356
|
+
logger.debug('\n' + 'no ads initialized, advertising disabled');
|
|
357
|
+
}
|
|
358
|
+
{% endif %} // END if 'advertising'
|
|
306
359
|
|
|
307
360
|
clearInterval(dependencies_met_page_ready);
|
|
308
361
|
}
|
|
309
362
|
}, 10);
|
|
310
363
|
}, // END init
|
|
311
364
|
|
|
365
|
+
// -------------------------------------------------------------------------
|
|
366
|
+
// ad_initializer()
|
|
367
|
+
// initialze all ad units in a page (ins elements)
|
|
368
|
+
// -------------------------------------------------------------------------
|
|
369
|
+
ad_initializer: function () {
|
|
370
|
+
|
|
371
|
+
var dependencies_met_page_visible = setInterval (function (options) {
|
|
372
|
+
var contentState = $('#content').css("display");
|
|
373
|
+
var contentVisible = (contentState == 'block') ? true: false;
|
|
374
|
+
var ads_found = (document.getElementsByClassName('adsbygoogle').length > 0) ? true : false;
|
|
375
|
+
var ads_initialized = 0;
|
|
376
|
+
var ad_containers;
|
|
377
|
+
|
|
378
|
+
if (j1.getState() === 'finished' && contentVisible && ads_found) {
|
|
379
|
+
if (!validpublisherID) {
|
|
380
|
+
// skip setup processes
|
|
381
|
+
//
|
|
382
|
+
clearInterval(dependencies_met_page_visible);
|
|
383
|
+
return false;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
// create|loading adverting for containers enabled
|
|
387
|
+
//
|
|
388
|
+
ad_containers = advertisingOptions.google.ads;
|
|
389
|
+
ad_containers.forEach(function (ad) {
|
|
390
|
+
if (user_consent.personalization) {
|
|
391
|
+
var currentDiv = document.getElementById(ad.id);
|
|
392
|
+
|
|
393
|
+
if (ad.enabled && ad.layout == layout) {
|
|
394
|
+
var ins = document.createElement('ins');
|
|
395
|
+
|
|
396
|
+
currentDiv.appendChild(ins);
|
|
397
|
+
var insID = 'ins_' + ad.id;
|
|
398
|
+
ins.setAttribute('id', insID);
|
|
399
|
+
ins.className = "adsbygoogle";
|
|
400
|
+
|
|
401
|
+
document.getElementById(insID).setAttribute('style', ad.styles);
|
|
402
|
+
document.getElementById(insID).setAttribute('data-ad-test', ad.test)
|
|
403
|
+
document.getElementById(insID).setAttribute('data-ad-client', ad.publisherID);
|
|
404
|
+
document.getElementById(insID).setAttribute('data-ad-slot', ad.slot);
|
|
405
|
+
document.getElementById(insID).setAttribute('data-ad-format', ad.ad_format);
|
|
406
|
+
|
|
407
|
+
if (ad.ad_layout == 'display') {
|
|
408
|
+
document.getElementById(insID).setAttribute('data-full-width-responsive', ad.ad_responsive);
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
// if (ad.ad_layout == 'in-article') {
|
|
412
|
+
// document.getElementById(insID).setAttribute('data-ad-format', ad.ad_format);
|
|
413
|
+
// }
|
|
414
|
+
|
|
415
|
+
if (ad.ad_layout == 'multiplex') {
|
|
416
|
+
document.getElementById(insID).setAttribute('data-matched-content-ui-typ', ad.ui_type);
|
|
417
|
+
document.getElementById(insID).setAttribute('data-matched-content-columns-num', ad.ui_columns);
|
|
418
|
+
document.getElementById(insID).setAttribute('data-matched-content-rows-num', ad.ui_rows);
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
ads_initialized ++;
|
|
422
|
+
} else {
|
|
423
|
+
if (ad.layout == layout) {
|
|
424
|
+
if (development) {
|
|
425
|
+
logger.warn('\n' + 'ad disabled on id ' + ad.id + ' for slot: ' + ad.slot);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
} else {
|
|
430
|
+
if (development) {
|
|
431
|
+
logger.warn('\n' + 'skipped add settings on all ad containers');
|
|
432
|
+
}
|
|
433
|
+
} // END if user_consent.personalization
|
|
434
|
+
|
|
435
|
+
});
|
|
436
|
+
// END loading adverting containers
|
|
437
|
+
|
|
438
|
+
if (ads_initialized > 0) {
|
|
439
|
+
if (development) {
|
|
440
|
+
logger.info('\n' + 'ads enabled found in page (total): ' + ads_initialized);
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
var google_ads = document.getElementsByClassName('adsbygoogle');
|
|
444
|
+
var counter = document.getElementsByClassName('adsbygoogle').length;
|
|
445
|
+
|
|
446
|
+
// jadams, 2023-06-22:
|
|
447
|
+
// skip last element in google_ads (adsbygoogle-noablate)
|
|
448
|
+
// TODO: clarify for what reason an 'ins' element with
|
|
449
|
+
// class 'adsbygoogle-noablate' is added by Googgle Adsense
|
|
450
|
+
// Possible reason: publisherID is 'wrong|fake' or NOT 'verified'
|
|
451
|
+
//
|
|
452
|
+
counter--;
|
|
453
|
+
|
|
454
|
+
[].forEach.call(google_ads, function() {
|
|
455
|
+
// skip last element in google_ads (adsbygoogle-noablate)
|
|
456
|
+
if (counter > 0) {
|
|
457
|
+
(adsbygoogle = window.adsbygoogle || []).push({});
|
|
458
|
+
}
|
|
459
|
+
counter --;
|
|
460
|
+
});
|
|
461
|
+
} else {
|
|
462
|
+
if (development) {
|
|
463
|
+
logger.warn('\n' + 'no ads found in page for layout: ' + layout);
|
|
464
|
+
}
|
|
465
|
+
} // END if ads_initialized
|
|
466
|
+
|
|
467
|
+
clearInterval(dependencies_met_page_visible);
|
|
468
|
+
} // END contentVisible|ads_found
|
|
469
|
+
|
|
470
|
+
}, 10); // END dependencies_met_page_visible
|
|
471
|
+
|
|
472
|
+
}, // END ad_initializer
|
|
473
|
+
|
|
312
474
|
// -------------------------------------------------------------------------
|
|
313
475
|
// ad_monitor()
|
|
314
476
|
// monitor for state changes on the ad placed in pages (if any)
|
|
315
477
|
//
|
|
316
478
|
// NOTE: Check visibility state of the adSlot to prevent multiple
|
|
317
479
|
// processing of the same slot
|
|
480
|
+
//
|
|
481
|
+
// NOTE: Skip ad containers with class 'adsbygoogle-noablate'
|
|
482
|
+
//
|
|
318
483
|
// -------------------------------------------------------------------------
|
|
319
484
|
ad_monitor: function () {
|
|
320
|
-
// logger.info('\n' + 'setup ad monitoring');
|
|
321
485
|
$('.adsbygoogle').attrchange({
|
|
322
486
|
trackValues: true,
|
|
323
487
|
callback: function (event) {
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
488
|
+
var elm = event.target.dataset;
|
|
489
|
+
var elm_classes = event.target.className;
|
|
490
|
+
var validAdContainer = (elm_classes.includes('adsbygoogle-noablate')) ? false : true;
|
|
491
|
+
var environment = '{{environment}}';
|
|
492
|
+
var production = (environment.includes('prod') ? true : false);
|
|
493
|
+
var adSlotIsVisible = $('.adsbygoogle').is(":visible");
|
|
494
|
+
|
|
495
|
+
if (adSlotIsVisible && validAdContainer && event.newValue !== event.oldValue) {
|
|
496
|
+
if (event.newValue === 'unfilled') {
|
|
497
|
+
if (production) {
|
|
498
|
+
console.debug('detected ad blocks in state: unfilled');
|
|
499
|
+
} else {
|
|
500
|
+
logger.warn('\n' + 'detected ad on slot ' + elm.adSlot + ' in state: ' + event.newValue);
|
|
501
|
+
}
|
|
329
502
|
if (addBorderOnUnfilled) {
|
|
330
503
|
$('.adsbygoogle').addClass('border--dotted');
|
|
331
504
|
}
|
|
332
|
-
|
|
333
505
|
if (autoHideOnUnfilled) {
|
|
334
|
-
|
|
506
|
+
if (development) {
|
|
507
|
+
logger.info('\n' + ' hide ad on slot: ' + elm.adSlot);
|
|
508
|
+
}
|
|
335
509
|
$('.adsbygoogle').hide();
|
|
336
510
|
}
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
511
|
+
} else if (event.newValue === 'filled') {
|
|
512
|
+
if (development) {
|
|
513
|
+
logger.info('\n' + 'detected ad on slot ' + elm.adSlot + ' in state: ' + event.newValue);
|
|
514
|
+
}
|
|
515
|
+
} else {
|
|
516
|
+
var filled = (event.newValue.includes('display') ? true : false);
|
|
517
|
+
var unfilled = (event.newValue.includes('dotted') ? true : false);
|
|
518
|
+
if (filled) {
|
|
519
|
+
if (production) {
|
|
520
|
+
console.info('detected ad blocks in state: filled');
|
|
521
|
+
} else {
|
|
522
|
+
logger.info('\n' + 'detected ad block on slot ' + elm.adSlot + ' in state: filled');
|
|
523
|
+
}
|
|
524
|
+
} else if (unfilled) {
|
|
525
|
+
if (production) {
|
|
526
|
+
console.info('detected ad blocks in state: unfilled');
|
|
527
|
+
} else {
|
|
528
|
+
logger.info('\n' + 'detected ad block on slot ' + elm.adSlot + ' in state: unfilled');
|
|
529
|
+
}
|
|
530
|
+
} else {
|
|
531
|
+
if (production) {
|
|
532
|
+
console.warn('unknown ad state detected: ' + event.newValue);
|
|
533
|
+
} else {
|
|
534
|
+
logger.warn('\n' + 'unknown ad state detected on slot ' + elm.adSlot + ' : ' + event.newValue);
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
} // END if 'event.newValue'
|
|
538
|
+
} // END if 'adSlotIsVisible'
|
|
539
|
+
} // END 'callback'
|
|
540
|
+
}); // END 'attrchange'
|
|
541
|
+
}, // END ad_monitor
|
|
344
542
|
|
|
345
543
|
// -------------------------------------------------------------------------
|
|
346
544
|
// check_tracking_protection()
|
|
@@ -357,8 +555,10 @@ var logText;
|
|
|
357
555
|
check_tracking_protection: function () {
|
|
358
556
|
var logger = log4javascript.getLogger('j1.adapter.advertising.monitor.tracking');
|
|
359
557
|
|
|
360
|
-
|
|
361
|
-
|
|
558
|
+
if (development) {
|
|
559
|
+
logText = '\n' + 'check for trackingprotection';
|
|
560
|
+
logger.info(logText);
|
|
561
|
+
}
|
|
362
562
|
|
|
363
563
|
function checkTrackingProtection() {
|
|
364
564
|
if (!checkTrackingProtection.promise) {
|
|
@@ -379,7 +579,9 @@ var logText;
|
|
|
379
579
|
tracking_protection = false;
|
|
380
580
|
}).catch(e => {
|
|
381
581
|
tracking_protection = true;
|
|
382
|
-
|
|
582
|
+
if (development) {
|
|
583
|
+
logger.debug('\n' + 'detection details: ' + e);
|
|
584
|
+
}
|
|
383
585
|
});
|
|
384
586
|
}
|
|
385
587
|
}
|
|
@@ -394,8 +596,10 @@ var logText;
|
|
|
394
596
|
messageHandler: function (sender, message) {
|
|
395
597
|
var json_message = JSON.stringify(message, undefined, 2);
|
|
396
598
|
|
|
397
|
-
|
|
398
|
-
|
|
599
|
+
if (development) {
|
|
600
|
+
logText = '\n' + 'received message from ' + sender + ': ' + json_message;
|
|
601
|
+
logger.debug(logText);
|
|
602
|
+
}
|
|
399
603
|
|
|
400
604
|
// -----------------------------------------------------------------------
|
|
401
605
|
// Process commands|actions
|
|
@@ -404,7 +608,9 @@ var logText;
|
|
|
404
608
|
//
|
|
405
609
|
// Place handling of command|action here
|
|
406
610
|
//
|
|
407
|
-
|
|
611
|
+
if (development) {
|
|
612
|
+
logger.info('\n' + message.text);
|
|
613
|
+
}
|
|
408
614
|
}
|
|
409
615
|
|
|
410
616
|
//
|
|
@@ -2778,7 +2778,8 @@ var j1 = (function (options) {
|
|
|
2778
2778
|
}
|
|
2779
2779
|
|
|
2780
2780
|
for (const {node, currentRect, previousRect} of entry.sources) {
|
|
2781
|
-
|
|
2781
|
+
var hasProperty = (node.hasOwnProperty('firstElementChild')) ? true : false;
|
|
2782
|
+
if (hasProperty) {
|
|
2782
2783
|
var id = '';
|
|
2783
2784
|
try {
|
|
2784
2785
|
id = node.firstElementChild.id;
|