j1-template 2023.2.7 → 2023.3.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 +2 -1
- data/_includes/themes/j1/layouts/content_generator_post.html +2 -2
- data/_includes/themes/j1/layouts/layout_metadata_generator.html +41 -38
- data/_includes/themes/j1/procedures/blocks/footer/boxes/about_box.proc +1 -1
- data/_includes/themes/j1/procedures/blocks/footer/boxes/contacts_box.proc +1 -1
- data/_includes/themes/j1/procedures/blocks/footer/boxes/issue.proc +1 -1
- data/_includes/themes/j1/procedures/blocks/footer/boxes/links_box.proc +1 -1
- data/_includes/themes/j1/procedures/blocks/footer/boxes/news_box.proc +1 -1
- data/_includes/themes/j1/procedures/layouts/default_writer.proc +1 -3
- data/_includes/themes/j1/procedures/layouts/module_writer.proc +7 -23
- data/_includes/themes/j1/procedures/layouts/resource_writer.proc +8 -8
- data/_layouts/compress.html +26 -21
- data/_layouts/default.html +36 -30
- data/assets/data/banner.html +5 -2
- data/assets/data/footer.html +15 -3
- data/assets/data/masterslider.html +1 -0
- data/assets/data/menu.html +4 -4
- data/assets/data/panel.html +6 -3
- data/assets/data/quicklinks.html +138 -149
- data/assets/error_pages/HTTP204.html +3 -3
- data/assets/error_pages/HTTP400.html +3 -3
- data/assets/error_pages/HTTP401.html +3 -3
- data/assets/error_pages/HTTP403.html +3 -3
- data/assets/error_pages/HTTP404.html +3 -3
- data/assets/error_pages/HTTP444.html +3 -3
- data/assets/error_pages/HTTP445.html +3 -3
- data/assets/error_pages/HTTP446.html +5 -5
- data/assets/error_pages/HTTP447.html +7 -7
- data/assets/error_pages/HTTP448.html +7 -7
- data/assets/error_pages/HTTP500.html +3 -3
- data/assets/error_pages/HTTP501.html +3 -3
- data/assets/error_pages/HTTP502.html +3 -3
- data/assets/error_pages/HTTP503.html +3 -3
- data/assets/themes/j1/adapter/js/advertising.js +109 -116
- data/assets/themes/j1/adapter/js/analytics.js +1 -1
- data/assets/themes/j1/adapter/js/asciidoctor.js +1 -1
- data/assets/themes/j1/adapter/js/attic.js +22 -14
- data/assets/themes/j1/adapter/js/bmd.js +1 -1
- data/assets/themes/j1/adapter/js/carousel.js +5 -4
- data/assets/themes/j1/adapter/js/clipboard.js +1 -1
- data/assets/themes/j1/adapter/js/comments.js +5 -5
- data/assets/themes/j1/adapter/js/cookieConsent.js +1 -1
- data/assets/themes/j1/adapter/js/customFunctions.js +1 -1
- data/assets/themes/j1/adapter/js/customModule.js +1 -1
- data/assets/themes/j1/adapter/js/dropdowns.js +4 -2
- data/assets/themes/j1/adapter/js/fab.js +9 -6
- data/assets/themes/j1/adapter/js/framer.js +1 -1
- data/assets/themes/j1/adapter/js/iconPicker.js +227 -0
- data/assets/themes/j1/adapter/js/j1.js +401 -76
- data/assets/themes/j1/adapter/js/justifiedGallery.js +9 -3
- data/assets/themes/j1/adapter/js/justifiedGalleryCustomizer.js +2 -2
- data/assets/themes/j1/adapter/js/lightbox.js +4 -3
- data/assets/themes/j1/adapter/js/logger.js +1 -1
- data/assets/themes/j1/adapter/js/lunr.js +1 -1
- data/assets/themes/j1/adapter/js/masonry.js +4 -3
- data/assets/themes/j1/adapter/js/masterslider.js +30 -57
- data/assets/themes/j1/adapter/js/mmenu.js +2 -2
- data/assets/themes/j1/adapter/js/navigator.js +7 -5
- data/assets/themes/j1/adapter/js/nbinteract.js +9 -9
- data/assets/themes/j1/adapter/js/particles.js +2 -2
- data/assets/themes/j1/adapter/js/rangeSlider.js +2 -2
- data/assets/themes/j1/adapter/js/rouge.js +2 -2
- data/assets/themes/j1/adapter/js/rtable.js +1 -1
- data/assets/themes/j1/adapter/js/rtextResizer.js +1 -1
- data/assets/themes/j1/adapter/js/scroller.js +97 -109
- data/assets/themes/j1/adapter/js/slick.js +28 -18
- data/assets/themes/j1/adapter/js/themeToggler.js +259 -0
- data/assets/themes/j1/adapter/js/themer.js +17 -8
- data/assets/themes/j1/adapter/js/toccer.js +9 -6
- data/assets/themes/j1/adapter/js/translator.js +4 -2
- data/assets/themes/j1/adapter/js/waves.js +6 -4
- data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.css +1322 -417
- data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.min.css +3 -3
- data/assets/themes/j1/core/css/themes/unodark/bootstrap.css +1983 -1266
- data/assets/themes/j1/core/css/themes/unodark/bootstrap.min.css +3 -3
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +10268 -9401
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +10 -10
- data/assets/themes/j1/core/css/vendor.css +0 -14
- data/assets/themes/j1/core/css/vendor.min.css +1 -1
- data/assets/themes/j1/modules/advertising/js/adInitializer.js +160 -0
- data/assets/themes/j1/modules/backstretch/js/backstretch.js +6 -4
- data/assets/themes/j1/modules/backstretch/js/backstretch.min.js +1 -1
- data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.js +1 -1
- data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.min.js +1 -1
- data/assets/themes/j1/modules/iconPicker/README.md +266 -0
- data/assets/themes/j1/modules/iconPicker/css/universal-icon-picker.css +419 -0
- data/assets/themes/j1/modules/iconPicker/css/universal-icon-picker.min.css +17 -0
- data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-brands.json +467 -0
- data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-brands.min.json +1 -0
- data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-regular.json +169 -0
- data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-regular.min.json +1 -0
- data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-solid.json +1136 -0
- data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-solid.min.json +1 -0
- data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome.json +1772 -0
- data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome.min.json +1 -0
- data/assets/themes/j1/modules/iconPicker/icons-libraries/mdi-icons-light.json +292 -0
- data/assets/themes/j1/modules/iconPicker/icons-libraries/mdi-icons-light.min.json +1 -0
- data/assets/themes/j1/modules/iconPicker/icons-libraries/mdi-icons-regular.json +7312 -0
- data/assets/themes/j1/modules/iconPicker/icons-libraries/mdi-icons-regular.min.json +1 -0
- data/assets/themes/j1/modules/iconPicker/images/magnifying-glass-solid.svg +1 -0
- data/assets/themes/j1/modules/iconPicker/images/star-of-life-solid.svg +3 -0
- data/assets/themes/j1/modules/iconPicker/images/xmark-solid.svg +3 -0
- data/assets/themes/j1/modules/iconPicker/js/universal-icon-picker.js +493 -0
- data/assets/themes/j1/modules/iconPicker/js/universal-icon-picker.min.js +17 -0
- data/assets/themes/j1/modules/jquery/AUTHORS.txt +372 -0
- data/assets/themes/j1/modules/jquery/LICENSE.txt +43 -0
- data/assets/themes/j1/modules/jquery/css/images/ui-icons_444444_256x240.png +0 -0
- data/assets/themes/j1/modules/jquery/css/images/ui-icons_555555_256x240.png +0 -0
- data/assets/themes/j1/modules/jquery/css/images/ui-icons_777620_256x240.png +0 -0
- data/assets/themes/j1/modules/jquery/css/images/ui-icons_777777_256x240.png +0 -0
- data/assets/themes/j1/modules/jquery/css/images/ui-icons_cc0000_256x240.png +0 -0
- data/assets/themes/j1/modules/jquery/css/images/ui-icons_ffffff_256x240.png +0 -0
- data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.css +92 -92
- data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.min.css +4 -4
- data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.structure.css +88 -88
- data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.structure.min.css +2 -2
- data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.theme.css +4 -4
- data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.theme.min.css +2 -2
- data/assets/themes/j1/modules/jquery/js/jquery-ui.js +13683 -13678
- data/assets/themes/j1/modules/jquery/js/jquery-ui.min.js +3 -3
- data/assets/themes/j1/modules/jquery/js/jquery.js +1029 -1203
- data/assets/themes/j1/modules/jquery/js/jquery.min.js +2 -2
- data/assets/themes/j1/modules/jquery/js/jquery.min.map +1 -1
- data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.css +1315 -0
- data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.min.css +7 -0
- data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.structure.css +886 -0
- data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.structure.min.css +5 -0
- data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.theme.css +446 -0
- data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.theme.min.css +5 -0
- data/assets/themes/j1/modules/jquery-3.5.1/js/extensions/hasClass.js +37 -0
- data/assets/themes/j1/modules/jquery-3.5.1/js/extensions/hasClass.min.js +17 -0
- data/assets/themes/j1/modules/jquery-3.5.1/js/extensions/removeClass.js +42 -0
- data/assets/themes/j1/modules/jquery-3.5.1/js/extensions/removeClass.min.js +17 -0
- data/assets/themes/j1/modules/jquery-3.5.1/js/jquery-ui.js +19057 -0
- data/assets/themes/j1/modules/jquery-3.5.1/js/jquery-ui.min.js +6 -0
- data/assets/themes/j1/modules/jquery-3.5.1/js/jquery.js +10872 -0
- data/assets/themes/j1/modules/jquery-3.5.1/js/jquery.min.js +2 -0
- data/assets/themes/j1/modules/jquery-3.5.1/js/jquery.min.map +1 -0
- data/assets/themes/j1/modules/jquery-3.5.1/js/require.js +2145 -0
- data/assets/themes/j1/modules/jquery-3.5.1/js/require.min.js +5 -0
- data/assets/themes/j1/modules/lightGallery/js/modules/j1/j1-video.js +2 -2
- data/assets/themes/j1/modules/lightGallery/js/modules/j1/j1-video.min.js +1 -1
- data/assets/themes/j1/modules/masterslider/css/theme/uno.css +9 -9
- data/assets/themes/j1/modules/masterslider/css/theme/uno.min.css +1 -1
- data/assets/themes/j1/modules/mmenuLight/css/theme/uno/mmenu.css +2 -2
- data/assets/themes/j1/modules/mmenuLight/css/theme/uno/mmenu.min.css +1 -1
- data/assets/themes/j1/modules/rouge/css/uno.dark/theme.css +136 -47
- data/assets/themes/j1/modules/rouge/css/uno.light/theme.css +9 -9
- data/assets/themes/j1/modules/scroller/js/scroller.js +76 -69
- data/assets/themes/j1/modules/scroller/js/scroller.min.js +1 -1
- data/assets/themes/j1/modules/translator/js/translator.js +1 -1
- data/assets/themes/j1/modules/translator/js/translator.min.js +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 +4 -1
- data/lib/starter_web/_data/blocks/banner.yml +8 -5
- data/lib/starter_web/_data/blocks/defaults/footer.yml +3 -3
- data/lib/starter_web/_data/blocks/footer.yml +9 -5
- data/lib/starter_web/_data/blocks/panel.yml +41 -38
- data/lib/starter_web/_data/j1_config.yml +68 -58
- data/lib/starter_web/_data/layouts/collection.yml +1 -0
- data/lib/starter_web/_data/layouts/default.yml +1 -1
- data/lib/starter_web/_data/layouts/home.yml +9 -9
- data/lib/starter_web/_data/layouts/news_panel_posts.yml +1 -0
- data/lib/starter_web/_data/layouts/page.yml +2 -1
- data/lib/starter_web/_data/layouts/post.yml +1 -0
- data/lib/starter_web/_data/layouts/raw.yml +1 -0
- data/lib/starter_web/_data/modules/advertising.yml +134 -61
- data/lib/starter_web/_data/modules/analytics.yml +2 -2
- data/lib/starter_web/_data/modules/attics.yml +4 -7
- data/lib/starter_web/_data/modules/defaults/advertising.yml +2 -1
- data/lib/starter_web/_data/modules/defaults/attics.yml +3 -3
- data/lib/starter_web/_data/modules/defaults/iconPicker.yml +42 -0
- data/lib/starter_web/_data/modules/defaults/navigator.yml +15 -13
- data/lib/starter_web/_data/modules/defaults/theme_toggler.yml +42 -0
- data/lib/starter_web/_data/modules/iconPicker.yml +64 -0
- data/lib/starter_web/_data/modules/masonry.yml +1 -1
- data/lib/starter_web/_data/modules/masterslider.yml +5 -5
- data/lib/starter_web/_data/modules/navigator_menu.yml +150 -41
- data/lib/starter_web/_data/modules/scroller.yml +8 -8
- data/lib/starter_web/_data/modules/theme_toggler.yml +29 -0
- data/lib/starter_web/_data/modules/themer.yml +0 -6
- data/lib/starter_web/_data/resources.yml +53 -52
- data/lib/starter_web/_data/templates/feed.xml +1 -1
- data/lib/starter_web/_includes/attributes.asciidoc +57 -50
- data/lib/starter_web/_plugins/asciidoctor/google-ad-block.rb +47 -0
- data/lib/starter_web/_plugins/index/lunr.rb +1 -1
- data/lib/starter_web/assets/images/icons/mdi/mdi.svg +1 -0
- data/lib/starter_web/assets/images/icons/mdi/mdil.svg +1 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/alexander-redl.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/clem-onojeghuo.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/core_web_vitals_best.png +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/crawford-jolly.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/eleni-afiontzi.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/harpal-singh.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/hayden-mills-2.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/j1-content-mockup-1.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/j1-content-mockup-2.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/j1-content-mockup-3.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/j1-starter-mockup-1.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/john-schnobrich-2.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/josep-martins.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/josh-liu.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/kelly-sikkemal.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/kira-auf-der-heide.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/kristopher-roller.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/kristopher-roller.webp +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/matthaeus.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/mohammad-rahmani.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/nasa.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/1920x1280/recha-oktaviani.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/building-blocks-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/christina-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/cookies-1920x1200.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/katie-moum-1920x1280.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.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/html_validator/appdevtools-html-validator.jpg +0 -0
- data/lib/starter_web/assets/images/pages/html_validator/freeformatter-html-validator.jpg +0 -0
- data/lib/starter_web/assets/images/pages/html_validator/w3c-nu-checker.jpg +0 -0
- data/lib/starter_web/assets/images/pages/html_validator/w3c-validator.jpg +0 -0
- data/lib/starter_web/collections/_biography/a-life-in-questions.adoc +8 -9
- data/lib/starter_web/collections/_biography/becoming.adoc +22 -9
- data/lib/starter_web/collections/_biography/born-to-run.adoc +27 -9
- data/lib/starter_web/collections/_biography/forty-autumns.adoc +19 -12
- data/lib/starter_web/collections/_biography/not-dead-yet.adoc +24 -14
- data/lib/starter_web/collections/_biography/princess-diarist-the.adoc +23 -14
- data/lib/starter_web/collections/_biography/when-breath-becomes-air.adoc +24 -11
- data/lib/starter_web/collections/_fantasy/harry-potter-deathly-hallows.adoc +14 -10
- data/lib/starter_web/collections/_fantasy/harry-potter-philosophers-stone.adoc +11 -8
- data/lib/starter_web/collections/_fantasy/mistborn-trilogy.adoc +7 -8
- data/lib/starter_web/collections/_fantasy/ready-player-one.adoc +17 -14
- data/lib/starter_web/collections/_fantasy/sword-of-destiny.adoc +12 -13
- data/lib/starter_web/collections/_fantasy/terry-pratchet-diary.adoc +15 -15
- data/lib/starter_web/collections/_people/diana-petersen.adoc +2 -0
- data/lib/starter_web/collections/_people/larry-parker.adoc +2 -0
- data/lib/starter_web/collections/_people/parveen-anand.adoc +2 -0
- data/lib/starter_web/collections/_portfolio/branding.adoc +5 -0
- data/lib/starter_web/collections/_portfolio/graphic_design.adoc +5 -0
- data/lib/starter_web/collections/_portfolio/identity.adoc +5 -0
- data/lib/starter_web/collections/_portfolio/illustration.adoc +5 -0
- data/lib/starter_web/collections/_portfolio/photography.adoc +5 -0
- data/lib/starter_web/collections/_portfolio/web_design.adoc +5 -0
- data/lib/starter_web/collections/_romance/breath-of-snow-and-ashes-a.adoc +8 -5
- data/lib/starter_web/collections/_romance/dressmaker-the.adoc +14 -14
- data/lib/starter_web/collections/_romance/fiery-cross-the.adoc +12 -9
- data/lib/starter_web/collections/_romance/it-ends-with-us.adoc +14 -11
- data/lib/starter_web/collections/_romance/outlander-novel.adoc +48 -25
- data/lib/starter_web/collections/_romance/virgins-outlander-short-story.adoc +30 -15
- data/lib/starter_web/index.html +6 -14
- data/lib/starter_web/package.json +3 -3
- data/lib/starter_web/pages/public/about/features.adoc +1 -1
- data/lib/starter_web/pages/public/about/reporting_issues.adoc +1 -1
- data/lib/starter_web/pages/public/blog/navigator/index.html +2 -2
- data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_all_books.adoc +1 -1
- data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_biography.adoc +1 -1
- data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_fantasy.adoc +1 -1
- data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_romance.adoc +1 -1
- data/lib/starter_web/pages/public/learn/bookshelf/jekyll_collections.adoc +75 -65
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/attributes.asciidoc +58 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/accordion.asciidoc +34 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/alerts.asciidoc +15 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/badges.asciidoc +9 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/body.asciidoc +14 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/breadcrumbs.asciidoc +14 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/buttons.asciidoc +75 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/cards.asciidoc +22 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/carousel.asciidoc +37 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/close.asciidoc +15 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/code.asciidoc +14 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/color_system.asciidoc +353 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/components.asciidoc +69 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/dropdowns.asciidoc +53 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/figures.asciidoc +5 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/forms.asciidoc +270 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/grid.asciidoc +49 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/links.asciidoc +21 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/list_groups.asciidoc +28 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/modals.asciidoc +43 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/navbar.asciidoc +45 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/navs.asciidoc +28 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/offcanvas.asciidoc +16 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/options.asciidoc +30 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/pagination.asciidoc +40 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/paragraph.asciidoc +5 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/placeholders.asciidoc +5 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/popovers.asciidoc +28 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/position.asciidoc +8 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/progress_bars.asciidoc +12 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/spacing.asciidoc +14 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/spinners.asciidoc +12 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/tables.asciidoc +55 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/thumbnails.asciidoc +9 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/toasts.asciidoc +18 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/tooltips.asciidoc +28 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/typography.asciidoc +115 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/z_index.asciidoc +26 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/tables/_table.asciidoc +9 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/tables/accordion.asciidoc +87 -0
- data/lib/starter_web/pages/public/learn/bs_sass_variables/bs_sass_variables.adoc +262 -0
- data/lib/starter_web/pages/public/learn/cheatsheet/gem.adoc +255 -0
- data/lib/starter_web/pages/public/learn/cheatsheet/git.adoc +1458 -0
- data/lib/starter_web/pages/public/learn/cheatsheet/j1.adoc +63 -0
- data/lib/starter_web/pages/public/learn/cheatsheet/yaml.adoc +514 -0
- data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/attributes.asciidoc +59 -0
- data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/documents/100_chapter.asciidoc +541 -0
- data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/documents/200_chapter.asciidoc +33 -0
- data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/build_command_options.asciidoc +72 -0
- data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/files_and_folders.asciidoc +66 -0
- data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/global_configuration_options.asciidoc +63 -0
- data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/global_variables.asciidoc +26 -0
- data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/page_variables.asciidoc +54 -0
- data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/serve_command_options.asciidoc +45 -0
- data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/site_variables.asciidoc +59 -0
- data/lib/starter_web/pages/public/learn/core_web_vitals/core_web_vitals.adoc +442 -0
- data/lib/starter_web/pages/public/learn/roundtrip/_includes/attributes.asciidoc +1 -1
- data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/100_gistblock.asciidoc +3 -4
- data/lib/starter_web/pages/public/learn/roundtrip/asciidoc_extensions.adoc +2 -2
- data/lib/starter_web/pages/public/learn/roundtrip/icon_fonts.adoc +10 -10
- data/lib/starter_web/pages/public/learn/roundtrip/present_images.adoc +8 -1
- data/lib/starter_web/pages/public/learn/roundtrip/responsive_tables.adoc +3 -3
- data/lib/starter_web/pages/public/learn/where_to_go.adoc +39 -45
- data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +2 -2
- data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +2 -2
- data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +2 -2
- data/lib/starter_web/pages/public/previewer/preview_bootstrap_theme.adoc +93 -4
- data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
- data/lib/starter_web/utilsrv/package.json +1 -1
- metadata +133 -24
- data/_includes/themes/j1/modules/ads/google_ad_content_home.html +0 -11
- data/_includes/themes/j1/modules/ads/google_ad_top_home.html +0 -11
- data/assets/themes/j1/core/css/nbinteract-tutorial/styles.css +0 -1711
- data/assets/themes/j1/core/css/nbinteract-tutorial/styles.min.css +0 -1
- data/assets/themes/j1/modules/advertising/js/google/adInitializer.js +0 -127
- data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.2.js +0 -460
- data/assets/themes/j1/modules/mdiPreviewer/css/previewer.css +0 -97
- data/assets/themes/j1/modules/mdiPreviewer/css/previewer.min.css +0 -15
- data/assets/themes/j1/modules/mdiPreviewer/js/previewer.js +0 -115
- data/assets/themes/j1/modules/mdiPreviewer/js/previewer.min.js +0 -15
- data/assets/themes/j1/modules/mdilPreviewer/css/previewer.css +0 -97
- data/assets/themes/j1/modules/mdilPreviewer/css/previewer.min.css +0 -15
- data/assets/themes/j1/modules/mdilPreviewer/js/previewer.js +0 -125
- data/assets/themes/j1/modules/mdilPreviewer/js/previewer.min.js +0 -15
- data/lib/starter_web/_includes/themes/j1/modules/ads/google_ad_content_home.html +0 -11
- data/lib/starter_web/_includes/themes/j1/modules/ads/google_ad_top_home.html +0 -11
- /data/lib/starter_web/assets/images/{promo → quotes/promo}/home/screenshot.jpg +0 -0
- /data/lib/starter_web/assets/images/{promo → quotes/promo}/jekyll/jekyll-faq.jpg +0 -0
- /data/lib/starter_web/assets/images/{promo → quotes/promo}/jekyll/jekyll-generator.jpg +0 -0
- /data/lib/starter_web/assets/images/{promo → quotes/promo}/jekyll/jekyll-generator.png +0 -0
- /data/lib/starter_web/assets/images/{promo → quotes/promo}/jekyll/jekyll-og.png +0 -0
- /data/lib/starter_web/assets/images/{promo → quotes/promo}/jekyll/scalable/jekyll-faq.psd +0 -0
@@ -1 +0,0 @@
|
|
1
|
-
html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;line-height:1.15}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{-webkit-text-decoration-skip:objects;background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}blockquote,body,dd,dl,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,legend,ol,p,pre,ul{margin:0;padding:0}li>ol,li>ul{margin-bottom:0}table{border-collapse:collapse;border-spacing:0}fieldset{border:0;min-width:0}address,blockquote,dl,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,ol,p,pre,table,ul{margin-bottom:24px}dd,ol,ul{margin-left:24px}*{-webkit-overflow-scrolling:touch}html{font-size:1em;line-height:1.5;min-height:100%;overflow-y:scroll}h1{font-size:36px;font-size:2.25rem;line-height:1.16667}h2{font-size:28px;font-size:1.75rem;line-height:1.28571}h3{font-size:24px;font-size:1.5rem;line-height:1.25}h4{font-size:20px;font-size:1.25rem;line-height:1.5}h5{font-size:18px;font-size:1.125rem;line-height:1.33333}h6{font-size:16px;font-size:1rem;line-height:1.5}img{font-style:italic;max-width:100%;vertical-align:middle}img[height],img[width]{max-width:none}table{width:100%}html{color:#222;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol}code,kbd,pre,samp{font-family:Inconsolata,Monaco,Consolas,Andale Mono,Bitstream Vera Sans Mono,Courier New,Courier,monospace;font-style:normal}.highlight{background:#fff}.highlighter-rouge .highlight{background:#eef}.highlight .c{color:#998;font-style:italic}.highlight .err{background-color:#e3d2d2;color:#a61717}.highlight .k,.highlight .o{font-weight:700}.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:700}.highlight .c1{color:#998;font-style:italic}.highlight .cs{color:#999;font-style:italic;font-weight:700}.highlight .gd{background-color:#fdd;color:#000}.highlight .gd .x{background-color:#faa;color:#000}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{background-color:#dfd;color:#000}.highlight .gi .x{background-color:#afa;color:#000}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:700}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc,.highlight .kd,.highlight .kp,.highlight .kr,.highlight .kt{font-weight:700}.highlight .kt{color:#458}.highlight .m{color:#099}.highlight .s{color:#d14}.highlight .na{color:teal}.highlight .nb{color:#0086b3}.highlight .nc{color:#458;font-weight:700}.highlight .no{color:teal}.highlight .ni{color:purple}.highlight .ne,.highlight .nf{color:#900;font-weight:700}.highlight .nn{color:#555}.highlight .nt{color:navy}.highlight .nv{color:teal}.highlight .ow{font-weight:700}.highlight .w{color:#bbb}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#099}.highlight .s2,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .vc,.highlight .vg,.highlight .vi{color:teal}.highlight .il{color:#099}table{max-width:100%;width:auto}table td,table th{border:1px solid #ccc;padding:6px 12px;text-align:right}table tr:nth-child(2n){background-color:#f7f7f7}a,a:visited{color:#0077d8;text-decoration:none}pre{background-color:#f7f7f7;font-size:.9em;margin-bottom:12px;overflow-x:scroll;padding:12px}.o-wrapper{margin-left:auto;margin-right:auto;max-width:800px;padding-left:24px;padding-right:24px}.o-wrapper:after{clear:both!important;content:""!important;display:block!important}.o-layout{display:block;font-size:0;list-style:none;margin:0 0 0 -24px;padding:0}.o-layout__item{box-sizing:border-box;display:inline-block;font-size:16px;font-size:1rem;padding-left:24px;vertical-align:top;width:100%}.o-layout--flush{margin-left:0}.o-layout--flush>.o-layout__item{padding-left:0}.o-layout--tiny{margin-left:-6px}.o-layout--tiny>.o-layout__item{padding-left:6px}.o-layout--small{margin-left:-12px}.o-layout--small>.o-layout__item{padding-left:12px}.o-layout--large{margin-left:-48px}.o-layout--large>.o-layout__item{padding-left:48px}.o-layout--huge{margin-left:-96px}.o-layout--huge>.o-layout__item{padding-left:96px}.o-layout--middle>.o-layout__item{vertical-align:middle}.o-layout--bottom>.o-layout__item{vertical-align:bottom}.o-layout--stretch{display:flex;flex-wrap:wrap}.o-layout--stretch>.o-layout__item{display:flex}.o-layout--stretch.o-layout--center{justify-content:center}.o-layout--stretch.o-layout--right{justify-content:flex-end}.o-layout--stretch.o-layout--left{justify-content:flex-start}.o-layout--center{text-align:center}.o-layout--center>.o-layout__item{text-align:left}.o-layout--right{text-align:right}.o-layout--left,.o-layout--left>.o-layout__item,.o-layout--right>.o-layout__item{text-align:left}.o-layout--reverse{direction:rtl}.o-layout--reverse>.o-layout__item{direction:ltr}.o-layout--auto>.o-layout__item{width:auto}.hamburger{background-color:transparent;border:0;color:inherit;cursor:pointer;display:inline-block;font:inherit;margin:0;overflow:visible;padding:8px 0;text-transform:none;transition-duration:.15s;transition-property:opacity,filter;transition-timing-function:linear}.hamburger:hover{opacity:.7}.hamburger-box{display:inline-block;height:15px;position:relative;vertical-align:middle;width:20px}.hamburger-inner{display:block;margin-top:-1.5px;top:50%}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{background-color:#222;border-radius:4px;height:3px;position:absolute;transition-duration:.15s;transition-property:transform;transition-timing-function:ease;width:20px}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-6px}.hamburger-inner:after{bottom:-6px}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transform:translate3d(-4px,-5px,0) rotate(-45deg) scaleX(.7);transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transform:translate3d(-4px,5px,0) rotate(45deg) scaleX(.7);transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s}.c-textbook{height:100vh;overflow:hidden;position:relative}.c-textbook__page,.c-textbook__sidebar{background-color:#fff;height:100vh;overflow:scroll;position:absolute}.c-textbook__sidebar{width:260px}.c-textbook__page{transition:transform .25s ease;width:100%}.js-show-sidebar .c-textbook__page{transform:translate(260px)}@media (min-width:46.25em){.js-show-sidebar .c-textbook__page{width:calc(100% - 260px)}}.c-textbook__sidebar{background-color:#fafafa;border-right:1px solid rgba(0,0,0,.07);font-size:14px;font-size:.875rem;line-height:1.71429;padding:12px}.c-sidebar__chapters{list-style:none;margin-bottom:0;margin-left:0}.c-sidebar__sections{list-style:none;margin-bottom:0;margin-left:12px}.c-sidebar__entry{color:#364149;display:block;padding:6px;text-decoration:none}.c-sidebar__entry:hover{text-decoration:underline}.c-sidebar__entry:visited{color:#364149}.c-sidebar__entry--active.c-sidebar__entry--active{color:#0077d8}.c-sidebar__divider{border-top:1px solid #bbb;margin:6px}.c-textbook__page{padding:12px 0}@media (min-width:46.25em) and (max-width:61.24em){.c-textbook__page{padding-left:24px;padding-right:24px}}@media (min-width:61.25em){.c-textbook__page{padding-left:48px;padding-right:48px}}.c-textbook__page:focus{outline:none}#ipython-notebook:after{clear:both!important;content:""!important;display:block!important}#ipython-notebook .input_area pre,#ipython-notebook .output_text pre{background-color:#f7f7f7;font-size:.9em;margin-bottom:12px;overflow-x:scroll;padding:12px}#ipython-notebook .input_area pre{border:1px solid #ccc}#ipython-notebook .output_html{overflow-x:scroll}#ipython-notebook code{background-color:#f7f7f7;font-size:14px;font-size:.875rem;line-height:1.71429;padding:4px}#ipython-notebook blockquote{border-left:4px solid #ccc;margin:12px;padding:18px}#ipython-notebook blockquote p:last-child{margin-bottom:0}#ipython-notebook .cell.nbinteract-left{float:left;width:50%}#ipython-notebook .cell.nbinteract-right{float:right;width:50%}#ipython-notebook .cell.nbinteract-hide_in>.input,#ipython-notebook .cell.nbinteract-hide_out>.output_wrapper{display:none}#ipython-notebook .cell:after{clear:both;content:"";display:table}#ipython-notebook div.output_subarea{max-width:none}#ipython-notebook .jp-OutputPrompt{display:none}.c-page__nav{align-items:center;display:flex;justify-content:space-between}.c-page__nav__next,.c-page__nav__prev{border:1px solid rgba(0,140,255,.7);border-radius:3px;color:rgba(0,140,255,.7);flex:1;padding:12px 0}.c-page__nav__next{text-align:right}.c-sidebar-toggle{margin-bottom:24px}.c-sidebar-toggle__label{display:inline-block;font-size:12px;font-size:.75rem;line-height:1.5;margin-left:6px;text-transform:uppercase;vertical-align:middle}.buttons .interact-button,.js-nbinteract-widget{background-color:#477dca;border:none;border-radius:3px;color:#fff;cursor:pointer;display:inline-block;font-size:16px;font-size:1rem;font-weight:700;line-height:1.5;padding:6px 18px;text-decoration:none}.buttons .interact-button:focus,.buttons .interact-button:hover,.js-nbinteract-widget:focus,.js-nbinteract-widget:hover{text-decoration:none}.buttons{margin-bottom:24px}.js-nbinteract-widget{margin-bottom:12px;padding:6px 24px}.u-clearfix:after{clear:both!important;content:""!important;display:block!important}.u-hidden-visually{clip:rect(0 0 0 0)!important;border:0!important;clip-path:inset(50%)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.u-hidden{display:none!important}.u-padding{padding:24px!important}.u-padding-tiny{padding:6px!important}.u-padding-small{padding:12px!important}.u-padding-large{padding:48px!important}.u-padding-huge{padding:96px!important}.u-padding-none{padding:0!important}.u-padding-top{padding-top:24px!important}.u-padding-top-tiny{padding-top:6px!important}.u-padding-top-small{padding-top:12px!important}.u-padding-top-large{padding-top:48px!important}.u-padding-top-huge{padding-top:96px!important}.u-padding-top-none{padding-top:0!important}.u-padding-right{padding-right:24px!important}.u-padding-right-tiny{padding-right:6px!important}.u-padding-right-small{padding-right:12px!important}.u-padding-right-large{padding-right:48px!important}.u-padding-right-huge{padding-right:96px!important}.u-padding-right-none{padding-right:0!important}.u-padding-bottom{padding-bottom:24px!important}.u-padding-bottom-tiny{padding-bottom:6px!important}.u-padding-bottom-small{padding-bottom:12px!important}.u-padding-bottom-large{padding-bottom:48px!important}.u-padding-bottom-huge{padding-bottom:96px!important}.u-padding-bottom-none{padding-bottom:0!important}.u-padding-left{padding-left:24px!important}.u-padding-left-tiny{padding-left:6px!important}.u-padding-left-small{padding-left:12px!important}.u-padding-left-large{padding-left:48px!important}.u-padding-left-huge{padding-left:96px!important}.u-padding-left-none{padding-left:0!important}.u-padding-horizontal{padding-left:24px!important;padding-right:24px!important}.u-padding-horizontal-tiny{padding-left:6px!important;padding-right:6px!important}.u-padding-horizontal-small{padding-left:12px!important;padding-right:12px!important}.u-padding-horizontal-large{padding-left:48px!important;padding-right:48px!important}.u-padding-horizontal-huge{padding-left:96px!important;padding-right:96px!important}.u-padding-horizontal-none{padding-left:0!important;padding-right:0!important}.u-padding-vertical{padding-bottom:24px!important;padding-top:24px!important}.u-padding-vertical-tiny{padding-bottom:6px!important;padding-top:6px!important}.u-padding-vertical-small{padding-bottom:12px!important;padding-top:12px!important}.u-padding-vertical-large{padding-bottom:48px!important;padding-top:48px!important}.u-padding-vertical-huge{padding-bottom:96px!important;padding-top:96px!important}.u-padding-vertical-none{padding-bottom:0!important;padding-top:0!important}.u-margin{margin:24px!important}.u-margin-tiny{margin:6px!important}.u-margin-small{margin:12px!important}.u-margin-large{margin:48px!important}.u-margin-huge{margin:96px!important}.u-margin-none{margin:0!important}.u-margin-top{margin-top:24px!important}.u-margin-top-tiny{margin-top:6px!important}.u-margin-top-small{margin-top:12px!important}.u-margin-top-large{margin-top:48px!important}.u-margin-top-huge{margin-top:96px!important}.u-margin-top-none{margin-top:0!important}.u-margin-right{margin-right:24px!important}.u-margin-right-tiny{margin-right:6px!important}.u-margin-right-small{margin-right:12px!important}.u-margin-right-large{margin-right:48px!important}.u-margin-right-huge{margin-right:96px!important}.u-margin-right-none{margin-right:0!important}.u-margin-bottom{margin-bottom:24px!important}.u-margin-bottom-tiny{margin-bottom:6px!important}.u-margin-bottom-small{margin-bottom:12px!important}.u-margin-bottom-large{margin-bottom:48px!important}.u-margin-bottom-huge{margin-bottom:96px!important}.u-margin-bottom-none{margin-bottom:0!important}.u-margin-left{margin-left:24px!important}.u-margin-left-tiny{margin-left:6px!important}.u-margin-left-small{margin-left:12px!important}.u-margin-left-large{margin-left:48px!important}.u-margin-left-huge{margin-left:96px!important}.u-margin-left-none{margin-left:0!important}.u-margin-horizontal{margin-left:24px!important;margin-right:24px!important}.u-margin-horizontal-tiny{margin-left:6px!important;margin-right:6px!important}.u-margin-horizontal-small{margin-left:12px!important;margin-right:12px!important}.u-margin-horizontal-large{margin-left:48px!important;margin-right:48px!important}.u-margin-horizontal-huge{margin-left:96px!important;margin-right:96px!important}.u-margin-horizontal-none{margin-left:0!important;margin-right:0!important}.u-margin-vertical{margin-bottom:24px!important;margin-top:24px!important}.u-margin-vertical-tiny{margin-bottom:6px!important;margin-top:6px!important}.u-margin-vertical-small{margin-bottom:12px!important;margin-top:12px!important}.u-margin-vertical-large{margin-bottom:48px!important;margin-top:48px!important}.u-margin-vertical-huge{margin-bottom:96px!important;margin-top:96px!important}.u-margin-vertical-none{margin-bottom:0!important;margin-top:0!important}
|
@@ -1,127 +0,0 @@
|
|
1
|
-
---
|
2
|
-
regenerate: true
|
3
|
-
---
|
4
|
-
|
5
|
-
{% capture cache %}
|
6
|
-
|
7
|
-
{% comment %}
|
8
|
-
# -----------------------------------------------------------------------------
|
9
|
-
# ~/assets/themes/j1/modules/advertising/js/google/adInitializer.js
|
10
|
-
# Liquid template for Google Adsense to initialze all units in a page
|
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
|
-
# -----------------------------------------------------------------------------
|
22
|
-
{% endcomment %}
|
23
|
-
|
24
|
-
{% comment %} Liquid procedures
|
25
|
-
-------------------------------------------------------------------------------- {% endcomment %}
|
26
|
-
|
27
|
-
{% comment %} Set global settings
|
28
|
-
-------------------------------------------------------------------------------- {% endcomment %}
|
29
|
-
{% assign environment = site.environment %}
|
30
|
-
{% assign asset_path = "/assets/themes/j1" %}
|
31
|
-
|
32
|
-
{% comment %} Process YML config data
|
33
|
-
================================================================================ {% endcomment %}
|
34
|
-
|
35
|
-
{% comment %} Set config files
|
36
|
-
-------------------------------------------------------------------------------- {% endcomment %}
|
37
|
-
{% assign template_config = site.data.j1_config %}
|
38
|
-
{% assign blocks = site.data.blocks %}
|
39
|
-
{% assign modules = site.data.modules %}
|
40
|
-
|
41
|
-
{% comment %} Set config data (settings only)
|
42
|
-
-------------------------------------------------------------------------------- {% endcomment %}
|
43
|
-
{% assign cookie_defaults = modules.defaults.cookies.defaults %}
|
44
|
-
{% assign cookie_settings = modules.cookies.settings %}
|
45
|
-
|
46
|
-
{% assign advertising_options = modules.defaults.advertising.defaults %}
|
47
|
-
{% assign advertising_settings = modules.advertising.settings %}
|
48
|
-
|
49
|
-
{% comment %} Set config options (settings only)
|
50
|
-
-------------------------------------------------------------------------------- {% endcomment %}
|
51
|
-
{% assign cookie_options = cookie_defaults | merge: cookie_settings %}
|
52
|
-
{% assign advertising_options = advertising_options | merge: advertising_settings %}
|
53
|
-
|
54
|
-
{% comment %} Variables
|
55
|
-
-------------------------------------------------------------------------------- {% endcomment %}
|
56
|
-
{% assign advertising = advertising_options.enabled %}
|
57
|
-
{% assign advertising_provider = advertising_options.provider %}
|
58
|
-
|
59
|
-
{% assign production = false %}
|
60
|
-
{% if environment == 'prod' or environment == 'production' %}
|
61
|
-
{% assign production = true %}
|
62
|
-
{% endif %}
|
63
|
-
|
64
|
-
/*
|
65
|
-
# -----------------------------------------------------------------------------
|
66
|
-
# ~/assets/themes/j1/modules/advertising/js/google/adInitializer.js
|
67
|
-
# JS helper for Google Adsense to initialze all units in a page
|
68
|
-
#
|
69
|
-
# Product/Info:
|
70
|
-
# http://jekyll.one
|
71
|
-
#
|
72
|
-
# Copyright (C) 2023 Juergen Adams
|
73
|
-
#
|
74
|
-
# J1 Theme is licensed under MIT License.
|
75
|
-
# See: https://github.com/jekyll-one/J1 Theme/blob/master/LICENSE
|
76
|
-
# -----------------------------------------------------------------------------
|
77
|
-
*/
|
78
|
-
|
79
|
-
$(document).ready(function() {
|
80
|
-
// [INFO ] [j1.adapter.advertising ] [ detected advertising provider: {{advertising_provider}}} ]
|
81
|
-
// [INFO ] [j1.adapter.advertising ] [ advertising detected as: {{advertising}} ]
|
82
|
-
{% if advertising %}
|
83
|
-
var logger = log4javascript.getLogger('j1.core.advertising.google');
|
84
|
-
var ads_found = document.getElementsByClassName('adsbygoogle').length;
|
85
|
-
var cookie_names = j1.getCookieNames();
|
86
|
-
var user_consent = j1.readCookie(cookie_names.user_consent);
|
87
|
-
var providerID = '{{advertising_options.google.publisherID}}';
|
88
|
-
var validProviderID = (providerID.includes('your')) ? false : true;
|
89
|
-
var advertisingProvider = 'Google Adsense';
|
90
|
-
|
91
|
-
var dependencies_met_page_ready = setInterval (function (options) {
|
92
|
-
if (j1.getState() === 'finished') {
|
93
|
-
|
94
|
-
if (!validProviderID) {
|
95
|
-
logger.warn('\n' + 'disabled provider: ' + advertisingProvider);
|
96
|
-
clearInterval(dependencies_met_page_ready);
|
97
|
-
return false;
|
98
|
-
}
|
99
|
-
|
100
|
-
if (user_consent.personalization) {
|
101
|
-
if (ads_found) {
|
102
|
-
logger.info('\n' + 'initialize all ads in page: #' + ads_found);
|
103
|
-
[].forEach.call(document.querySelectorAll('.adsbygoogle'), function() {
|
104
|
-
(adsbygoogle = window.adsbygoogle || []).push({});
|
105
|
-
});
|
106
|
-
} else {
|
107
|
-
logger.warn('\n' + 'no ads found in page');
|
108
|
-
}
|
109
|
-
} else {
|
110
|
-
logger.warn('\n' + 'initializing ads skipped');
|
111
|
-
logger.warn('\n' + 'consent on cookies disabled for personalization');
|
112
|
-
}
|
113
|
-
clearInterval(dependencies_met_page_ready);
|
114
|
-
}
|
115
|
-
}, 25);
|
116
|
-
{% else %}
|
117
|
-
// [WARN ] [j1.core.advertising ] [ no init code placed ]
|
118
|
-
{% endif %}
|
119
|
-
});
|
120
|
-
|
121
|
-
{% endcapture %}
|
122
|
-
{% if production %}
|
123
|
-
{{ cache | minifyJS }}
|
124
|
-
{% else %}
|
125
|
-
{{ cache | strip_empty_lines }}
|
126
|
-
{% endif %}
|
127
|
-
{% assign cache = nil %}
|
@@ -1,460 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
# -----------------------------------------------------------------------------
|
3
|
-
# ~/assets/themes/j1/modules/deeplAPI/js/deeplAPI.js
|
4
|
-
# J1 core module for deeplAPI
|
5
|
-
#
|
6
|
-
# Product/Info:
|
7
|
-
# https://jekyll.one
|
8
|
-
#
|
9
|
-
# Copyright (C) 2023 Juergen Adams
|
10
|
-
#
|
11
|
-
# J1 Theme is licensed under the MIT License.
|
12
|
-
# For details, see: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE.md
|
13
|
-
# -----------------------------------------------------------------------------
|
14
|
-
# NOTE: Based on https://github.com/jquery-boilerplate/jquery-boilerplate
|
15
|
-
# See: https://www.dotnetcurry.com/jquery/1069/authoring-jquery-plugins
|
16
|
-
# -----------------------------------------------------------------------------
|
17
|
-
*/
|
18
|
-
|
19
|
-
// the semi-colon before function invocation is a SAFETY method against
|
20
|
-
// concatenated scripts and/or other plugins which may NOT be closed
|
21
|
-
// properly.
|
22
|
-
//
|
23
|
-
;(function($, window, document, undefined) {
|
24
|
-
|
25
|
-
'use strict';
|
26
|
-
|
27
|
-
// Create the defaults
|
28
|
-
var pluginName = 'deeplAPI',
|
29
|
-
defaults = {
|
30
|
-
api: 'free', // free (default) | pro
|
31
|
-
auth_key: '', // API authorization key
|
32
|
-
source_lang: 'auto', // autodetection (default: auto)|supported language. Specifies the language for the input text.
|
33
|
-
target_lang: 'DE', // language to be tranlasted in.
|
34
|
-
max_chars: false, // false (unlimited) or number. Number of chars from the source text passed for translation.
|
35
|
-
split_sentences: '1', // enabled (1, default)|disabled (0)|nonewlines. Sets the translation engine to first split the input text into sentences.
|
36
|
-
preserve_formatting: '0', // disabled (0, default)|enabled (1). Sets the translation engine to respect the original formatting.
|
37
|
-
formality: 'default', // default|more|less. Sets the translated text should lean towards formal or informal language.
|
38
|
-
tag_handling: false, // false (value=0)|xml. Sets which kind of tags should be handled. If set, API is able to process structured XML content.
|
39
|
-
outline_detection: true, // false (value=0) or true (NO value passed). Controls the automatic mechanism on XML tags for splitting. If disabled, all splitting_tags are to be specified.
|
40
|
-
non_splitting_tags: false, // false or comma-separated list of XML tags. Disable automated splitting on the tags specified.
|
41
|
-
splitting_tags: false, // false or comma-separated list of XML tags which always cause splitting.
|
42
|
-
ignore_tags: false, // false or comma-separated list of XML tags that indicate text NOT to be translated.
|
43
|
-
onInit: function (){}, // callback after plugin has initialized.
|
44
|
-
onBeforeTranslation: function (){}, // callback before translation started.
|
45
|
-
onAfterTranslation: function (){} // callback after translation finished.
|
46
|
-
};
|
47
|
-
|
48
|
-
// -------------------------------------------------------------------------
|
49
|
-
// plugin constructor
|
50
|
-
// create the jquery plugin
|
51
|
-
// -------------------------------------------------------------------------
|
52
|
-
function Plugin (element, options) {
|
53
|
-
this.element = element;
|
54
|
-
this.settings = $.extend( {}, defaults, options);
|
55
|
-
this.settings.elementID = '#' + this.element.id;
|
56
|
-
this.xhr = new XMLHttpRequest();
|
57
|
-
|
58
|
-
// call the plugin initializer
|
59
|
-
this.init(this.settings);
|
60
|
-
}
|
61
|
-
|
62
|
-
// Avoid plugin prototype conflicts
|
63
|
-
$.extend(Plugin.prototype, {
|
64
|
-
// -----------------------------------------------------------------------
|
65
|
-
// init()
|
66
|
-
// initialize|run the translation
|
67
|
-
// -----------------------------------------------------------------------
|
68
|
-
init: function(options) {
|
69
|
-
var _this = this;
|
70
|
-
var logger = log4javascript.getLogger('deeplAPI.init');
|
71
|
-
var data_url = '/assets/data/private.json';
|
72
|
-
var settings = options;
|
73
|
-
var auth_key;
|
74
|
-
var encodedString;
|
75
|
-
var encryptedString;
|
76
|
-
var jsonObject;
|
77
|
-
|
78
|
-
logger.info('\n' + 'initializing plugin: started');
|
79
|
-
|
80
|
-
// loading private data (auth key)
|
81
|
-
$.ajax({
|
82
|
-
url: data_url,
|
83
|
-
dataType: 'text',
|
84
|
-
success: function (data) {
|
85
|
-
encodedString = atob(data);
|
86
|
-
encryptedString = _this.decryptData(data, '8c841fc2e3aa2bd5', '0000000000000000' );
|
87
|
-
jsonObject = JSON.parse(encryptedString);
|
88
|
-
auth_key = jsonObject.translators.deepl.auth_key;
|
89
|
-
},
|
90
|
-
error: function (jqXHR, textStatus, errorThrown) {
|
91
|
-
logger.error('\n' + 'failed to retrieve JSON data from: ' + data_url);
|
92
|
-
}
|
93
|
-
});
|
94
|
-
|
95
|
-
// run the translation (if private data loaded)
|
96
|
-
var dependencies_met_page_ready = setInterval (function () {
|
97
|
-
if (typeof auth_key !== 'undefined' ) {
|
98
|
-
settings.auth_key = auth_key;
|
99
|
-
_this.translate(settings);
|
100
|
-
logger.info('\n' + 'translation: in progress');
|
101
|
-
clearInterval(dependencies_met_page_ready);
|
102
|
-
}
|
103
|
-
}, 25);
|
104
|
-
},
|
105
|
-
|
106
|
-
encryptData: function (message = '', key = '') {
|
107
|
-
var message = CryptoJS.AES.encrypt(message, key);
|
108
|
-
|
109
|
-
return message.toString();
|
110
|
-
},
|
111
|
-
|
112
|
-
decryptData: function (message = '', key = '', iv = '') {
|
113
|
-
// var test_key_32 = "2e35f242a46d67eeb74aabc37d5e5d05";
|
114
|
-
// var data = CryptoJS.AES.encrypt("Message", test_key_32); // Encryption Part
|
115
|
-
// var decrypted = CryptoJS.AES.decrypt(data, test_key_32).toString(CryptoJS.enc.Utf8);
|
116
|
-
|
117
|
-
// 1. Separate ciphertext and salt
|
118
|
-
var encryptedWA = CryptoJS.enc.Base64.parse(message);
|
119
|
-
var prefixWA = CryptoJS.lib.WordArray.create(encryptedWA.words.slice(0, 8/4)); // Salted__ prefix
|
120
|
-
// var saltWA = CryptoJS.lib.WordArray.create(encryptedWA.words.slice(8/4, 16/4)); // 8 bytes salt: 0x0123456789ABCDEF
|
121
|
-
var ciphertextWA = CryptoJS.lib.WordArray.create(encryptedWA.words.slice(16/4, encryptedWA.words.length)); // ciphertext
|
122
|
-
|
123
|
-
// 2. Determine key and IV using PBKDF2
|
124
|
-
// var password = 'mypassword'
|
125
|
-
// var keyIvWA = CryptoJS.PBKDF2(
|
126
|
-
// password,
|
127
|
-
// saltWA,
|
128
|
-
// {
|
129
|
-
// keySize: (32+16)/4, // key and IV
|
130
|
-
// iterations: 10000,
|
131
|
-
// hasher: CryptoJS.algo.SHA256
|
132
|
-
// }
|
133
|
-
// );
|
134
|
-
// var keyWA = CryptoJS.lib.WordArray.create(keyIvWA.words.slice(0, 32/4));
|
135
|
-
// var ivWA = CryptoJS.lib.WordArray.create(keyIvWA.words.slice(32/4, (32+16)/4));
|
136
|
-
|
137
|
-
// 3. Decrypt
|
138
|
-
var decryptedWA = CryptoJS.AES.decrypt(
|
139
|
-
{ciphertext: ciphertextWA},
|
140
|
-
key,
|
141
|
-
{iv: iv}
|
142
|
-
);
|
143
|
-
var decrypted = decryptedWA.toString(CryptoJS.enc.Utf8)
|
144
|
-
return decrypted;
|
145
|
-
},
|
146
|
-
|
147
|
-
// -----------------------------------------------------------------------
|
148
|
-
// prepareXHR
|
149
|
-
// Prepare a XHR request according to DeepL API specification
|
150
|
-
// for the required HTTP header settings
|
151
|
-
// See: https://www.deepl.com/de/docs-api/simulator/
|
152
|
-
// -----------------------------------------------------------------------
|
153
|
-
// NOTE: "User-Agent" NOT used as the use is qualified UNSECURE
|
154
|
-
// -----------------------------------------------------------------------
|
155
|
-
prepareXHR: function (settings) {
|
156
|
-
if (settings.api === 'free') {
|
157
|
-
this.xhr.open("POST", "https://api-free.deepl.com/v2/translate", true);
|
158
|
-
} else if (settings.api === 'pro') {
|
159
|
-
this.xhr.open("POST", "https://api.deepl.com/v2/translate", true);
|
160
|
-
} else {
|
161
|
-
this.xhr.open("POST", "https://api-free.deepl.com/v2/translate", true);
|
162
|
-
}
|
163
|
-
// Set required header parameters
|
164
|
-
this.xhr.setRequestHeader("Accept", "*/*");
|
165
|
-
this.xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
166
|
-
},
|
167
|
-
|
168
|
-
// -----------------------------------------------------------------------
|
169
|
-
// prepareText
|
170
|
-
// Prepare text function used to parse, or arrange text, designed as
|
171
|
-
// a module. Currently it splits all text whenever a newline ("\n")
|
172
|
-
// is met, so that it preserves the original layout of the text, which
|
173
|
-
// would have otherwise been lost because of the way DeepL accepts
|
174
|
-
// multiple sentences.
|
175
|
-
// -----------------------------------------------------------------------
|
176
|
-
prepareText: function (source_text) {
|
177
|
-
return source_text.split("\n");
|
178
|
-
},
|
179
|
-
|
180
|
-
// -----------------------------------------------------------------------
|
181
|
-
// translate
|
182
|
-
// Translate text function which uses all the other modules, in order to
|
183
|
-
// create a request, which is sent to the DeepL API to translate, and
|
184
|
-
// then display the result, designed as a module.
|
185
|
-
// -----------------------------------------------------------------------
|
186
|
-
translate: function (settings) {
|
187
|
-
const logger = log4javascript.getLogger('deeplAPI.translate');
|
188
|
-
const READYSTATE_DONE = 4;
|
189
|
-
const STATUS_OK = 200;
|
190
|
-
const SUPPORTED_LANG = ['BG', 'CS', 'DA', 'DE', 'EL', 'EN-GB', 'EN-US', 'EN', 'ES', 'ET', 'FI', 'FR', 'HU', 'IT', 'JA', 'LT', 'LV', 'NL', 'PL', 'PT-PT', 'PT-BR', 'PT', 'RO', 'RU', 'SK', 'SL', 'SV', 'ZH'];
|
191
|
-
const ALLOWED_FORMALITY_LANG = ['DE', 'FR', 'IT', 'ES', 'NL', 'PL', 'PT', 'PT-BR', 'RU'];
|
192
|
-
const ALLOWED_TAG_HANDLING = ['xml'];
|
193
|
-
const TARGET_ELEMENT = settings.targetElement;
|
194
|
-
const TARGET_ELEMENT_EXISTS = $(TARGET_ELEMENT).length;
|
195
|
-
const ERROR_TEXT = 'Translation failed.' + '\n' + 'Reason: ';
|
196
|
-
const WARNING_TEXT = 'Translation skipped.' + '\n' + 'Reason: ';
|
197
|
-
|
198
|
-
var BASE_TARGET_ELEMENT;
|
199
|
-
var ELEMENT_TYPE;
|
200
|
-
var SOURCE_TEXT_FOUND;
|
201
|
-
|
202
|
-
var API_RESPONSE = {};
|
203
|
-
API_RESPONSE['400'] = 'Bad request. Please check error message and your parameters.';
|
204
|
-
API_RESPONSE['401'] = 'Authorization failed. Please supply a valid DeepL-Auth-Key.';
|
205
|
-
API_RESPONSE['403'] = 'Forbidden. The access to the requested resource is denied, because of insufficient access rights.';
|
206
|
-
API_RESPONSE['404'] = 'The requested resource could not be found.';
|
207
|
-
API_RESPONSE['413'] = 'The request size exceeds the limit.';
|
208
|
-
API_RESPONSE['415'] = 'The requested entries format specified in the Accept header is not supported.';
|
209
|
-
API_RESPONSE['429'] = 'Too many requests. Please wait and resend your request.';
|
210
|
-
API_RESPONSE['456'] = 'Quota exceeded. The maximum amount of glossaries has been reached.';
|
211
|
-
API_RESPONSE['500'] = 'Internal server error';
|
212
|
-
API_RESPONSE['503'] = 'Resource currently unavailable. Try again later.';
|
213
|
-
API_RESPONSE['529'] = 'Too many requests. Please wait and resend your request.';
|
214
|
-
|
215
|
-
var reason_text;
|
216
|
-
var request = '';
|
217
|
-
var element = '';
|
218
|
-
var source_text = '';
|
219
|
-
var source_text_lines = '';
|
220
|
-
var source_lang;
|
221
|
-
var target_lang;
|
222
|
-
|
223
|
-
// check if passed HTML element or ID exists
|
224
|
-
if (TARGET_ELEMENT_EXISTS) {
|
225
|
-
BASE_TARGET_ELEMENT = (TARGET_ELEMENT.includes('.')||TARGET_ELEMENT.includes('#')) ? TARGET_ELEMENT.substring(1) : TARGET_ELEMENT;
|
226
|
-
ELEMENT_TYPE = $(TARGET_ELEMENT).get(0).nodeName;
|
227
|
-
|
228
|
-
// Read the text to be translated from the given HTML element
|
229
|
-
if (ELEMENT_TYPE === 'TEXTAREA') {
|
230
|
-
source_text = this.element.value;
|
231
|
-
} else if (ELEMENT_TYPE === 'P') {
|
232
|
-
element = this.element;
|
233
|
-
source_text = $(TARGET_ELEMENT).text();
|
234
|
-
}
|
235
|
-
SOURCE_TEXT_FOUND = source_text.length;
|
236
|
-
} else {
|
237
|
-
logger.error('\n' + 'target element does not exists: ' + TARGET_ELEMENT);
|
238
|
-
return false;
|
239
|
-
}
|
240
|
-
|
241
|
-
// limit the source text if required
|
242
|
-
if (settings.max_char && source_text.length > settings.max_char ) {
|
243
|
-
var source_text_limited = source_text.substring(0, settings.max_char -3);
|
244
|
-
source_text = source_text_limited + ' ...';
|
245
|
-
logger.info('\n' + 'limit for source text ' + '(max: ' + settings.max_char + ')' + ' reached: ' + source_text.length);
|
246
|
-
}
|
247
|
-
source_text_lines = this.prepareText(source_text);
|
248
|
-
|
249
|
-
// prepare the XHR request for the API (free/pro) requested
|
250
|
-
this.prepareXHR(settings);
|
251
|
-
|
252
|
-
// Makes a request with every line, as a new text to translate
|
253
|
-
var source_text_request = "";
|
254
|
-
for(var i = 0; i < source_text_lines.length; i++) {
|
255
|
-
source_text_request += "&text=" + source_text_lines[i];
|
256
|
-
}
|
257
|
-
|
258
|
-
this.xhr.onload = function () {
|
259
|
-
if (this.readyState === READYSTATE_DONE) {
|
260
|
-
if (this.status === STATUS_OK) {
|
261
|
-
// JSON parse the response
|
262
|
-
var result = JSON.parse(this.responseText);
|
263
|
-
|
264
|
-
// recreate the response as one text to keep its original layout
|
265
|
-
var translated_text = "";
|
266
|
-
for(var i = 0; i < result.translations.length; i++) {
|
267
|
-
translated_text += result.translations[i].text;
|
268
|
-
translated_text += "\n";
|
269
|
-
}
|
270
|
-
logger.info('\n' + 'translation: finished');
|
271
|
-
|
272
|
-
// update the HTM element (content) by the tranlation
|
273
|
-
if (ELEMENT_TYPE === 'TEXTAREA') {
|
274
|
-
$(TARGET_ELEMENT).val(translated_text);
|
275
|
-
} else if (ELEMENT_TYPE === 'P') {
|
276
|
-
$(TARGET_ELEMENT).text(translated_text);
|
277
|
-
}
|
278
|
-
} else {
|
279
|
-
logger.error('\n' + 'API returned ' + this.status + ': ' + API_RESPONSE[this.status]);
|
280
|
-
}
|
281
|
-
}
|
282
|
-
};
|
283
|
-
|
284
|
-
// ---------------------------------------------------------------------
|
285
|
-
// preflight (validity check) on given parameters
|
286
|
-
// ---------------------------------------------------------------------
|
287
|
-
|
288
|
-
// Check for SUPPORTED language by option source_lang|target_lang
|
289
|
-
source_lang = this.settings.source_lang;
|
290
|
-
target_lang = this.settings.target_lang;
|
291
|
-
|
292
|
-
if (this.settings.source_lang !== 'auto') {
|
293
|
-
this.settings.source_lang = (SUPPORTED_LANG.indexOf(this.settings.source_lang) > -1) ? this.settings.source_lang : false;
|
294
|
-
}
|
295
|
-
this.settings.target_lang = (SUPPORTED_LANG.indexOf(this.settings.target_lang) > -1) ? this.settings.target_lang : false;
|
296
|
-
|
297
|
-
// stop processing if invalid language or NO AUTH key passed
|
298
|
-
if (!this.settings.auth_key || !this.settings.source_lang || !this.settings.target_lang) {
|
299
|
-
if (!this.settings.auth_key) {
|
300
|
-
reason_text = 'NO AUTH key passed.';
|
301
|
-
logger.error('\n' + 'invalid option found. ' + reason_text);
|
302
|
-
}
|
303
|
-
if (!this.settings.source_lang) {
|
304
|
-
reason_text = 'WRONG source language passed: ' + source_lang;
|
305
|
-
logger.error('\n' + 'invalid option found. ' + reason_text);
|
306
|
-
}
|
307
|
-
if (!this.settings.target_lang) {
|
308
|
-
reason_text = 'WRONG target language passed: ' + target_lang;
|
309
|
-
logger.error('\n' + 'invalid option found. ' + reason_text);
|
310
|
-
}
|
311
|
-
|
312
|
-
// update the HTML element (content) by an error text
|
313
|
-
if (ELEMENT_TYPE === 'TEXTAREA') {
|
314
|
-
$(TARGET_ELEMENT).val(ERROR_TEXT + reason_text);
|
315
|
-
} else if (ELEMENT_TYPE === 'P') {
|
316
|
-
$(TARGET_ELEMENT).text(ERROR_TEXT + reason_text);
|
317
|
-
}
|
318
|
-
return false;
|
319
|
-
}
|
320
|
-
|
321
|
-
if(!SOURCE_TEXT_FOUND) {
|
322
|
-
reason_text = 'NO text found for translation';
|
323
|
-
// update the HTML element (content) by an error text
|
324
|
-
if (ELEMENT_TYPE === 'TEXTAREA') {
|
325
|
-
$(TARGET_ELEMENT).val(WARNING_TEXT + reason_text);
|
326
|
-
} else if (ELEMENT_TYPE === 'P') {
|
327
|
-
$(TARGET_ELEMENT).text(WARNING_TEXT + reason_text);
|
328
|
-
}
|
329
|
-
logger.warn('\n' + 'no text found for translation');
|
330
|
-
return false;
|
331
|
-
}
|
332
|
-
|
333
|
-
// Check for VALID language supported by option 'formality'
|
334
|
-
if (this.settings.formality !== 'default' ) {
|
335
|
-
if (!(ALLOWED_FORMALITY_LANG.indexOf(this.settings.target_lang) > -1)) {
|
336
|
-
logger.warn('\n' + 'wrong language found for formality setting: ' + this.settings.target_lang);
|
337
|
-
}
|
338
|
-
this.settings.formality = (ALLOWED_FORMALITY_LANG.indexOf(this.settings.target_lang) > -1) ? this.settings.formality : 'default';
|
339
|
-
}
|
340
|
-
|
341
|
-
// Check for VALID tag handling and options
|
342
|
-
if (this.settings.tag_handling) {
|
343
|
-
var tag_handling = this.settings.tag_handling;
|
344
|
-
// check for VALID method
|
345
|
-
this.settings.tag_handling = (ALLOWED_TAG_HANDLING.indexOf(this.settings.tag_handling) > -1) ? this.settings.tag_handling : false;
|
346
|
-
if (this.settings.tag_handling) {
|
347
|
-
this.settings.non_splitting_tags = this.settings.non_splitting_tags ? encodeURIComponent(this.settings.non_splitting_tags) : false;
|
348
|
-
this.settings.splitting_tags = this.settings.splitting_tags ? encodeURIComponent(this.settings.splitting_tags) : false;
|
349
|
-
this.settings.ignore_tags = this.settings.ignore_tags ? encodeURIComponent(this.settings.ignore_tags) : false;
|
350
|
-
} else {
|
351
|
-
logger.error('\n' + 'invalid option found for tag handling : ' + tag_handling);
|
352
|
-
logger.warn('\n' + 'disable option: ' + 'tag_handling');
|
353
|
-
// reset to defaults if WRONG method detected
|
354
|
-
if (this.settings.non_splitting_tags) {
|
355
|
-
logger.warn('\n' + 'disable option: ' + this.settings.non_splitting_tags);
|
356
|
-
this.settings.non_splitting_tags = false;
|
357
|
-
}
|
358
|
-
if (this.settings.splitting_tags) {
|
359
|
-
logger.warn('\n' + 'disable option : ' + this.settings.splitting_tags);
|
360
|
-
this.settings.splitting_tags = false;
|
361
|
-
}
|
362
|
-
if (this.settings.ignore_tags) {
|
363
|
-
logger.warn('\n' + 'disable option: ' + this.settings.ignore_tags);
|
364
|
-
this.settings.ignore_tags = false;
|
365
|
-
}
|
366
|
-
}
|
367
|
-
} else {
|
368
|
-
// reset tags to their defaults if NO tag_handling is enabled but settings passed
|
369
|
-
if (this.settings.non_splitting_tags) {
|
370
|
-
logger.warn('\n' + 'invalid option found: ' + this.settings.non_splitting_tags);
|
371
|
-
this.settings.non_splitting_tags = false;
|
372
|
-
}
|
373
|
-
if (this.settings.splitting_tags) {
|
374
|
-
logger.warn('\n' + 'invalid option found: ' + this.settings.splitting_tags);
|
375
|
-
this.settings.splitting_tags = false;
|
376
|
-
}
|
377
|
-
if (this.settings.ignore_tags) {
|
378
|
-
logger.warn('\n' + 'invalid option found: ' + this.settings.ignore_tags);
|
379
|
-
this.settings.ignore_tags = false;
|
380
|
-
}
|
381
|
-
}
|
382
|
-
|
383
|
-
// ---------------------------------------------------------------------
|
384
|
-
// construct the API request body
|
385
|
-
// ---------------------------------------------------------------------
|
386
|
-
request = "auth_key=" + this.settings.auth_key;
|
387
|
-
request += (this.settings.source_lang !== 'auto' ) ? "&source_lang=" + this.settings.source_lang : '';
|
388
|
-
request += "&target_lang=" + this.settings.target_lang;
|
389
|
-
request += (this.settings.formality !== 'default' ) ? "&formality=" + this.settings.formality : '';
|
390
|
-
request += (this.settings.split_sentences) ? "&split_sentences=" + this.settings.formality : '';
|
391
|
-
request += (this.settings.tag_handling) ? "&tag_handling=" + this.settings.tag_handling : "&tag_handling=0";
|
392
|
-
request += (this.settings.tag_handling && this.settings.non_splitting_tags) ? "&non_splitting_tags=" + this.settings.non_splitting_tags : '';
|
393
|
-
request += (this.settings.tag_handling && this.settings.splitting_tags) ? "&splitting_tags=" + this.settings.splitting_tags : '';
|
394
|
-
request += (this.settings.tag_handling && this.settings.ignore_tags) ? "&ignore_tags=" + this.settings.ignore_tags : '';
|
395
|
-
request += source_text_request;
|
396
|
-
|
397
|
-
// Send the constructed request to the API for translation
|
398
|
-
this.xhr.send(request);
|
399
|
-
} // END translate
|
400
|
-
|
401
|
-
}); // END prototype
|
402
|
-
|
403
|
-
// ---------------------------------------------------------------------------
|
404
|
-
// plugin wrapper
|
405
|
-
// A really lightweight plugin wrapper around the constructor,
|
406
|
-
// wrapper around the constructor to prevent multiple instantiations
|
407
|
-
// preventing against multiple instantiations and allowing any
|
408
|
-
// public function (ie. a function whose name doesn't start
|
409
|
-
// with an underscore) to be called via the jQuery plugin,
|
410
|
-
// e.g. $(element).defaultPluginName('functionName', arg1, arg2)
|
411
|
-
// ---------------------------------------------------------------------------
|
412
|
-
$.fn[pluginName] = function ( options ) {
|
413
|
-
var args = arguments;
|
414
|
-
|
415
|
-
// Is the first parameter an object (options), or was omitted,
|
416
|
-
// instantiate a new instance of the plugin.
|
417
|
-
//
|
418
|
-
if (options === undefined || typeof options === 'object') {
|
419
|
-
return this.each(function () {
|
420
|
-
// Only allow the plugin to be instantiated once,
|
421
|
-
// so we check that the element has no plugin instantiation yet
|
422
|
-
if (!$.data(this, 'plugin_' + pluginName)) {
|
423
|
-
// if it has no instance, create a new one, pass options to the
|
424
|
-
// plugin constructor, and store the plugin instance in the
|
425
|
-
// elements jQuery data object.
|
426
|
-
$.data(this, 'plugin_' + pluginName, new Plugin( this, options ));
|
427
|
-
}
|
428
|
-
});
|
429
|
-
} else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {
|
430
|
-
// If the first parameter is a string and it doesn't start
|
431
|
-
// with an underscore or "contains" the `init`-function,
|
432
|
-
// treat this as a call to a public method.
|
433
|
-
|
434
|
-
// Cache the method call to make it possible to return a value
|
435
|
-
var returns;
|
436
|
-
|
437
|
-
this.each(function () {
|
438
|
-
var instance = $.data(this, 'plugin_' + pluginName);
|
439
|
-
|
440
|
-
// Tests that there's already a plugin-instance
|
441
|
-
// and checks that the requested public method exists
|
442
|
-
if (instance instanceof Plugin && typeof instance[options] === 'function') {
|
443
|
-
// Call the method of our plugin instance,
|
444
|
-
// and pass it the supplied arguments.
|
445
|
-
returns = instance[options].apply( instance, Array.prototype.slice.call( args, 1 ) );
|
446
|
-
}
|
447
|
-
|
448
|
-
// Allow instances to be destroyed via the 'destroy' method
|
449
|
-
if (options === 'destroy') {
|
450
|
-
$.data(this, 'plugin_' + pluginName, null);
|
451
|
-
}
|
452
|
-
});
|
453
|
-
|
454
|
-
// If the earlier cached method gives a value back return the value,
|
455
|
-
// otherwise return "this" to preserve chainability.
|
456
|
-
return returns !== undefined ? returns : this;
|
457
|
-
}
|
458
|
-
}; // END plugin wrapper
|
459
|
-
|
460
|
-
})(jQuery, window, document);
|