j1-template 2022.5.2 → 2022.6.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 +61 -40
- data/_includes/themes/j1/layouts/content_generator_page.html +22 -22
- data/_includes/themes/j1/layouts/content_generator_post.html +1 -1
- data/_includes/themes/j1/layouts/layout_metadata_generator.html +13 -79
- data/_includes/themes/j1/{blocks → procedures/blocks}/footer/boxes/about_box.proc +0 -0
- data/_includes/themes/j1/{blocks → procedures/blocks}/footer/boxes/contacts_box.proc +0 -0
- data/_includes/themes/j1/{blocks → procedures/blocks}/footer/boxes/issue.proc +0 -0
- data/_includes/themes/j1/{blocks → procedures/blocks}/footer/boxes/legal_statements.proc +0 -0
- data/_includes/themes/j1/{blocks → procedures/blocks}/footer/boxes/links_box.proc +0 -0
- data/_includes/themes/j1/{blocks → procedures/blocks}/footer/boxes/news_box.proc +0 -0
- data/_includes/themes/j1/{blocks → procedures/blocks}/footer/boxes/social_media_icons.proc +0 -0
- data/_includes/themes/j1/procedures/blocks/get_wave.proc +211 -0
- data/_includes/themes/j1/procedures/collections/create_collection_article_preview.proc +1 -1
- data/_includes/themes/j1/procedures/global/create_word_cloud.proc +1 -1
- data/_includes/themes/j1/procedures/posts/collate_timeline.proc +2 -2
- data/_includes/themes/j1/procedures/posts/pager.proc +9 -10
- data/_layouts/default.html +5 -1
- data/apps/private/README.txt +1 -0
- data/apps/protected/README.txt +1 -0
- data/apps/public/README.txt +1 -0
- data/assets/data/banner.html +38 -8
- data/assets/data/footer.html +31 -11
- data/assets/data/panel.html +118 -27
- data/assets/themes/j1/adapter/js/attic.js +4 -4
- data/assets/themes/j1/adapter/js/comments.js +18 -7
- data/assets/themes/j1/adapter/js/waves.js +227 -0
- data/assets/themes/j1/core/css/icon-fonts/fontawesome.min.css +1 -1
- data/assets/themes/j1/core/css/icon-fonts/mdi.min.css +1 -1
- data/assets/themes/j1/core/css/icon-fonts/mdil.min.css +1 -1
- data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.css +92 -74
- data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.min.css +5 -3
- data/assets/themes/j1/core/css/themes/theme_vapor/bootstrap.css +92 -74
- data/assets/themes/j1/core/css/themes/theme_vapor/bootstrap.min.css +5 -3
- data/assets/themes/j1/core/css/themes/unodark/bootstrap.css +105 -138
- data/assets/themes/j1/core/css/themes/unodark/bootstrap.min.css +5 -3
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +457 -262
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +26 -15
- data/assets/themes/j1/core/css/vendor.css +11 -8
- data/assets/themes/j1/core/css/vendor.min.css +1 -1
- data/assets/themes/j1/core/fonts/fontawesome_5/LICENSE.txt +34 -0
- data/assets/themes/j1/core/fonts/material_design_icons/LICENSE.txt +97 -0
- data/assets/themes/j1/core/fonts/material_design_icons_light/LICENSE.txt +92 -0
- data/assets/themes/j1/core/fonts/roboto/LICENSE.txt +11 -0
- data/assets/themes/j1/core/js/template.js +419 -746
- data/assets/themes/j1/core/js/template.min.js.map +1 -1
- data/assets/themes/j1/modules/backstretch/js/backstretch.js +1 -1
- data/assets/themes/j1/modules/backstretch/js/backstretch.min.js +1 -1
- data/assets/themes/j1/modules/bokeh/LICENSE.txt +28 -0
- data/assets/themes/j1/modules/jquery/js/extensions/hasClass.js +17 -0
- data/assets/themes/j1/modules/jquery/js/extensions/hasClass.min.js +17 -0
- data/assets/themes/j1/modules/jquery/js/extensions/removeClass.js +18 -0
- data/assets/themes/j1/modules/jquery/js/extensions/removeClass.min.js +17 -0
- data/assets/themes/j1/modules/later/LICENSE.txt +21 -0
- data/assets/themes/j1/modules/log4javascript/license.txt +201 -0
- data/assets/themes/j1/modules/lunr/stopwords/de.txt +229 -0
- data/assets/themes/j1/modules/lunr/stopwords/en.txt +119 -0
- data/assets/themes/j1/modules/masterslider/LICENSE.txt +621 -0
- data/assets/themes/j1/modules/masterslider/README.txt +531 -0
- data/assets/themes/j1/modules/msDropdown/LICENSE.txt +20 -0
- data/assets/themes/j1/modules/nbinteract-core/LICENSE.txt +60 -0
- data/assets/themes/j1/modules/rouge/css/themes.txt +46 -0
- data/assets/themes/j1/modules/vega/LICENSE.txt +27 -0
- data/lib/j1/version.rb +1 -1
- data/lib/starter_web/Gemfile +11 -7
- data/lib/starter_web/README.md +5 -5
- data/lib/starter_web/_config.yml +199 -135
- data/lib/starter_web/_data/blocks/banner.yml +18 -2
- data/lib/starter_web/_data/blocks/defaults/footer.yml +3 -1
- data/lib/starter_web/_data/blocks/defaults/panel.yml +4 -0
- data/lib/starter_web/_data/blocks/footer.yml +12 -1
- data/lib/starter_web/_data/blocks/panel.yml +88 -19
- data/lib/starter_web/_data/j1_config.yml +2 -2
- data/lib/starter_web/_data/layouts/collection.yml +0 -9
- data/lib/starter_web/_data/layouts/home.yml +21 -30
- data/lib/starter_web/_data/layouts/news_panel_posts.yml +0 -9
- data/lib/starter_web/_data/layouts/page.yml +0 -9
- data/lib/starter_web/_data/layouts/post.yml +0 -9
- data/lib/starter_web/_data/modules/blog_navigator.yml +6 -0
- data/lib/starter_web/_data/modules/defaults/blog_navigator.yml +15 -8
- data/lib/starter_web/_data/modules/defaults/cookieconsent.yml +5 -4
- data/lib/starter_web/_data/modules/defaults/navigator.yml +1 -1
- data/lib/starter_web/_data/modules/defaults/waves.yml +32 -0
- data/lib/starter_web/_data/modules/navigator_menu.yml +48 -120
- data/lib/starter_web/_data/modules/waves.yml +32 -0
- data/lib/starter_web/_data/plugins/defaults/feed.yml +82 -0
- data/lib/starter_web/_data/plugins/defaults/seo-tags.yml +65 -0
- data/lib/starter_web/_data/plugins/defaults/sitemap.yml +66 -0
- data/lib/starter_web/_data/plugins/feed.yml +35 -0
- data/lib/starter_web/_data/plugins/seo-tags.yml +30 -0
- data/lib/starter_web/_data/plugins/sitemap.yml +30 -0
- data/lib/starter_web/_data/resources.yml +22 -0
- data/lib/starter_web/_data/templates/feed.xml +191 -0
- data/lib/starter_web/_data/templates/robots.txt +1 -0
- data/lib/starter_web/_data/templates/seo-tags.html +140 -0
- data/lib/starter_web/_data/templates/sitemap.xml +36 -0
- data/lib/starter_web/_includes/attributes.asciidoc +49 -47
- data/lib/starter_web/_includes/custom/static/bs5_accordion.html +84 -0
- data/lib/starter_web/_includes/custom/templates/bs5_accordion.html +103 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/admonition-block-answer.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/admonition-block-question.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/banner.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/callout.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/carousel-block.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/conum.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/fab-icon-inline.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/fas-icon-inline.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/flag-icon-inline.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/gallery-block.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/gist-block.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/iconify-icon-inline.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/lightbox-block.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/lorem_inline.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/masterslider-block.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/mdi-icon-inline.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/panel.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/range-slider-block.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/shout-block.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/textbook-block.rb +0 -0
- data/lib/starter_web/_plugins/{asciidoctor-extensions → asciidoctor}/twitter-emoji-inline.rb +0 -0
- data/lib/starter_web/_plugins/{debug.rb → filter/debug.rb} +0 -0
- data/lib/starter_web/_plugins/{encodeBase64.rb → filter/encodeBase64.rb} +0 -0
- data/lib/starter_web/_plugins/{encryptAES.rb → filter/encryptAES.rb} +0 -0
- data/lib/starter_web/_plugins/{filters.rb → filter/filters.rb} +11 -0
- data/lib/starter_web/_plugins/{minifyJS.rb → filter/minifyJS.rb} +0 -0
- data/lib/starter_web/_plugins/{minifyJSON.rb → filter/minifyJSON.rb} +0 -0
- data/lib/starter_web/_plugins/{prettify.rb → filter/prettify.rb} +0 -0
- data/lib/starter_web/_plugins/filter/xml_prettify.rb +36 -0
- data/lib/starter_web/_plugins/{symlink_watcher.rb → helper/symlink_watcher.rb} +0 -0
- data/lib/starter_web/_plugins/{date-i18n.rb → i18n/date.rb} +1 -1
- data/lib/starter_web/_plugins/{lunr_index.rb → index/lunr.rb} +38 -35
- data/lib/starter_web/_plugins/seo/j1-feed.rb +268 -0
- data/lib/starter_web/_plugins/seo/j1-seo-tags.rb +717 -0
- data/lib/starter_web/_plugins/seo/j1-sitemap.rb +140 -0
- data/lib/starter_web/assets/images/banner/scalable/wave.svg +13 -0
- data/lib/starter_web/assets/images/blocks/waves/scalable/1280x100/wave-1.svg +63 -0
- data/lib/starter_web/assets/images/blocks/waves/scalable/1280x100/wave-2.svg +60 -0
- data/lib/starter_web/assets/images/blocks/waves/scalable/1280x100/wave-3.svg +64 -0
- data/lib/starter_web/assets/images/blocks/waves/scalable/1280x100/wave-4.svg +62 -0
- data/lib/starter_web/assets/images/blocks/waves/scalable/1920x100/wave-1.svg +64 -0
- data/lib/starter_web/assets/images/blocks/waves/scalable/1920x100/wave-2.svg +60 -0
- data/lib/starter_web/assets/images/blocks/waves/scalable/1920x100/wave-3.svg +65 -0
- data/lib/starter_web/assets/images/blocks/waves/scalable/1920x100/wave-4.svg +62 -0
- data/lib/starter_web/assets/images/collections/blog/featured/dynamic-web-access.png +0 -0
- data/lib/starter_web/assets/images/collections/blog/featured/jamstack-generators.png +0 -0
- data/lib/starter_web/assets/images/collections/blog/featured/static-web-access.png +0 -0
- data/lib/starter_web/assets/images/icons/jekyll/logo-2x.png +0 -0
- data/lib/starter_web/assets/images/icons/jekyll/octojekyll.png +0 -0
- data/lib/starter_web/assets/images/modules/attics/1280x800/j1-template.png +0 -0
- data/lib/starter_web/assets/images/modules/attics/1280x800/jekyll-generator.png +0 -0
- data/lib/starter_web/assets/images/modules/attics/1280x800jekyll-generator.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/_ben-kolde.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/_moritz-kindler.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/alina-grubnyak.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/andrea-badino.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/brad-neathery.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/bruno-figueiredo.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/fly-d.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/guillaume-bolduc.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/melanie-deziel.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/milad-fakurian.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/quino-al-2.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/lunr-1280x800.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/no-time-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/gallery/mega_cities/author.txt +75 -0
- data/lib/starter_web/assets/images/pages/egrid/bg.png +0 -0
- data/lib/starter_web/assets/images/pages/egrid/black_denim.png +0 -0
- data/lib/starter_web/assets/images/pages/egrid/explanation.png +0 -0
- data/lib/starter_web/assets/images/pages/egrid/html_markup.png +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/1.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/10.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/11.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/12.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/13.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/14.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/15.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/16.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/17.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/18.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/19.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/2.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/20.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/3.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/4.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/5.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/6.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/7.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/8.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/large/9.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/loading.gif +0 -0
- data/lib/starter_web/assets/images/pages/egrid/loading_dark.gif +0 -0
- data/lib/starter_web/assets/images/pages/egrid/nav-icon.png +0 -0
- data/lib/starter_web/assets/images/pages/egrid/nav.png +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/1.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/10.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/11.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/12.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/13.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/14.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/15.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/16.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/17.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/18.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/19.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/1a.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/2.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/20.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/3.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/4.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/5.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/6.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/7.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/8.jpg +0 -0
- data/lib/starter_web/assets/images/pages/egrid/small/9.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/500_themes/themes-menu-1280x800.jpg +0 -0
- data/lib/starter_web/assets/images/promo/home/screenshot.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/collections/asciidoc_skeletons/simple-post/_posts/yyyy-mm-dd-your-post-name.asciidoc +13 -10
- data/lib/starter_web/collections/posts/public/featured/_posts/0000-00-00-welcome-to-j1.adoc.erb +8 -3
- data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.adoc +11 -6
- data/lib/starter_web/collections/posts/public/featured/_posts/2021-02-01-site-generators.adoc +13 -10
- data/lib/starter_web/collections/posts/public/featured/_posts/2022-02-01-about-j1.adoc +12 -9
- data/lib/starter_web/collections/posts/public/featured/_posts/_includes/attributes.asciidoc +2 -2
- data/lib/starter_web/collections/posts/public/series/_posts/2020-01-01-post-wiki-series.adoc +13 -5
- data/lib/starter_web/collections/posts/public/series/_posts/2020-01-02-post-wiki-series.adoc +13 -6
- data/lib/starter_web/collections/posts/public/series/_posts/2020-01-03-post-wiki-series.adoc +13 -6
- data/lib/starter_web/index.html +85 -60
- data/lib/starter_web/package.json +1 -1
- data/lib/starter_web/pages/public/about/features.adoc +15 -7
- data/lib/starter_web/pages/public/about/reporting_issues.adoc +13 -5
- data/lib/starter_web/pages/public/about/site.adoc +2 -6
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/000_intro.adoc +14 -7
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/100_converter.adoc +15 -7
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/200_themes.adoc +14 -6
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/111_about_the_converter.asciidoc +15 -10
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +9 -8
- data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +9 -8
- data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +9 -8
- data/lib/starter_web/pages/public/blog/navigator/{archive.html → archive/allview.html} +53 -26
- data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +45 -20
- data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +49 -19
- data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +57 -53
- data/lib/starter_web/pages/public/blog/navigator/index.html +212 -35
- data/lib/starter_web/pages/public/features/general.adoc +12 -30
- data/lib/starter_web/pages/public/features/template.adoc +9 -33
- data/lib/starter_web/pages/public/learn/quickstart.adoc +10 -8
- data/lib/starter_web/pages/public/learn/roundtrip/_includes/attributes.asciidoc +0 -7
- data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/410_table_bs_modal_examples.asciidoc +2 -2
- data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/themes_bootstrap.asciidoc +51 -0
- data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/themes_rouge.asciidoc +110 -0
- data/lib/starter_web/pages/public/learn/roundtrip/asciidoc_extensions.adoc +11 -9
- data/lib/starter_web/pages/public/learn/roundtrip/bootstrap_themes.adoc +80 -0
- data/lib/starter_web/pages/public/learn/roundtrip/icon_fonts.adoc +9 -7
- data/lib/starter_web/pages/public/learn/roundtrip/{quicksearch.adoc → lunr_search.adoc} +23 -18
- data/lib/starter_web/pages/public/learn/roundtrip/{bs_modals_extentions.adoc → modal_extentions.adoc} +23 -24
- data/lib/starter_web/pages/public/learn/roundtrip/present_images.adoc +12 -11
- data/lib/starter_web/pages/public/learn/roundtrip/present_videos.adoc +14 -10
- data/lib/starter_web/pages/public/learn/roundtrip/{responsive_tables_extensions.adoc → responsive_tables.adoc} +16 -13
- data/lib/starter_web/pages/public/learn/roundtrip/{typography.adoc → template_typography.adoc} +8 -7
- data/lib/starter_web/pages/public/learn/where_to_go.adoc +12 -29
- data/lib/starter_web/pages/public/legal/de/100_copyright.adoc +1 -1
- data/lib/starter_web/pages/public/legal/de/100_impress.adoc +1 -1
- data/lib/starter_web/pages/public/legal/de/300_privacy.adoc +1 -1
- data/lib/starter_web/pages/public/legal/de/400_comment_policy.adoc +3 -1
- data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +7 -5
- data/lib/starter_web/pages/public/legal/en/200_impress.adoc +7 -5
- data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +7 -5
- data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +9 -5
- data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +11 -10
- data/lib/starter_web/pages/public/plans/plans.adoc +8 -5
- data/lib/starter_web/pages/public/previewer/preview_bootstrap_theme.adoc +15 -38
- data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
- data/lib/starter_web/utilsrv/package.json +1 -1
- metadata +170 -128
- data/_includes/themes/j1/blocks/footer/generator.html +0 -151
- data/_includes/themes/j1/layouts/content_generator_app.html +0 -32
- data/_includes/themes/j1/layouts/content_generator_article_navigator.html +0 -176
- data/_includes/themes/j1/layouts/content_generator_blog_archive.html +0 -251
- data/_layouts/app.html +0 -65
- data/_layouts/article_navigator.html +0 -66
- data/_layouts/blog_archive.html +0 -64
- data/assets/data/article_navigator/index.html +0 -51
- data/lib/starter_web/_data/layouts/app.yml +0 -172
- data/lib/starter_web/_data/layouts/article_navigator.yml +0 -173
- data/lib/starter_web/_data/layouts/blog_archive.yml +0 -191
- data/lib/starter_web/_includes/custom/static/custom_teaser.html +0 -64
- data/lib/starter_web/assets/images/banner/scalable/readme +0 -0
- data/lib/starter_web/assets/images/collections/blog/featured/dynamic-web-access.jpg +0 -0
- data/lib/starter_web/assets/images/collections/blog/featured/jamstack-generators-2.jpg +0 -0
- data/lib/starter_web/assets/images/collections/blog/featured/markus-spiske-2.jpg +0 -0
- data/lib/starter_web/assets/images/collections/blog/featured/static-web-access.jpg +0 -0
- data/lib/starter_web/assets/images/collections/blog/featured/welcome-to-j1-template.jpg +0 -0
- data/lib/starter_web/assets/images/collections/blog/featured/what-is-a-baseurl.jpg +0 -0
- data/lib/starter_web/assets/images/collections/blog/series/j1_using_docker/j1_docker_banner.1280x500.png +0 -0
- data/lib/starter_web/assets/images/collections/blog/series/j1_using_docker/kinematic_alpha.1280x600.png +0 -0
- data/lib/starter_web/assets/images/collections/blog/series/j1_using_docker/kinematic_j1.1280x300.png +0 -0
- data/lib/starter_web/assets/images/collections/blog/series/j1_using_docker/windows_docker_banner.1280x500.png +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/moritz-kindler.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/dailymotion/meditation.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/dailymotion/pilates.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/html5/video1.mp4 +0 -0
- data/lib/starter_web/assets/videos/gallery/html5/video2.mp4 +0 -0
- data/lib/starter_web/assets/videos/gallery/kick-it-old-school-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/nye-party-shop-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/stay-colorful-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/video1-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/video1-thumb.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/video2-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/video2-thumb.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/video_adele-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/video_gaga-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/video_gwen-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/video_michelle-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/vk/hai.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/vk/otter.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/voice_kids_de_2021/battle.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/voice_kids_de_2021/ben.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/voice_kids_de_2021/constance.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/voice_kids_de_2021/elisa.jpg +0 -0
- data/lib/starter_web/assets/videos/headers/present_videos/still/underground-broadway.jpg +0 -0
- data/lib/starter_web/assets/videos/headers/present_videos/underground-broadway.mp4 +0 -0
- data/lib/starter_web/assets/videos/tiktok/einhorn.jpg +0 -0
- data/lib/starter_web/assets/videos/tiktok/waluschka.jpg +0 -0
- data/lib/starter_web/pages/public/jupyter/examples/distributed/j1-circular-times-table.adoc +0 -142
- data/lib/starter_web/pages/public/jupyter/examples/distributed/j1-common-used-widgets.adoc +0 -232
- data/lib/starter_web/pages/public/jupyter/examples/distributed/j1-odes-in-python.adoc +0 -115
- data/lib/starter_web/pages/public/jupyter/examples/localized/j1_climate-change-forecast.adoc +0 -109
- data/lib/starter_web/pages/public/jupyter/notebooks/j1/j1_circular_times_table.ipynb +0 -12382
- data/lib/starter_web/pages/public/jupyter/notebooks/j1/j1_climate_change_forecast.ipynb +0 -1058
- data/lib/starter_web/pages/public/jupyter/notebooks/j1/j1_docs_example_dynamic.ipynb +0 -14478
- data/lib/starter_web/pages/public/jupyter/notebooks/j1/j1_interactive_widgets.ipynb +0 -442
- data/lib/starter_web/pages/public/jupyter/notebooks/j1/j1_nbi_widgets.ipynb +0 -523
- data/lib/starter_web/pages/public/jupyter/notebooks/j1/j1_nbi_widgets_bar_chart.ipynb +0 -89
- data/lib/starter_web/pages/public/jupyter/notebooks/j1/j1_nbi_widgets_hist_chart.ipynb +0 -87
- data/lib/starter_web/pages/public/jupyter/notebooks/j1/j1_nbi_widgets_line_chart.ipynb +0 -90
- data/lib/starter_web/pages/public/jupyter/notebooks/j1/j1_nbi_widgets_question_multiple_choice.ipynb +0 -64
- data/lib/starter_web/pages/public/jupyter/notebooks/j1/j1_nbi_widgets_question_short_answer.ipynb +0 -122
- data/lib/starter_web/pages/public/jupyter/notebooks/j1/j1_nbi_widgets_scatter_chart.ipynb +0 -89
- data/lib/starter_web/pages/public/jupyter/notebooks/j1/j1_nbi_widgets_scatter_drag_chart.ipynb +0 -87
- data/lib/starter_web/pages/public/jupyter/notebooks/j1/j1_odes_in_python.ipynb +0 -15227
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_circular_times_table.html +0 -747
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_climate_change_forecast.html +0 -1250
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_docs_example_dynamic.html +0 -186
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_interactive_widgets.html +0 -512
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets.html +0 -629
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_bar_chart.html +0 -95
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_hist_chart.html +0 -93
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_line_chart.html +0 -96
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_question_multiple_choice.html +0 -70
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_question_short_answer.html +0 -156
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_scatter_chart.html +0 -95
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_nbi_widgets_scatter_drag_chart.html +0 -93
- data/lib/starter_web/pages/public/jupyter/notebooks/textbooks/j1_odes_in_python.html +0 -955
- data/lib/starter_web/pages/public/jupyter/where_to_go.adoc +0 -232
- data/lib/starter_web/pages/public/learn/roundtrip/_includes/google-ad.js +0 -130
- data/lib/starter_web/pages/public/learn/roundtrip/themes.adoc +0 -253
- data/lib/starter_web/pages/public/se/se-fake.adoc +0 -48
@@ -0,0 +1,268 @@
|
|
1
|
+
# ------------------------------------------------------------------------------
|
2
|
+
# ~/_plugins/j1-feed.rb
|
3
|
+
# Generate RSS feeds for all posts of a site
|
4
|
+
#
|
5
|
+
# Product/Info:
|
6
|
+
# http://jekyll.one
|
7
|
+
#
|
8
|
+
# Copyright (C) 2022 Ben Balter and Contributors
|
9
|
+
# Copyright (C) 2022 Juergen Adams
|
10
|
+
#
|
11
|
+
# J1 Template is licensed under the MIT License.
|
12
|
+
# See: https://github.com/jekyll-one-org/J1 Template/blob/master/LICENSE
|
13
|
+
# ------------------------------------------------------------------------------
|
14
|
+
require 'jekyll'
|
15
|
+
require 'fileutils'
|
16
|
+
|
17
|
+
module J1Feed
|
18
|
+
class Generator < Jekyll::Generator
|
19
|
+
safe true
|
20
|
+
priority :lowest
|
21
|
+
|
22
|
+
# Main plugin action, called by Jekyll Core
|
23
|
+
#
|
24
|
+
def generate(site)
|
25
|
+
@site = site
|
26
|
+
|
27
|
+
@mode = site.config['environment']
|
28
|
+
@template = site.config['theme']
|
29
|
+
@project_path = File.join(File.dirname(__FILE__)).sub('_plugins/seo', '')
|
30
|
+
@plugin_data_path = File.join(@project_path, site.config['data_dir'])
|
31
|
+
@module_config_path = File.join(@project_path, site.config['data_dir'], 'plugins')
|
32
|
+
|
33
|
+
@module_config_default = YAML::load(File.open(File.join(@module_config_path, 'defaults', 'feed.yml')))
|
34
|
+
@module_config_user = YAML::load(File.open(File.join(@module_config_path, 'feed.yml')))
|
35
|
+
|
36
|
+
@module_config_default_settings = @module_config_default['defaults']
|
37
|
+
@module_config_user_settings = @module_config_user['settings']
|
38
|
+
@module_config = @module_config_default_settings.merge!(@module_config_user_settings)
|
39
|
+
|
40
|
+
@feed_generation_path = @module_config['path'].sub('feed.xml', 'for_categories')
|
41
|
+
@feed_generation_enabled = @module_config['enabled']
|
42
|
+
|
43
|
+
@template_source_folder = File.join(@project_path, @module_config['template_source_folder'])
|
44
|
+
@template_name = @module_config['template_name']
|
45
|
+
@feed_output = @module_config['feed_output']
|
46
|
+
|
47
|
+
if disabled_in_development?
|
48
|
+
Jekyll.logger.info "J1 Feed:", "generate feed skipped in mode development"
|
49
|
+
return
|
50
|
+
end
|
51
|
+
|
52
|
+
if plugin_disabled?
|
53
|
+
Jekyll.logger.info "J1 Feed:", "generate feed: disabled"
|
54
|
+
return
|
55
|
+
end
|
56
|
+
|
57
|
+
if @module_config['excerpt_only']
|
58
|
+
Jekyll.logger.info "J1 Feed:", "generate feed for: excerpts only"
|
59
|
+
end
|
60
|
+
|
61
|
+
if @module_config['posts_limit'] < 100
|
62
|
+
Jekyll.logger.info "J1 Feed:", "generate feed for: #posts of #{@module_config['posts_limit']}"
|
63
|
+
else
|
64
|
+
Jekyll.logger.info "J1 Feed:", "generate feed for: #posts of unlimited"
|
65
|
+
end
|
66
|
+
|
67
|
+
collections.each do |name, meta|
|
68
|
+
Jekyll.logger.info "J1 Feed:", "generate feed for: all #{name}"
|
69
|
+
(meta["categories"] + [nil]).each do |category|
|
70
|
+
Jekyll.logger.info "J1 Feed:", "generate feed for posts by category: #{category}" if category
|
71
|
+
path = feed_path(:collection => name, :category => category)
|
72
|
+
|
73
|
+
# rebuild the feed xml file?
|
74
|
+
#
|
75
|
+
unless @module_config['rebuild_feeds']
|
76
|
+
path = feed_path(:collection => name, :category => category)
|
77
|
+
if file_exists?(path)
|
78
|
+
Jekyll.logger.info "J1 Feed:", "feed already exist, skip rebuild"
|
79
|
+
next
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
@site.pages << make_page(path, :collection => name, :category => category)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
generate_feed_by_tag if config['tags'] && !@site.tags.empty?
|
87
|
+
end
|
88
|
+
|
89
|
+
private
|
90
|
+
|
91
|
+
# Strip all whitespaces to minify the template.
|
92
|
+
# The regex matches all whitespace that follows
|
93
|
+
# '>' which match a closed XML tag
|
94
|
+
# '}' which match a closed Liquid tag
|
95
|
+
#
|
96
|
+
MINIFY_REGEX = %r!(?<=>|})\s+!.freeze
|
97
|
+
|
98
|
+
# Returns the plugin's config or an empty hash if not set
|
99
|
+
#
|
100
|
+
def config
|
101
|
+
@config ||= @module_config || {}
|
102
|
+
end
|
103
|
+
|
104
|
+
# Determines the destination path of a given feed as:
|
105
|
+
# 'collection', the name of a collection (example: 'posts')
|
106
|
+
# 'category', a category within that collection (example: 'news')
|
107
|
+
#
|
108
|
+
# Returns '/feed.xml' (default for posts) or the path specified in config
|
109
|
+
# Returns `/feed/category.xml` for post categories
|
110
|
+
# Returns `/feed/collection.xml` for other collections
|
111
|
+
# Returns `/feed/collection/category.xml` for other collection categories
|
112
|
+
#
|
113
|
+
def feed_path(collection: "posts", category: nil)
|
114
|
+
prefix = collection == "posts" ? "/feed" : "/feed/#{collection}"
|
115
|
+
return "#{@feed_generation_path}/#{category.downcase}.xml" if category
|
116
|
+
|
117
|
+
collections.dig(collection, "path") || "#{prefix}.xml"
|
118
|
+
end
|
119
|
+
|
120
|
+
# Returns a hash representing all collections to be processed
|
121
|
+
# and their metadata in the form of:
|
122
|
+
# { collection_name => { categories = [...], path = '...' } }
|
123
|
+
#
|
124
|
+
def collections
|
125
|
+
return @collections if defined?(@collections)
|
126
|
+
|
127
|
+
@collections = case config["collections"]
|
128
|
+
when Array
|
129
|
+
config["collections"].map { |c| [c, {}] }.to_h
|
130
|
+
when Hash
|
131
|
+
config["collections"]
|
132
|
+
else
|
133
|
+
{}
|
134
|
+
end
|
135
|
+
|
136
|
+
@collections = normalize_posts_meta(@collections)
|
137
|
+
@collections.each_value do |meta|
|
138
|
+
meta["categories"] = (meta["categories"] || []).to_set
|
139
|
+
end
|
140
|
+
|
141
|
+
@collections
|
142
|
+
end
|
143
|
+
|
144
|
+
def generate_feed_by_tag
|
145
|
+
tags_config = config['tags']
|
146
|
+
enabled = config['tags']['enabled']
|
147
|
+
tags_config = {} unless tags_config.is_a?(Hash)
|
148
|
+
|
149
|
+
except = tags_config["except"] || []
|
150
|
+
only = tags_config["only"] || @site.tags.keys
|
151
|
+
tags_pool = only - except
|
152
|
+
tags_path = tags_config["path"] || "/feed/by_tag/"
|
153
|
+
|
154
|
+
# enable|disable generation of feeds by tag
|
155
|
+
#
|
156
|
+
generate_tag_feed(tags_pool, tags_path) if enabled
|
157
|
+
end
|
158
|
+
|
159
|
+
def generate_tag_feed(tags_pool, tags_path)
|
160
|
+
tags_pool.each do |tag|
|
161
|
+
# allow only tags with basic alphanumeric characters and underscore
|
162
|
+
# to keep feed path simple.
|
163
|
+
#
|
164
|
+
# next if %r![^a-zA-Z0-9_]!.match?(tag)
|
165
|
+
next if %r!\W!.match?(tag)
|
166
|
+
|
167
|
+
Jekyll.logger.info "J1 Feed:", "generate feed for posts by tag: #{tag}" if tag
|
168
|
+
path = "#{tags_path}#{tag.downcase}.xml"
|
169
|
+
next if file_exists?(path)
|
170
|
+
|
171
|
+
@site.pages << make_page(path, :tags => tag)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
# Path to the template file (feed.xml)
|
176
|
+
#
|
177
|
+
def feed_source_path
|
178
|
+
@feed_source_path ||= File.expand_path @template_name, @template_source_folder
|
179
|
+
end
|
180
|
+
|
181
|
+
def feed_template
|
182
|
+
@feed_template ||= File.read(feed_source_path).gsub(MINIFY_REGEX, "")
|
183
|
+
end
|
184
|
+
|
185
|
+
# Checks if a file already exists in the site source
|
186
|
+
#
|
187
|
+
def file_exists?(file_path)
|
188
|
+
File.exist? @site.in_source_dir(file_path)
|
189
|
+
end
|
190
|
+
|
191
|
+
# Generates contents for a file
|
192
|
+
#
|
193
|
+
def make_page(file_path, collection: "posts", category: nil, tags: nil)
|
194
|
+
PageWithoutAFile.new(@site, __dir__, "", file_path).tap do |file|
|
195
|
+
file.content = feed_template
|
196
|
+
file.data.merge!(
|
197
|
+
"layout" => nil,
|
198
|
+
"sitemap" => false,
|
199
|
+
"xsl" => file_exists?("feed.xslt.xml"),
|
200
|
+
"collection" => collection,
|
201
|
+
"category" => category,
|
202
|
+
"tags" => tags
|
203
|
+
)
|
204
|
+
file.output
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
# Special case the "posts" collection, which, for ease of use
|
209
|
+
# and backwards compatability, can be configured via top-level keys or
|
210
|
+
# directly as a collection
|
211
|
+
#
|
212
|
+
def normalize_posts_meta(hash)
|
213
|
+
hash["posts"] ||= {}
|
214
|
+
hash["posts"]["path"] ||= config["path"]
|
215
|
+
hash["posts"]["categories"] ||= config["categories"]
|
216
|
+
config["path"] ||= hash["posts"]["path"]
|
217
|
+
hash
|
218
|
+
end
|
219
|
+
|
220
|
+
# Check if plugin is enabled|disabled
|
221
|
+
#
|
222
|
+
def plugin_disabled?
|
223
|
+
if config['enabled']
|
224
|
+
false
|
225
|
+
else
|
226
|
+
true
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
def disabled_in_development?
|
231
|
+
config && config['disable_in_development'] && Jekyll.env == 'development'
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
class PageWithoutAFile < Jekyll::Page
|
236
|
+
def read_yaml(*)
|
237
|
+
@data ||= {}
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
class MetaTag < Liquid::Tag
|
242
|
+
# Use Jekyll's native relative_url filter
|
243
|
+
include Jekyll::Filters::URLFilters
|
244
|
+
|
245
|
+
def render(context)
|
246
|
+
# Jekyll::Filters::URLFilters requires `@context`
|
247
|
+
# to be set in the environment.
|
248
|
+
@context = context
|
249
|
+
|
250
|
+
config = context.registers[:site].config
|
251
|
+
path = config.dig("feed", "path") || "feed.xml"
|
252
|
+
title = config["title"] || config["name"]
|
253
|
+
|
254
|
+
attributes = {
|
255
|
+
:type => "application/atom+xml",
|
256
|
+
:rel => "alternate",
|
257
|
+
:href => absolute_url(path),
|
258
|
+
}
|
259
|
+
attributes[:title] = title if title
|
260
|
+
|
261
|
+
attrs = attributes.map { |k, v| "#{k}=#{v.to_s.encode(:xml => :attr)}" }.join(" ")
|
262
|
+
"<link #{attrs} />"
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
end
|
267
|
+
|
268
|
+
Liquid::Template.register_tag "feed_meta", J1Feed::MetaTag
|